diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index db4308eb6..128e8530c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,12 +13,7 @@ name: "CodeQL" on: push: - branches: [ develop, master ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ develop ] - schedule: - - cron: '21 18 * * 3' + branches: [ master ] jobs: analyze: @@ -37,34 +32,34 @@ jobs: # Learn more about CodeQL language support at https://git.io/codeql-language-support steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/Customizations/AllKnownLayers.ts b/Customizations/AllKnownLayers.ts index 2335fe710..cf6aa010f 100644 --- a/Customizations/AllKnownLayers.ts +++ b/Customizations/AllKnownLayers.ts @@ -1,14 +1,33 @@ import * as known_layers from "../assets/generated/known_layers_and_themes.json" import {Utils} from "../Utils"; import LayerConfig from "../Models/ThemeConfig/LayerConfig"; +import {TagRenderingConfigJson} from "../Models/ThemeConfig/Json/TagRenderingConfigJson"; +import SharedTagRenderings from "./SharedTagRenderings"; +import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson"; +import WithContextLoader from "../Models/ThemeConfig/WithContextLoader"; export default class AllKnownLayers { + public static inited = (_ => { + WithContextLoader.getKnownTagRenderings = (id => AllKnownLayers.getTagRendering(id)) + return true + })() + // Must be below the list... public static sharedLayers: Map = AllKnownLayers.getSharedLayers(); public static sharedLayersJson: Map = AllKnownLayers.getSharedLayersJson(); + + public static added_by_default: string[] = ["gps_location","gps_location_history", "home_location", "gps_track",] + public static no_include: string[] = [ "conflation", "left_right_style"] + /** + * Layer IDs of layers which have special properties through built-in hooks + */ + public static priviliged_layers: string[] = [...AllKnownLayers.added_by_default, "type_node",...AllKnownLayers.no_include] + + + private static getSharedLayers(): Map { const sharedLayers = new Map(); for (const layer of known_layers.layers) { @@ -16,7 +35,6 @@ export default class AllKnownLayers { // @ts-ignore const parsed = new LayerConfig(layer, "shared_layers") sharedLayers.set(layer.id, parsed); - sharedLayers[layer.id] = parsed; } catch (e) { if (!Utils.runningFromConsole) { console.error("CRITICAL: Could not parse a layer configuration!", layer.id, " due to", e) @@ -48,7 +66,7 @@ export default class AllKnownLayers { return sharedLayers; } - private static getSharedLayersJson(): Map { + private static getSharedLayersJson(): Map { const sharedLayers = new Map(); for (const layer of known_layers.layers) { sharedLayers.set(layer.id, layer); @@ -57,5 +75,41 @@ export default class AllKnownLayers { return sharedLayers; } + /** + * Gets the appropriate tagRenderingJSON + * Allows to steal them from other layers. + * This will add the tags of the layer to the configuration though! + * @param renderingId + */ + static getTagRendering(renderingId: string): TagRenderingConfigJson { + if(renderingId.indexOf(".") < 0){ + return SharedTagRenderings.SharedTagRenderingJson.get(renderingId) + } + + const [layerId, id] = renderingId.split(".") + const layer = AllKnownLayers.getSharedLayersJson().get(layerId) + if(layer === undefined){ + if(Utils.runningFromConsole){ + // Probably generating the layer overview + return { + id: "dummy" + } + } + throw "Builtin layer "+layerId+" not found" + } + const renderings = layer?.tagRenderings ?? [] + for (const rendering of renderings) { + if(rendering["id"] === id){ + const found = JSON.parse(JSON.stringify(rendering)) + if(found.condition === undefined){ + found.condition = layer.source.osmTags + }else{ + found.condition = {and: [found.condition, layer.source.osmTags]} + } + return found + } + } + throw `The rendering with id ${id} was not found in the builtin layer ${layerId}. Try one of ${Utils.NoNull(renderings.map(r => r["id"])).join(", ")}` + } } diff --git a/Customizations/AllKnownLayouts.ts b/Customizations/AllKnownLayouts.ts index f5695d70b..4d0c39442 100644 --- a/Customizations/AllKnownLayouts.ts +++ b/Customizations/AllKnownLayouts.ts @@ -2,6 +2,10 @@ import AllKnownLayers from "./AllKnownLayers"; import * as known_themes from "../assets/generated/known_layers_and_themes.json" import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; import LayerConfig from "../Models/ThemeConfig/LayerConfig"; +import BaseUIElement from "../UI/BaseUIElement"; +import Combine from "../UI/Base/Combine"; +import Title from "../UI/Base/Title"; +import List from "../UI/Base/List"; export class AllKnownLayouts { @@ -9,16 +13,16 @@ export class AllKnownLayouts { public static allKnownLayouts: Map = AllKnownLayouts.AllLayouts(); public static layoutsList: LayoutConfig[] = AllKnownLayouts.GenerateOrderedList(AllKnownLayouts.allKnownLayouts); - public static AllPublicLayers(){ - const allLayers : LayerConfig[] = [] + public static AllPublicLayers() { + const allLayers: LayerConfig[] = [] const seendIds = new Set() const publicLayouts = AllKnownLayouts.layoutsList.filter(l => !l.hideFromOverview) for (const layout of publicLayouts) { - if(layout.hideFromOverview){ + if (layout.hideFromOverview) { continue } for (const layer of layout.layers) { - if(seendIds.has(layer.id)){ + if (seendIds.has(layer.id)) { continue } seendIds.add(layer.id) @@ -28,7 +32,51 @@ export class AllKnownLayouts { } return allLayers } - + + public static GenLayerOverviewText(): BaseUIElement { + for (const id of AllKnownLayers.priviliged_layers) { + if (!AllKnownLayers.sharedLayers.has(id)) { + throw "Priviliged layer definition not found: " + id + } + } + const allLayers: LayerConfig[] = Array.from(AllKnownLayers.sharedLayers.values()) + + const themesPerLayer = new Map() + + for (const layout of Array.from(AllKnownLayouts.allKnownLayouts.values())) { + if(layout.hideFromOverview){ + continue + } + for (const layer of layout.layers) { + if (!themesPerLayer.has(layer.id)) { + themesPerLayer.set(layer.id, []) + } + themesPerLayer.get(layer.id).push(layout.id) + } + } + + + let popularLayerCutoff = 2; + const popupalLayers = allLayers.filter((layer) => themesPerLayer.get(layer.id)?.length >= 2) + .filter(layer => AllKnownLayers.priviliged_layers.indexOf(layer.id) < 0) + + return new Combine([ + new Title("Special and other useful layers", 1), + "MapComplete has a few data layers available in the theme which have special properties through builtin-hooks. Furthermore, there are some normal layers (which are built from normal Theme-config files) but are so general that they get a mention here.", + new Title("Priviliged layers", 1), + new List(AllKnownLayers.priviliged_layers.map(id => "[" + id + "](#" + id + ")")), + ...AllKnownLayers.priviliged_layers + .map(id => AllKnownLayers.sharedLayers.get(id)) + .map((l) => l.GenerateDocumentation(themesPerLayer.get(l.id), AllKnownLayers.added_by_default.indexOf(l.id) >= 0, AllKnownLayers.no_include.indexOf(l.id) < 0)), + new Title("Frequently reused layers", 1), + "The following layers are used by at least "+popularLayerCutoff+" mapcomplete themes and might be interesting for your custom theme too", + new List(popupalLayers.map(layer => "[" + layer.id + "](#" + layer.id + ")")), + ...popupalLayers.map((layer) => layer.GenerateDocumentation(themesPerLayer.get(layer.id))) + ]) + + + } + private static GenerateOrderedList(allKnownLayouts: Map): LayoutConfig[] { const keys = ["personal", "cyclofix", "hailhydrant", "bookcases", "toilets", "aed"] const list = [] diff --git a/Customizations/SharedTagRenderings.ts b/Customizations/SharedTagRenderings.ts index 0f47ef9a9..4344b6e89 100644 --- a/Customizations/SharedTagRenderings.ts +++ b/Customizations/SharedTagRenderings.ts @@ -15,7 +15,7 @@ export default class SharedTagRenderings { const d = new Map() for (const key of Array.from(configJsons.keys())) { try { - d.set(key, new TagRenderingConfig(configJsons.get(key), `SharedTagRenderings.${key}`)) + d.set(key, new TagRenderingConfig(configJsons.get(key), `SharedTagRenderings.${key}`)) } catch (e) { if (!Utils.runningFromConsole) { console.error("BUG: could not parse", key, " from questions.json or icons.json - this error happened during the build step of the SharedTagRenderings", e) @@ -37,8 +37,11 @@ export default class SharedTagRenderings { for (const key in icons) { dict.set(key, icons[key]) } + + dict.forEach((value, key) => value.id = key) return dict; } + } diff --git a/Docs/BuiltinLayers.md b/Docs/BuiltinLayers.md new file mode 100644 index 000000000..78e563111 --- /dev/null +++ b/Docs/BuiltinLayers.md @@ -0,0 +1,236 @@ + + + Special and other useful layers +================================= + + MapComplete has a few data layers available in the theme which have special properties through builtin-hooks. Furthermore, there are some normal layers (which are built from normal Theme-config files) but are so general that they get a mention here. + + Priviliged layers +=================== + + + + - [gps_location](#gps_location) + - [home_location](#home_location) + - [gps_track](#gps_track) + - [type_node](#type_node) + - [conflation](#conflation) + - [left_right_style](#left_right_style) + + +### gps_location + + + +Meta layer showing the current location of the user. Add this to your theme and override the icon to change the appearance of the current location. The object will always have `id=gps` and will have _all_ the properties included in the [`Coordinates`-object](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationCoordinates) returned by the browser. + +[Go to the source code](../assets/layers/gps_location/gps_location.json) + + + + - **This layer is included automatically in every theme. This layer might contain no points** + - Not clickable by default. If you import this layer in your theme, override `title` to make this clickable + - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` + + +### home_location + + + +Meta layer showing the home location of the user. The home location can be set in the [profile settings](https://www.openstreetmap.org/profile/edit) of OpenStreetMap. + +[Go to the source code](../assets/layers/home_location/home_location.json) + + + + - **This layer is included automatically in every theme. This layer might contain no points** + - Not clickable by default. If you import this layer in your theme, override `title` to make this clickable + - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` + + +### gps_track + + + +Meta layer showing the previou locations of the user. Add this to your theme and override the icon to change the appearance of the current location. + +[Go to the source code](../assets/layers/gps_track/gps_track.json) + + + + - **This layer is included automatically in every theme. This layer might contain no points** + - Not visible in the layer selection by default. If you want to make this layer toggable, override `name` + + +### type_node + + + +This is a priviliged meta_layer which exports _every_ point in OSM. This only works if zoomed below the point that the full tile is loaded (and not loaded via Overpass). Note that this point will also contain a property `parent_ways` which contains all the ways this node is part of as a list. This is mainly used for extremely specialized themes, which do advanced conflations. Expert use only. + +[Go to the source code](../assets/layers/type_node/type_node.json) + + + + - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` + + +### conflation + + + +If the import-button is set to conflate two ways, a preview is shown. This layer defines how this preview is rendered. This layer cannot be included in a theme. + +[Go to the source code](../assets/layers/conflation/conflation.json) + + + + - This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data. + + +### left_right_style + + + +Special meta-style which will show one single line, either on the left or on the right depending on the id. This is used in the small popups with left_right roads. Cannot be included in a theme + +[Go to the source code](../assets/layers/left_right_style/left_right_style.json) + + + + - This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data. + + + Frequently reused layers +========================== + + The following layers are used by at least 2 mapcomplete themes and might be interesting for your custom theme too + + - [bicycle_library](#bicycle_library) + - [drinking_water](#drinking_water) + - [food](#food) + - [map](#map) + - [all_streets](#all_streets) + + +### bicycle_library + + + +A facility where bicycles can be lent for longer period of times + +[Go to the source code](../assets/layers/bicycle_library/bicycle_library.json) + + + + + + + + +#### Themes using this layer + + + + + + - [bicyclelib](https://mapcomplete.osm.be/bicyclelib) + - [cyclofix](https://mapcomplete.osm.be/cyclofix) + + +### drinking_water + + + +[Go to the source code](../assets/layers/drinking_water/drinking_water.json) + + + + + + + + +#### Themes using this layer + + + + + + - [cyclofix](https://mapcomplete.osm.be/cyclofix) + - [drinking_water](https://mapcomplete.osm.be/drinking_water) + - [nature](https://mapcomplete.osm.be/nature) + + +### food + + + +[Go to the source code](../assets/layers/food/food.json) + + + + + + + + +#### Themes using this layer + + + + + + - [food](https://mapcomplete.osm.be/food) + - [fritures](https://mapcomplete.osm.be/fritures) + + +### map + + + +A map, meant for tourists which is permanently installed in the public space + +[Go to the source code](../assets/layers/map/map.json) + + + + + + + + +#### Themes using this layer + + + + + + - [maps](https://mapcomplete.osm.be/maps) + - [nature](https://mapcomplete.osm.be/nature) + + +### all_streets + + + +[Go to the source code](../assets/layers/all_streets/all_streets.json) + + + + - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` + + + + +#### Themes using this layer + + + + + + - [cyclestreets](https://mapcomplete.osm.be/cyclestreets) + - [street_lighting](https://mapcomplete.osm.be/street_lighting) + + +This document is autogenerated from AllKnownLayers.ts \ No newline at end of file diff --git a/Docs/CalculatedTags.md b/Docs/CalculatedTags.md index 07f334db6..91b0dd568 100644 --- a/Docs/CalculatedTags.md +++ b/Docs/CalculatedTags.md @@ -1,4 +1,5 @@ + Metatags ========== @@ -11,6 +12,7 @@ The are calculated automatically on every feature when the data arrives in the w **Hint:** when using metatags, add the [query parameter](URL_Parameters.md) `debug=true` to the URL. This will include a box in the popup for features which shows all the properties of the object + Metatags calculated by MapComplete ------------------------------------ @@ -19,6 +21,7 @@ The are calculated automatically on every feature when the data arrives in the w The following values are always calculated, by default, by MapComplete and are available automatically on all elements in every theme + ### _lat, _lon @@ -28,6 +31,7 @@ The latitude and longitude of the point (or centerpoint in the case of a way/are + ### _layer @@ -37,6 +41,7 @@ The layer-id to which this feature belongs. Note that this might be return any a + ### _surface, _surface:ha @@ -46,6 +51,7 @@ The surface area of the feature, in square meters and in hectare. Not set on poi This is a lazy metatag and is only calculated when needed + ### _length, _length:km @@ -55,6 +61,7 @@ The total length of a feature in meters (and in kilometers, rounded to one decim + ### Theme-defined keys @@ -64,6 +71,7 @@ If 'units' is defined in the layoutConfig, then this metatagger will rewrite the + ### _country @@ -73,6 +81,7 @@ The country code of the property (with latlon2country) + ### _isOpen, _isOpen:description @@ -82,6 +91,7 @@ If 'opening_hours' is present, it will add the current state of the feature (bei This is a lazy metatag and is only calculated when needed + ### _direction:numerical, _direction:leftright @@ -91,6 +101,7 @@ _direction:numerical is a normalized, numerical direction based on 'camera:direc + ### _now:date, _now:datetime, _loaded:date, _loaded:_datetime @@ -100,6 +111,7 @@ Adds the time that the data got loaded - pretty much the time of downloading fro + ### _last_edit:contributor, _last_edit:contributor:uid, _last_edit:changeset, _last_edit:timestamp, _version_number, _backend @@ -109,6 +121,7 @@ Information about the last edit of this object. + ### sidewalk:left, sidewalk:right, generic_key:left:property, generic_key:right:property @@ -118,6 +131,7 @@ Rewrites tags from 'generic_key:both:property' as 'generic_key:left:property' an + Calculating tags with Javascript ---------------------------------- @@ -173,6 +187,7 @@ Some advanced functions are available on **feat** as well: - [memberships](#memberships) - [get](#get) + ### distanceTo Calculates the distance between the feature and a specified point in kilometer. The input should either be a pair of coordinates, a geojson feature or the ID of an object @@ -180,6 +195,7 @@ Some advanced functions are available on **feat** as well: 0. feature OR featureID OR longitude 1. undefined OR latitude + ### overlapWith Gives a list of features from the specified layer which this feature (partly) overlaps with. A point which is embedded in the feature is detected as well.If the current feature is a point, all features that this point is embeded in are given. @@ -191,12 +207,14 @@ For example to get all objects which overlap or embed from a layer, use `_contai 0. ...layerIds - one or more layer ids of the layer from which every feature is checked for overlap) + ### closest Given either a list of geojson features or a single layer name, gives the single object which is nearest to the feature. In the case of ways/polygons, only the centerpoint is considered. Returns a single geojson feature or undefined if nothing is found (or not yet laoded) 0. list of features or a layer name or '*' to get all features + ### closestn Given either a list of geojson features or a single layer name, gives the n closest objects which are nearest to the feature (excluding the feature itself). In the case of ways/polygons, only the centerpoint is considered. Returns a list of `{feat: geojson, distance:number}` the empty list if nothing is found (or not yet loaded) @@ -208,6 +226,7 @@ If a 'unique tag key' is given, the tag with this key will only appear once (e.g 2. unique tag key (optional) 3. maxDistanceInMeters (optional) + ### memberships Gives a list of `{role: string, relation: Relation}`-objects, containing all the relations that this feature is part of. @@ -216,9 +235,12 @@ For example: `_part_of_walking_routes=feat.memberships().map(r => r.relation.tag + ### get Gets the property of the feature, parses it (as JSON) and returns it. Might return 'undefined' if not defined, null, ... 0. key - Generated from SimpleMetaTagger, ExtraFunction \ No newline at end of file + + +This document is autogenerated from SimpleMetaTagger, ExtraFunction \ No newline at end of file diff --git a/Docs/ContributorRights.md b/Docs/ContributorRights.md index f845f0672..c9257350d 100644 --- a/Docs/ContributorRights.md +++ b/Docs/ContributorRights.md @@ -1,32 +1,42 @@ - - Rights of contributors - ====================== +Rights of contributors +====================== If a contributor is quite active within MapComplete, this contributor might be granted access to the main repository. -If you have access to the repository, you can make a fork of an already existing branch and push this new branch to github. -This means that this branch will be _automatically built_ and be **deployed** to `https://pietervdvn.github.io/mc/`. You can see the deploy process on [Github Actions](https://github.com/pietervdvn/MapComplete/actions). -Don't worry about pushing too much. These deploys are free and totally automatic. They might fail if something is wrong, but this will hinder no-one. +If you have access to the repository, you can make a fork of an already existing branch and push this new branch to +github. This means that this branch will be _automatically built_ and be **deployed** +to `https://pietervdvn.github.io/mc/`. You can see the deploy process +on [Github Actions](https://github.com/pietervdvn/MapComplete/actions). Don't worry about pushing too much. These +deploys are free and totally automatic. They might fail if something is wrong, but this will hinder no-one. -Additionaly, some other maintainer might step in and merge the latest develop with your branch, making later pull requests easier. +Additionaly, some other maintainer might step in and merge the latest develop with your branch, making later pull +requests easier. Don't worry about bugs ---------------------- -As a non-admin contributor, you can _not_ make changes to the `master` nor to the `develop` branch. This is because, as soon as master is changed, this is built and deployed on `mapcomplete.osm.be`, which a lot of people use. An error there will cause a lot of grieve. +As a non-admin contributor, you can _not_ make changes to the `master` nor to the `develop` branch. This is because, as +soon as master is changed, this is built and deployed on `mapcomplete.osm.be`, which a lot of people use. An error there +will cause a lot of grieve. -A push on `develop` is automatically deployed to [pietervdvn.github.io/mc/develop] and is used by quite some people to. People using this version should know that this is a testing ground for new features and might contain a bug every now and then. +A push on `develop` is automatically deployed to [pietervdvn.github.io/mc/develop] and is used by quite some people to. +People using this version should know that this is a testing ground for new features and might contain a bug every now +and then. -In other words, to get your theme deployed on the main instances, you'll still have to create a pull request. The maintainers will then doublecheck and pull it in. +In other words, to get your theme deployed on the main instances, you'll still have to create a pull request. The +maintainers will then doublecheck and pull it in. If you have a local repository ------------------------------ -If you have made a fork earlier and have received contributor rights, you need to tell your local git repository that pushing to the main repository is possible. +If you have made a fork earlier and have received contributor rights, you need to tell your local git repository that +pushing to the main repository is possible. To do this: 1. type `git remote add upstream git@github.com:pietervdvn/MapComplete` -2. Run `git push upstream` to push your latest changes to the main repo (and not your fork). Running `git push` will push to your fork. +2. Run `git push upstream` to push your latest changes to the main repo (and not your fork). Running `git push` will + push to your fork. -Alternatively, if you don't have any unmerged changes, you can remove your local copy and clone `pietervdvn/MapComplete` again to start fresh. \ No newline at end of file +Alternatively, if you don't have any unmerged changes, you can remove your local copy and clone `pietervdvn/MapComplete` +again to start fresh. \ No newline at end of file diff --git a/Docs/Development_deployment.md b/Docs/Development_deployment.md index 2bf304508..30e14a452 100644 --- a/Docs/Development_deployment.md +++ b/Docs/Development_deployment.md @@ -28,14 +28,15 @@ To develop and build MapComplete, you 0. Make a fork and clone the repository. 0. Install the nodejs version specified in [.tool-versions](./.tool-versions) - - On linux: install npm first `sudo apt install npm`, then install `n` using npm: ` npm install -g n`, which can then install node with `n install ` - - You can [use asdf to manage your runtime versions](https://asdf-vm.com/). + - On linux: install npm first `sudo apt install npm`, then install `n` using npm: ` npm install -g n`, which can + then install node with `n install ` + - You can [use asdf to manage your runtime versions](https://asdf-vm.com/). 0. Install `npm`. Linux: `sudo apt install npm` (or your favourite package manager), Windows: install nodeJS: https://nodejs.org/en/download/ 0. On iOS, install `wget` (`brew install wget`) 0. Run `npm run init` which â€Ļ - - runs `npm install` - - generates some additional dependencies and files + - runs `npm install` + - generates some additional dependencies and files 0. Run `npm run start` to host a local testversion at http://localhost:1234/index.html 0. By default, a landing page with available themes is served. In order to load a single theme, use `layout=themename` or `userlayout=true#` as [Query parameter](URL_Parameters.md). Note that the shorter URLs ( @@ -106,7 +107,8 @@ Try removing `node_modules`, `package-lock.json` and `.cache` Misc setup ---------- -The json-git-merger is used to quickly merge translation files, [documentation here](https://github.com/jonatanpedersen/git-json-merge#single-project--directory) +~~The json-git-merger is used to quickly merge translation files, [documentation here](https://github.com/jonatanpedersen/git-json-merge#single-project--directory).~~ +This merge driver is broken and would sometimes drop new questions or duplicate them... Not a good idea! Overview of package.json-scripts -------------------------------- diff --git a/Docs/Making_Your_Own_Theme.md b/Docs/Making_Your_Own_Theme.md index dc6cb2eb4..9b206e445 100644 --- a/Docs/Making_Your_Own_Theme.md +++ b/Docs/Making_Your_Own_Theme.md @@ -105,11 +105,68 @@ Every field is documented in the source code itself - you can find them here: - [The `TagRendering`](https://github.com/pietervdvn/MapComplete/blob/master/Models/ThemeConfig/Json/TagRenderingConfigJson.ts) - At last, the exact semantics of tags is documented [here](Tags_format.md) +A JSON-schema file is available in Docs/Schemas - use LayoutConfig.schema.json to validate a theme file. + ### MetaTags There are few tags available that are calculated for convenience - e.g. the country an object is located at. [An overview of all these metatags is available here](Docs/CalculatedTags.md) + +### TagRendering groups + +A tagRendering can have a `group`-attribute, which acts as a tag. +All tagRenderings with the same group name will be rendered together, in the same order as they were defined. + +For example, if the defined tagrenderings have groups `A A B A A B B B`, the group order is `A B` and first all tagrenderings from group A will be rendered (thus numbers 0, 1, 3 and 4) followed by the question box for this group. +Then, all the tagRenderings for group B will be shown, thus number 2, 5, 6 and 7, again followed by their questionbox. + +Additionally, every tagrendering will receive a the groupname as class in the HTML, which can be used to hook up custom CSS. + +If no group tag is given, the group is `` (empty string) + +### Deciding the questions position + +By default, the questions are shown just beneath their group. + +To override this behaviour, one can add a tagrendering with id `questions` to move the questions up. + +To add a title to the questions, one can add a `render` and a condition. + +To change the behaviour of the questionbox to show _all_ questions at once, one can use a helperArgs in the freeform field with option `showAllQuestions`. + +For example, to show the questions on top, use: + +``` +"tagRenderings": [ + { "id": "questions" } + { ... some tagrendering ... } + { ... more tagrendering ...} +] +``` + +To show _all_ the questions of a group at once in the middle of the tagrenderings, with a header, use: + +``` +"tagRenderings": [ + { + "id": "questions" , + "group": "groupname", + "render": { + "en": "

Technical questions

The following questions are very technical!
{questions} + }, + "freeform": { + "key": "questions", + "helperArgs": { + "showAllQuestions": true + } + } + } + { ... some tagrendering ... } + { ... more tagrendering ...} +] +``` + Some hints ------------ @@ -173,16 +230,7 @@ Instead, make one layer for one kind of object and change the icon based on attr Using layers as filters - this doesn't work! -_All_ data is downloaded in one go and cached locally first. The layer selection (bottom left of the live app) then -selects _anything_ that matches the criteria. This match is then passed of to the rendering layer, which selects the -layer independently. This means that a feature can show up, even if it's layer is unselected! - -For example, in the [cyclofix-theme](https://mapcomplete.osm.org/cyclofix), there is the layer with _bike-wash_ for do -it yourself bikecleaning - points marked with `service:bicycle:cleaning`. However, a bicycle repair shop can offer this -service too! - -If all the layers are deselected except the bike wash layer, a shop having this tag will still match and will still show -up as shop. +Use the `filter`-functionality instead ### Not reading the .JSON-specs diff --git a/Docs/Misc/geolocation_button.gv.svg b/Docs/Misc/geolocation_button.gv.svg index 6dbf78848..5fd2710d0 100644 --- a/Docs/Misc/geolocation_button.gv.svg +++ b/Docs/Misc/geolocation_button.gv.svg @@ -1,145 +1,181 @@ + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> - -G - - - -init - -init - - - -denied - -denied - - - -init->denied - - -geolocation permanently denied - - - -getting_location - -getting_location - - - -init->getting_location - - -previously granted flag set - - - -idle - -idle - - - -init->idle - - -previously granted flag unset - - - -location_found - -location_found - - - -getting_location->location_found - - -location found - - - -request_permission - -request_permission - - - -idle->request_permission - - -on click - - - -request_permission->denied - - -permanently denied - - - -request_permission->getting_location - - -granted (sets flag) - - - -request_permission->idle - - -not granted - - - -open_lock - -open_lock - - - -location_found->open_lock - - -on click (zooms to location) - - - -open_lock->location_found - - -after 3 sec - - - -closed_lock - -closed_lock - - - -open_lock->closed_lock - - -on click (locks zoom to location) - - - -closed_lock->location_found - - -on click - - + viewBox="0.00 0.00 664.25 566.00" xmlns="http://www.w3.org/2000/svg"> + + G + + + + init + + init + + + + denied + + denied + + + + init->denied + + + geolocation + permanently denied + + + + + getting_location + + + getting_location + + + + + init->getting_location + + + previously + granted flag set + + + + + idle + + idle + + + + init->idle + + + previously + granted flag unset + + + + + location_found + + + location_found + + + + + getting_location->location_found + + + location + found + + + + + request_permission + + + request_permission + + + + + idle->request_permission + + + on click + + + + request_permission->denied + + + permanently + denied + + + + + request_permission->getting_location + + + granted (sets + flag) + + + + + request_permission->idle + + + not granted + + + + + open_lock + + open_lock + + + + + location_found->open_lock + + + on click (zooms + to location) + + + + + open_lock->location_found + + + after 3 sec + + + + + closed_lock + + closed_lock + + + + + open_lock->closed_lock + + + on click (locks + zoom to location) + + + + + closed_lock->location_found + + + on click + + diff --git a/Docs/Release_Notes.md b/Docs/Release_Notes.md index c6f0ac35d..e352720c2 100644 --- a/Docs/Release_Notes.md +++ b/Docs/Release_Notes.md @@ -6,13 +6,15 @@ Some highlights of new releases. 0.10 ---- -The 0.10 version contains a lot of refactorings on various core of the application, namely in the rendering stack, the fetching of data and uploading. +The 0.10 version contains a lot of refactorings on various core of the application, namely in the rendering stack, the +fetching of data and uploading. Some highlights are: 1. The addition of fallback overpass servers 2. Fetching data from OSM directly (especially useful in the personal theme) -3. Splitting all the features per tile (with a maximum amount of features per tile, splitting further if needed), making everything a ton faster +3. Splitting all the features per tile (with a maximum amount of features per tile, splitting further if needed), making + everything a ton faster 4. If a tile has too much features, the featuers are not shown. Instead, a rectangle with the feature amount is shown. Furthermore, it contains a few new themes and theme updates: @@ -31,9 +33,8 @@ Other various small improvements: 0.8 and 0.9 ----------- -Addition of filters per layer -Addition of a download-as-pdf for select themes -Addition of a download-as-geojson and download-as-csv for select themes +Addition of filters per layer Addition of a download-as-pdf for select themes Addition of a download-as-geojson and +download-as-csv for select themes ... diff --git a/Docs/Schemas/AndOrTagConfigJson.schema.json b/Docs/Schemas/AndOrTagConfigJson.schema.json new file mode 100644 index 000000000..a6214c2ea --- /dev/null +++ b/Docs/Schemas/AndOrTagConfigJson.schema.json @@ -0,0 +1,39 @@ +{ + "$ref": "#/definitions/AndOrTagConfigJson", + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/AndOrTagConfigJsonJSC.ts b/Docs/Schemas/AndOrTagConfigJsonJSC.ts new file mode 100644 index 000000000..6600f8502 --- /dev/null +++ b/Docs/Schemas/AndOrTagConfigJsonJSC.ts @@ -0,0 +1,37 @@ +export default { + "$ref": "#/definitions/AndOrTagConfigJson", + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/DeleteConfigJson.schema.json b/Docs/Schemas/DeleteConfigJson.schema.json new file mode 100644 index 000000000..bdaca19ed --- /dev/null +++ b/Docs/Schemas/DeleteConfigJson.schema.json @@ -0,0 +1,93 @@ +{ + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/DeleteConfigJsonJSC.ts b/Docs/Schemas/DeleteConfigJsonJSC.ts new file mode 100644 index 000000000..bdc96c0c4 --- /dev/null +++ b/Docs/Schemas/DeleteConfigJsonJSC.ts @@ -0,0 +1,91 @@ +export default { + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/FilterConfigJson.schema.json b/Docs/Schemas/FilterConfigJson.schema.json new file mode 100644 index 000000000..da7c9c8f0 --- /dev/null +++ b/Docs/Schemas/FilterConfigJson.schema.json @@ -0,0 +1,72 @@ +{ + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/FilterConfigJsonJSC.ts b/Docs/Schemas/FilterConfigJsonJSC.ts new file mode 100644 index 000000000..b2f245b1b --- /dev/null +++ b/Docs/Schemas/FilterConfigJsonJSC.ts @@ -0,0 +1,70 @@ +export default { + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/LayerConfigJson.schema.json b/Docs/Schemas/LayerConfigJson.schema.json new file mode 100644 index 000000000..471fd0282 --- /dev/null +++ b/Docs/Schemas/LayerConfigJson.schema.json @@ -0,0 +1,900 @@ +{ + "description": "Configuration for a single layer", + "type": "object", + "properties": { + "id": { + "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer.", + "type": "string" + }, + "name": { + "description": "The name of this layer\nUsed in the layer control panel and the 'Personal theme'.\n\nIf not given, will be hidden (and thus not toggable) in the layer control" + }, + "description": { + "description": "A description for this layer.\nShown in the layer selections and in the personel theme" + }, + "source": { + "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated", + "anyOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "overpassScript": { + "type": "string" + } + }, + "required": [ + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + }, + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "geoJson": { + "type": "string" + }, + "geoJsonZoomLevel": { + "type": "number" + }, + "isOsmCache": { + "type": "boolean" + }, + "mercatorCrs": { + "type": "boolean" + } + }, + "required": [ + "geoJson", + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + } + ] + }, + "calculatedTags": { + "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]", + "type": "array", + "items": { + "type": "string" + } + }, + "doNotDownload": { + "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration", + "type": "boolean" + }, + "isShown": { + "description": "This tag rendering should either be 'yes' or 'no'. If 'no' is returned, then the feature will be hidden from view.\nThis is useful to hide certain features from view.\n\nImportant: hiding features does not work dynamically, but is only calculated when the data is first renders.\nThis implies that it is not possible to hide a feature after a tagging change\n\nThe default value is 'yes'", + "$ref": "#/definitions/TagRenderingConfigJson" + }, + "minzoom": { + "description": "The minimum needed zoomlevel required before loading of the data start\nDefault: 0", + "type": "number" + }, + "minzoomVisible": { + "description": "The zoom level at which point the data is hidden again\nDefault: 100 (thus: always visible", + "type": "number" + }, + "title": { + "description": "The title shown in a popup for elements of this layer.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "titleIcons": { + "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "mapRendering": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/default_3" + }, + { + "$ref": "#/definitions/default_4" + } + ] + } + }, + "passAllFeatures": { + "description": "If set, this layer will pass all the features it receives onto the next layer.\nThis is ideal for decoration, e.g. directionss on cameras", + "type": "boolean" + }, + "presets": { + "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\n\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\n\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\n\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all", + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "description": "The title - shown on the 'add-new'-button." + }, + "tags": { + "description": "The tags to add. It determines the icon too", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "The _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n\n(The first sentence is until the first '.'-character in the description)" + }, + "preciseInput": { + "description": "If set, the user will prompted to confirm the location before actually adding the data.\nThis will be with a 'drag crosshair'-method.\n\nIf 'preferredBackgroundCategory' is set, the element will attempt to pick a background layer of that category.", + "anyOf": [ + { + "type": "object", + "properties": { + "preferredBackground": { + "description": "The type of background picture", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "snapToLayer": { + "description": "If specified, these layers will be shown to and the new point will be snapped towards it", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "maxSnapDistance": { + "description": "If specified, a new point will only be snapped if it is within this range.\nDistance in meter\n\nDefault: 10", + "type": "number" + } + }, + "required": [ + "preferredBackground" + ] + }, + { + "enum": [ + true + ], + "type": "boolean" + } + ] + } + }, + "required": [ + "tags", + "title" + ] + } + }, + "tagRenderings": { + "description": "All the tag renderings.\nA tag rendering is a block that either shows the known value or asks a question.\n\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\n\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\n\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\n\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "object", + "properties": { + "rewrite": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sourceString": { + "type": "string" + }, + "into": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "into", + "sourceString" + ] + } + }, + "renderings": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "renderings", + "rewrite" + ] + }, + { + "type": "string" + } + ] + } + }, + "filter": { + "description": "All the extra questions for filtering", + "type": "array", + "items": { + "$ref": "#/definitions/default" + } + }, + "deletion": { + "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\n\nTo configure, the following values are possible:\n\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n\n The delete dialog\n =================\n\n\n\n#### Hard deletion if enough experience\n\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\n\nIn all other cases, a 'soft deletion' is used.\n\n#### Soft deletion\n\nA 'soft deletion' is when the point isn't deleted from OSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\n\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n\n#### No-delete options\n\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\n\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags.", + "anyOf": [ + { + "$ref": "#/definitions/DeleteConfigJson" + }, + { + "type": "boolean" + } + ] + }, + "allowMove": { + "description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.", + "anyOf": [ + { + "$ref": "#/definitions/default_2" + }, + { + "type": "boolean" + } + ] + }, + "allowSplit": { + "description": "IF set, a 'split this road' button is shown", + "type": "boolean" + }, + "units": { + "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given", + "type": "array", + "items": { + "$ref": "#/definitions/default_1" + } + } + }, + "required": [ + "id", + "mapRendering", + "source" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ], + "additionalProperties": false + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + }, + "additionalProperties": false + }, + "default_3": { + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ], + "additionalProperties": false + }, + "default_4": { + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + }, + "additionalProperties": false + }, + "default": { + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ], + "additionalProperties": false + }, + "DeleteConfigJson": { + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + }, + "additionalProperties": false + }, + "default_2": { + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + }, + "additionalProperties": false + }, + "default_1": { + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/LayerConfigJsonJSC.ts b/Docs/Schemas/LayerConfigJsonJSC.ts new file mode 100644 index 000000000..3f72a2e97 --- /dev/null +++ b/Docs/Schemas/LayerConfigJsonJSC.ts @@ -0,0 +1,890 @@ +export default { + "description": "Configuration for a single layer", + "type": "object", + "properties": { + "id": { + "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer.", + "type": "string" + }, + "name": { + "description": "The name of this layer\nUsed in the layer control panel and the 'Personal theme'.\n\nIf not given, will be hidden (and thus not toggable) in the layer control" + }, + "description": { + "description": "A description for this layer.\nShown in the layer selections and in the personel theme" + }, + "source": { + "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated", + "anyOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "overpassScript": { + "type": "string" + } + }, + "required": [ + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + }, + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "geoJson": { + "type": "string" + }, + "geoJsonZoomLevel": { + "type": "number" + }, + "isOsmCache": { + "type": "boolean" + }, + "mercatorCrs": { + "type": "boolean" + } + }, + "required": [ + "geoJson", + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + } + ] + }, + "calculatedTags": { + "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]", + "type": "array", + "items": { + "type": "string" + } + }, + "doNotDownload": { + "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration", + "type": "boolean" + }, + "isShown": { + "description": "This tag rendering should either be 'yes' or 'no'. If 'no' is returned, then the feature will be hidden from view.\nThis is useful to hide certain features from view.\n\nImportant: hiding features does not work dynamically, but is only calculated when the data is first renders.\nThis implies that it is not possible to hide a feature after a tagging change\n\nThe default value is 'yes'", + "$ref": "#/definitions/TagRenderingConfigJson" + }, + "minzoom": { + "description": "The minimum needed zoomlevel required before loading of the data start\nDefault: 0", + "type": "number" + }, + "minzoomVisible": { + "description": "The zoom level at which point the data is hidden again\nDefault: 100 (thus: always visible", + "type": "number" + }, + "title": { + "description": "The title shown in a popup for elements of this layer.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "titleIcons": { + "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "mapRendering": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/default_3" + }, + { + "$ref": "#/definitions/default_4" + } + ] + } + }, + "passAllFeatures": { + "description": "If set, this layer will pass all the features it receives onto the next layer.\nThis is ideal for decoration, e.g. directionss on cameras", + "type": "boolean" + }, + "presets": { + "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\n\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\n\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\n\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all", + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "description": "The title - shown on the 'add-new'-button." + }, + "tags": { + "description": "The tags to add. It determines the icon too", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "The _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n\n(The first sentence is until the first '.'-character in the description)" + }, + "preciseInput": { + "description": "If set, the user will prompted to confirm the location before actually adding the data.\nThis will be with a 'drag crosshair'-method.\n\nIf 'preferredBackgroundCategory' is set, the element will attempt to pick a background layer of that category.", + "anyOf": [ + { + "type": "object", + "properties": { + "preferredBackground": { + "description": "The type of background picture", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "snapToLayer": { + "description": "If specified, these layers will be shown to and the new point will be snapped towards it", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "maxSnapDistance": { + "description": "If specified, a new point will only be snapped if it is within this range.\nDistance in meter\n\nDefault: 10", + "type": "number" + } + }, + "required": [ + "preferredBackground" + ] + }, + { + "enum": [ + true + ], + "type": "boolean" + } + ] + } + }, + "required": [ + "tags", + "title" + ] + } + }, + "tagRenderings": { + "description": "All the tag renderings.\nA tag rendering is a block that either shows the known value or asks a question.\n\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\n\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\n\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\n\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "object", + "properties": { + "rewrite": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sourceString": { + "type": "string" + }, + "into": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "into", + "sourceString" + ] + } + }, + "renderings": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "renderings", + "rewrite" + ] + }, + { + "type": "string" + } + ] + } + }, + "filter": { + "description": "All the extra questions for filtering", + "type": "array", + "items": { + "$ref": "#/definitions/default" + } + }, + "deletion": { + "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\n\nTo configure, the following values are possible:\n\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n\n The delete dialog\n =================\n\n\n\n#### Hard deletion if enough experience\n\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\n\nIn all other cases, a 'soft deletion' is used.\n\n#### Soft deletion\n\nA 'soft deletion' is when the point isn't deleted from OSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\n\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n\n#### No-delete options\n\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\n\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags.", + "anyOf": [ + { + "$ref": "#/definitions/DeleteConfigJson" + }, + { + "type": "boolean" + } + ] + }, + "allowMove": { + "description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.", + "anyOf": [ + { + "$ref": "#/definitions/default_2" + }, + { + "type": "boolean" + } + ] + }, + "allowSplit": { + "description": "IF set, a 'split this road' button is shown", + "type": "boolean" + }, + "units": { + "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given", + "type": "array", + "items": { + "$ref": "#/definitions/default_1" + } + } + }, + "required": [ + "id", + "mapRendering", + "source" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ] + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + } + }, + "default_3": { + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ] + }, + "default_4": { + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + } + }, + "default": { + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ] + }, + "DeleteConfigJson": { + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + } + }, + "default_2": { + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + } + }, + "default_1": { + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/LayoutConfigJson.schema.json b/Docs/Schemas/LayoutConfigJson.schema.json new file mode 100644 index 000000000..0acf04ad5 --- /dev/null +++ b/Docs/Schemas/LayoutConfigJson.schema.json @@ -0,0 +1,1215 @@ +{ + "description": "Defines the entire theme.\n\nA theme is the collection of the layers that are shown; the intro text, the icon, ...\nIt more or less defines the entire experience.\n\nMost of the fields defined here are metadata about the theme, such as its name, description, supported languages, default starting location, ...\n\nThe main chunk of the json will however be the 'layers'-array, where the details of your layers are.\n\nGeneral remark: a type (string | any) indicates either a fixed or a translatable string.", + "type": "object", + "properties": { + "id": { + "description": "The id of this layout.\n\nThis is used as hashtag in the changeset message, which will read something like \"Adding data with #mapcomplete for theme #\"\nMake sure it is something decent and descriptive, it should be a simple, lowercase string.\n\nOn official themes, it'll become the name of the page, e.g.\n'cyclestreets' which become 'cyclestreets.html'", + "type": "string" + }, + "credits": { + "description": "Who helped to create this theme and should be attributed?", + "type": "string" + }, + "maintainer": { + "description": "Who does maintian this preset?", + "type": "string" + }, + "version": { + "description": "A version number, either semantically or by date.\nShould be sortable, where the higher value is the later version", + "type": "string" + }, + "language": { + "description": "The supported language(s).\nThis should be a two-letter, lowercase code which identifies the language, e.g. \"en\", \"nl\", ...\nIf the theme supports multiple languages, use a list: `[\"en\",\"nl\",\"fr\"]` to allow the user to pick any of them", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "mustHaveLanguage": { + "description": "Only used in 'generateLayerOverview': if present, every translation will be checked to make sure it is fully translated", + "type": "array", + "items": { + "type": "string" + } + }, + "title": { + "description": "The title, as shown in the welcome message and the more-screen" + }, + "shortDescription": { + "description": "A short description, showed as social description and in the 'more theme'-buttons.\nNote that if this one is not defined, the first sentence of 'description' is used" + }, + "description": { + "description": "The description, as shown in the welcome message and the more-screen" + }, + "descriptionTail": { + "description": "A part of the description, shown under the login-button." + }, + "icon": { + "description": "The icon representing this theme.\nUsed as logo in the more-screen and (for official themes) as favicon, webmanifest logo, ...\nEither a URL or a base64 encoded value (which should include 'data:image/svg+xml;base64)", + "type": "string" + }, + "socialImage": { + "description": "Link to a 'social image' which is included as og:image-tag on official themes.\nUseful to share the theme on social media.\nSee https://www.h3xed.com/web-and-internet/how-to-use-og-image-meta-tag-facebook-reddit for more information", + "type": "string" + }, + "startZoom": { + "description": "Default location and zoom to start.\nNote that this is barely used. Once the user has visited mapcomplete at least once, the previous location of the user will be used", + "type": "number" + }, + "startLat": { + "type": "number" + }, + "startLon": { + "type": "number" + }, + "widenFactor": { + "description": "When a query is run, the data within bounds of the visible map is loaded.\nHowever, users tend to pan and zoom a lot. It is pretty annoying if every single pan means a reloading of the data.\nFor this, the bounds are widened in order to make a small pan still within bounds of the loaded data.\n\nIF widenfactor is 1, this feature is disabled. A recommended value is between 1 and 3", + "type": "number" + }, + "overpassMaxZoom": { + "description": "At low zoom levels, overpass is used to query features.\nAt high zoom level, the OSM api is used to fetch one or more BBOX aligning with a slippy tile.\nThe overpassMaxZoom controls the flipoverpoint: if the zoom is this or lower, overpass is used.", + "type": "number" + }, + "osmApiTileSize": { + "description": "When the OSM-api is used to fetch features, it does so in a tiled fashion.\nThese tiles are using a ceratin zoom level, that can be controlled here\nDefault: overpassMaxZoom + 1", + "type": "number" + }, + "overrideAll": { + "description": "An override applied on all layers of the theme.\n\nE.g.: if there are two layers defined:\n```\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ...}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ...}}\n]\n```\n\nand overrideAll is specified:\n```\n\"overrideAll\": {\n \"osmSource\":{\"geoJsonSource\":\"xyz\"}\n}\nthen the result will be that all the layers will have these properties applied and result in:\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ..., \"geoJsonSource\":\"xyz\"}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ..., \"geoJsonSource\":\"xyz\"}}\n]\n```\n\nIf the overrideAll contains a list where the keys starts with a plus, the values will be appended (instead of discarding the old list), for example\n\n\"overrideAll\": {\n \"+tagRenderings\": [ { ... some tagrendering ... }]\n}\n\nIn the above scenario, `sometagrendering` will be added at the beginning of the tagrenderings of every layer" + }, + "defaultBackgroundId": { + "description": "The id of the default background. BY default: vanilla OSM", + "type": "string" + }, + "tileLayerSources": { + "description": "Define some (overlay) slippy map tilesources", + "type": "array", + "items": { + "$ref": "#/definitions/default_5" + } + }, + "layers": { + "description": "The layers to display.\n\nEvery layer contains a description of which feature to display - the overpassTags which are queried.\nInstead of running one query for every layer, the query is fused.\n\nAfterwards, every layer is given the list of features.\nEvery layer takes away the features that match with them*, and give the leftovers to the next layers.\n\nThis implies that the _order_ of the layers is important in the case of features with the same tags;\nas the later layers might never receive their feature.\n\n*layers can also remove 'leftover'-features if the leftovers overlap with a feature in the layer itself\n\nNote that builtin layers can be reused. Either put in the name of the layer to reuse, or use {builtin: \"layername\", override: ...}\n\nThe 'override'-object will be copied over the original values of the layer, which allows to change certain aspects of the layer\n\nFor example: If you would like to use layer nature reserves, but only from a specific operator (eg. Natuurpunt) you would use the following in your theme:\n\n```\n\"layer\": {\n \"builtin\": \"nature_reserve\",\n \"override\": {\"source\": \n {\"osmTags\": {\n \"+and\":[\"operator=Natuurpunt\"]\n }\n }\n }\n}\n```\n\nIt's also possible to load multiple layers at once, for example, if you would like for both drinking water and benches to start at the zoomlevel at 12, you would use the following:\n\n```\n\"layer\": {\n \"builtin\": [\"benches\", \"drinking_water\"],\n \"override\": {\"minzoom\": 12}\n}\n```", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/LayerConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "string" + } + ] + } + }, + "clustering": { + "description": "If defined, data will be clustered.\nDefaults to {maxZoom: 16, minNeeded: 500}", + "type": "object", + "properties": { + "maxZoom": { + "description": "All zoom levels above 'maxzoom' are not clustered anymore.\nDefaults to 18", + "type": "number" + }, + "minNeededElements": { + "description": "The number of elements per tile needed to start clustering\nIf clustering is defined, defaults to 25", + "type": "number" + } + } + }, + "customCss": { + "description": "The URL of a custom CSS stylesheet to modify the layout", + "type": "string" + }, + "hideFromOverview": { + "description": "If set to true, this layout will not be shown in the overview with more themes", + "type": "boolean" + }, + "lockLocation": { + "description": "If set to true, the basemap will not scroll outside of the area visible on initial zoom.\nIf set to [[lat0, lon0], [lat1, lon1]], the map will not scroll outside of those bounds.\nOff by default, which will enable panning to the entire world", + "anyOf": [ + { + "type": "array", + "items": [ + { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "minItems": 2, + "maxItems": 2 + }, + { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "minItems": 2, + "maxItems": 2 + } + ], + "minItems": 2, + "maxItems": 2 + }, + { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number" + } + } + }, + { + "type": "boolean" + } + ] + }, + "enableUserBadge": { + "type": "boolean" + }, + "enableShareScreen": { + "type": "boolean" + }, + "enableMoreQuests": { + "type": "boolean" + }, + "enableLayers": { + "type": "boolean" + }, + "enableSearch": { + "type": "boolean" + }, + "enableAddNewPoints": { + "type": "boolean" + }, + "enableGeolocation": { + "type": "boolean" + }, + "enableBackgroundLayerSelection": { + "type": "boolean" + }, + "enableShowAllQuestions": { + "type": "boolean" + }, + "enableDownload": { + "type": "boolean" + }, + "enablePdfDownload": { + "type": "boolean" + }, + "enableIframePopout": { + "type": "boolean" + }, + "overpassUrl": { + "description": "Set one or more overpass URLs to use for this theme..", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "overpassTimeout": { + "description": "Set a different timeout for overpass queries - in seconds. Default: 30s", + "type": "number" + } + }, + "required": [ + "description", + "icon", + "id", + "language", + "layers", + "maintainer", + "startLat", + "startLon", + "startZoom", + "title", + "version" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ], + "additionalProperties": false + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + }, + "additionalProperties": false + }, + "default_3": { + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ], + "additionalProperties": false + }, + "default_4": { + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + }, + "additionalProperties": false + }, + "default": { + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ], + "additionalProperties": false + }, + "DeleteConfigJson": { + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + }, + "additionalProperties": false + }, + "default_2": { + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + }, + "additionalProperties": false + }, + "default_1": { + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ], + "additionalProperties": false + }, + "default_5": { + "description": "Configuration for a tilesource config", + "type": "object", + "properties": { + "id": { + "description": "Id of this overlay, used in the URL-parameters to set the state", + "type": "string" + }, + "source": { + "description": "The path, where {x}, {y} and {z} will be substituted", + "type": "string" + }, + "isOverlay": { + "description": "Wether or not this is an overlay. Default: true", + "type": "boolean" + }, + "name": { + "description": "How this will be shown in the selection menu.\nMake undefined if this may not be toggled" + }, + "minZoom": { + "description": "Only visible at this or a higher zoom level", + "type": "number" + }, + "maxZoom": { + "description": "Only visible at this or a lower zoom level", + "type": "number" + }, + "defaultState": { + "description": "The default state, set to false to hide by default", + "type": "boolean" + } + }, + "required": [ + "defaultState", + "id", + "source" + ], + "additionalProperties": false + }, + "LayerConfigJson": { + "description": "Configuration for a single layer", + "type": "object", + "properties": { + "id": { + "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer.", + "type": "string" + }, + "name": { + "description": "The name of this layer\nUsed in the layer control panel and the 'Personal theme'.\n\nIf not given, will be hidden (and thus not toggable) in the layer control" + }, + "description": { + "description": "A description for this layer.\nShown in the layer selections and in the personel theme" + }, + "source": { + "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated", + "anyOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "overpassScript": { + "type": "string" + } + }, + "required": [ + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + }, + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "geoJson": { + "type": "string" + }, + "geoJsonZoomLevel": { + "type": "number" + }, + "isOsmCache": { + "type": "boolean" + }, + "mercatorCrs": { + "type": "boolean" + } + }, + "required": [ + "geoJson", + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + } + ] + }, + "calculatedTags": { + "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]", + "type": "array", + "items": { + "type": "string" + } + }, + "doNotDownload": { + "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration", + "type": "boolean" + }, + "isShown": { + "description": "This tag rendering should either be 'yes' or 'no'. If 'no' is returned, then the feature will be hidden from view.\nThis is useful to hide certain features from view.\n\nImportant: hiding features does not work dynamically, but is only calculated when the data is first renders.\nThis implies that it is not possible to hide a feature after a tagging change\n\nThe default value is 'yes'", + "$ref": "#/definitions/TagRenderingConfigJson" + }, + "minzoom": { + "description": "The minimum needed zoomlevel required before loading of the data start\nDefault: 0", + "type": "number" + }, + "minzoomVisible": { + "description": "The zoom level at which point the data is hidden again\nDefault: 100 (thus: always visible", + "type": "number" + }, + "title": { + "description": "The title shown in a popup for elements of this layer.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "titleIcons": { + "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "mapRendering": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/default_3" + }, + { + "$ref": "#/definitions/default_4" + } + ] + } + }, + "passAllFeatures": { + "description": "If set, this layer will pass all the features it receives onto the next layer.\nThis is ideal for decoration, e.g. directionss on cameras", + "type": "boolean" + }, + "presets": { + "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\n\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\n\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\n\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all", + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "description": "The title - shown on the 'add-new'-button." + }, + "tags": { + "description": "The tags to add. It determines the icon too", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "The _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n\n(The first sentence is until the first '.'-character in the description)" + }, + "preciseInput": { + "description": "If set, the user will prompted to confirm the location before actually adding the data.\nThis will be with a 'drag crosshair'-method.\n\nIf 'preferredBackgroundCategory' is set, the element will attempt to pick a background layer of that category.", + "anyOf": [ + { + "type": "object", + "properties": { + "preferredBackground": { + "description": "The type of background picture", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "snapToLayer": { + "description": "If specified, these layers will be shown to and the new point will be snapped towards it", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "maxSnapDistance": { + "description": "If specified, a new point will only be snapped if it is within this range.\nDistance in meter\n\nDefault: 10", + "type": "number" + } + }, + "required": [ + "preferredBackground" + ] + }, + { + "enum": [ + true + ], + "type": "boolean" + } + ] + } + }, + "required": [ + "tags", + "title" + ] + } + }, + "tagRenderings": { + "description": "All the tag renderings.\nA tag rendering is a block that either shows the known value or asks a question.\n\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\n\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\n\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\n\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "object", + "properties": { + "rewrite": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sourceString": { + "type": "string" + }, + "into": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "into", + "sourceString" + ] + } + }, + "renderings": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "renderings", + "rewrite" + ] + }, + { + "type": "string" + } + ] + } + }, + "filter": { + "description": "All the extra questions for filtering", + "type": "array", + "items": { + "$ref": "#/definitions/default" + } + }, + "deletion": { + "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\n\nTo configure, the following values are possible:\n\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n\n The delete dialog\n =================\n\n\n\n#### Hard deletion if enough experience\n\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\n\nIn all other cases, a 'soft deletion' is used.\n\n#### Soft deletion\n\nA 'soft deletion' is when the point isn't deleted from OSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\n\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n\n#### No-delete options\n\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\n\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags.", + "anyOf": [ + { + "$ref": "#/definitions/DeleteConfigJson" + }, + { + "type": "boolean" + } + ] + }, + "allowMove": { + "description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.", + "anyOf": [ + { + "$ref": "#/definitions/default_2" + }, + { + "type": "boolean" + } + ] + }, + "allowSplit": { + "description": "IF set, a 'split this road' button is shown", + "type": "boolean" + }, + "units": { + "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given", + "type": "array", + "items": { + "$ref": "#/definitions/default_1" + } + } + }, + "required": [ + "id", + "mapRendering", + "source" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/LayoutConfigJsonJSC.ts b/Docs/Schemas/LayoutConfigJsonJSC.ts new file mode 100644 index 000000000..2c337340e --- /dev/null +++ b/Docs/Schemas/LayoutConfigJsonJSC.ts @@ -0,0 +1,1203 @@ +export default { + "description": "Defines the entire theme.\n\nA theme is the collection of the layers that are shown; the intro text, the icon, ...\nIt more or less defines the entire experience.\n\nMost of the fields defined here are metadata about the theme, such as its name, description, supported languages, default starting location, ...\n\nThe main chunk of the json will however be the 'layers'-array, where the details of your layers are.\n\nGeneral remark: a type (string | any) indicates either a fixed or a translatable string.", + "type": "object", + "properties": { + "id": { + "description": "The id of this layout.\n\nThis is used as hashtag in the changeset message, which will read something like \"Adding data with #mapcomplete for theme #\"\nMake sure it is something decent and descriptive, it should be a simple, lowercase string.\n\nOn official themes, it'll become the name of the page, e.g.\n'cyclestreets' which become 'cyclestreets.html'", + "type": "string" + }, + "credits": { + "description": "Who helped to create this theme and should be attributed?", + "type": "string" + }, + "maintainer": { + "description": "Who does maintian this preset?", + "type": "string" + }, + "version": { + "description": "A version number, either semantically or by date.\nShould be sortable, where the higher value is the later version", + "type": "string" + }, + "language": { + "description": "The supported language(s).\nThis should be a two-letter, lowercase code which identifies the language, e.g. \"en\", \"nl\", ...\nIf the theme supports multiple languages, use a list: `[\"en\",\"nl\",\"fr\"]` to allow the user to pick any of them", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "mustHaveLanguage": { + "description": "Only used in 'generateLayerOverview': if present, every translation will be checked to make sure it is fully translated", + "type": "array", + "items": { + "type": "string" + } + }, + "title": { + "description": "The title, as shown in the welcome message and the more-screen" + }, + "shortDescription": { + "description": "A short description, showed as social description and in the 'more theme'-buttons.\nNote that if this one is not defined, the first sentence of 'description' is used" + }, + "description": { + "description": "The description, as shown in the welcome message and the more-screen" + }, + "descriptionTail": { + "description": "A part of the description, shown under the login-button." + }, + "icon": { + "description": "The icon representing this theme.\nUsed as logo in the more-screen and (for official themes) as favicon, webmanifest logo, ...\nEither a URL or a base64 encoded value (which should include 'data:image/svg+xml;base64)", + "type": "string" + }, + "socialImage": { + "description": "Link to a 'social image' which is included as og:image-tag on official themes.\nUseful to share the theme on social media.\nSee https://www.h3xed.com/web-and-internet/how-to-use-og-image-meta-tag-facebook-reddit for more information", + "type": "string" + }, + "startZoom": { + "description": "Default location and zoom to start.\nNote that this is barely used. Once the user has visited mapcomplete at least once, the previous location of the user will be used", + "type": "number" + }, + "startLat": { + "type": "number" + }, + "startLon": { + "type": "number" + }, + "widenFactor": { + "description": "When a query is run, the data within bounds of the visible map is loaded.\nHowever, users tend to pan and zoom a lot. It is pretty annoying if every single pan means a reloading of the data.\nFor this, the bounds are widened in order to make a small pan still within bounds of the loaded data.\n\nIF widenfactor is 1, this feature is disabled. A recommended value is between 1 and 3", + "type": "number" + }, + "overpassMaxZoom": { + "description": "At low zoom levels, overpass is used to query features.\nAt high zoom level, the OSM api is used to fetch one or more BBOX aligning with a slippy tile.\nThe overpassMaxZoom controls the flipoverpoint: if the zoom is this or lower, overpass is used.", + "type": "number" + }, + "osmApiTileSize": { + "description": "When the OSM-api is used to fetch features, it does so in a tiled fashion.\nThese tiles are using a ceratin zoom level, that can be controlled here\nDefault: overpassMaxZoom + 1", + "type": "number" + }, + "overrideAll": { + "description": "An override applied on all layers of the theme.\n\nE.g.: if there are two layers defined:\n```\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ...}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ...}}\n]\n```\n\nand overrideAll is specified:\n```\n\"overrideAll\": {\n \"osmSource\":{\"geoJsonSource\":\"xyz\"}\n}\nthen the result will be that all the layers will have these properties applied and result in:\n\"layers\":[\n {\"title\": ..., \"tagRenderings\": [...], \"osmSource\":{\"tags\": ..., \"geoJsonSource\":\"xyz\"}},\n {\"title\", ..., \"tagRenderings\", [...], \"osmSource\":{\"tags\" ..., \"geoJsonSource\":\"xyz\"}}\n]\n```\n\nIf the overrideAll contains a list where the keys starts with a plus, the values will be appended (instead of discarding the old list), for example\n\n\"overrideAll\": {\n \"+tagRenderings\": [ { ... some tagrendering ... }]\n}\n\nIn the above scenario, `sometagrendering` will be added at the beginning of the tagrenderings of every layer" + }, + "defaultBackgroundId": { + "description": "The id of the default background. BY default: vanilla OSM", + "type": "string" + }, + "tileLayerSources": { + "description": "Define some (overlay) slippy map tilesources", + "type": "array", + "items": { + "$ref": "#/definitions/default_5" + } + }, + "layers": { + "description": "The layers to display.\n\nEvery layer contains a description of which feature to display - the overpassTags which are queried.\nInstead of running one query for every layer, the query is fused.\n\nAfterwards, every layer is given the list of features.\nEvery layer takes away the features that match with them*, and give the leftovers to the next layers.\n\nThis implies that the _order_ of the layers is important in the case of features with the same tags;\nas the later layers might never receive their feature.\n\n*layers can also remove 'leftover'-features if the leftovers overlap with a feature in the layer itself\n\nNote that builtin layers can be reused. Either put in the name of the layer to reuse, or use {builtin: \"layername\", override: ...}\n\nThe 'override'-object will be copied over the original values of the layer, which allows to change certain aspects of the layer\n\nFor example: If you would like to use layer nature reserves, but only from a specific operator (eg. Natuurpunt) you would use the following in your theme:\n\n```\n\"layer\": {\n \"builtin\": \"nature_reserve\",\n \"override\": {\"source\": \n {\"osmTags\": {\n \"+and\":[\"operator=Natuurpunt\"]\n }\n }\n }\n}\n```\n\nIt's also possible to load multiple layers at once, for example, if you would like for both drinking water and benches to start at the zoomlevel at 12, you would use the following:\n\n```\n\"layer\": {\n \"builtin\": [\"benches\", \"drinking_water\"],\n \"override\": {\"minzoom\": 12}\n}\n```", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/LayerConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "string" + } + ] + } + }, + "clustering": { + "description": "If defined, data will be clustered.\nDefaults to {maxZoom: 16, minNeeded: 500}", + "type": "object", + "properties": { + "maxZoom": { + "description": "All zoom levels above 'maxzoom' are not clustered anymore.\nDefaults to 18", + "type": "number" + }, + "minNeededElements": { + "description": "The number of elements per tile needed to start clustering\nIf clustering is defined, defaults to 25", + "type": "number" + } + } + }, + "customCss": { + "description": "The URL of a custom CSS stylesheet to modify the layout", + "type": "string" + }, + "hideFromOverview": { + "description": "If set to true, this layout will not be shown in the overview with more themes", + "type": "boolean" + }, + "lockLocation": { + "description": "If set to true, the basemap will not scroll outside of the area visible on initial zoom.\nIf set to [[lat0, lon0], [lat1, lon1]], the map will not scroll outside of those bounds.\nOff by default, which will enable panning to the entire world", + "anyOf": [ + { + "type": "array", + "items": [ + { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "minItems": 2, + "maxItems": 2 + }, + { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "minItems": 2, + "maxItems": 2 + } + ], + "minItems": 2, + "maxItems": 2 + }, + { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number" + } + } + }, + { + "type": "boolean" + } + ] + }, + "enableUserBadge": { + "type": "boolean" + }, + "enableShareScreen": { + "type": "boolean" + }, + "enableMoreQuests": { + "type": "boolean" + }, + "enableLayers": { + "type": "boolean" + }, + "enableSearch": { + "type": "boolean" + }, + "enableAddNewPoints": { + "type": "boolean" + }, + "enableGeolocation": { + "type": "boolean" + }, + "enableBackgroundLayerSelection": { + "type": "boolean" + }, + "enableShowAllQuestions": { + "type": "boolean" + }, + "enableDownload": { + "type": "boolean" + }, + "enablePdfDownload": { + "type": "boolean" + }, + "enableIframePopout": { + "type": "boolean" + }, + "overpassUrl": { + "description": "Set one or more overpass URLs to use for this theme..", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "overpassTimeout": { + "description": "Set a different timeout for overpass queries - in seconds. Default: 30s", + "type": "number" + } + }, + "required": [ + "description", + "icon", + "id", + "language", + "layers", + "maintainer", + "startLat", + "startLon", + "startZoom", + "title", + "version" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ] + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + } + }, + "default_3": { + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ] + }, + "default_4": { + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + } + }, + "default": { + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ] + }, + "DeleteConfigJson": { + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + } + }, + "default_2": { + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + } + }, + "default_1": { + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ] + }, + "default_5": { + "description": "Configuration for a tilesource config", + "type": "object", + "properties": { + "id": { + "description": "Id of this overlay, used in the URL-parameters to set the state", + "type": "string" + }, + "source": { + "description": "The path, where {x}, {y} and {z} will be substituted", + "type": "string" + }, + "isOverlay": { + "description": "Wether or not this is an overlay. Default: true", + "type": "boolean" + }, + "name": { + "description": "How this will be shown in the selection menu.\nMake undefined if this may not be toggled" + }, + "minZoom": { + "description": "Only visible at this or a higher zoom level", + "type": "number" + }, + "maxZoom": { + "description": "Only visible at this or a lower zoom level", + "type": "number" + }, + "defaultState": { + "description": "The default state, set to false to hide by default", + "type": "boolean" + } + }, + "required": [ + "defaultState", + "id", + "source" + ] + }, + "LayerConfigJson": { + "description": "Configuration for a single layer", + "type": "object", + "properties": { + "id": { + "description": "The id of this layer.\nThis should be a simple, lowercase, human readable string that is used to identify the layer.", + "type": "string" + }, + "name": { + "description": "The name of this layer\nUsed in the layer control panel and the 'Personal theme'.\n\nIf not given, will be hidden (and thus not toggable) in the layer control" + }, + "description": { + "description": "A description for this layer.\nShown in the layer selections and in the personel theme" + }, + "source": { + "description": "This determines where the data for the layer is fetched.\nThere are some options:\n\n# Query OSM directly\nsource: {osmTags: \"key=value\"}\n will fetch all objects with given tags from OSM.\n Currently, this will create a query to overpass and fetch the data - in the future this might fetch from the OSM API\n\n# Query OSM Via the overpass API with a custom script\nsource: {overpassScript: \"\"} when you want to do special things. _This should be really rare_.\n This means that the data will be pulled from overpass with this script, and will ignore the osmTags for the query\n However, for the rest of the pipeline, the OsmTags will _still_ be used. This is important to enable layers etc...\n\n\n# A single geojson-file\nsource: {geoJson: \"https://my.source.net/some-geo-data.geojson\"}\n fetches a geojson from a third party source\n\n# A tiled geojson source\nsource: {geoJson: \"https://my.source.net/some-tile-geojson-{layer}-{z}-{x}-{y}.geojson\", geoJsonZoomLevel: 14}\n to use a tiled geojson source. The web server must offer multiple geojsons. {z}, {x} and {y} are substituted by the location; {layer} is substituted with the id of the loaded layer\n\nSome API's use a BBOX instead of a tile, this can be used by specifying {y_min}, {y_max}, {x_min} and {x_max}\nSome API's use a mercator-projection (EPSG:900913) instead of WGS84. Set the flag `mercatorCrs: true` in the source for this\n\nNote that both geojson-options might set a flag 'isOsmCache' indicating that the data originally comes from OSM too\n\n\nNOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: \"key=value\"}\n While still supported, this is considered deprecated", + "anyOf": [ + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "overpassScript": { + "type": "string" + } + }, + "required": [ + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + }, + { + "allOf": [ + { + "type": "object", + "properties": { + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "geoJson": { + "type": "string" + }, + "geoJsonZoomLevel": { + "type": "number" + }, + "isOsmCache": { + "type": "boolean" + }, + "mercatorCrs": { + "type": "boolean" + } + }, + "required": [ + "geoJson", + "osmTags" + ] + }, + { + "type": "object", + "properties": { + "maxCacheAge": { + "description": "The maximum amount of seconds that a tile is allowed to linger in the cache", + "type": "number" + } + } + } + ] + } + ] + }, + "calculatedTags": { + "description": "A list of extra tags to calculate, specified as \"keyToAssignTo=javascript-expression\".\nThere are a few extra functions available. Refer to Docs/CalculatedTags.md for more information\nThe functions will be run in order, e.g.\n[\n \"_max_overlap_m2=Math.max(...feat.overlapsWith(\"someOtherLayer\").map(o => o.overlap))\n \"_max_overlap_ratio=Number(feat._max_overlap_m2)/feat.area\n]", + "type": "array", + "items": { + "type": "string" + } + }, + "doNotDownload": { + "description": "If set, this layer will not query overpass; but it'll still match the tags above which are by chance returned by other layers.\nWorks well together with 'passAllFeatures', to add decoration", + "type": "boolean" + }, + "isShown": { + "description": "This tag rendering should either be 'yes' or 'no'. If 'no' is returned, then the feature will be hidden from view.\nThis is useful to hide certain features from view.\n\nImportant: hiding features does not work dynamically, but is only calculated when the data is first renders.\nThis implies that it is not possible to hide a feature after a tagging change\n\nThe default value is 'yes'", + "$ref": "#/definitions/TagRenderingConfigJson" + }, + "minzoom": { + "description": "The minimum needed zoomlevel required before loading of the data start\nDefault: 0", + "type": "number" + }, + "minzoomVisible": { + "description": "The zoom level at which point the data is hidden again\nDefault: 100 (thus: always visible", + "type": "number" + }, + "title": { + "description": "The title shown in a popup for elements of this layer.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "titleIcons": { + "description": "Small icons shown next to the title.\nIf not specified, the OsmLink and wikipedia links will be used by default.\nUse an empty array to hide them.\nNote that \"defaults\" will insert all the default titleIcons", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "mapRendering": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/default_3" + }, + { + "$ref": "#/definitions/default_4" + } + ] + } + }, + "passAllFeatures": { + "description": "If set, this layer will pass all the features it receives onto the next layer.\nThis is ideal for decoration, e.g. directionss on cameras", + "type": "boolean" + }, + "presets": { + "description": "Presets for this layer.\nA preset shows up when clicking the map on a without data (or when right-clicking/long-pressing);\nit will prompt the user to add a new point.\n\nThe most important aspect are the tags, which define which tags the new point will have;\nThe title is shown in the dialog, along with the first sentence of the description.\n\nUpon confirmation, the full description is shown beneath the buttons - perfect to add pictures and examples.\n\nNote: the icon of the preset is determined automatically based on the tags and the icon above. Don't worry about that!\nNB: if no presets are defined, the popup to add new points doesn't show up at all", + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "description": "The title - shown on the 'add-new'-button." + }, + "tags": { + "description": "The tags to add. It determines the icon too", + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "description": "The _first sentence_ of the description is shown on the button of the `add` menu.\nThe full description is shown in the confirmation dialog.\n\n(The first sentence is until the first '.'-character in the description)" + }, + "preciseInput": { + "description": "If set, the user will prompted to confirm the location before actually adding the data.\nThis will be with a 'drag crosshair'-method.\n\nIf 'preferredBackgroundCategory' is set, the element will attempt to pick a background layer of that category.", + "anyOf": [ + { + "type": "object", + "properties": { + "preferredBackground": { + "description": "The type of background picture", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "snapToLayer": { + "description": "If specified, these layers will be shown to and the new point will be snapped towards it", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "maxSnapDistance": { + "description": "If specified, a new point will only be snapped if it is within this range.\nDistance in meter\n\nDefault: 10", + "type": "number" + } + }, + "required": [ + "preferredBackground" + ] + }, + { + "enum": [ + true + ], + "type": "boolean" + } + ] + } + }, + "required": [ + "tags", + "title" + ] + } + }, + "tagRenderings": { + "description": "All the tag renderings.\nA tag rendering is a block that either shows the known value or asks a question.\n\nRefer to the class `TagRenderingConfigJson` to see the possibilities.\n\nNote that we can also use a string here - where the string refers to a tag rendering defined in `assets/questions/questions.json`,\nwhere a few very general questions are defined e.g. website, phone number, ...\n\nA special value is 'questions', which indicates the location of the questions box. If not specified, it'll be appended to the bottom of the featureInfobox.\n\nAt last, one can define a group of renderings where parts of all strings will be replaced by multiple other strings.\nThis is mainly create questions for a 'left' and a 'right' side of the road.\nThese will be grouped and questions will be asked together", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "object", + "properties": { + "rewrite": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sourceString": { + "type": "string" + }, + "into": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "into", + "sourceString" + ] + } + }, + "renderings": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "object", + "properties": { + "builtin": { + "type": "string" + }, + "override": {} + }, + "required": [ + "builtin", + "override" + ] + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "renderings", + "rewrite" + ] + }, + { + "type": "string" + } + ] + } + }, + "filter": { + "description": "All the extra questions for filtering", + "type": "array", + "items": { + "$ref": "#/definitions/default" + } + }, + "deletion": { + "description": "This block defines under what circumstances the delete dialog is shown for objects of this layer.\nIf set, a dialog is shown to the user to (soft) delete the point.\nThe dialog is built to be user friendly and to prevent mistakes.\nIf deletion is not possible, the dialog will hide itself and show the reason of non-deletability instead.\n\nTo configure, the following values are possible:\n\n- false: never ever show the delete button\n- true: show the default delete button\n- undefined: use the mapcomplete default to show deletion or not. Currently, this is the same as 'false' but this will change in the future\n- or: a hash with options (see below)\n\n The delete dialog\n =================\n\n\n\n#### Hard deletion if enough experience\n\nA feature can only be deleted from OpenStreetMap by mapcomplete if:\n\n- It is a node\n- No ways or relations use the node\n- The logged-in user has enough experience OR the user is the only one to have edited the point previously\n- The logged-in user has no unread messages (or has a ton of experience)\n- The user did not select one of the 'non-delete-options' (see below)\n\nIn all other cases, a 'soft deletion' is used.\n\n#### Soft deletion\n\nA 'soft deletion' is when the point isn't deleted from OSM but retagged so that it'll won't how up in the mapcomplete theme anymore.\nThis makes it look like it was deleted, without doing damage. A fixme will be added to the point.\n\nNote that a soft deletion is _only_ possible if these tags are provided by the theme creator, as they'll be different for every theme\n\n#### No-delete options\n\nIn some cases, the contributor might want to delete something for the wrong reason (e.g. someone who wants to have a path removed \"because the path is on their private property\").\nHowever, the path exists in reality and should thus be on OSM - otherwise the next contributor will pass by and notice \"hey, there is a path missing here! Let me redraw it in OSM!)\n\nThe correct approach is to retag the feature in such a way that it is semantically correct *and* that it doesn't show up on the theme anymore.\nA no-delete option is offered as 'reason to delete it', but secretly retags.", + "anyOf": [ + { + "$ref": "#/definitions/DeleteConfigJson" + }, + { + "type": "boolean" + } + ] + }, + "allowMove": { + "description": "Indicates if a point can be moved and configures the modalities.\n\nA feature can be moved by MapComplete if:\n\n- It is a point\n- The point is _not_ part of a way or a a relation.\n\nOff by default. Can be enabled by setting this flag or by configuring.", + "anyOf": [ + { + "$ref": "#/definitions/default_2" + }, + { + "type": "boolean" + } + ] + }, + "allowSplit": { + "description": "IF set, a 'split this road' button is shown", + "type": "boolean" + }, + "units": { + "description": "In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...)\n\nSometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...)\n\nThis brings in some troubles, as there are multiple ways to write it (no denomitation, 'm' vs 'meter' 'metre', ...)\n\nNot only do we want to write consistent data to OSM, we also want to present this consistently to the user.\nThis is handled by defining units.\n\n# Rendering\n\nTo render a value with long (human) denomination, use {canonical(key)}\n\n# Usage\n\nFirst of all, you define which keys have units applied, for example:\n\n```\nunits: [\n appliesTo: [\"maxspeed\", \"maxspeed:hgv\", \"maxspeed:bus\"]\n applicableUnits: [\n ...\n ]\n]\n```\n\nApplicableUnits defines which is the canonical extension, how it is presented to the user, ...:\n\n```\napplicableUnits: [\n{\n canonicalDenomination: \"km/h\",\n alternativeDenomination: [\"km/u\", \"kmh\", \"kph\"]\n default: true,\n human: {\n en: \"kilometer/hour\",\n nl: \"kilometer/uur\"\n },\n humanShort: {\n en: \"km/h\",\n nl: \"km/u\"\n }\n},\n{\n canoncialDenomination: \"mph\",\n ... similar for miles an hour ...\n}\n]\n```\n\n\nIf this is defined, then every key which the denominations apply to (`maxspeed`, `maxspeed:hgv` and `maxspeed:bus`) will be rewritten at the metatagging stage:\nevery value will be parsed and the canonical extension will be added add presented to the other parts of the code.\n\nAlso, if a freeform text field is used, an extra dropdown with applicable denominations will be given", + "type": "array", + "items": { + "$ref": "#/definitions/default_1" + } + } + }, + "required": [ + "id", + "mapRendering", + "source" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/LineRenderingConfigJson.schema.json b/Docs/Schemas/LineRenderingConfigJson.schema.json new file mode 100644 index 000000000..0f7289f02 --- /dev/null +++ b/Docs/Schemas/LineRenderingConfigJson.schema.json @@ -0,0 +1,293 @@ +{ + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ], + "additionalProperties": false + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/LineRenderingConfigJsonJSC.ts b/Docs/Schemas/LineRenderingConfigJsonJSC.ts new file mode 100644 index 000000000..2c0642834 --- /dev/null +++ b/Docs/Schemas/LineRenderingConfigJsonJSC.ts @@ -0,0 +1,289 @@ +export default { + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ] + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + } + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/MoveConfigJson.schema.json b/Docs/Schemas/MoveConfigJson.schema.json new file mode 100644 index 000000000..74106b056 --- /dev/null +++ b/Docs/Schemas/MoveConfigJson.schema.json @@ -0,0 +1,87 @@ +{ + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/MoveConfigJsonJSC.ts b/Docs/Schemas/MoveConfigJsonJSC.ts new file mode 100644 index 000000000..23f191109 --- /dev/null +++ b/Docs/Schemas/MoveConfigJsonJSC.ts @@ -0,0 +1,84 @@ +export default { + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/PointRenderingConfigJson.schema.json b/Docs/Schemas/PointRenderingConfigJson.schema.json new file mode 100644 index 000000000..03ec4cf3c --- /dev/null +++ b/Docs/Schemas/PointRenderingConfigJson.schema.json @@ -0,0 +1,305 @@ +{ + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ], + "additionalProperties": false + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/PointRenderingConfigJsonJSC.ts b/Docs/Schemas/PointRenderingConfigJsonJSC.ts new file mode 100644 index 000000000..2e88c1cf8 --- /dev/null +++ b/Docs/Schemas/PointRenderingConfigJsonJSC.ts @@ -0,0 +1,301 @@ +export default { + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ] + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + } + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/TagRenderingConfigJson.schema.json b/Docs/Schemas/TagRenderingConfigJson.schema.json new file mode 100644 index 000000000..c330dbc05 --- /dev/null +++ b/Docs/Schemas/TagRenderingConfigJson.schema.json @@ -0,0 +1,167 @@ +{ + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/TagRenderingConfigJsonJSC.ts b/Docs/Schemas/TagRenderingConfigJsonJSC.ts new file mode 100644 index 000000000..bbc00373d --- /dev/null +++ b/Docs/Schemas/TagRenderingConfigJsonJSC.ts @@ -0,0 +1,165 @@ +export default { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + }, + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/TilesourceConfigJson.schema.json b/Docs/Schemas/TilesourceConfigJson.schema.json new file mode 100644 index 000000000..da181e8e5 --- /dev/null +++ b/Docs/Schemas/TilesourceConfigJson.schema.json @@ -0,0 +1,569 @@ +{ + "description": "Configuration for a tilesource config", + "type": "object", + "properties": { + "id": { + "description": "Id of this overlay, used in the URL-parameters to set the state", + "type": "string" + }, + "source": { + "description": "The path, where {x}, {y} and {z} will be substituted", + "type": "string" + }, + "isOverlay": { + "description": "Wether or not this is an overlay. Default: true", + "type": "boolean" + }, + "name": { + "description": "How this will be shown in the selection menu.\nMake undefined if this may not be toggled" + }, + "minZoom": { + "description": "Only visible at this or a higher zoom level", + "type": "number" + }, + "maxZoom": { + "description": "Only visible at this or a lower zoom level", + "type": "number" + }, + "defaultState": { + "description": "The default state, set to false to hide by default", + "type": "boolean" + } + }, + "required": [ + "defaultState", + "id", + "source" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ], + "additionalProperties": false + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + }, + "additionalProperties": false + }, + "default_3": { + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ], + "additionalProperties": false + }, + "default_4": { + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + }, + "additionalProperties": false + }, + "default": { + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ], + "additionalProperties": false + }, + "DeleteConfigJson": { + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + }, + "additionalProperties": false + }, + "default_2": { + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + }, + "additionalProperties": false + }, + "default_1": { + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/TilesourceConfigJsonJSC.ts b/Docs/Schemas/TilesourceConfigJsonJSC.ts new file mode 100644 index 000000000..a21c3f2cc --- /dev/null +++ b/Docs/Schemas/TilesourceConfigJsonJSC.ts @@ -0,0 +1,559 @@ +export default { + "description": "Configuration for a tilesource config", + "type": "object", + "properties": { + "id": { + "description": "Id of this overlay, used in the URL-parameters to set the state", + "type": "string" + }, + "source": { + "description": "The path, where {x}, {y} and {z} will be substituted", + "type": "string" + }, + "isOverlay": { + "description": "Wether or not this is an overlay. Default: true", + "type": "boolean" + }, + "name": { + "description": "How this will be shown in the selection menu.\nMake undefined if this may not be toggled" + }, + "minZoom": { + "description": "Only visible at this or a higher zoom level", + "type": "number" + }, + "maxZoom": { + "description": "Only visible at this or a lower zoom level", + "type": "number" + }, + "defaultState": { + "description": "The default state, set to false to hide by default", + "type": "boolean" + } + }, + "required": [ + "defaultState", + "id", + "source" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ] + }, + "TagRenderingConfigJson": { + "description": "A TagRenderingConfigJson is a single piece of code which converts one ore more tags into a HTML-snippet.\nIf the desired tags are missing and a question is defined, a question will be shown instead.", + "type": "object", + "properties": { + "id": { + "description": "The id of the tagrendering, should be an unique string.\nUsed to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise", + "type": "string" + }, + "group": { + "description": "If 'group' is defined on many tagRenderings, these are grouped together when shown. The questions are grouped together as well.\nThe first tagRendering of a group will always be a sticky element.", + "type": "string" + }, + "render": { + "description": "Renders this value. Note that \"{key}\"-parts are substituted by the corresponding values of the element.\nIf neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value.\n\nNote that this is a HTML-interpreted value, so you can add links as e.g. '{website}' or include images such as `This is of type A
`" + }, + "question": { + "description": "If it turns out that this tagRendering doesn't match _any_ value, then we show this question.\nIf undefined, the question is never asked and this tagrendering is read-only" + }, + "condition": { + "description": "Only show this question if the object also matches the following tags.\n\nThis is useful to ask a follow-up question. E.g. if there is a diaper table, then ask a follow-up question on diaper tables...", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "freeform": { + "description": "Allow freeform text input from the user", + "type": "object", + "properties": { + "key": { + "description": "If this key is present, then 'render' is used to display the value.\nIf this is undefined, the rendering is _always_ shown", + "type": "string" + }, + "type": { + "description": "The type of the text-field, e.g. 'string', 'nat', 'float', 'date',...\nSee Docs/SpecialInputElements.md and UI/Input/ValidatedTextField.ts for supported values", + "type": "string" + }, + "helperArgs": { + "description": "Extra parameters to initialize the input helper arguments.\nFor semantics, see the 'SpecialInputElements.md'", + "type": "array", + "items": {} + }, + "addExtraTags": { + "description": "If a value is added with the textfield, these extra tag is addded.\nUseful to add a 'fixme=freeform textfield used - to be checked'", + "type": "array", + "items": { + "type": "string" + } + }, + "inline": { + "description": "When set, influences the way a question is asked.\nInstead of showing a full-widht text field, the text field will be shown within the rendering of the question.\n\nThis combines badly with special input elements, as it'll distort the layout.", + "type": "boolean" + }, + "default": { + "description": "default value to enter if no previous tagging is present.\nNormally undefined (aka do not enter anything)", + "type": "string" + } + }, + "required": [ + "key" + ] + }, + "multiAnswer": { + "description": "If true, use checkboxes instead of radio buttons when asking the question", + "type": "boolean" + }, + "mappings": { + "description": "Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "description": "If this condition is met, then the text under `then` will be shown.\nIf no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM.\n\nFor example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'}\n\nThis can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "description": "If the condition `if` is met, the text `then` will be rendered.\nIf not known yet, the user will be presented with `then` as an option" + }, + "hideInAnswer": { + "description": "In some cases, multiple taggings exist (e.g. a default assumption, or a commonly mapped abbreviation and a fully written variation).\n\nIn the latter case, a correct text should be shown, but only a single, canonical tagging should be selectable by the user.\nIn this case, one of the mappings can be hiden by setting this flag.\n\nTo demonstrate an example making a default assumption:\n\nmappings: [\n {\n if: \"access=\", -- no access tag present, we assume accessible\n then: \"Accessible to the general public\",\n hideInAnswer: true\n },\n {\n if: \"access=yes\",\n then: \"Accessible to the general public\", -- the user selected this, we add that to OSM\n },\n {\n if: \"access=no\",\n then: \"Not accessible to the public\"\n }\n]\n\n\nFor example, for an operator, we have `operator=Agentschap Natuur en Bos`, which is often abbreviated to `operator=ANB`.\nThen, we would add two mappings:\n{\n if: \"operator=Agentschap Natuur en Bos\" -- the non-abbreviated version which should be uploaded\n then: \"Maintained by Agentschap Natuur en Bos\"\n},\n{\n if: \"operator=ANB\", -- we don't want to upload abbreviations\n then: \"Maintained by Agentschap Natuur en Bos\"\n hideInAnswer: true\n}\n\nHide in answer can also be a tagsfilter, e.g. to make sure an option is only shown when appropriate.\nKeep in mind that this is reverse logic: it will be hidden in the answer if the condition is true, it will thus only show in the case of a mismatch\n\ne.g., for toilets: if \"wheelchair=no\", we know there is no wheelchair dedicated room.\nFor the location of the changing table, the option \"in the wheelchair accessible toilet is weird\", so we write:\n\n{\n \"question\": \"Where is the changing table located?\"\n \"mappings\": [\n {\"if\":\"changing_table:location=female\",\"then\":\"In the female restroom\"},\n {\"if\":\"changing_table:location=male\",\"then\":\"In the male restroom\"},\n {\"if\":\"changing_table:location=wheelchair\",\"then\":\"In the wheelchair accessible restroom\", \"hideInAnswer\": \"wheelchair=no\"},\n \n ]\n}\n\nAlso have a look for the meta-tags\n{\n if: \"operator=Agentschap Natuur en Bos\",\n then: \"Maintained by Agentschap Natuur en Bos\",\n hideInAnswer: \"_country!=be\"\n}", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": [ + "string", + "boolean" + ] + } + ] + }, + "ifnot": { + "description": "Only applicable if 'multiAnswer' is set.\nThis is for situations such as:\n`accepts:coins=no` where one can select all the possible payment methods. However, we want to make explicit that some options _were not_ selected.\nThis can be done with `ifnot`\nNote that we can not explicitly render this negative case to the user, we cannot show `does _not_ accept coins`.\nIf this is important to your usecase, consider using multiple radiobutton-fields without `multiAnswer`", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "addExtraTags": { + "description": "If chosen as answer, these tags will be applied as well onto the object.\nNot compatible with multiAnswer", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "if", + "then" + ] + } + } + } + }, + "default_3": { + "description": "The PointRenderingConfig gives all details onto how to render a single point of a feature.\n\nThis can be used if:\n\n- The feature is a point\n- To render something at the centroid of an area, or at the start, end or projected centroid of a way", + "type": "object", + "properties": { + "location": { + "description": "All the locations that this point should be rendered at.\nUsing `location: [\"point\", \"centroid\"] will always render centerpoint", + "type": "array", + "items": { + "enum": [ + "centroid", + "end", + "point", + "start" + ], + "type": "string" + } + }, + "icon": { + "description": "The icon for an element.\nNote that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets.\n\nThe result of the icon is rendered as follows:\nthe resulting string is interpreted as a _list_ of items, separated by \";\". The bottommost layer is the first layer.\nAs a result, on could use a generic pin, then overlay it with a specific icon.\nTo make things even more practical, one can use all SVG's from the folder \"assets/svg\" and _substitute the color_ in it.\nE.g. to draw a red pin, use \"pin:#f00\", to have a green circle with your icon on top, use `circle:#0f0;`", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "iconBadges": { + "description": "A list of extra badges to show next to the icon as small badge\nThey will be added as a 25% height icon at the bottom right of the icon, with all the badges in a flex layout.\n\nNote: strings are interpreted as icons, so layering and substituting is supported. You can use `circle:white;./my_icon.svg` to add a background circle", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "then": { + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "if", + "then" + ] + } + }, + "iconSize": { + "description": "A string containing \"width,height\" or \"width,height,anchorpoint\" where anchorpoint is any of 'center', 'top', 'bottom', 'left', 'right', 'bottomleft','topright', ...\nDefault is '40,40,center'", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "rotation": { + "description": "The rotation of an icon, useful for e.g. directions.\nUsage: as if it were a css property for 'rotate', thus has to end with 'deg', e.g. `90deg`, `{direction}deg`, `calc(90deg - {camera:direction}deg)``", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "label": { + "description": "A HTML-fragment that is shown below the icon, for example:\n
{name}
\n\nIf the icon is undefined, then the label is shown in the center of the feature.\nNote that, if the wayhandling hides the icon then no label is shown as well.", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "location" + ] + }, + "default_4": { + "description": "The LineRenderingConfig gives all details onto how to render a single line of a feature.\n\nThis can be used if:\n\n- The feature is a line\n- The feature is an area", + "type": "object", + "properties": { + "color": { + "description": "The color for way-elements and SVG-elements.\nIf the value starts with \"--\", the style of the body element will be queried for the corresponding variable instead", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "width": { + "description": "The stroke-width for way-elements", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "dashArray": { + "description": "A dasharray, e.g. \"5 6\"\nThe dasharray defines 'pixels of line, pixels of gap, pixels of line, pixels of gap',\nDefault value: \"\" (empty string == full line)", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "lineCap": { + "description": "The form at the end of a line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "fill": { + "description": "Wehter or not to fill polygons", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "enum": [ + "no", + "yes" + ], + "type": "string" + } + ] + }, + "fillColor": { + "description": "The color to fill a polygon with.\nIf undefined, this will be slightly more opaque version of the stroke line", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "string" + } + ] + }, + "offset": { + "description": "The number of pixels this line should be moved.\nUse a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line).\n\nIMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right')\nThis simplifies programming. Refer to the CalculatedTags.md-documentation for more details", + "anyOf": [ + { + "$ref": "#/definitions/TagRenderingConfigJson" + }, + { + "type": "number" + } + ] + } + } + }, + "default": { + "type": "object", + "properties": { + "id": { + "description": "An id/name for this filter, used to set the URL parameters", + "type": "string" + }, + "options": { + "description": "The options for a filter\nIf there are multiple options these will be a list of radio buttons\nIf there is only one option this will be a checkbox\nFiltering is done based on the given osmTags that are compared to the objects in that layer.", + "type": "array", + "items": { + "type": "object", + "properties": { + "question": {}, + "osmTags": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "question" + ] + } + } + }, + "required": [ + "id", + "options" + ] + }, + "DeleteConfigJson": { + "type": "object", + "properties": { + "extraDeleteReasons": { + "description": "*\nBy default, three reasons to delete a point are shown:\n\n- The point does not exist anymore\n- The point was a testing point\n- THe point could not be found\n\nHowever, for some layers, there might be different or more specific reasons for deletion which can be user friendly to set, e.g.:\n\n- the shop has closed\n- the climbing route has been closed of for nature conservation reasons\n- ...\n\nThese reasons can be stated here and will be shown in the list of options the user can choose from", + "type": "array", + "items": { + "type": "object", + "properties": { + "explanation": { + "description": "The text that will be shown to the user - translatable" + }, + "changesetMessage": { + "description": "The text that will be uploaded into the changeset or will be used in the fixme in case of a soft deletion\nShould be a few words, in english", + "type": "string" + } + }, + "required": [ + "changesetMessage", + "explanation" + ] + } + }, + "nonDeleteMappings": { + "description": "In some cases, a (starting) contributor might wish to delete a feature even though deletion is not appropriate.\n(The most relevant case are small paths running over private property. These should be marked as 'private' instead of deleted, as the community might trace the path again from aerial imagery, gettting us back to the original situation).\n\nBy adding a 'nonDeleteMapping', an option can be added into the list which will retag the feature.\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!", + "type": "array", + "items": { + "type": "object", + "properties": { + "if": { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + "then": {} + }, + "required": [ + "if", + "then" + ] + } + }, + "softDeletionTags": { + "description": "In some cases, the contributor is not allowed to delete the current feature (e.g. because it isn't a point, the point is referenced by a relation or the user isn't experienced enough).\nTo still offer the user a 'delete'-option, the feature is retagged with these tags. This is a soft deletion, as the point isn't actually removed from OSM but rather marked as 'disused'\nIt is important that the feature will be retagged in such a way that it won't be picked up by the layer anymore!\n\nExample (note that \"amenity=\" erases the 'amenity'-key alltogether):\n```\n{\n \"and\": [\"disussed:amenity=public_bookcase\", \"amenity=\"]\n}\n```\n\nor (notice the use of the ':='-tag to copy the old value of 'shop=*' into 'disused:shop='):\n```\n{\n \"and\": [\"disused:shop:={shop}\", \"shop=\"]\n}\n```", + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + }, + "neededChangesets": { + "description": "*\nBy default, the contributor needs 20 previous changesets to delete points edited by others.\nFor some small features (e.g. bicycle racks) this is too much and this requirement can be lowered or dropped, which can be done here.", + "type": "number" + } + } + }, + "default_2": { + "type": "object", + "properties": { + "enableImproveAccuracy": { + "description": "One default reason to move a point is to improve accuracy.\nSet to false to disable this reason", + "type": "boolean" + }, + "enableRelocation": { + "description": "One default reason to move a point is because it has relocated\nSet to false to disable this reason", + "type": "boolean" + } + } + }, + "default_1": { + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/Schemas/UnitConfigJson.schema.json b/Docs/Schemas/UnitConfigJson.schema.json new file mode 100644 index 000000000..a8af51f40 --- /dev/null +++ b/Docs/Schemas/UnitConfigJson.schema.json @@ -0,0 +1,101 @@ +{ + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false +} \ No newline at end of file diff --git a/Docs/Schemas/UnitConfigJsonJSC.ts b/Docs/Schemas/UnitConfigJsonJSC.ts new file mode 100644 index 000000000..9e8fa3c0d --- /dev/null +++ b/Docs/Schemas/UnitConfigJsonJSC.ts @@ -0,0 +1,98 @@ +export default { + "type": "object", + "properties": { + "appliesToKey": { + "description": "Every key from this list will be normalized", + "type": "array", + "items": { + "type": "string" + } + }, + "eraseInvalidValues": { + "description": "If set, invalid values will be erased in the MC application (but not in OSM of course!)\nBe careful with setting this", + "type": "boolean" + }, + "applicableUnits": { + "description": "The possible denominations", + "type": "array", + "items": { + "$ref": "#/definitions/ApplicableUnitJson" + } + } + }, + "required": [ + "applicableUnits", + "appliesToKey" + ], + "definitions": { + "AndOrTagConfigJson": { + "type": "object", + "properties": { + "and": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + }, + "or": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AndOrTagConfigJson" + }, + { + "type": "string" + } + ] + } + } + } + }, + "ApplicableUnitJson": { + "type": "object", + "properties": { + "canonicalDenomination": { + "description": "The canonical value which will be added to the text.\ne.g. \"m\" for meters\nIf the user inputs '42', the canonical value will be added and it'll become '42m'", + "type": "string" + }, + "canonicalDenominationSingular": { + "description": "The canonical denomination in the case that the unit is precisely '1'", + "type": "string" + }, + "alternativeDenomination": { + "description": "A list of alternative values which can occur in the OSM database - used for parsing.", + "type": "array", + "items": { + "type": "string" + } + }, + "human": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"meter\",\n \"fr\": \"metre\"\n}" + }, + "humanSingular": { + "description": "The value for humans in the dropdown. This should not use abbreviations and should be translated, e.g.\n{\n \"en\": \"minute\",\n \"nl\": \"minuut\"x²\n}" + }, + "prefix": { + "description": "If set, then the canonical value will be prefixed instead, e.g. for 'â‚Ŧ'\nNote that if all values use 'prefix', the dropdown might move to before the text field", + "type": "boolean" + }, + "default": { + "description": "The default interpretation - only one can be set.\nIf none is set, the first unit will be considered the default interpretation of a value without a unit", + "type": "boolean" + } + }, + "required": [ + "canonicalDenomination" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/Docs/SpecialInputElements.md b/Docs/SpecialInputElements.md index d6648fa3b..138054b30 100644 --- a/Docs/SpecialInputElements.md +++ b/Docs/SpecialInputElements.md @@ -1,4 +1,5 @@ + Available types for text fields ================================= @@ -12,7 +13,7 @@ A basic string ## text -A string, but allows input of longer strings more comfortably (a text area) +A string, but allows input of longer strings more comfortably and supports newlines (a text area) ## date @@ -29,6 +30,7 @@ A geographical length in meters (rounded at two points). Will give an extra mini ## wikidata A wikidata identifier, e.g. Q42. + ### Helper arguments @@ -44,6 +46,7 @@ removePrefixes | remove these snippets of text from the start of the passed stri removePostfixes | remove these snippets of text from the end of the passed string to search + ### Example usage The following is the 'freeform'-part of a layer config which will trigger a search for the wikidata item corresponding with the name of the selected feature. It will also remove '-street', '-square', ... if found at the end of the name @@ -102,6 +105,7 @@ A phone number ## opening_hours Has extra elements to easily input when a POI is opened. + ### Helper arguments @@ -116,6 +120,7 @@ prefix | Piece of text that will always be added to the front of the generated o postfix | Piece of text that will always be added to the end of the generated opening hours + ### Example usage To add a conditional (based on time) access restriction: @@ -138,4 +143,6 @@ postfix | Piece of text that will always be added to the end of the generated op ## color -Shows a color picker Generated from ValidatedTextField.ts \ No newline at end of file +Shows a color picker + +This document is autogenerated from ValidatedTextField.ts \ No newline at end of file diff --git a/Docs/SpecialRenderings.md b/Docs/SpecialRenderings.md index 35d03abc0..717e75e86 100644 --- a/Docs/SpecialRenderings.md +++ b/Docs/SpecialRenderings.md @@ -1,4 +1,5 @@ + ### Special tag renderings @@ -27,14 +28,17 @@ General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_nam + ### all_tags Prints all key-value pairs of the object - used for debugging + #### Example usage `{all_tags()}` + ### image_carousel Creates an image carousel for the given sources. An attempt will be made to guess what source is used. Supported: Wikidata identifiers, Wikipedia pages, Wikimedia categories, IMGUR (with attribution, direct links) @@ -43,11 +47,13 @@ name | default | description ------ | --------- | ------------- image key/prefix (multiple values allowed if comma-seperated) | image,mapillary,image,wikidata,wikimedia_commons,image,image | The keys given to the images, e.g. if image is given, the first picture URL will be added as image, the second as image:0, the third as image:1, etc... + #### Example usage `{image_carousel(image,mapillary,image,wikidata,wikimedia_commons,image,image)}` + ### image_upload Creates a button where a user can upload an image to IMGUR @@ -57,11 +63,13 @@ name | default | description image-key | image | Image tag to add the URL to (or image-tag:0, image-tag:1 when multiple images are added) label | Add image | The text to show on the button + #### Example usage `{image_upload(image,Add image)}` + ### wikipedia A box showing the corresponding wikipedia article - based on the wikidata tag @@ -70,11 +78,13 @@ name | default | description ------ | --------- | ------------- keyToShowWikipediaFor | wikidata | Use the wikidata entry from this key to show the wikipedia article for + #### Example usage `{wikipedia()}` is a basic example, `{wikipedia(name:etymology:wikidata)}` to show the wikipedia page of whom the feature was named after. Also remember that these can be styled, e.g. `{wikipedia():max-height: 10rem}` to limit the height + ### minimap A small map showing the selected feature. @@ -84,11 +94,13 @@ name | default | description zoomlevel | 18 | The (maximum) zoomlevel: the target zoomlevel after fitting the entire feature. The minimap will fit the entire feature, then zoom out to this zoom level. The higher, the more zoomed in with 1 being the entire world and 19 being really close idKey | id | (Matches all resting arguments) This argument should be the key of a property of the feature. The corresponding value is interpreted as either the id or the a list of ID's. The features with these ID's will be shown on this minimap. + #### Example usage `{minimap()}`, `{minimap(17, id, _list_of_embedded_feature_ids_calculated_by_calculated_tag):height:10rem; border: 2px solid black}` + ### sided_minimap A small map showing _only one side_ the selected feature. *This features requires to have linerenderings with offset* as only linerenderings with a postive or negative offset will be shown. Note: in most cases, this map will be automatically introduced @@ -97,11 +109,13 @@ name | default | description ------ | --------- | ------------- side | _undefined_ | The side to show, either `left` or `right` + #### Example usage `{sided_minimap(left)}` + ### reviews Adds an overview of the mangrove-reviews of this object. Mangrove.Reviews needs - in order to identify the reviewed object - a coordinate and a name. By default, the name of the object is given, but this can be overwritten @@ -111,11 +125,13 @@ name | default | description subjectKey | name | The key to use to determine the subject. If specified, the subject will be tags[subjectKey] fallback | _undefined_ | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value + #### Example usage `{reviews()}` for a vanilla review, `{reviews(name, play_forest)}` to review a play forest. If a name is known, the name will be used as identifier, otherwise 'play_forest' is used + ### opening_hours_table Creates an opening-hours table. Usage: {opening_hours_table(opening_hours)} to create a table of the tag 'opening_hours'. @@ -126,11 +142,13 @@ key | opening_hours | The tagkey from which the table is constructed. prefix | _empty string_ | Remove this string from the start of the value before parsing. __Note: use `&LPARENs` to indicate `(` if needed__ postfix | _empty string_ | Remove this string from the end of the value before parsing. __Note: use `&RPARENs` to indicate `)` if needed__ + #### Example usage A normal opening hours table can be invoked with `{opening_hours_table()}`. A table for e.g. conditional access with opening hours can be `{opening_hours_table(access:conditional, no @ &LPARENS, &RPARENS)}` + ### live Downloads a JSON from the given URL, e.g. '{live(example.org/data.json, shorthand:x.y.z, other:a.b.c, shorthand)}' will download the given file, will create an object {shorthand: json[x][y][z], other: json[a][b][c] out of it and will return 'other' or 'json[a][b][c]. This is made to use in combination with tags, e.g. {live({url}, {url:format}, needed_value)} @@ -141,11 +159,13 @@ Url | _undefined_ | The URL to load Shorthands | _undefined_ | A list of shorthands, of the format 'shorthandname:path.path.path'. separated by ; path | _undefined_ | The path (or shorthand) that should be returned + #### Example usage {live({url},{url:format},hour)} {live(https://data.mobility.brussels/bike/api/counts/?request=live&featureID=CB2105,hour:data.hour_cnt;day:data.day_cnt;year:data.year_cnt,hour)} + ### histogram Create a histogram for a list of given values, read from the properties. @@ -157,11 +177,13 @@ title | _empty string_ | The text to put above the given values column countHeader | _empty string_ | The text to put above the counts colors* | _undefined_ | (Matches all resting arguments - optional) Matches a regex onto a color value, e.g. `3[a-zA-Z+-]*:#33cc33` + #### Example usage `{histogram('some_key')}` with properties being `{some_key: ['a','b','a','c']} to create a histogram + ### share_link Creates a link that (attempts to) open the native 'share'-screen @@ -170,11 +192,13 @@ name | default | description ------ | --------- | ------------- url | _undefined_ | The url to share (default: current URL) + #### Example usage {share_link()} to share the current page, {share_link()} to share the given url + ### canonical Converts a short, canonical value into the long, translated text @@ -183,11 +207,13 @@ name | default | description ------ | --------- | ------------- key | _undefined_ | The key of the tag to give the canonical text for + #### Example usage {canonical(length)} will give 42 metre (in french) + ### import_button This button will copy the data from an external dataset into OpenStreetMap. It is only functional in official themes but can be tested in unofficial themes. @@ -247,11 +273,13 @@ Snap onto layer(s)/replace geometry with this other way | _undefined_ | - If th - If a way of the given layer(s) is closeby, will snap the new point onto this way (similar as preset might snap). To show multiple layers to snap onto, use a `;`-seperated list snap max distance | 5 | The maximum distance that this point will move to snap onto a layer (in meters) + #### Example usage `{import_button(,,Import this data into OpenStreetMap,./assets/svg/addSmall.svg,18,,5)}` + ### multi_apply A button to apply the tagging of this object onto a list of other features. This is an advanced feature for which you'll need calculatedTags @@ -264,11 +292,13 @@ text | _undefined_ | The text to show on the button autoapply | _undefined_ | A boolean indicating wether this tagging should be applied automatically if the relevant tags on this object are changed. A visual element indicating the multi_apply is still shown overwrite | _undefined_ | If set to 'true', the tags on the other objects will always be overwritten. The default behaviour will be to only change the tags on other objects if they are either undefined or had the same value before the change + #### Example usage {multi_apply(_features_with_the_same_name_within_100m, name:etymology:wikidata;name:etymology, Apply etymology information on all nearby objects with the same name)} + ### tag_apply Shows a big button; clicking this button will apply certain tags onto the feature. @@ -293,6 +323,9 @@ message | _undefined_ | The text to show to the contributor image | _undefined_ | An image to show to the contributor on the button id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tags onto _another_ object. The id will be read from properties[id_of_object_to_apply_this_one] of the selected object. The tags are still calculated based on the tags of the _selected_ element + #### Example usage - `{tag_apply(survey_date:=$_now:date, Surveyed today!)}` Generated from UI/SpecialVisualisations.ts \ No newline at end of file + `{tag_apply(survey_date:=$_now:date, Surveyed today!)}` + +This document is autogenerated from UI/SpecialVisualisations.ts \ No newline at end of file diff --git a/Docs/TagInfo/mapcomplete_cafes_and_pubs.json b/Docs/TagInfo/mapcomplete_cafes_and_pubs.json index 0e002e665..a72df9b19 100644 --- a/Docs/TagInfo/mapcomplete_cafes_and_pubs.json +++ b/Docs/TagInfo/mapcomplete_cafes_and_pubs.json @@ -121,6 +121,26 @@ "description": "Layer 'CafÊs and pubs' shows wheelchair=no with a fixed text, namely 'This place is not reachable with a wheelchair' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'CafÊs and pubs')", "value": "no" }, + { + "key": "service:electricity", + "description": "Layer 'CafÊs and pubs' shows service:electricity=yes with a fixed text, namely 'There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'CafÊs and pubs')", + "value": "yes" + }, + { + "key": "service:electricity", + "description": "Layer 'CafÊs and pubs' shows service:electricity=limited with a fixed text, namely 'There are a few domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'CafÊs and pubs')", + "value": "limited" + }, + { + "key": "service:electricity", + "description": "Layer 'CafÊs and pubs' shows service:electricity=ask with a fixed text, namely 'There are no sockets available indoors to customers, but charging might be possible if the staff is asked' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'CafÊs and pubs')", + "value": "ask" + }, + { + "key": "service:electricity", + "description": "Layer 'CafÊs and pubs' shows service:electricity=no with a fixed text, namely 'There are a no domestic sockets available to customers seated indoors' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'CafÊs and pubs')", + "value": "no" + }, { "key": "dog", "description": "Layer 'CafÊs and pubs' shows dog=yes with a fixed text, namely 'Dogs are allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'CafÊs and pubs')", diff --git a/Docs/TagInfo/mapcomplete_charging_stations.json b/Docs/TagInfo/mapcomplete_charging_stations.json index 41754afc4..5f23aa146 100644 --- a/Docs/TagInfo/mapcomplete_charging_stations.json +++ b/Docs/TagInfo/mapcomplete_charging_stations.json @@ -543,129 +543,129 @@ }, { "key": "planned:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", "value": "" }, { "key": "construction:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", "value": "" }, { "key": "disused:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", "value": "" }, { "key": "operational_status", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", - "value": "" - }, - { - "key": "amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", - "value": "charging_station" - }, - { - "key": "planned:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", - "value": "" - }, - { - "key": "construction:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", - "value": "" - }, - { - "key": "disused:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", - "value": "" - }, - { - "key": "operational_status", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", "value": "broken" }, { "key": "amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=broken&amenity=charging_station with a fixed text, namely 'This charging station works' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", "value": "charging_station" }, { "key": "planned:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", + "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", "value": "charging_station" }, { "key": "construction:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", "value": "" }, { "key": "disused:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", "value": "" }, { "key": "operational_status", - "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", + "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", "value": "" }, { "key": "amenity", - "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=charging_station&construction:amenity=&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'This charging station is broken' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", "value": "" }, { "key": "planned:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", "value": "" }, { "key": "construction:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", "value": "charging_station" }, { "key": "disused:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", "value": "" }, { "key": "operational_status", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", "value": "" }, { "key": "amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=charging_station&disused:amenity=&operational_status=&amenity= with a fixed text, namely 'A charging station is planned here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", "value": "" }, { "key": "planned:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", "value": "" }, { "key": "construction:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", "value": "" }, { "key": "disused:amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", "value": "charging_station" }, { "key": "operational_status", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", "value": "" }, { "key": "amenity", - "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=charging_station&operational_status=&amenity= with a fixed text, namely 'A charging station is constructed here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key amenity.", "value": "" }, + { + "key": "planned:amenity", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key planned:amenity.", + "value": "" + }, + { + "key": "construction:amenity", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key construction:amenity.", + "value": "" + }, + { + "key": "disused:amenity", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key disused:amenity.", + "value": "" + }, + { + "key": "operational_status", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations') Picking this answer will delete the key operational_status.", + "value": "" + }, + { + "key": "amenity", + "description": "Layer 'Charging stations' shows planned:amenity=&construction:amenity=&disused:amenity=&operational_status=&amenity=charging_station with a fixed text, namely 'This charging station has beed permanently disabled and is not in use anymore but is still visible' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", + "value": "charging_station" + }, { "key": "parking:fee", "description": "Layer 'Charging stations' shows parking:fee=no with a fixed text, namely 'No additional parking cost while charging' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Charging stations')", diff --git a/Docs/TagInfo/mapcomplete_cycle_infra.json b/Docs/TagInfo/mapcomplete_cycle_infra.json index 634538d40..7a38c85e2 100644 --- a/Docs/TagInfo/mapcomplete_cycle_infra.json +++ b/Docs/TagInfo/mapcomplete_cycle_infra.json @@ -600,7 +600,7 @@ }, { "key": "cycle_barrier:type", - "description": "Layer 'Barriers' shows cycle_barrier:type=double with a fixed text, namely 'Double, two barriers behind each other ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", + "description": "Layer 'Barriers' shows cycle_barrier:type=double with a fixed text, namely 'Double, two barriers behind each other ' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Bicycle infrastructure')", "value": "double" }, { diff --git a/Docs/TagInfo/mapcomplete_cyclofix.json b/Docs/TagInfo/mapcomplete_cyclofix.json index f15af7e5c..f9a4eef42 100644 --- a/Docs/TagInfo/mapcomplete_cyclofix.json +++ b/Docs/TagInfo/mapcomplete_cyclofix.json @@ -966,13 +966,13 @@ }, { "key": "location", - "description": "Layer 'Bike parking' shows location=underground with a fixed text, namely 'Underground parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')", - "value": "underground" + "description": "Layer 'Bike parking' shows location=surface with a fixed text, namely 'Surface level parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')", + "value": "surface" }, { "key": "location", - "description": "Layer 'Bike parking' shows location=surface with a fixed text, namely 'Surface level parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')", - "value": "surface" + "description": "Layer 'Bike parking' shows location=rooftop with a fixed text, namely 'Rooftop parking' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Cyclofix - an open map for cyclists')", + "value": "rooftop" }, { "key": "location", diff --git a/Docs/TagInfo/mapcomplete_food.json b/Docs/TagInfo/mapcomplete_food.json index 1bd972575..36d13bdce 100644 --- a/Docs/TagInfo/mapcomplete_food.json +++ b/Docs/TagInfo/mapcomplete_food.json @@ -76,16 +76,6 @@ "description": "Layer 'Restaurants and fast food' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", "value": "yes" }, - { - "key": "payment:app", - "description": "Layer 'Restaurants and fast food' shows payment:app=yes with a fixed text, namely 'Payment is done using a dedicated app' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", - "value": "yes" - }, - { - "key": "payment:membership_card", - "description": "Layer 'Restaurants and fast food' shows payment:membership_card=yes with a fixed text, namely 'Payment is done using a membership card' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", - "value": "yes" - }, { "key": "wheelchair", "description": "Layer 'Restaurants and fast food' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", @@ -315,6 +305,26 @@ "description": "Layer 'Restaurants and fast food' shows reusable_packaging:accept=only with a fixed text, namely 'You must bring your own container to order here.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", "value": "only" }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=yes with a fixed text, namely 'There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "yes" + }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=limited with a fixed text, namely 'There are a few domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "limited" + }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=ask with a fixed text, namely 'There are no sockets available indoors to customers, but charging might be possible if the staff is asked' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "ask" + }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=no with a fixed text, namely 'There are a no domestic sockets available to customers seated indoors' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", + "value": "no" + }, { "key": "dog", "description": "Layer 'Restaurants and fast food' shows dog=yes with a fixed text, namely 'Dogs are allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Restaurants and fast food')", diff --git a/Docs/TagInfo/mapcomplete_fritures.json b/Docs/TagInfo/mapcomplete_fritures.json index 1f4161ac1..42cf12774 100644 --- a/Docs/TagInfo/mapcomplete_fritures.json +++ b/Docs/TagInfo/mapcomplete_fritures.json @@ -81,16 +81,6 @@ "description": "Layer 'Fries shop' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", "value": "yes" }, - { - "key": "payment:app", - "description": "Layer 'Fries shop' shows payment:app=yes with a fixed text, namely 'Payment is done using a dedicated app' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", - "value": "yes" - }, - { - "key": "payment:membership_card", - "description": "Layer 'Fries shop' shows payment:membership_card=yes with a fixed text, namely 'Payment is done using a membership card' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", - "value": "yes" - }, { "key": "wheelchair", "description": "Layer 'Fries shop' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", @@ -320,6 +310,26 @@ "description": "Layer 'Fries shop' shows reusable_packaging:accept=only with a fixed text, namely 'You must bring your own container to order here.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", "value": "only" }, + { + "key": "service:electricity", + "description": "Layer 'Fries shop' shows service:electricity=yes with a fixed text, namely 'There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "yes" + }, + { + "key": "service:electricity", + "description": "Layer 'Fries shop' shows service:electricity=limited with a fixed text, namely 'There are a few domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "limited" + }, + { + "key": "service:electricity", + "description": "Layer 'Fries shop' shows service:electricity=ask with a fixed text, namely 'There are no sockets available indoors to customers, but charging might be possible if the staff is asked' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "ask" + }, + { + "key": "service:electricity", + "description": "Layer 'Fries shop' shows service:electricity=no with a fixed text, namely 'There are a no domestic sockets available to customers seated indoors' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "no" + }, { "key": "dog", "description": "Layer 'Fries shop' shows dog=yes with a fixed text, namely 'Dogs are allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", @@ -406,16 +416,6 @@ "description": "Layer 'Restaurants and fast food' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", "value": "yes" }, - { - "key": "payment:app", - "description": "Layer 'Restaurants and fast food' shows payment:app=yes with a fixed text, namely 'Payment is done using a dedicated app' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", - "value": "yes" - }, - { - "key": "payment:membership_card", - "description": "Layer 'Restaurants and fast food' shows payment:membership_card=yes with a fixed text, namely 'Payment is done using a membership card' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", - "value": "yes" - }, { "key": "wheelchair", "description": "Layer 'Restaurants and fast food' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", @@ -645,6 +645,26 @@ "description": "Layer 'Restaurants and fast food' shows reusable_packaging:accept=only with a fixed text, namely 'You must bring your own container to order here.' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", "value": "only" }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=yes with a fixed text, namely 'There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "yes" + }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=limited with a fixed text, namely 'There are a few domestic sockets available to customers seated indoors, where they can charge their electronics' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "limited" + }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=ask with a fixed text, namely 'There are no sockets available indoors to customers, but charging might be possible if the staff is asked' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "ask" + }, + { + "key": "service:electricity", + "description": "Layer 'Restaurants and fast food' shows service:electricity=no with a fixed text, namely 'There are a no domestic sockets available to customers seated indoors' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", + "value": "no" + }, { "key": "dog", "description": "Layer 'Restaurants and fast food' shows dog=yes with a fixed text, namely 'Dogs are allowed' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Friturenkaart')", diff --git a/Docs/TagInfo/mapcomplete_observation_towers.json b/Docs/TagInfo/mapcomplete_observation_towers.json index 4a22ae603..1511340c0 100644 --- a/Docs/TagInfo/mapcomplete_observation_towers.json +++ b/Docs/TagInfo/mapcomplete_observation_towers.json @@ -76,16 +76,6 @@ "description": "Layer 'Observation towers' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')", "value": "yes" }, - { - "key": "payment:app", - "description": "Layer 'Observation towers' shows payment:app=yes with a fixed text, namely 'Payment is done using a dedicated app' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')", - "value": "yes" - }, - { - "key": "payment:membership_card", - "description": "Layer 'Observation towers' shows payment:membership_card=yes with a fixed text, namely 'Payment is done using a membership card' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')", - "value": "yes" - }, { "key": "wheelchair", "description": "Layer 'Observation towers' shows wheelchair=designated with a fixed text, namely 'This place is specially adapted for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Observation towers')", diff --git a/Docs/TagInfo/mapcomplete_toilets.json b/Docs/TagInfo/mapcomplete_toilets.json index 776bae332..4be49037f 100644 --- a/Docs/TagInfo/mapcomplete_toilets.json +++ b/Docs/TagInfo/mapcomplete_toilets.json @@ -74,6 +74,25 @@ "key": "charge", "description": "Layer 'Toilets' shows and asks freeform values for key 'charge' (in the MapComplete.osm.be theme 'Open Toilet Map')" }, + { + "key": "payment:cash", + "description": "Layer 'Toilets' shows payment:cash=yes with a fixed text, namely 'Cash is accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "yes" + }, + { + "key": "payment:cards", + "description": "Layer 'Toilets' shows payment:cards=yes with a fixed text, namely 'Payment cards are accepted here' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "yes" + }, + { + "key": "opening_hours", + "description": "Layer 'Toilets' shows and asks freeform values for key 'opening_hours' (in the MapComplete.osm.be theme 'Open Toilet Map')" + }, + { + "key": "opening_hours", + "description": "Layer 'Toilets' shows opening_hours=24/7 with a fixed text, namely 'Opened 24/7' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "value": "24/7" + }, { "key": "wheelchair", "description": "Layer 'Toilets' shows wheelchair=yes with a fixed text, namely 'There is a dedicated toilet for wheelchair users' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", @@ -150,7 +169,7 @@ }, { "key": "toilets:paper_supplied", - "description": "Layer 'Toilets' shows toilets:paper_supplied=yes with a fixed text, namely 'Toilet paper is equipped with toilet paper' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", + "description": "Layer 'Toilets' shows toilets:paper_supplied=yes with a fixed text, namely 'This toilet is equipped with toilet paper' and allows to pick this as a default answer (in the MapComplete.osm.be theme 'Open Toilet Map')", "value": "yes" }, { diff --git a/Docs/Tools/GenPlot.py b/Docs/Tools/GenPlot.py index 62ab890da..62419829a 100644 --- a/Docs/Tools/GenPlot.py +++ b/Docs/Tools/GenPlot.py @@ -1,7 +1,7 @@ -from datetime import datetime -from matplotlib import pyplot import json import sys +from datetime import datetime +from matplotlib import pyplot def pyplot_init(): @@ -9,54 +9,55 @@ def pyplot_init(): pyplot.figure(figsize=(14, 8), dpi=200) pyplot.xticks(rotation='vertical') pyplot.grid() - + def genKeys(data, type): keys = map(lambda kv: kv["key"], data) if type == "date": - keys = map(lambda key : datetime.strptime(key, "%Y-%m-%dT%H:%M:%S.000Z"), keys) + keys = map(lambda key: datetime.strptime(key, "%Y-%m-%dT%H:%M:%S.000Z"), keys) return list(keys) + def createPie(options): data = options["plot"]["count"] keys = genKeys(data, options["interpetKeysAs"]) values = list(map(lambda kv: kv["value"], data)) - - total = sum(map(lambda kv : kv["value"], data)) + + total = sum(map(lambda kv: kv["value"], data)) first_pct = data[0]["value"] / total - + pyplot_init() pyplot.pie(values, labels=keys, startangle=(90 - 360 * first_pct / 2)) - + + def createBar(options): data = options["plot"]["count"] keys = genKeys(data, options["interpetKeysAs"]) values = list(map(lambda kv: kv["value"], data)) - + pyplot.bar(keys, values, label=options["name"]) pyplot.legend() - pyplot_init() title = sys.argv[1] pyplot.title = title names = [] -while(True): +while (True): line = sys.stdin.readline() if line == "" or line == "\n": - if(len(names) > 1): - pyplot.legend(loc="upper left", ncol=3) - pyplot.savefig(title+".png", dpi=400, facecolor='w', edgecolor='w', + if (len(names) > 1): + pyplot.legend(loc="upper left", ncol=3) + pyplot.savefig(title + ".png", dpi=400, facecolor='w', edgecolor='w', bbox_inches='tight') break - + options = json.loads(line) - print("Creating "+options["plot"]["type"]+" '"+options["name"]+"'") + print("Creating " + options["plot"]["type"] + " '" + options["name"] + "'") names.append(options["name"]) - if(options["plot"]["type"] == "pie"): + if (options["plot"]["type"] == "pie"): createPie(options) - elif(options["plot"]["type"] == "bar"): + elif (options["plot"]["type"] == "bar"): createBar(options) else: - print("Unkown type: "+options.type) \ No newline at end of file + print("Unkown type: " + options.type) diff --git a/Docs/Tools/centerpoints.geojson b/Docs/Tools/centerpoints.geojson index b1788a37b..2492ca450 100644 --- a/Docs/Tools/centerpoints.geojson +++ b/Docs/Tools/centerpoints.geojson @@ -26175,6 +26175,736 @@ ] } }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 9.912959749999999, + 53.568176550000004 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.9386236, + 52.39905455 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.92671375, + 52.398450800000006 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8502412, + 50.9537904 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -4.5216465, + 41.6315787 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 13.7104317, + 52.5146233 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.86096605, + 50.9959552 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8571554, + 50.9910854 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 14.45534885, + 51.86195935 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.500363200000001, + 52.9994699 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.88316705, + 49.750030949999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5837175000000006, + 53.0112094 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.1877101, + 50.8138998 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.1803919, + 50.815788 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5944477500000005, + 53.0124767 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.88559165, + 49.75416515 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8711039, + 50.9838572 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -98.774433, + 38.520436000000004 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -98.77543514999999, + 38.51659705 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 1.7251018, + 41.2235419 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2134867, + 51.273909450000005 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.2426008500000005, + 50.7399335 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 14.5439431, + 52.5199993 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2135355, + 51.2739099 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -73.2482913, + -39.8174256 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.82372905, + 48.2770006 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2057786, + 51.2166419 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 149.10384465, + -35.307573649999995 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.74889525, + 49.95250085 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.8225693, + 45.8180233 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -0.3195168, + 51.5108692 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.9433354499999997, + 51.0501025 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.2011024, + 50.9274822 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.2311544, + 50.7306946 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.670592500000001, + 48.755136199999995 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.217245, + 51.2150345 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.71221775, + 48.75860525 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.3532934999999995, + 50.82130345 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.648593000000005, + -34.654215050000005 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.21610405, + 51.2132069 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 13.07104225, + 52.3901654 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 13.0475642, + 52.3835208 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 13.7228588, + 51.0560322 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.797343649999998, + 48.7811608 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.89930975, + 48.74755225 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.94291155, + 48.7458015 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.70531, + -34.6556281 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2165198, + 51.1951634 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2167532, + 51.1952601 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.20747325, + 51.1927598 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.7208156, + 51.04977505 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -80.41969245, + 37.2199775 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.76180895, + -34.6585943 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.21771215, + 51.21593945 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.377141649999999, + 48.52651415 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.4836779, + 51.1044175 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.5990736, + 46.66878385 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 35.9190812, + 31.95690195 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.467542449999996, + -34.62377535 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.090876, + 52.5058044 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.544858, + 52.2558548 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.9171064, + 52.5588591 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.9216479, + 52.5599441 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -99.3125855, + 38.876784 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.58372975, + 53.022156949999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -9.106560349999999, + 53.26894645 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.3665548, + 50.8442926 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.5689426, + 46.6417558 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -93.2252472, + 44.930924250000004 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.3353766, + 50.87851705 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.6487649, + -34.6541886 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.9755905, + 51.3370068 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.06280795, + 49.70883905 + ] + } + }, { "type": "Feature", "geometry": { @@ -29715,6 +30445,1126 @@ ] } }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5463604, + 53.0115865 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5481828, + 53.0129515 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5486318, + 53.0134666 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.3435891, + 50.8314757 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.7124507, + 50.8657342 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.1439541, + 51.1716062 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.57651145, + 53.01670355 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5695252, + 53.017952 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -0.0322978, + 49.0182547 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.7177802, + 44.351625049999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.2334872, + 50.7377122 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2084272499999997, + 51.220085499999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.35385915, + 46.4992565 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.992285, + 48.498860699999994 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.996022100000001, + 48.501749700000005 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.5389581, + 51.2419872 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.7148547499999998, + 42.210143200000005 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5614855, + 53.0029268 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.6716799, + 44.764731 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 12.9823037, + 55.606332050000006 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 12.9923348, + 55.611163899999994 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 14.2590062, + 40.93136005 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.7280077, + 51.0445407 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.642136449999999, + 44.72005035 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.64026185, + 44.71636225 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.65099, + 44.71412565 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.35358545, + 46.498667350000005 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 12.975145300000001, + 55.597958199999994 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.678854300000001, + 44.754301749999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.34900455, + 46.500302649999995 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 12.98136865, + 55.60443215 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 12.97096985, + 55.60089265 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 88.3540677, + 22.57377235 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5494963, + 53.0001853 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.434616650000001, + 46.949178700000004 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 13.06510535, + 52.3957008 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.5972038, + -34.645062249999995 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.9134751, + 51.2275968 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.1439541, + 51.1716062 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5640763, + 53.0198777 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.4240155, + 46.939158649999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8171891000000002, + 41.98195925 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 9.6414625, + 45.5027999 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.75107785, + 48.8108462 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.9132451, + 51.2274674 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.63869095, + 44.7081696 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.935956149999999, + 44.40689865 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2304059499999997, + 51.2099597 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.226562299999999, + 50.96279705 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.44229925, + 46.9489906 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.22910945, + 41.44735275 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.392894, + 51.20707575 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.50317545, + 48.75473 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.1353594, + 51.1818748 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.20497705, + 51.18472965 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.20557645, + 51.18384435 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.20416905, + 51.18382885 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.486115600000002, + 48.725182149999995 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2244893, + 51.2115434 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2041749499999996, + 51.1829392 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.4550518, + 46.9602491 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2178952, + 51.2148113 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2244893, + 51.21157615 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.648328750000005, + -34.651680850000005 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.083827149999999, + 50.78122465 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.1987681500000003, + 51.19621705 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.4177076, + 46.9393474 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.4288396, + 46.9526135 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.0106851, + 51.005699 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.21712535, + 51.214556 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.3507453, + 50.8536834 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.3499349, + 50.8533748 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 10.63322065, + 48.8411258 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.219522, + 51.21604535 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8604582, + 50.99566 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.289834, + 41.610439 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.1775754, + 51.1128633 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 6.5803687, + 53.2510803 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.20418225, + 51.18284165 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.4392947, + 46.95332115 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.2397780000000003, + 41.43957465 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.148393, + 51.1531118 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.44867075, + 46.96296565 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2254811, + 51.2084386 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.3413453, + 44.380366 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.67208595, + 52.10917795 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.665308750000001, + 52.114730699999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.20680885, + 51.2305336 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.2170325, + 51.2149832 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.2580250499999996, + 48.74150775 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 9.982036650000001, + 48.4100799 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 12.1995771, + 44.419088 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.42972365, + 46.953410950000006 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.30281045, + 50.833947699999996 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.433689749999999, + 46.9498844 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8641211, + 51.0331532 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8595969, + 51.0339334 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -9.10136625, + 53.2669087 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 30.6013954, + 50.4284077 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 30.59795485, + 50.429091 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.615215, + 50.8515194 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.18631465, + 50.815494900000004 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.1853377, + 50.814548 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.18632335, + 50.8154678 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 9.9102199, + 53.5662632 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.6454225, + 50.77147625 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -58.6672584, + -34.659333950000004 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.1128401, + 41.51369795 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 114.1728093, + 22.2773452 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 9.90980745, + 53.5710328 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 114.1728093, + 22.2773452 + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 11.66709775, + 52.1275933 + ] + } + }, { "type": "Feature", "geometry": { diff --git a/Docs/Tools/graphs/Changesets per host in 2021.png b/Docs/Tools/graphs/Changesets per host in 2021.png index 3d25a958e..d4931ed56 100644 Binary files a/Docs/Tools/graphs/Changesets per host in 2021.png and b/Docs/Tools/graphs/Changesets per host in 2021.png differ diff --git a/Docs/Tools/graphs/Changesets per host.png b/Docs/Tools/graphs/Changesets per host.png index 1dd4a2ecf..c7983e02f 100644 Binary files a/Docs/Tools/graphs/Changesets per host.png and b/Docs/Tools/graphs/Changesets per host.png differ diff --git a/Docs/Tools/graphs/Changesets per theme (bar) in 2021.png b/Docs/Tools/graphs/Changesets per theme (bar) in 2021.png index c20e8357b..8a594265b 100644 Binary files a/Docs/Tools/graphs/Changesets per theme (bar) in 2021.png and b/Docs/Tools/graphs/Changesets per theme (bar) in 2021.png differ diff --git a/Docs/Tools/graphs/Changesets per theme (bar).png b/Docs/Tools/graphs/Changesets per theme (bar).png index a3d920de7..332388508 100644 Binary files a/Docs/Tools/graphs/Changesets per theme (bar).png and b/Docs/Tools/graphs/Changesets per theme (bar).png differ diff --git a/Docs/Tools/graphs/Changesets per theme (pie) in 2021.png b/Docs/Tools/graphs/Changesets per theme (pie) in 2021.png index 8b1524bc7..d1ba2e269 100644 Binary files a/Docs/Tools/graphs/Changesets per theme (pie) in 2021.png and b/Docs/Tools/graphs/Changesets per theme (pie) in 2021.png differ diff --git a/Docs/Tools/graphs/Changesets per theme (pie).png b/Docs/Tools/graphs/Changesets per theme (pie).png index 5ae1dc7c0..c01c15a08 100644 Binary files a/Docs/Tools/graphs/Changesets per theme (pie).png and b/Docs/Tools/graphs/Changesets per theme (pie).png differ diff --git a/Docs/Tools/graphs/Changesets per theme in 2021.png b/Docs/Tools/graphs/Changesets per theme in 2021.png index 8cfe94596..384126b57 100644 Binary files a/Docs/Tools/graphs/Changesets per theme in 2021.png and b/Docs/Tools/graphs/Changesets per theme in 2021.png differ diff --git a/Docs/Tools/graphs/Changesets per theme.png b/Docs/Tools/graphs/Changesets per theme.png index 0d67bafad..5bb23d1fa 100644 Binary files a/Docs/Tools/graphs/Changesets per theme.png and b/Docs/Tools/graphs/Changesets per theme.png differ diff --git a/Docs/Tools/graphs/Changesets per version number in 2021.png b/Docs/Tools/graphs/Changesets per version number in 2021.png index 0641d2a4f..a76e399fc 100644 Binary files a/Docs/Tools/graphs/Changesets per version number in 2021.png and b/Docs/Tools/graphs/Changesets per version number in 2021.png differ diff --git a/Docs/Tools/graphs/Changesets per version number.png b/Docs/Tools/graphs/Changesets per version number.png index bf6ccc351..2840ba8ca 100644 Binary files a/Docs/Tools/graphs/Changesets per version number.png and b/Docs/Tools/graphs/Changesets per version number.png differ diff --git a/Docs/Tools/graphs/Contributors per changeset count in 2021.png b/Docs/Tools/graphs/Contributors per changeset count in 2021.png index 87c5a63e1..5270f34e0 100644 Binary files a/Docs/Tools/graphs/Contributors per changeset count in 2021.png and b/Docs/Tools/graphs/Contributors per changeset count in 2021.png differ diff --git a/Docs/Tools/graphs/Contributors per changeset count.png b/Docs/Tools/graphs/Contributors per changeset count.png index 54b273981..5682b3177 100644 Binary files a/Docs/Tools/graphs/Contributors per changeset count.png and b/Docs/Tools/graphs/Contributors per changeset count.png differ diff --git a/Docs/Tools/graphs/Contributors per day in 2021.png b/Docs/Tools/graphs/Contributors per day in 2021.png index b4df69230..5f7670ea6 100644 Binary files a/Docs/Tools/graphs/Contributors per day in 2021.png and b/Docs/Tools/graphs/Contributors per day in 2021.png differ diff --git a/Docs/Tools/graphs/Contributors per day.png b/Docs/Tools/graphs/Contributors per day.png index aaa99887f..08bee71c2 100644 Binary files a/Docs/Tools/graphs/Contributors per day.png and b/Docs/Tools/graphs/Contributors per day.png differ diff --git a/Docs/Tools/graphs/Empty changesets by date.png b/Docs/Tools/graphs/Empty changesets by date.png index f29901914..fd9beb258 100644 Binary files a/Docs/Tools/graphs/Empty changesets by date.png and b/Docs/Tools/graphs/Empty changesets by date.png differ diff --git a/Docs/Tools/stats/stats.2021-10.json b/Docs/Tools/stats/stats.2021-10.json index 5cfb485ec..b39a4174f 100644 --- a/Docs/Tools/stats/stats.2021-10.json +++ b/Docs/Tools/stats/stats.2021-10.json @@ -1,5 +1,4547 @@ { "features": [ + { + "id": 113211661, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 9.9095044, + 53.5645886 + ], + [ + 9.9164151, + 53.5645886 + ], + [ + 9.9164151, + 53.5717645 + ], + [ + 9.9095044, + 53.5717645 + ], + [ + 9.9095044, + 53.5645886 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Nicolelaine", + "uid": "2997398", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #waste_basket", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-31T23:18:23Z", + "reviewed_features": [], + "create": 7, + "modify": 2, + "delete": 0, + "area": 0.0000495904921300044, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "waste_basket", + "answer": 7, + "create": 7, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113209361, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.9337197, + 52.3969249 + ], + [ + 4.9435275, + 52.3969249 + ], + [ + 4.9435275, + 52.4011842 + ], + [ + 4.9337197, + 52.4011842 + ], + [ + 4.9337197, + 52.3969249 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "elmarburke", + "uid": "100952", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T21:20:58Z", + "reviewed_features": [], + "create": 0, + "modify": 16, + "delete": 0, + "area": 0.0000417743625400102, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 24, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113208196, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.9099, + 52.3871644 + ], + [ + 4.9435275, + 52.3871644 + ], + [ + 4.9435275, + 52.4097372 + ], + [ + 4.9099, + 52.4097372 + ], + [ + 4.9099, + 52.3871644 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "elmarburke", + "uid": "100952", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-31T20:35:55Z", + "reviewed_features": [], + "create": 0, + "modify": 170, + "delete": 0, + "area": 0.000759066831999958, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 263, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113206794, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8502412, + 50.9537904 + ], + [ + 2.8502412, + 50.9537904 + ], + [ + 2.8502412, + 50.9537904 + ], + [ + 2.8502412, + 50.9537904 + ], + [ + 2.8502412, + 50.9537904 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T19:46:20Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "imagery": "CartoDB.Voyager", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113203637, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -4.5216465, + 41.6315787 + ], + [ + -4.5216465, + 41.6315787 + ], + [ + -4.5216465, + 41.6315787 + ], + [ + -4.5216465, + 41.6315787 + ], + [ + -4.5216465, + 41.6315787 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "NinopiÃąa10", + "uid": "11138282", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #drinking_water", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T18:06:47Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "drinking_water", + "answer": 2, + "create": 1, + "imagery": "osm", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113200439, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 13.7104317, + 52.5146233 + ], + [ + 13.7104317, + 52.5146233 + ], + [ + 13.7104317, + 52.5146233 + ], + [ + 13.7104317, + 52.5146233 + ], + [ + 13.7104317, + 52.5146233 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "SKlettke", + "uid": "14218100", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cycle_infra", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T16:30:36Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cycle_infra", + "answer": 1, + "imagery": "CartoDB.Voyager", + "language": "de" + } + } + }, + { + "id": 113197196, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8608721, + 50.9958993 + ], + [ + 2.86106, + 50.9958993 + ], + [ + 2.86106, + 50.9960111 + ], + [ + 2.8608721, + 50.9960111 + ], + [ + 2.8608721, + 50.9958993 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-31T15:10:02Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 2.10072199998591e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 1, + "imagery": "CartoDB.Voyager", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113196838, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8571554, + 50.9910854 + ], + [ + 2.8571554, + 50.9910854 + ], + [ + 2.8571554, + 50.9910854 + ], + [ + 2.8571554, + 50.9910854 + ], + [ + 2.8571554, + 50.9910854 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #observation_towers", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-31T15:00:25Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "observation_towers", + "imagery": "osm", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113194894, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 14.4289005, + 51.8548566 + ], + [ + 14.4817972, + 51.8548566 + ], + [ + 14.4817972, + 51.8690621 + ], + [ + 14.4289005, + 51.8690621 + ], + [ + 14.4289005, + 51.8548566 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Mitch85302", + "uid": "14030677", + "editor": "MapComplete 0.7.2l", + "comment": "Adding data with #MapComplete for theme #waldbrand", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T14:13:38Z", + "reviewed_features": [], + "create": 5, + "modify": 5, + "delete": 0, + "area": 0.000751424071850168, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "waldbrand-app.de", + "theme": "waldbrand", + "imagery": "osm", + "language": "de", + "theme-creator": "Sebastian KÃŧrten" + } + } + }, + { + "id": 113194138, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.4977152, + 52.9971236 + ], + [ + 6.5030112, + 52.9971236 + ], + [ + 6.5030112, + 53.0018162 + ], + [ + 6.4977152, + 53.0018162 + ], + [ + 6.4977152, + 52.9971236 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T13:56:10Z", + "reviewed_features": [], + "create": 0, + "modify": 18, + "delete": 0, + "area": 0.0000248520095999939, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 32, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113193868, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 8.878581, + 49.7459743 + ], + [ + 8.8877531, + 49.7459743 + ], + [ + 8.8877531, + 49.7540876 + ], + [ + 8.878581, + 49.7540876 + ], + [ + 8.878581, + 49.7459743 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "dekarl", + "uid": "5760", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T13:49:41Z", + "reviewed_features": [], + "create": 0, + "modify": 13, + "delete": 0, + "area": 0.0000744159989299727, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 21, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113193213, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5738892, + 53.0084482 + ], + [ + 6.5935458, + 53.0084482 + ], + [ + 6.5935458, + 53.0139706 + ], + [ + 6.5738892, + 53.0139706 + ], + [ + 6.5738892, + 53.0084482 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T13:33:04Z", + "reviewed_features": [], + "create": 0, + "modify": 18, + "delete": 0, + "area": 0.000108551607840076, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 29, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113192072, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 5.1877101, + 50.8138998 + ], + [ + 5.1877101, + 50.8138998 + ], + [ + 5.1877101, + 50.8138998 + ], + [ + 5.1877101, + 50.8138998 + ], + [ + 5.1877101, + 50.8138998 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T13:05:09Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "aed", + "answer": 4, + "create": 1, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113191871, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 5.1803919, + 50.815788 + ], + [ + 5.1803919, + 50.815788 + ], + [ + 5.1803919, + 50.815788 + ], + [ + 5.1803919, + 50.815788 + ], + [ + 5.1803919, + 50.815788 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #shops", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T12:59:32Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "shops", + "answer": 1, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113188983, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5867669, + 53.0080644 + ], + [ + 6.6021286, + 53.0080644 + ], + [ + 6.6021286, + 53.016889 + ], + [ + 6.5867669, + 53.016889 + ], + [ + 6.5867669, + 53.0080644 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T11:37:43Z", + "reviewed_features": [], + "create": 0, + "modify": 67, + "delete": 0, + "area": 0.000135560857819959, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 112, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113185480, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 8.8815533, + 49.7526375 + ], + [ + 8.88963, + 49.7526375 + ], + [ + 8.88963, + 49.7556928 + ], + [ + 8.8815533, + 49.7556928 + ], + [ + 8.8815533, + 49.7526375 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "dekarl", + "uid": "5760", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T09:59:22Z", + "reviewed_features": [], + "create": 0, + "modify": 3, + "delete": 0, + "area": 0.0000246767415099986, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 5, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113183368, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8711039, + 50.9838572 + ], + [ + 2.8711039, + 50.9838572 + ], + [ + 2.8711039, + 50.9838572 + ], + [ + 2.8711039, + 50.9838572 + ], + [ + 2.8711039, + 50.9838572 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-31T08:41:01Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "aed", + "imagery": "osm", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113178247, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -98.782857, + 38.51376 + ], + [ + -98.766009, + 38.51376 + ], + [ + -98.766009, + 38.527112 + ], + [ + -98.782857, + 38.527112 + ], + [ + -98.782857, + 38.51376 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "s_SoNick", + "uid": "8082926", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-31T02:14:53Z", + "reviewed_features": [], + "create": 0, + "modify": 11, + "delete": 0, + "area": 0.000224954496000215, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 11, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113178210, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -98.7761413, + 38.511638 + ], + [ + -98.774729, + 38.511638 + ], + [ + -98.774729, + 38.5215561 + ], + [ + -98.7761413, + 38.5215561 + ], + [ + -98.7761413, + 38.511638 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "s_SoNick", + "uid": "8082926", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-31T02:09:36Z", + "reviewed_features": [], + "create": 0, + "modify": 5, + "delete": 0, + "area": 0.000014007332630125, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 5, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113174278, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 1.725044, + 41.2232003 + ], + [ + 1.7251596, + 41.2232003 + ], + [ + 1.7251596, + 41.2238835 + ], + [ + 1.725044, + 41.2238835 + ], + [ + 1.725044, + 41.2232003 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "yopaseopor", + "uid": "500572", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #amenity", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T20:55:50Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 7.89779199996998e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "amenity", + "answer": 1, + "create": 1, + "imagery": "osm", + "language": "ca" + } + } + }, + { + "id": 113171049, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2134379, + 51.273909 + ], + [ + 3.2135355, + 51.273909 + ], + [ + 3.2135355, + 51.2739099 + ], + [ + 3.2134379, + 51.2739099 + ], + [ + 3.2134379, + 51.273909 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #ghostbikes", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-30T18:39:23Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 8.78399996392555e-11, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "ghostbikes", + "imagery": "CartoDB.Positron", + "language": "en", + "move:node/9212378672": "improve_accuracy" + } + } + }, + { + "id": 113170848, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.242573, + 50.7396755 + ], + [ + 4.2426287, + 50.7396755 + ], + [ + 4.2426287, + 50.7401915 + ], + [ + 4.242573, + 50.7401915 + ], + [ + 4.242573, + 50.7396755 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "joost schouppe", + "uid": "67832", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-30T18:31:18Z", + "reviewed_features": [], + "create": 2, + "modify": 4, + "delete": 0, + "area": 2.87412000001961e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 12, + "create": 2, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113167174, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 14.5439431, + 52.5199993 + ], + [ + 14.5439431, + 52.5199993 + ], + [ + 14.5439431, + 52.5199993 + ], + [ + 14.5439431, + 52.5199993 + ], + [ + 14.5439431, + 52.5199993 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "RoySiegel1409", + "uid": "14378838", + "editor": "MapComplete 0.7.2l", + "comment": "Adding data with #MapComplete for theme #waldbrand", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T16:24:35Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "waldbrand-app.de", + "theme": "waldbrand", + "imagery": "osm", + "language": "de", + "theme-creator": "Sebastian KÃŧrten" + } + } + }, + { + "id": 113166817, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2135355, + 51.2739099 + ], + [ + 3.2135355, + 51.2739099 + ], + [ + 3.2135355, + 51.2739099 + ], + [ + 3.2135355, + 51.2739099 + ], + [ + 3.2135355, + 51.2739099 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "349499", + "uid": "7006347", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #ghostbikes", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T16:11:57Z", + "reviewed_features": [], + "create": 1, + "modify": 3, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "ghostbikes", + "answer": 3, + "create": 1, + "imagery": "CartoDB.Positron", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113164317, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -73.2482913, + -39.8174256 + ], + [ + -73.2482913, + -39.8174256 + ], + [ + -73.2482913, + -39.8174256 + ], + [ + -73.2482913, + -39.8174256 + ], + [ + -73.2482913, + -39.8174256 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Awo", + "uid": "196556", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #trees", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T14:58:49Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "trees", + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113162656, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.8069881, + 48.2709046 + ], + [ + 11.84047, + 48.2709046 + ], + [ + 11.84047, + 48.2830966 + ], + [ + 11.8069881, + 48.2830966 + ], + [ + 11.8069881, + 48.2709046 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T14:08:43Z", + "reviewed_features": [], + "create": 0, + "modify": 25, + "delete": 0, + "area": 0.000408211324799962, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 37, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113156911, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2057786, + 51.2166419 + ], + [ + 3.2057786, + 51.2166419 + ], + [ + 3.2057786, + 51.2166419 + ], + [ + 3.2057786, + 51.2166419 + ], + [ + 3.2057786, + 51.2166419 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #climbing", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-30T11:14:33Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "climbing", + "answer": 7, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113154144, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 149.1017236, + -35.3107329 + ], + [ + 149.1059657, + -35.3107329 + ], + [ + 149.1059657, + -35.3044144 + ], + [ + 149.1017236, + -35.3044144 + ], + [ + 149.1017236, + -35.3107329 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Leinna", + "uid": "12622581", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T09:51:15Z", + "reviewed_features": [], + "create": 0, + "modify": 5, + "delete": 0, + "area": 0.0000268037088499896, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 7, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113151688, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 8.6125637, + 49.7658392 + ], + [ + 8.8852268, + 49.7658392 + ], + [ + 8.8852268, + 50.1391625 + ], + [ + 8.6125637, + 50.1391625 + ], + [ + 8.6125637, + 49.7658392 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "dekarl", + "uid": "5760", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T08:24:32Z", + "reviewed_features": [], + "create": 0, + "modify": 26, + "delete": 0, + "area": 0.101791488280228, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 41, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113150555, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 8.8225646, + 45.818017 + ], + [ + 8.822574, + 45.818017 + ], + [ + 8.822574, + 45.8180296 + ], + [ + 8.8225646, + 45.8180296 + ], + [ + 8.8225646, + 45.818017 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "valhalla", + "uid": "18818", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #bookcases", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T07:37:57Z", + "reviewed_features": [], + "create": 1, + "modify": 5, + "delete": 0, + "area": 1.18440000044692e-10, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "bookcases", + "answer": 4, + "create": 1, + "imagery": "osm", + "language": "en", + "move:node/9211743706": "improve_accuracy" + } + } + }, + { + "id": 113146384, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -0.3195168, + 51.5108692 + ], + [ + -0.3195168, + 51.5108692 + ], + [ + -0.3195168, + 51.5108692 + ], + [ + -0.3195168, + 51.5108692 + ], + [ + -0.3195168, + 51.5108692 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Milhouse", + "uid": "132695", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-30T02:27:32Z", + "reviewed_features": [], + "create": 1, + "modify": 0, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 1, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113145619, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.197621, + 50.8796176 + ], + [ + 4.6890499, + 50.8796176 + ], + [ + 4.6890499, + 51.2205874 + ], + [ + 3.197621, + 51.2205874 + ], + [ + 3.197621, + 50.8796176 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #ghostbikes", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-30T00:36:39Z", + "reviewed_features": [], + "create": 0, + "modify": 3, + "delete": 0, + "area": 0.508532213747214, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 2, + "theme": "ghostbikes", + "answer": 1, + "imagery": "CartoDB.Positron", + "language": "en", + "move:node/6017635080": "improve_accuracy", + "move:node/7947512310": "improve_accuracy" + } + } + }, + { + "id": 113141592, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.1913033, + 50.9108255 + ], + [ + 4.2109015, + 50.9108255 + ], + [ + 4.2109015, + 50.9441389 + ], + [ + 4.1913033, + 50.9441389 + ], + [ + 4.1913033, + 50.9108255 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Thierry1030", + "uid": "286563", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #cyclestreets", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-29T20:59:57Z", + "reviewed_features": [], + "create": 0, + "modify": 7, + "delete": 0, + "area": 0.000652882675879943, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclestreets", + "answer": 7, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113133260, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.2311544, + 50.7306946 + ], + [ + 4.2311544, + 50.7306946 + ], + [ + 4.2311544, + 50.7306946 + ], + [ + 4.2311544, + 50.7306946 + ], + [ + 4.2311544, + 50.7306946 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "joost schouppe", + "uid": "67832", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-29T16:57:13Z", + "reviewed_features": [], + "create": 1, + "modify": 0, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 4, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113132316, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6684818, + 48.7547809 + ], + [ + 10.6727032, + 48.7547809 + ], + [ + 10.6727032, + 48.7554915 + ], + [ + 10.6684818, + 48.7554915 + ], + [ + 10.6684818, + 48.7547809 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-29T16:33:48Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.00000299972683999146, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 3, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113131130, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2155456, + 51.2139071 + ], + [ + 3.2189444, + 51.2139071 + ], + [ + 3.2189444, + 51.2161619 + ], + [ + 3.2155456, + 51.2161619 + ], + [ + 3.2155456, + 51.2139071 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.0-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-29T16:07:28Z", + "reviewed_features": [], + "create": 0, + "modify": 7, + "delete": 0, + "area": 0.00000766361424000939, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "grb", + "answer": 13, + "imagery": "AGIVFlandersGRB", + "language": "nl" + } + } + }, + { + "id": 113128981, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.7113688, + 48.7561252 + ], + [ + 10.7130667, + 48.7561252 + ], + [ + 10.7130667, + 48.7610853 + ], + [ + 10.7113688, + 48.7610853 + ], + [ + 10.7113688, + 48.7561252 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-29T15:08:58Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0.00000842175378999643, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 1, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113127802, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.3513466, + 50.8198358 + ], + [ + 6.3552404, + 50.8198358 + ], + [ + 6.3552404, + 50.8227711 + ], + [ + 6.3513466, + 50.8227711 + ], + [ + 6.3513466, + 50.8198358 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "tordans", + "uid": "11881", + "editor": "MapComplete 0.12.0-beta", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-29T14:38:40Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0.000011429471139987, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "etymology", + "answer": 13, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113125295, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.6505992, + -34.6548127 + ], + [ + -58.6465868, + -34.6548127 + ], + [ + -58.6465868, + -34.6536174 + ], + [ + -58.6505992, + -34.6536174 + ], + [ + -58.6505992, + -34.6548127 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-29T13:34:05Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0.00000479602171999717, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 6, + "create": 1, + "imagery": "EsriWorldImageryClarity", + "language": "es" + } + } + }, + { + "id": 113125083, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2158276, + 51.2131309 + ], + [ + 3.2163805, + 51.2131309 + ], + [ + 3.2163805, + 51.2132829 + ], + [ + 3.2158276, + 51.2132829 + ], + [ + 3.2158276, + 51.2131309 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.0-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-29T13:28:30Z", + "reviewed_features": [], + "create": 16, + "modify": 0, + "delete": 0, + "area": 8.40407999999901e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "grb", + "import": 3, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113120672, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 13.0475642, + 52.3835208 + ], + [ + 13.0945203, + 52.3835208 + ], + [ + 13.0945203, + 52.39681 + ], + [ + 13.0475642, + 52.39681 + ], + [ + 13.0475642, + 52.3835208 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "hfs", + "uid": "9607", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #bookcases", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-29T11:38:22Z", + "reviewed_features": [], + "create": 0, + "modify": 15, + "delete": 0, + "area": 0.000624009004120114, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "bookcases", + "answer": 16, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113120671, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 13.0475642, + 52.3835208 + ], + [ + 13.0475642, + 52.3835208 + ], + [ + 13.0475642, + 52.3835208 + ], + [ + 13.0475642, + 52.3835208 + ], + [ + 13.0475642, + 52.3835208 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "hfs", + "uid": "9607", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #bookcases", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-29T11:38:22Z", + "reviewed_features": [], + "create": 1, + "modify": 0, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "bookcases", + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113116149, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 13.7228588, + 51.0560322 + ], + [ + 13.7228588, + 51.0560322 + ], + [ + 13.7228588, + 51.0560322 + ], + [ + 13.7228588, + 51.0560322 + ], + [ + 13.7228588, + 51.0560322 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "brust84", + "uid": "1225756", + "editor": "MapComplete 0.12.0-beta", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-29T09:56:35Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "cyclofix", + "answer": 2, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113108382, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6407026, + 48.7462049 + ], + [ + 10.9539847, + 48.7462049 + ], + [ + 10.9539847, + 48.8161167 + ], + [ + 10.6407026, + 48.8161167 + ], + [ + 10.6407026, + 48.7462049 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-29T06:31:05Z", + "reviewed_features": [], + "create": 0, + "modify": 77, + "delete": 0, + "area": 0.02190211551878, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 124, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113092656, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.8957393, + 48.7454436 + ], + [ + 10.9028802, + 48.7454436 + ], + [ + 10.9028802, + 48.7496609 + ], + [ + 10.8957393, + 48.7496609 + ], + [ + 10.8957393, + 48.7454436 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-28T17:53:51Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0.000030115317570002, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 5, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113088240, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.9093188, + 48.7382601 + ], + [ + 10.9765043, + 48.7382601 + ], + [ + 10.9765043, + 48.7533429 + ], + [ + 10.9093188, + 48.7533429 + ], + [ + 10.9093188, + 48.7382601 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-28T15:44:19Z", + "reviewed_features": [], + "create": 0, + "modify": 16, + "delete": 0, + "area": 0.00101334545940014, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 24, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113082716, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.7642102, + -34.657644 + ], + [ + -58.6464098, + -34.657644 + ], + [ + -58.6464098, + -34.6536122 + ], + [ + -58.7642102, + -34.6536122 + ], + [ + -58.7642102, + -34.657644 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-28T13:17:57Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0.000474947652719991, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 4, + "create": 1, + "imagery": "osm", + "language": "es" + } + } + }, + { + "id": 113082381, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2165198, + 51.1951634 + ], + [ + 3.2165198, + 51.1951634 + ], + [ + 3.2165198, + 51.1951634 + ], + [ + 3.2165198, + 51.1951634 + ], + [ + 3.2165198, + 51.1951634 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #personal", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-28T13:07:42Z", + "reviewed_features": [], + "create": 1, + "modify": 0, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "personal", + "answer": 1, + "create": 1, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113082319, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2167532, + 51.1952601 + ], + [ + 3.2167532, + 51.1952601 + ], + [ + 3.2167532, + 51.1952601 + ], + [ + 3.2167532, + 51.1952601 + ], + [ + 3.2167532, + 51.1952601 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #charging_stations", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-28T13:05:25Z", + "reviewed_features": [], + "create": 1, + "modify": 4, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "charging_stations", + "answer": 7, + "create": 1, + "imagery": "osm", + "language": "nl", + "add-image": 1, + "move:node/-1": "improve_accuracy" + } + } + }, + { + "id": 113082105, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2051478, + 51.1908592 + ], + [ + 3.2097987, + 51.1908592 + ], + [ + 3.2097987, + 51.1946604 + ], + [ + 3.2051478, + 51.1946604 + ], + [ + 3.2051478, + 51.1908592 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-28T12:59:33Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.0000176790010799898, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 2, + "imagery": "osm", + "language": "nl", + "add-image": 2 + } + } + }, + { + "id": 113077093, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.7169707, + 51.0405579 + ], + [ + 3.7246605, + 51.0405579 + ], + [ + 3.7246605, + 51.0589922 + ], + [ + 3.7169707, + 51.0589922 + ], + [ + 3.7169707, + 51.0405579 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #food", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-28T10:56:10Z", + "reviewed_features": [], + "create": 0, + "modify": 8, + "delete": 0, + "area": 0.000141756080139967, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "food", + "answer": 13, + "imagery": "osm", + "language": "en", + "move:node/4227045139": "improve_accuracy" + } + } + }, + { + "id": 113059829, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -80.4202249, + 37.2173421 + ], + [ + -80.41916, + 37.2173421 + ], + [ + -80.41916, + 37.2226129 + ], + [ + -80.4202249, + 37.2226129 + ], + [ + -80.4202249, + 37.2173421 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "CuzRocks2Heavy", + "uid": "14297970", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-28T01:01:27Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0.00000561287491993851, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "etymology", + "answer": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113059588, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.7619062, + -34.658618 + ], + [ + -58.7617117, + -34.658618 + ], + [ + -58.7617117, + -34.6585706 + ], + [ + -58.7619062, + -34.6585706 + ], + [ + -58.7619062, + -34.658618 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-28T00:36:01Z", + "reviewed_features": [], + "create": 2, + "modify": 0, + "delete": 0, + "area": 9.21929999990372e-9, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 2, + "create": 2, + "imagery": "osm", + "language": "es" + } + } + }, + { + "id": 113058608, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2144808, + 51.2119677 + ], + [ + 3.2209435, + 51.2119677 + ], + [ + 3.2209435, + 51.2199112 + ], + [ + 3.2144808, + 51.2199112 + ], + [ + 3.2144808, + 51.2119677 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.0-beta", + "comment": "Adding data with #MapComplete for theme #sidewalks", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-27T23:19:37Z", + "reviewed_features": [], + "create": 0, + "modify": 6, + "delete": 0, + "area": 0.0000513364574499761, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "sidewalks", + "answer": 7, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113051034, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.9484684, + 48.2694872 + ], + [ + 11.8058149, + 48.2694872 + ], + [ + 11.8058149, + 48.7835411 + ], + [ + 10.9484684, + 48.7835411 + ], + [ + 10.9484684, + 48.2694872 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-27T18:35:39Z", + "reviewed_features": [], + "create": 0, + "modify": 22, + "delete": 0, + "area": 0.44072231197635, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 35, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113050669, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.4836779, + 51.1044175 + ], + [ + 3.4836779, + 51.1044175 + ], + [ + 3.4836779, + 51.1044175 + ], + [ + 3.4836779, + 51.1044175 + ], + [ + 3.4836779, + 51.1044175 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "s8evq", + "uid": "3710738", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/seppesantens/MapComplete-Themes/main/VerkeerdeBordenDatabank/VerkeerdeBordenDatabank.json", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-27T18:22:31Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/seppesantens/MapComplete-Themes/main/VerkeerdeBordenDatabank/VerkeerdeBordenDatabank.json", + "answer": 1, + "imagery": "Stamen.TonerLite", + "language": "en" + } + } + }, + { + "id": 113044898, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.5990696, + 46.6687776 + ], + [ + 11.5990776, + 46.6687776 + ], + [ + 11.5990776, + 46.6687901 + ], + [ + 11.5990696, + 46.6687901 + ], + [ + 11.5990696, + 46.6687776 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Pablo667", + "uid": "13166651", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-27T16:06:49Z", + "reviewed_features": [], + "create": 1, + "modify": 3, + "delete": 0, + "area": 1.00000000023515e-10, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "toilets", + "answer": 4, + "create": 1, + "imagery": "osm", + "language": "en", + "move:node/9205242210": "improve_accuracy" + } + } + }, + { + "id": 113038656, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 35.9156074, + 31.9560911 + ], + [ + 35.922555, + 31.9560911 + ], + [ + 35.922555, + 31.9577128 + ], + [ + 35.9156074, + 31.9577128 + ], + [ + 35.9156074, + 31.9560911 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Alan Orth", + "uid": "10607774", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-27T13:38:04Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0.0000112669229200142, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 8, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113037755, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.5251221, + -34.6388335 + ], + [ + -58.4099628, + -34.6388335 + ], + [ + -58.4099628, + -34.6087172 + ], + [ + -58.5251221, + -34.6087172 + ], + [ + -58.5251221, + -34.6388335 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-27T13:16:26Z", + "reviewed_features": [], + "create": 6, + "modify": 9, + "delete": 0, + "area": 0.00346817202658938, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 28, + "create": 6, + "imagery": "EsriWorldImageryClarity", + "language": "es" + } + } + }, + { + "id": 113034431, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.090876, + 52.5058044 + ], + [ + 6.090876, + 52.5058044 + ], + [ + 6.090876, + 52.5058044 + ], + [ + 6.090876, + 52.5058044 + ], + [ + 6.090876, + 52.5058044 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #drinking_water", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-27T11:46:19Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "drinking_water", + "answer": 1, + "imagery": "CartoDB.Voyager", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113030047, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.544858, + 52.2558548 + ], + [ + 10.544858, + 52.2558548 + ], + [ + 10.544858, + 52.2558548 + ], + [ + 10.544858, + 52.2558548 + ], + [ + 10.544858, + 52.2558548 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Willhelm_Mueller", + "uid": "308224", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #bookcases", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-27T10:15:34Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "bookcases", + "answer": 3, + "create": 1, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113028520, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 5.9171064, + 52.5588591 + ], + [ + 5.9171064, + 52.5588591 + ], + [ + 5.9171064, + 52.5588591 + ], + [ + 5.9171064, + 52.5588591 + ], + [ + 5.9171064, + 52.5588591 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #drinking_water", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-27T09:42:23Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "drinking_water", + "answer": 1, + "imagery": "CartoDB.Voyager", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113024531, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 5.9216479, + 52.5599441 + ], + [ + 5.9216479, + 52.5599441 + ], + [ + 5.9216479, + 52.5599441 + ], + [ + 5.9216479, + 52.5599441 + ], + [ + 5.9216479, + 52.5599441 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #drinking_water", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-27T08:00:45Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "drinking_water", + "answer": 1, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113019941, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -99.3152435, + 38.870964 + ], + [ + -99.3099275, + 38.870964 + ], + [ + -99.3099275, + 38.882604 + ], + [ + -99.3152435, + 38.882604 + ], + [ + -99.3152435, + 38.870964 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "s_SoNick", + "uid": "8082926", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-27T06:03:22Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0.0000618782399999229, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 12, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113010848, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5712079, + 53.0125167 + ], + [ + 6.5962516, + 53.0125167 + ], + [ + 6.5962516, + 53.0317972 + ], + [ + 6.5712079, + 53.0317972 + ], + [ + 6.5712079, + 53.0125167 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-26T20:58:46Z", + "reviewed_features": [], + "create": 0, + "modify": 12, + "delete": 0, + "area": 0.000482855057850024, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 23, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113008229, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -9.1353143, + 53.2613781 + ], + [ + -9.0778064, + 53.2613781 + ], + [ + -9.0778064, + 53.2765148 + ], + [ + -9.1353143, + 53.2765148 + ], + [ + -9.1353143, + 53.2613781 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Cmap99", + "uid": "13524250", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #sport_pitches", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-26T19:41:15Z", + "reviewed_features": [], + "create": 0, + "modify": 25, + "delete": 0, + "area": 0.000870479829929949, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "sport_pitches", + "answer": 36, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113005319, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.3665548, + 50.8442926 + ], + [ + 4.3665548, + 50.8442926 + ], + [ + 4.3665548, + 50.8442926 + ], + [ + 4.3665548, + 50.8442926 + ], + [ + 4.3665548, + 50.8442926 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "joost schouppe", + "uid": "67832", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #charging_stations", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-26T17:57:48Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "charging_stations", + "answer": 1, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113001200, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.5689426, + 46.6417558 + ], + [ + 11.5689426, + 46.6417558 + ], + [ + 11.5689426, + 46.6417558 + ], + [ + 11.5689426, + 46.6417558 + ], + [ + 11.5689426, + 46.6417558 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Pablo667", + "uid": "13166651", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-26T16:04:09Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "toilets", + "answer": 2, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 112999964, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -93.2370498, + 44.9152733 + ], + [ + -93.2134446, + 44.9152733 + ], + [ + -93.2134446, + 44.9465752 + ], + [ + -93.2370498, + 44.9465752 + ], + [ + -93.2370498, + 44.9152733 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "SpeedMcCool", + "uid": "2260722", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-26T15:34:08Z", + "reviewed_features": [], + "create": 0, + "modify": 8, + "delete": 0, + "area": 0.000738887609879628, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 12, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 112999873, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.3349443, + 50.8784486 + ], + [ + 4.3358089, + 50.8784486 + ], + [ + 4.3358089, + 50.8785855 + ], + [ + 4.3349443, + 50.8785855 + ], + [ + 4.3349443, + 50.8784486 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-26T15:31:35Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 1.1836374000094e-7, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "imagery": "osm", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 112993571, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.6497979, + -34.6545584 + ], + [ + -58.6477319, + -34.6545584 + ], + [ + -58.6477319, + -34.6538188 + ], + [ + -58.6497979, + -34.6538188 + ], + [ + -58.6497979, + -34.6545584 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-10-26T13:05:41Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.00000152801359999587, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 3, + "imagery": "osm", + "language": "es" + } + } + }, + { + "id": 112993400, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.9755905, + 51.3370068 + ], + [ + 4.9755905, + 51.3370068 + ], + [ + 4.9755905, + 51.3370068 + ], + [ + 4.9755905, + 51.3370068 + ], + [ + 4.9755905, + 51.3370068 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Stinus_Clasius", + "uid": "1086503", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-26T13:00:55Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "aed", + "answer": 5, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 112986442, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.0567635, + 49.6987406 + ], + [ + 11.0688524, + 49.6987406 + ], + [ + 11.0688524, + 49.7189375 + ], + [ + 11.0567635, + 49.7189375 + ], + [ + 11.0567635, + 49.6987406 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "pbnoxious", + "uid": "356987", + "editor": "MapComplete 0.11.2", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-10-26T10:19:36Z", + "reviewed_features": [], + "create": 0, + "modify": 98, + "delete": 0, + "area": 0.000244158304410027, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 154, + "imagery": "osm", + "language": "en" + } + } + }, { "id": 112977842, "type": "Feature", diff --git a/Docs/Tools/stats/stats.2021-11.json b/Docs/Tools/stats/stats.2021-11.json new file mode 100644 index 000000000..c9c20a8a1 --- /dev/null +++ b/Docs/Tools/stats/stats.2021-11.json @@ -0,0 +1,7103 @@ +{ + "features": [ + { + "id": 113491702, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5463604, + 53.0115865 + ], + [ + 6.5463604, + 53.0115865 + ], + [ + 6.5463604, + 53.0115865 + ], + [ + 6.5463604, + 53.0115865 + ], + [ + 6.5463604, + 53.0115865 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.12.1", + "comment": "Adding data with #MapComplete for theme #cycle_infra", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T18:29:20Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cycle_infra", + "answer": 2, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113491295, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5481828, + 53.0129515 + ], + [ + 6.5481828, + 53.0129515 + ], + [ + 6.5481828, + 53.0129515 + ], + [ + 6.5481828, + 53.0129515 + ], + [ + 6.5481828, + 53.0129515 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.12.1", + "comment": "Adding data with #MapComplete for theme #street_lighting_assen", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T18:16:06Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "street_lighting_assen", + "answer": 8, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113491238, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5486318, + 53.0134666 + ], + [ + 6.5486318, + 53.0134666 + ], + [ + 6.5486318, + 53.0134666 + ], + [ + 6.5486318, + 53.0134666 + ], + [ + 6.5486318, + 53.0134666 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.12.1", + "comment": "Adding data with #MapComplete for theme #street_lighting", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T18:14:19Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "street_lighting", + "answer": 8, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113489356, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.3435891, + 50.8314757 + ], + [ + 4.3435891, + 50.8314757 + ], + [ + 4.3435891, + 50.8314757 + ], + [ + 4.3435891, + 50.8314757 + ], + [ + 4.3435891, + 50.8314757 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1", + "comment": "Adding data with #MapComplete for theme #ghostbikes", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-07T17:18:25Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "ghostbikes", + "answer": 2, + "imagery": "CartoDB.Positron", + "language": "nl" + } + } + }, + { + "id": 113489134, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.7124507, + 50.8657342 + ], + [ + 3.7124507, + 50.8657342 + ], + [ + 3.7124507, + 50.8657342 + ], + [ + 3.7124507, + 50.8657342 + ], + [ + 3.7124507, + 50.8657342 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.12.0", + "comment": "Adding data with #MapComplete for theme #artwork", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T17:13:14Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "artwork", + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113488340, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.0", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-07T16:51:22Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "toilets", + "answer": 2, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113481936, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5628899, + 53.0090367 + ], + [ + 6.590133, + 53.0090367 + ], + [ + 6.590133, + 53.0243704 + ], + [ + 6.5628899, + 53.0243704 + ], + [ + 6.5628899, + 53.0090367 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #postboxes", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T14:14:41Z", + "reviewed_features": [], + "create": 0, + "modify": 13, + "delete": 0, + "area": 0.000417737522469978, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/post-partner/", + "theme": "postboxes", + "answer": 19, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113480631, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5695252, + 53.017952 + ], + [ + 6.5695252, + 53.017952 + ], + [ + 6.5695252, + 53.017952 + ], + [ + 6.5695252, + 53.017952 + ], + [ + 6.5695252, + 53.017952 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #cycle_infra", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T13:43:15Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "cycle_infra", + "answer": 1, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113480016, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -0.0323045, + 49.0182418 + ], + [ + -0.0322911, + 49.0182418 + ], + [ + -0.0322911, + 49.0182676 + ], + [ + -0.0323045, + 49.0182676 + ], + [ + -0.0323045, + 49.0182418 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "gtaro", + "uid": "2973154", + "editor": "MapComplete 0.11.4", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-07T13:26:24Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 3.45720000041099e-10, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "toilets", + "answer": 5, + "create": 1, + "imagery": "osm", + "language": "fr", + "move:node/9233019525": "improve_accuracy" + } + } + }, + { + "id": 113477074, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.717778, + 44.3513939 + ], + [ + 11.7177824, + 44.3513939 + ], + [ + 11.7177824, + 44.3518562 + ], + [ + 11.717778, + 44.3518562 + ], + [ + 11.717778, + 44.3513939 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Danysan95", + "uid": "4425563", + "editor": "MapComplete 0.11.4", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T12:05:01Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 2.03412000078743e-9, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113472305, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.2334872, + 50.7377122 + ], + [ + 4.2334872, + 50.7377122 + ], + [ + 4.2334872, + 50.7377122 + ], + [ + 4.2334872, + 50.7377122 + ], + [ + 4.2334872, + 50.7377122 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "joost schouppe", + "uid": "67832", + "editor": "MapComplete 0.11.4", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T09:43:02Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 6, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113465263, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.20747, + 51.2193065 + ], + [ + 3.2093845, + 51.2193065 + ], + [ + 3.2093845, + 51.2208645 + ], + [ + 3.20747, + 51.2208645 + ], + [ + 3.20747, + 51.2193065 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-07T01:09:51Z", + "reviewed_features": [], + "create": 0, + "modify": 14, + "delete": 0, + "area": 0.00000298279099999223, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 24, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113463623, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.3507974, + 46.4987505 + ], + [ + 11.3569209, + 46.4987505 + ], + [ + 11.3569209, + 46.4997625 + ], + [ + 11.3507974, + 46.4997625 + ], + [ + 11.3507974, + 46.4987505 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "MaximusIT", + "uid": "132225", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #surveillance", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-06T22:49:13Z", + "reviewed_features": [], + "create": 8, + "modify": 29, + "delete": 0, + "area": 0.00000619698200001883, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "surveillance", + "answer": 42, + "create": 8, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113463553, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 8.9920731, + 48.4988367 + ], + [ + 8.9924969, + 48.4988367 + ], + [ + 8.9924969, + 48.4988847 + ], + [ + 8.9920731, + 48.4988847 + ], + [ + 8.9920731, + 48.4988367 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Ygramul", + "uid": "1230818", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #trees", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-06T22:46:24Z", + "reviewed_features": [], + "create": 0, + "modify": 3, + "delete": 0, + "area": 2.03423999998362e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "trees", + "answer": 6, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113463449, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 8.9908201, + 48.4997284 + ], + [ + 9.0012241, + 48.4997284 + ], + [ + 9.0012241, + 48.503771 + ], + [ + 8.9908201, + 48.503771 + ], + [ + 8.9908201, + 48.4997284 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Ygramul", + "uid": "1230818", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-06T22:39:48Z", + "reviewed_features": [], + "create": 0, + "modify": 5, + "delete": 0, + "area": 0.0000420592103999792, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 5, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113450975, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.5389581, + 51.2419872 + ], + [ + 4.5389581, + 51.2419872 + ], + [ + 4.5389581, + 51.2419872 + ], + [ + 4.5389581, + 51.2419872 + ], + [ + 4.5389581, + 51.2419872 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "pi11", + "uid": "12066190", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #surveillance", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-06T15:29:08Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "surveillance", + "answer": 1, + "create": 1, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113450551, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.6865183, + 42.1972861 + ], + [ + 2.7431912, + 42.1972861 + ], + [ + 2.7431912, + 42.2230003 + ], + [ + 2.6865183, + 42.2230003 + ], + [ + 2.6865183, + 42.1972861 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "quelgir", + "uid": "13293058", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-06T15:17:55Z", + "reviewed_features": [], + "create": 0, + "modify": 13, + "delete": 0, + "area": 0.00145729828518017, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 14, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113448373, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5614855, + 53.0029268 + ], + [ + 6.5614855, + 53.0029268 + ], + [ + 6.5614855, + 53.0029268 + ], + [ + 6.5614855, + 53.0029268 + ], + [ + 6.5614855, + 53.0029268 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #charging_stations", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-06T14:30:32Z", + "reviewed_features": [], + "create": 1, + "modify": 8, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "charging_stations", + "answer": 11, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113444561, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6692221, + 44.7605103 + ], + [ + 10.6741377, + 44.7605103 + ], + [ + 10.6741377, + 44.7689517 + ], + [ + 10.6692221, + 44.7689517 + ], + [ + 10.6692221, + 44.7605103 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "NonnEmilia", + "uid": "683102", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-06T12:46:37Z", + "reviewed_features": [], + "create": 0, + "modify": 6, + "delete": 0, + "area": 0.0000414945458399997, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 9, + "imagery": "osm", + "language": "it" + } + } + }, + { + "id": 113442152, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 12.9679002, + 55.5981608 + ], + [ + 12.9967072, + 55.5981608 + ], + [ + 12.9967072, + 55.6145033 + ], + [ + 12.9679002, + 55.6145033 + ], + [ + 12.9679002, + 55.5981608 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Cerritus", + "uid": "12919", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-06T11:27:52Z", + "reviewed_features": [], + "create": 0, + "modify": 16, + "delete": 0, + "area": 0.000470778397499989, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 19, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113438716, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 12.9896861, + 55.6099415 + ], + [ + 12.9949835, + 55.6099415 + ], + [ + 12.9949835, + 55.6123863 + ], + [ + 12.9896861, + 55.6123863 + ], + [ + 12.9896861, + 55.6099415 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Cerritus", + "uid": "12919", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-06T09:37:57Z", + "reviewed_features": [], + "create": 2, + "modify": 1, + "delete": 0, + "area": 0.0000129510835199958, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 3, + "create": 2, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113438500, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 14.2377422, + 40.9166827 + ], + [ + 14.2802702, + 40.9166827 + ], + [ + 14.2802702, + 40.9460374 + ], + [ + 14.2377422, + 40.9460374 + ], + [ + 14.2377422, + 40.9166827 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Acheloo", + "uid": "11366923", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-06T09:30:58Z", + "reviewed_features": [], + "create": 0, + "modify": 83, + "delete": 0, + "area": 0.00124839668159998, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 121, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113429453, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.7280077, + 51.0445407 + ], + [ + 3.7280077, + 51.0445407 + ], + [ + 3.7280077, + 51.0445407 + ], + [ + 3.7280077, + 51.0445407 + ], + [ + 3.7280077, + 51.0445407 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #drinking_water", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T22:34:25Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "drinking_water", + "answer": 1, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113428932, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6368818, + 44.7198549 + ], + [ + 10.6473911, + 44.7198549 + ], + [ + 10.6473911, + 44.7202458 + ], + [ + 10.6368818, + 44.7202458 + ], + [ + 10.6368818, + 44.7198549 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "NonnEmilia", + "uid": "683102", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #food", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T22:10:53Z", + "reviewed_features": [], + "create": 0, + "modify": 5, + "delete": 0, + "area": 0.00000410808536999299, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "food", + "answer": 12, + "imagery": "osm", + "language": "it" + } + } + }, + { + "id": 113428858, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6368944, + 44.7155991 + ], + [ + 10.6436293, + 44.7155991 + ], + [ + 10.6436293, + 44.7171254 + ], + [ + 10.6368944, + 44.7171254 + ], + [ + 10.6368944, + 44.7155991 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "NonnEmilia", + "uid": "683102", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cafes_and_pubs", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T22:07:54Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.0000102794778700148, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cafes_and_pubs", + "answer": 5, + "imagery": "osm", + "language": "it" + } + } + }, + { + "id": 113428835, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6509034, + 44.7140631 + ], + [ + 10.6510766, + 44.7140631 + ], + [ + 10.6510766, + 44.7141882 + ], + [ + 10.6509034, + 44.7141882 + ], + [ + 10.6509034, + 44.7140631 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "NonnEmilia", + "uid": "683102", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T22:06:06Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 2.16673200007942e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "toilets", + "answer": 4, + "imagery": "osm", + "language": "it" + } + } + }, + { + "id": 113428798, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.3495687, + 46.4970481 + ], + [ + 11.3576022, + 46.4970481 + ], + [ + 11.3576022, + 46.5002866 + ], + [ + 11.3495687, + 46.5002866 + ], + [ + 11.3495687, + 46.4970481 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "MaximusIT", + "uid": "132225", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #surveillance", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T22:04:13Z", + "reviewed_features": [], + "create": 6, + "modify": 15, + "delete": 0, + "area": 0.0000260164897500148, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "surveillance", + "answer": 33, + "create": 6, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113428563, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 12.9746711, + 55.5979214 + ], + [ + 12.9756195, + 55.5979214 + ], + [ + 12.9756195, + 55.597995 + ], + [ + 12.9746711, + 55.597995 + ], + [ + 12.9746711, + 55.5979214 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Cerritus", + "uid": "12919", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #shops", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T21:52:59Z", + "reviewed_features": [], + "create": 0, + "modify": 8, + "delete": 0, + "area": 6.98022400003523e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "shops", + "answer": 8, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113428090, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6665392, + 44.7445564 + ], + [ + 10.6911694, + 44.7445564 + ], + [ + 10.6911694, + 44.7640471 + ], + [ + 10.6665392, + 44.7640471 + ], + [ + 10.6665392, + 44.7445564 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "NonnEmilia", + "uid": "683102", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T21:35:55Z", + "reviewed_features": [], + "create": 0, + "modify": 22, + "delete": 0, + "area": 0.000480059839139946, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 28, + "imagery": "osm", + "language": "it" + } + } + }, + { + "id": 113426608, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.3487564, + 46.5002575 + ], + [ + 11.3492527, + 46.5002575 + ], + [ + 11.3492527, + 46.5003478 + ], + [ + 11.3487564, + 46.5003478 + ], + [ + 11.3487564, + 46.5002575 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "MaximusIT", + "uid": "132225", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #surveillance", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T20:45:16Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 4.48158900018126e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "surveillance", + "answer": 4, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113421595, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 12.9669906, + 55.5962 + ], + [ + 12.9957467, + 55.5962 + ], + [ + 12.9957467, + 55.6126643 + ], + [ + 12.9669906, + 55.6126643 + ], + [ + 12.9669906, + 55.5962 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Cerritus", + "uid": "12919", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T18:24:33Z", + "reviewed_features": [], + "create": 0, + "modify": 21, + "delete": 0, + "area": 0.000473449057229855, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 24, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113418491, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 12.9677728, + 55.5984981 + ], + [ + 12.9741669, + 55.5984981 + ], + [ + 12.9741669, + 55.6032872 + ], + [ + 12.9677728, + 55.6032872 + ], + [ + 12.9677728, + 55.5984981 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Cerritus", + "uid": "12919", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T17:00:19Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0.0000306219843099754, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 5, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113413987, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 88.3509729, + 22.5620033 + ], + [ + 88.3571625, + 22.5620033 + ], + [ + 88.3571625, + 22.5855414 + ], + [ + 88.3509729, + 22.5855414 + ], + [ + 88.3509729, + 22.5620033 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Bodhisattwa", + "uid": "2876061", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T15:22:34Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.000145691423759975, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 2, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113412065, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5494963, + 53.0001853 + ], + [ + 6.5494963, + 53.0001853 + ], + [ + 6.5494963, + 53.0001853 + ], + [ + 6.5494963, + 53.0001853 + ], + [ + 6.5494963, + 53.0001853 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #street_lighting", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T14:30:32Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "street_lighting", + "answer": 7, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113411796, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4299429, + 46.9471541 + ], + [ + 7.4392904, + 46.9471541 + ], + [ + 7.4392904, + 46.9512033 + ], + [ + 7.4299429, + 46.9512033 + ], + [ + 7.4299429, + 46.9471541 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T14:22:58Z", + "reviewed_features": [], + "create": 4, + "modify": 3, + "delete": 0, + "area": 0.0000378498970000387, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 14, + "create": 4, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113410685, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 13.0497048, + 52.3891526 + ], + [ + 13.0805059, + 52.3891526 + ], + [ + 13.0805059, + 52.402249 + ], + [ + 13.0497048, + 52.402249 + ], + [ + 13.0497048, + 52.3891526 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "hfs", + "uid": "9607", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T13:55:26Z", + "reviewed_features": [], + "create": 0, + "modify": 68, + "delete": 0, + "area": 0.000403383526039839, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 115, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113410204, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.597413, + -34.6450639 + ], + [ + -58.5969946, + -34.6450639 + ], + [ + -58.5969946, + -34.6450606 + ], + [ + -58.597413, + -34.6450606 + ], + [ + -58.597413, + -34.6450639 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T13:44:53Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 1.38071999830083e-9, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 2, + "imagery": "osm", + "language": "es" + } + } + }, + { + "id": 113409895, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.9134751, + 51.2275968 + ], + [ + 2.9134751, + 51.2275968 + ], + [ + 2.9134751, + 51.2275968 + ], + [ + 2.9134751, + 51.2275968 + ], + [ + 2.9134751, + 51.2275968 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Tom Callens", + "uid": "14405801", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #benches", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T13:37:55Z", + "reviewed_features": [], + "create": 1, + "modify": 5, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "benches", + "answer": 6, + "create": 1, + "imagery": "osm", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113409798, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ], + [ + 4.1439541, + 51.1716062 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T13:35:20Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "toilets", + "answer": 6, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113409011, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5640763, + 53.0198777 + ], + [ + 6.5640763, + 53.0198777 + ], + [ + 6.5640763, + 53.0198777 + ], + [ + 6.5640763, + 53.0198777 + ], + [ + 6.5640763, + 53.0198777 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #test", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T13:15:53Z", + "reviewed_features": [], + "create": 1, + "modify": 3, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "test", + "answer": 1, + "create": 1, + "imagery": "osm", + "language": "en", + "add-image": 2 + } + } + }, + { + "id": 113407314, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4219758, + 46.9305649 + ], + [ + 7.4260552, + 46.9305649 + ], + [ + 7.4260552, + 46.9477524 + ], + [ + 7.4219758, + 46.9477524 + ], + [ + 7.4219758, + 46.9305649 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T12:31:10Z", + "reviewed_features": [], + "create": 1, + "modify": 5, + "delete": 0, + "area": 0.0000701146874999973, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "cyclofix", + "answer": 7, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "en", + "move:node/4568201391": "improve_accuracy" + } + } + }, + { + "id": 113405992, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8108884, + 41.9797913 + ], + [ + 2.8234898, + 41.9797913 + ], + [ + 2.8234898, + 41.9841272 + ], + [ + 2.8108884, + 41.9841272 + ], + [ + 2.8108884, + 41.9797913 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "quelgir", + "uid": "13293058", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T11:53:54Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0.0000546384102600114, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 6, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113404377, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 9.6381426, + 45.498189 + ], + [ + 9.6447824, + 45.498189 + ], + [ + 9.6447824, + 45.5074108 + ], + [ + 9.6381426, + 45.5074108 + ], + [ + 9.6381426, + 45.498189 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Mannivu", + "uid": "1950277", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T11:15:15Z", + "reviewed_features": [], + "create": 0, + "modify": 41, + "delete": 0, + "area": 0.0000612309076399951, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 64, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113404365, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.7391136, + 48.7976723 + ], + [ + 10.7630421, + 48.7976723 + ], + [ + 10.7630421, + 48.8240201 + ], + [ + 10.7391136, + 48.8240201 + ], + [ + 10.7391136, + 48.7976723 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T11:14:54Z", + "reviewed_features": [], + "create": 0, + "modify": 6, + "delete": 0, + "area": 0.00063046333229992, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 10, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113403407, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.9132451, + 51.2274674 + ], + [ + 2.9132451, + 51.2274674 + ], + [ + 2.9132451, + 51.2274674 + ], + [ + 2.9132451, + 51.2274674 + ], + [ + 2.9132451, + 51.2274674 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Tom Callens", + "uid": "14405801", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #benches", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T10:51:47Z", + "reviewed_features": [], + "create": 1, + "modify": 5, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "benches", + "answer": 5, + "create": 1, + "imagery": "osm", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113401156, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6284641, + 44.6969162 + ], + [ + 10.6489178, + 44.6969162 + ], + [ + 10.6489178, + 44.719423 + ], + [ + 10.6284641, + 44.719423 + ], + [ + 10.6284641, + 44.6969162 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "NonnEmilia", + "uid": "683102", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-05T09:58:57Z", + "reviewed_features": [], + "create": 0, + "modify": 81, + "delete": 0, + "area": 0.000460347335160025, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 131, + "imagery": "osm", + "language": "it" + } + } + }, + { + "id": 113400546, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 8.9319354, + 44.4054811 + ], + [ + 8.9399769, + 44.4054811 + ], + [ + 8.9399769, + 44.4083162 + ], + [ + 8.9319354, + 44.4083162 + ], + [ + 8.9319354, + 44.4054811 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "sabas88", + "uid": "454589", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T09:39:14Z", + "reviewed_features": [], + "create": 0, + "modify": 32, + "delete": 0, + "area": 0.0000227984566499867, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 46, + "imagery": "osm", + "language": "it" + } + } + }, + { + "id": 113399744, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2303788, + 51.2099501 + ], + [ + 3.2304331, + 51.2099501 + ], + [ + 3.2304331, + 51.2099693 + ], + [ + 3.2303788, + 51.2099693 + ], + [ + 3.2303788, + 51.2099501 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Maarten O", + "uid": "13326535", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 1, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T09:12:45Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 1.04255999983614e-9, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "aed", + "answer": 1, + "imagery": "osm", + "language": "nl", + "move:node/9223875638": "improve_accuracy" + } + } + }, + { + "id": 113397481, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.2245134, + 50.961555 + ], + [ + 4.2286112, + 50.961555 + ], + [ + 4.2286112, + 50.9640391 + ], + [ + 4.2245134, + 50.9640391 + ], + [ + 4.2245134, + 50.961555 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "kobevandeweerdt", + "uid": "14408432", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclestreets", + "comments_count": 3, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-05T08:06:00Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.0000101793449800139, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclestreets", + "answer": 2, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113386555, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4413531, + 46.9488652 + ], + [ + 7.4432454, + 46.9488652 + ], + [ + 7.4432454, + 46.949116 + ], + [ + 7.4413531, + 46.949116 + ], + [ + 7.4413531, + 46.9488652 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T21:19:11Z", + "reviewed_features": [], + "create": 4, + "modify": 5, + "delete": 0, + "area": 4.74588839993215e-7, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 15, + "create": 4, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113385218, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.2271092, + 41.4472158 + ], + [ + 2.2311097, + 41.4472158 + ], + [ + 2.2311097, + 41.4474897 + ], + [ + 2.2271092, + 41.4474897 + ], + [ + 2.2271092, + 41.4472158 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Maribelens", + "uid": "13480216", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #https://llefia.org/arbres/mapcomplete1.json", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T20:33:11Z", + "reviewed_features": [], + "create": 13, + "modify": 23, + "delete": 0, + "area": 0.00000109573694998512, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://llefia.org/arbres/mapcomplete1.json", + "answer": 40, + "create": 13, + "imagery": "HDM_HOT", + "language": "ca" + } + } + }, + { + "id": 113382487, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.3925035, + 51.2058146 + ], + [ + 4.3932845, + 51.2058146 + ], + [ + 4.3932845, + 51.2083369 + ], + [ + 4.3925035, + 51.2083369 + ], + [ + 4.3925035, + 51.2058146 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "matissevdberg", + "uid": "12928471", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #surveillance", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T19:22:17Z", + "reviewed_features": [], + "create": 2, + "modify": 6, + "delete": 0, + "area": 0.00000196991630000178, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "surveillance", + "answer": 9, + "create": 2, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113382251, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.5015844, + 48.7539323 + ], + [ + 10.5047665, + 48.7539323 + ], + [ + 10.5047665, + 48.7555277 + ], + [ + 10.5015844, + 48.7555277 + ], + [ + 10.5015844, + 48.7539323 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T19:15:47Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.00000507672233999808, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 3, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113376351, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.1339296, + 51.1800377 + ], + [ + 3.1367892, + 51.1800377 + ], + [ + 3.1367892, + 51.1837119 + ], + [ + 3.1339296, + 51.1837119 + ], + [ + 3.1339296, + 51.1800377 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T16:12:01Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.0000105067423199965, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 2, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113375792, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2031415, + 51.1837065 + ], + [ + 3.2068126, + 51.1837065 + ], + [ + 3.2068126, + 51.1857528 + ], + [ + 3.2031415, + 51.1857528 + ], + [ + 3.2031415, + 51.1837065 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T15:56:32Z", + "reviewed_features": [], + "create": 95, + "modify": 18, + "delete": 0, + "area": 0.00000751217193001292, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "move": 14, + "theme": "grb", + "import": 16, + "imagery": "AGIV10cm", + "language": "en", + "conflation": 2 + } + } + }, + { + "id": 113375786, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2053807, + 51.183576 + ], + [ + 3.2057722, + 51.183576 + ], + [ + 3.2057722, + 51.1841127 + ], + [ + 3.2053807, + 51.1841127 + ], + [ + 3.2053807, + 51.183576 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T15:56:22Z", + "reviewed_features": [], + "create": 9, + "modify": 0, + "delete": 0, + "area": 2.10118049999207e-7, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "grb", + "answer": 1, + "import": 1, + "imagery": "AGIV10cm", + "language": "en" + } + } + }, + { + "id": 113375744, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2033105, + 51.1834603 + ], + [ + 3.2050276, + 51.1834603 + ], + [ + 3.2050276, + 51.1841974 + ], + [ + 3.2033105, + 51.1841974 + ], + [ + 3.2033105, + 51.1834603 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T15:55:06Z", + "reviewed_features": [], + "create": 22, + "modify": 1, + "delete": 0, + "area": 0.00000126567441000353, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "grb", + "answer": 2, + "import": 4, + "imagery": "AGIV10cm", + "language": "en" + } + } + }, + { + "id": 113375602, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.4793327, + 48.7206269 + ], + [ + 10.4928985, + 48.7206269 + ], + [ + 10.4928985, + 48.7297374 + ], + [ + 10.4793327, + 48.7297374 + ], + [ + 10.4793327, + 48.7206269 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T15:51:05Z", + "reviewed_features": [], + "create": 0, + "modify": 12, + "delete": 0, + "area": 0.000123591220899982, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 22, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113375570, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2185596, + 51.2099383 + ], + [ + 3.230419, + 51.2099383 + ], + [ + 3.230419, + 51.2131485 + ], + [ + 3.2185596, + 51.2131485 + ], + [ + 3.2185596, + 51.2099383 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Maarten O", + "uid": "13326535", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T15:50:25Z", + "reviewed_features": [], + "create": 0, + "modify": 3, + "delete": 0, + "area": 0.0000380710458800614, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 2, + "theme": "aed", + "answer": 2, + "imagery": "osm", + "language": "nl", + "move:node/9223875638": "improve_accuracy" + } + } + }, + { + "id": 113374469, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2026258, + 51.1822476 + ], + [ + 3.2057241, + 51.1822476 + ], + [ + 3.2057241, + 51.1836308 + ], + [ + 3.2026258, + 51.1836308 + ], + [ + 3.2026258, + 51.1822476 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.2-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T15:21:59Z", + "reviewed_features": [], + "create": 229, + "modify": 22, + "delete": 0, + "area": 0.00000428556856002004, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "move": 16, + "theme": "grb", + "answer": 2, + "import": 18, + "imagery": "osm", + "language": "en", + "conflation": 4 + } + } + }, + { + "id": 113374140, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4332193, + 46.9457835 + ], + [ + 7.4768843, + 46.9457835 + ], + [ + 7.4768843, + 46.9747147 + ], + [ + 7.4332193, + 46.9747147 + ], + [ + 7.4332193, + 46.9457835 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T15:11:15Z", + "reviewed_features": [], + "create": 6, + "modify": 4, + "delete": 0, + "area": 0.0012632808480001, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "cyclofix", + "answer": 11, + "create": 6, + "imagery": "CartoDB.Voyager", + "language": "en", + "move:node/9223995072": "improve_accuracy" + } + } + }, + { + "id": 113374077, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2174894, + 51.2146756 + ], + [ + 3.218301, + 51.2146756 + ], + [ + 3.218301, + 51.214947 + ], + [ + 3.2174894, + 51.214947 + ], + [ + 3.2174894, + 51.2146756 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #sidewalks", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T15:09:04Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 2.20268240002105e-7, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "sidewalks", + "answer": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113373022, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2185596, + 51.2100038 + ], + [ + 3.230419, + 51.2100038 + ], + [ + 3.230419, + 51.2131485 + ], + [ + 3.2185596, + 51.2131485 + ], + [ + 3.2185596, + 51.2100038 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Maarten O", + "uid": "13326535", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed_brugge", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T14:41:06Z", + "reviewed_features": [], + "create": 2, + "modify": 9, + "delete": 0, + "area": 0.0000372942551800002, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "aed_brugge", + "answer": 14, + "create": 2, + "imagery": "HDM_HOT", + "language": "nl", + "add-image": 7, + "move:node/9223917538": "improve_accuracy" + } + } + }, + { + "id": 113368653, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.7642102, + -34.6640938 + ], + [ + -58.5324473, + -34.6640938 + ], + [ + -58.5324473, + -34.6392679 + ], + [ + -58.7642102, + -34.6392679 + ], + [ + -58.7642102, + -34.6640938 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T12:47:13Z", + "reviewed_features": [], + "create": 0, + "modify": 10, + "delete": 0, + "area": 0.00575372257911075, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 11, + "imagery": "osm", + "language": "es" + } + } + }, + { + "id": 113367547, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.8783306, + 50.7731883 + ], + [ + 4.2893237, + 50.7731883 + ], + [ + 4.2893237, + 50.789261 + ], + [ + 3.8783306, + 50.789261 + ], + [ + 3.8783306, + 50.7731883 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "joost schouppe", + "uid": "67832", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T12:18:50Z", + "reviewed_features": [], + "create": 2, + "modify": 1, + "delete": 0, + "area": 0.00660576879837093, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "grb", + "answer": 1, + "import": 2, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113364948, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.1797695, + 51.1910897 + ], + [ + 3.2177668, + 51.1910897 + ], + [ + 3.2177668, + 51.2013444 + ], + [ + 3.1797695, + 51.2013444 + ], + [ + 3.1797695, + 51.1910897 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Maarten O", + "uid": "13326535", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T11:00:44Z", + "reviewed_features": [], + "create": 0, + "modify": 4, + "delete": 0, + "area": 0.000389650912310169, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "aed", + "answer": 4, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113364737, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4177076, + 46.9393474 + ], + [ + 7.4177076, + 46.9393474 + ], + [ + 7.4177076, + 46.9393474 + ], + [ + 7.4177076, + 46.9393474 + ], + [ + 7.4177076, + 46.9393474 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T10:54:30Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 3, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113360279, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4281942, + 46.951999 + ], + [ + 7.429485, + 46.951999 + ], + [ + 7.429485, + 46.953228 + ], + [ + 7.4281942, + 46.953228 + ], + [ + 7.4281942, + 46.951999 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T08:23:47Z", + "reviewed_features": [], + "create": 0, + "modify": 6, + "delete": 0, + "area": 0.00000158639320000227, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 6, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113354339, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.0106851, + 51.005699 + ], + [ + 4.0106851, + 51.005699 + ], + [ + 4.0106851, + 51.005699 + ], + [ + 4.0106851, + 51.005699 + ], + [ + 4.0106851, + 51.005699 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Thierry1030", + "uid": "286563", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T01:41:04Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 4, + "create": 1, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113353891, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.216794, + 51.2144849 + ], + [ + 3.2174567, + 51.2144849 + ], + [ + 3.2174567, + 51.2146271 + ], + [ + 3.216794, + 51.2146271 + ], + [ + 3.216794, + 51.2144849 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-04T01:06:12Z", + "reviewed_features": [], + "create": 7, + "modify": 11, + "delete": 0, + "area": 9.42359399993855e-8, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "theme": "grb", + "import": 3, + "imagery": "AGIVFlandersGRB", + "language": "nl" + } + } + }, + { + "id": 113353572, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.3507453, + 50.8536834 + ], + [ + 4.3507453, + 50.8536834 + ], + [ + 4.3507453, + 50.8536834 + ], + [ + 4.3507453, + 50.8536834 + ], + [ + 4.3507453, + 50.8536834 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Thierry1030", + "uid": "286563", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-04T00:31:11Z", + "reviewed_features": [], + "create": 1, + "modify": 0, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "toilets", + "answer": 1, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113351309, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.3499349, + 50.8533748 + ], + [ + 4.3499349, + 50.8533748 + ], + [ + 4.3499349, + 50.8533748 + ], + [ + 4.3499349, + 50.8533748 + ], + [ + 4.3499349, + 50.8533748 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Thierry1030", + "uid": "286563", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T22:09:26Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 2, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113351051, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 10.6106046, + 48.8341666 + ], + [ + 10.6558367, + 48.8341666 + ], + [ + 10.6558367, + 48.848085 + ], + [ + 10.6106046, + 48.848085 + ], + [ + 10.6106046, + 48.8341666 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ladoga", + "uid": "827957", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T21:58:13Z", + "reviewed_features": [], + "create": 0, + "modify": 9, + "delete": 0, + "area": 0.000629558460639741, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 13, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113350305, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2192701, + 51.2156384 + ], + [ + 3.2197739, + 51.2156384 + ], + [ + 3.2197739, + 51.2164523 + ], + [ + 3.2192701, + 51.2164523 + ], + [ + 3.2192701, + 51.2156384 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T21:29:10Z", + "reviewed_features": [], + "create": 5, + "modify": 15, + "delete": 0, + "area": 4.10042819998336e-7, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "move": 13, + "theme": "grb", + "imagery": "AGIVFlandersGRB", + "language": "en", + "conflation": 4 + } + } + }, + { + "id": 113347810, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8604582, + 50.99566 + ], + [ + 2.8604582, + 50.99566 + ], + [ + 2.8604582, + 50.99566 + ], + [ + 2.8604582, + 50.99566 + ], + [ + 2.8604582, + 50.99566 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #charging_stations", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T20:06:21Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "charging_stations", + "imagery": "CartoDB.Voyager", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113347649, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.2855174, + 41.6075347 + ], + [ + 2.2941506, + 41.6075347 + ], + [ + 2.2941506, + 41.6133433 + ], + [ + 2.2855174, + 41.6133433 + ], + [ + 2.2855174, + 41.6075347 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Moisès", + "uid": "12884230", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T20:02:05Z", + "reviewed_features": [], + "create": 0, + "modify": 6, + "delete": 0, + "area": 0.0000501468055199548, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 3, + "imagery": "CartoDB.Voyager", + "language": "en", + "add-image": 3 + } + } + }, + { + "id": 113339240, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.1775754, + 51.1128633 + ], + [ + 4.1775754, + 51.1128633 + ], + [ + 4.1775754, + 51.1128633 + ], + [ + 4.1775754, + 51.1128633 + ], + [ + 4.1775754, + 51.1128633 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #shops", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T16:06:05Z", + "reviewed_features": [], + "create": 1, + "modify": 3, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "shops", + "answer": 3, + "create": 1, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113337126, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.5803687, + 53.2510803 + ], + [ + 6.5803687, + 53.2510803 + ], + [ + 6.5803687, + 53.2510803 + ], + [ + 6.5803687, + 53.2510803 + ], + [ + 6.5803687, + 53.2510803 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Robin van der Linde", + "uid": "5093765", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #charging_stations", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T15:11:05Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "charging_stations", + "answer": 2, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113337023, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2041788, + 51.182831 + ], + [ + 3.2041857, + 51.182831 + ], + [ + 3.2041857, + 51.1828523 + ], + [ + 3.2041788, + 51.1828523 + ], + [ + 3.2041788, + 51.182831 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Maarten O", + "uid": "13326535", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 6, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T15:08:35Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 1.46969999997495e-10, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "aed", + "imagery": "osm", + "language": "nl", + "move:node/8771441240": "improve_accuracy" + } + } + }, + { + "id": 113336834, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4316435, + 46.9458677 + ], + [ + 7.4469459, + 46.9458677 + ], + [ + 7.4469459, + 46.9607746 + ], + [ + 7.4316435, + 46.9607746 + ], + [ + 7.4316435, + 46.9458677 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T15:03:06Z", + "reviewed_features": [], + "create": 3, + "modify": 4, + "delete": 0, + "area": 0.000228111346560001, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "cyclofix", + "answer": 14, + "create": 3, + "imagery": "CartoDB.Voyager", + "language": "en", + "move:node/9221540197": "improve_accuracy" + } + } + }, + { + "id": 113335939, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.2393978, + 41.4393645 + ], + [ + 2.2401582, + 41.4393645 + ], + [ + 2.2401582, + 41.4397848 + ], + [ + 2.2393978, + 41.4397848 + ], + [ + 2.2393978, + 41.4393645 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "JBadalona", + "uid": "13507795", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #https://llefia.org/arbres/mapcomplete1.json", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T14:40:45Z", + "reviewed_features": [], + "create": 13, + "modify": 1, + "delete": 0, + "area": 3.19596119996116e-7, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://llefia.org/arbres/mapcomplete1.json", + "answer": 9, + "create": 13, + "imagery": "HDM_HOT", + "language": "ca" + } + } + }, + { + "id": 113334874, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.148393, + 51.1531118 + ], + [ + 4.148393, + 51.1531118 + ], + [ + 4.148393, + 51.1531118 + ], + [ + 4.148393, + 51.1531118 + ], + [ + 4.148393, + 51.1531118 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #shops", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T14:13:01Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "shops", + "answer": 2, + "create": 1, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113331345, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4453056, + 46.9609191 + ], + [ + 7.4520359, + 46.9609191 + ], + [ + 7.4520359, + 46.9650122 + ], + [ + 7.4453056, + 46.9650122 + ], + [ + 7.4453056, + 46.9609191 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T12:56:10Z", + "reviewed_features": [], + "create": 1, + "modify": 6, + "delete": 0, + "area": 0.0000275477909299911, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 14, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113329273, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.2254811, + 51.2084386 + ], + [ + 3.2254811, + 51.2084386 + ], + [ + 3.2254811, + 51.2084386 + ], + [ + 3.2254811, + 51.2084386 + ], + [ + 3.2254811, + 51.2084386 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Maarten O", + "uid": "13326535", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed_brugge", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T12:06:27Z", + "reviewed_features": [], + "create": 1, + "modify": 5, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "aed_brugge", + "answer": 7, + "create": 1, + "imagery": "HDM_HOT", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113329108, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.3413453, + 44.380366 + ], + [ + 11.3413453, + 44.380366 + ], + [ + 11.3413453, + 44.380366 + ], + [ + 11.3413453, + 44.380366 + ], + [ + 11.3413453, + 44.380366 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "WinstonSmith", + "uid": "36030", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-03T12:03:02Z", + "reviewed_features": [], + "create": 1, + "modify": 0, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 5, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113329026, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.6680694, + 52.103628 + ], + [ + 11.6761025, + 52.103628 + ], + [ + 11.6761025, + 52.1147279 + ], + [ + 11.6680694, + 52.1147279 + ], + [ + 11.6680694, + 52.103628 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ClickKlack", + "uid": "90262", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T12:01:13Z", + "reviewed_features": [], + "create": 0, + "modify": 38, + "delete": 0, + "area": 0.0000891666066899877, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 83, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113328646, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.6611054, + 52.1117208 + ], + [ + 11.6695121, + 52.1117208 + ], + [ + 11.6695121, + 52.1177406 + ], + [ + 11.6611054, + 52.1177406 + ], + [ + 11.6611054, + 52.1117208 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "ClickKlack", + "uid": "90262", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T11:52:01Z", + "reviewed_features": [], + "create": 0, + "modify": 10, + "delete": 0, + "area": 0.0000506066526599765, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 11, + "imagery": "osm", + "language": "de" + } + } + }, + { + "id": 113328015, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.1954819, + 51.2042282 + ], + [ + 3.2181358, + 51.2042282 + ], + [ + 3.2181358, + 51.256839 + ], + [ + 3.1954819, + 51.256839 + ], + [ + 3.1954819, + 51.2042282 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Maarten O", + "uid": "13326535", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-03T11:38:18Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.00119183980211994, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 2, + "theme": "aed", + "imagery": "osm", + "language": "nl", + "move:node/8789200971": "improve_accuracy", + "move:node/8823682990": "improve_accuracy" + } + } + }, + { + "id": 113305401, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.216693, + 51.2146968 + ], + [ + 3.217372, + 51.2146968 + ], + [ + 3.217372, + 51.2152696 + ], + [ + 3.216693, + 51.2152696 + ], + [ + 3.216693, + 51.2146968 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #grb", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-02T22:41:02Z", + "reviewed_features": [], + "create": 28, + "modify": 51, + "delete": 0, + "area": 3.88931200000511e-7, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "127.0.0.1:1234", + "move": 48, + "theme": "grb", + "import": 1, + "imagery": "AGIVFlandersGRB", + "language": "nl", + "conflation": 10 + } + } + }, + { + "id": 113302704, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.142372, + 48.6790244 + ], + [ + 2.3736781, + 48.6790244 + ], + [ + 2.3736781, + 48.8039911 + ], + [ + 2.142372, + 48.8039911 + ], + [ + 2.142372, + 48.6790244 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Sukkoria", + "uid": "3083013", + "editor": "MapComplete 0.2.2a", + "comment": "Adding data with #MapComplete for theme #climbing", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-02T21:04:36Z", + "reviewed_features": [], + "create": 0, + "modify": 30, + "delete": 0, + "area": 0.0289055600068687, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "theme": "climbing", + "language": "en", + "theme-creator": "Christian Neumann " + } + } + }, + { + "id": 113300229, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 9.956298, + 48.3955135 + ], + [ + 10.0077753, + 48.3955135 + ], + [ + 10.0077753, + 48.4246463 + ], + [ + 9.956298, + 48.4246463 + ], + [ + 9.956298, + 48.3955135 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "stk_ulm", + "uid": "43217", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-02T19:58:44Z", + "reviewed_features": [], + "create": 0, + "modify": 38, + "delete": 0, + "area": 0.00149967788543997, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 49, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113291887, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 12.1995771, + 44.419088 + ], + [ + 12.1995771, + 44.419088 + ], + [ + 12.1995771, + 44.419088 + ], + [ + 12.1995771, + 44.419088 + ], + [ + 12.1995771, + 44.419088 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 40, + "name": "New mapper" + } + ], + "tags": [], + "features": [], + "user": "Pablo667", + "uid": "13166651", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #toilets", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-02T16:02:36Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 0, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "toilets", + "answer": 4, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113284886, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4294065, + 46.9520501 + ], + [ + 7.4300408, + 46.9520501 + ], + [ + 7.4300408, + 46.9547718 + ], + [ + 7.4294065, + 46.9547718 + ], + [ + 7.4294065, + 46.9520501 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-02T13:31:34Z", + "reviewed_features": [], + "create": 2, + "modify": 12, + "delete": 0, + "area": 0.0000017263743100007, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "cyclofix", + "answer": 18, + "create": 2, + "imagery": "CartoDB.Voyager", + "language": "en", + "move:node/9218593524": "improve_accuracy" + } + } + }, + { + "id": 113284013, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 4.3023895, + 50.8330165 + ], + [ + 4.3032314, + 50.8330165 + ], + [ + 4.3032314, + 50.8348789 + ], + [ + 4.3023895, + 50.8348789 + ], + [ + 4.3023895, + 50.8330165 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #https://gist.githubusercontent.com/joostschouppe/e1190515ff5f8847beec6eb9a1b788bb/raw/aa9d3ed1959529eb3fbefe1857cc8616f53b7ccf/temp.json", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-02T13:13:48Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0.00000156795455999889, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "https://gist.githubusercontent.com/joostschouppe/e1190515ff5f8847beec6eb9a1b788bb/raw/aa9d3ed1959529eb3fbefe1857cc8616f53b7ccf/temp.json", + "answer": 1, + "imagery": "osm", + "language": "nl" + } + } + }, + { + "id": 113270690, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.4298432, + 46.947855 + ], + [ + 7.4375363, + 46.947855 + ], + [ + 7.4375363, + 46.9519138 + ], + [ + 7.4298432, + 46.9519138 + ], + [ + 7.4298432, + 46.947855 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "habi", + "uid": "15671", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-02T08:20:35Z", + "reviewed_features": [], + "create": 0, + "modify": 3, + "delete": 0, + "area": 0.0000312247542800216, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 5, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113259034, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8641211, + 51.0331532 + ], + [ + 2.8641211, + 51.0331532 + ], + [ + 2.8641211, + 51.0331532 + ], + [ + 2.8641211, + 51.0331532 + ], + [ + 2.8641211, + 51.0331532 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #artwork", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T23:30:58Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "artwork", + "imagery": "osm", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113259014, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.8595969, + 51.0339334 + ], + [ + 2.8595969, + 51.0339334 + ], + [ + 2.8595969, + 51.0339334 + ], + [ + 2.8595969, + 51.0339334 + ], + [ + 2.8595969, + 51.0339334 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "L'imaginaire", + "uid": "654234", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T23:29:50Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "imagery": "CartoDB.Voyager", + "language": "nl", + "add-image": 1 + } + } + }, + { + "id": 113255395, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -9.1048793, + 53.2627567 + ], + [ + -9.0978532, + 53.2627567 + ], + [ + -9.0978532, + 53.2710607 + ], + [ + -9.1048793, + 53.2710607 + ], + [ + -9.1048793, + 53.2627567 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Cmap99", + "uid": "13524250", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #shops", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T21:11:21Z", + "reviewed_features": [ + { + "id": "node-2105271928", + "user": "PieterVanderVennet" + } + ], + "create": 0, + "modify": 3, + "delete": 0, + "area": 0.0000583447344000255, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "shops", + "answer": 3, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113251293, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 30.6013954, + 50.4284077 + ], + [ + 30.6013954, + 50.4284077 + ], + [ + 30.6013954, + 50.4284077 + ], + [ + 30.6013954, + 50.4284077 + ], + [ + 30.6013954, + 50.4284077 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "skfd", + "uid": "205595", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cafes_and_pubs", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T19:18:10Z", + "reviewed_features": [], + "create": 0, + "modify": 0, + "delete": 1, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cafes_and_pubs", + "imagery": "osm", + "deletion": 1, + "language": "en", + "deletion:node/2442953886": "disused" + } + } + }, + { + "id": 113250793, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 30.5944068, + 50.4282522 + ], + [ + 30.6015029, + 50.4282522 + ], + [ + 30.6015029, + 50.4299298 + ], + [ + 30.5944068, + 50.4299298 + ], + [ + 30.5944068, + 50.4282522 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "skfd", + "uid": "205595", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T19:04:23Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.0000119044173599518, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 4, + "imagery": "CartoDB.Voyager", + "language": "en" + } + } + }, + { + "id": 113247252, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.615215, + 50.8515194 + ], + [ + 3.615215, + 50.8515194 + ], + [ + 3.615215, + 50.8515194 + ], + [ + 3.615215, + 50.8515194 + ], + [ + 3.615215, + 50.8515194 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "joost schouppe", + "uid": "67832", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-01T17:20:32Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "aed", + "answer": 4, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113246649, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 5.1863126, + 50.8154877 + ], + [ + 5.1863167, + 50.8154877 + ], + [ + 5.1863167, + 50.8155021 + ], + [ + 5.1863126, + 50.8155021 + ], + [ + 5.1863126, + 50.8154877 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #charging_stations", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T17:04:34Z", + "reviewed_features": [], + "create": 1, + "modify": 2, + "delete": 0, + "area": 5.90400000192051e-11, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "move": 1, + "path": "mc/develop/", + "theme": "charging_stations", + "answer": 6, + "create": 1, + "imagery": "CartoDB.Voyager", + "language": "nl", + "move:node/9216683715": "improve_accuracy" + } + } + }, + { + "id": 113242289, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 5.1853377, + 50.814548 + ], + [ + 5.1853377, + 50.814548 + ], + [ + 5.1853377, + 50.814548 + ], + [ + 5.1853377, + 50.814548 + ], + [ + 5.1853377, + 50.814548 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #shops", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-01T15:24:21Z", + "reviewed_features": [], + "create": 1, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "shops", + "answer": 3, + "create": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113241377, + "type": "Feature", + "geometry": null, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #personal", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T15:05:15Z", + "reviewed_features": [], + "create": 0, + "modify": 0, + "delete": 0, + "area": null, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "personal", + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113241348, + "type": "Feature", + "geometry": null, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #personal", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T15:04:55Z", + "reviewed_features": [], + "create": 0, + "modify": 0, + "delete": 0, + "area": null, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "move": 1, + "path": "mc/develop/", + "theme": "personal", + "imagery": "osm", + "language": "en", + "move:node/-2": "improve_accuracy" + } + } + }, + { + "id": 113241334, + "type": "Feature", + "geometry": null, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #personal", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T15:04:42Z", + "reviewed_features": [], + "create": 0, + "modify": 0, + "delete": 0, + "area": null, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "personal", + "answer": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113241037, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 5.186322, + 50.8154538 + ], + [ + 5.1863247, + 50.8154538 + ], + [ + 5.1863247, + 50.8154818 + ], + [ + 5.186322, + 50.8154818 + ], + [ + 5.186322, + 50.8154538 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Pieter Vander Vennet", + "uid": "3818858", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #personal", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-01T14:59:26Z", + "reviewed_features": [], + "create": 2, + "modify": 2, + "delete": 0, + "area": 7.5600000014029e-11, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "personal", + "answer": 7, + "create": 3, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113238301, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 9.9102199, + 53.5662632 + ], + [ + 9.9102199, + 53.5662632 + ], + [ + 9.9102199, + 53.5662632 + ], + [ + 9.9102199, + 53.5662632 + ], + [ + 9.9102199, + 53.5662632 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Nicolelaine", + "uid": "2997398", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #postboxes", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T14:02:53Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "postboxes", + "imagery": "CartoDB.Voyager", + "language": "en", + "add-image": 4 + } + } + }, + { + "id": 113237148, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 3.6454153, + 50.7714656 + ], + [ + 3.6454297, + 50.7714656 + ], + [ + 3.6454297, + 50.7714869 + ], + [ + 3.6454153, + 50.7714869 + ], + [ + 3.6454153, + 50.7714656 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "joost schouppe", + "uid": "67832", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #charging_stations", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-01T13:39:08Z", + "reviewed_features": [], + "create": 1, + "modify": 4, + "delete": 0, + "area": 3.06720000012044e-10, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "move": 1, + "theme": "charging_stations", + "answer": 8, + "create": 1, + "imagery": "AGIV10cm", + "language": "en", + "move:node/9216279358": "improve_accuracy" + } + } + }, + { + "id": 113236656, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -58.6818637, + -34.6633769 + ], + [ + -58.6526531, + -34.6633769 + ], + [ + -58.6526531, + -34.655291 + ], + [ + -58.6818637, + -34.655291 + ], + [ + -58.6818637, + -34.6633769 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "AgusQui", + "uid": "331218", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-01T13:27:59Z", + "reviewed_features": [], + "create": 0, + "modify": 2, + "delete": 0, + "area": 0.000236193990540127, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "https://raw.githubusercontent.com/AgusQui/MapCompleteRailway/main/Signals", + "answer": 2, + "imagery": "osm", + "language": "es" + } + } + }, + { + "id": 113234111, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2.0076342, + 41.4572347 + ], + [ + 2.218046, + 41.4572347 + ], + [ + 2.218046, + 41.5701612 + ], + [ + 2.0076342, + 41.5701612 + ], + [ + 2.0076342, + 41.4572347 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Moisès", + "uid": "12884230", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #cyclofix", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T12:28:39Z", + "reviewed_features": [], + "create": 0, + "modify": 5, + "delete": 0, + "area": 0.0237610681327001, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "cyclofix", + "answer": 2, + "imagery": "CartoDB.Voyager", + "language": "en", + "add-image": 4 + } + } + }, + { + "id": 113227669, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Wright One", + "uid": "261189", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T10:11:28Z", + "reviewed_features": [], + "create": 0, + "modify": 1, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "aed", + "answer": 1, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113225986, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 9.9033028, + 53.564361 + ], + [ + 9.9163121, + 53.564361 + ], + [ + 9.9163121, + 53.5777046 + ], + [ + 9.9033028, + 53.5777046 + ], + [ + 9.9033028, + 53.564361 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Nicolelaine", + "uid": "2997398", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #waste_basket", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T09:32:32Z", + "reviewed_features": [], + "create": 5, + "modify": 0, + "delete": 0, + "area": 0.000173590895479989, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "waste_basket", + "answer": 4, + "create": 5, + "imagery": "osm", + "language": "en" + } + } + }, + { + "id": 113224286, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ], + [ + 114.1728093, + 22.2773452 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [], + "tags": [], + "features": [], + "user": "Wright One", + "uid": "261189", + "editor": "MapComplete 0.12.1-beta", + "comment": "Adding data with #MapComplete for theme #aed", + "comments_count": 0, + "source": "survey", + "imagery_used": "Not reported", + "date": "2021-11-01T08:51:49Z", + "reviewed_features": [], + "create": 0, + "modify": 3, + "delete": 0, + "area": 0, + "is_suspect": false, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "pietervdvn.github.io", + "path": "mc/develop/", + "theme": "aed", + "answer": 3, + "imagery": "osm", + "language": "en", + "add-image": 1 + } + } + }, + { + "id": 113220970, + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 11.650008, + 52.1132121 + ], + [ + 11.6841875, + 52.1132121 + ], + [ + 11.6841875, + 52.1419745 + ], + [ + 11.650008, + 52.1419745 + ], + [ + 11.650008, + 52.1132121 + ] + ] + ] + }, + "properties": { + "check_user": null, + "reasons": [ + { + "id": 4, + "name": "mass modification" + } + ], + "tags": [], + "features": [], + "user": "ClickKlack", + "uid": "90262", + "editor": "MapComplete 0.11.3", + "comment": "Adding data with #MapComplete for theme #etymology", + "comments_count": 0, + "source": "Not reported", + "imagery_used": "Not reported", + "date": "2021-11-01T07:36:09Z", + "reviewed_features": [], + "create": 0, + "modify": 273, + "delete": 0, + "area": 0.000983084450800187, + "is_suspect": true, + "harmful": null, + "checked": false, + "check_date": null, + "metadata": { + "host": "mapcomplete.osm.be", + "theme": "etymology", + "answer": 519, + "imagery": "osm", + "language": "de" + } + } + } + ] +} \ No newline at end of file diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md index a27eadc97..47e54a29b 100644 --- a/Docs/URL_Parameters.md +++ b/Docs/URL_Parameters.md @@ -20,139 +20,164 @@ the URL-parameters are stated in the part between the `?` and the `#`. There are Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case. + fs-userbadge -------------- Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode. The default value is _true_ + fs-search ----------- Disables/Enables the search bar The default value is _true_ + fs-background --------------- Disables/Enables the background layer control The default value is _true_ + fs-filter ----------- Disables/Enables the filter The default value is _true_ + fs-add-new ------------ Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place) The default value is _true_ + fs-welcome-message -------------------- Disables/enables the help menu or welcome message The default value is _true_ + fs-iframe-popout ------------------ Disables/Enables the iframe-popout button. If in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch) The default value is _true_ + fs-more-quests ---------------- Disables/Enables the 'More Quests'-tab in the welcome message The default value is _true_ + fs-share-screen ----------------- Disables/Enables the 'Share-screen'-tab in the welcome message The default value is _true_ + fs-geolocation ---------------- Disables/Enables the geolocation button The default value is _true_ + fs-all-questions ------------------ Always show all questions The default value is _false_ + fs-export ----------- Enable the export as GeoJSON and CSV button The default value is _false_ + fs-pdf -------- Enable the PDF download button The default value is _false_ + backend --------- The OSM backend to use - can be used to redirect mapcomplete to the testing backend when using 'osm-test' The default value is _osm_ + test ------ If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org The default value is _false_ + debug ------- If true, shows some extra debugging help such as all the available tags on every object The default value is _false_ + fake-user ----------- If true, 'dryrun' mode is activated and a fake user account is loaded The default value is _false_ + overpassUrl ------------- Point mapcomplete to a different overpass-instance. Example: https://overpass-api.de/api/interpreter The default value is _https://overpass-api.de/api/interpreter,https://overpass.kumi.systems/api/interpreter,https://overpass.openstreetmap.ru/cgi/interpreter_ + overpassTimeout ----------------- Set a different timeout (in seconds) for queries in overpass The default value is _30_ + overpassMaxZoom ----------------- point to switch between OSM-api and overpass The default value is _17_ + osmApiTileSize ---------------- Tilesize when the OSM-API is used to fetch data within a BBOX The default value is _18_ + background ------------ The id of the background layer to start with The default value is _osm_ + layer- ------------------ - Wether or not the layer with id is shown The default value is _true_ Generated from QueryParameters \ No newline at end of file + Wether or not the layer with id is shown The default value is _true_ + +This document is autogenerated from QueryParameters \ No newline at end of file diff --git a/Logic/Actors/AvailableBaseLayers.ts b/Logic/Actors/AvailableBaseLayers.ts index 89a5435e6..c7b84247b 100644 --- a/Logic/Actors/AvailableBaseLayers.ts +++ b/Logic/Actors/AvailableBaseLayers.ts @@ -5,8 +5,10 @@ import Loc from "../../Models/Loc"; export interface AvailableBaseLayersObj { readonly osmCarto: BaseLayer; layerOverview: BaseLayer[]; - AvailableLayersAt(location: UIEventSource): UIEventSource - SelectBestLayerAccordingTo(location: UIEventSource, preferedCategory: UIEventSource): UIEventSource ; + + AvailableLayersAt(location: UIEventSource): UIEventSource + + SelectBestLayerAccordingTo(location: UIEventSource, preferedCategory: UIEventSource): UIEventSource; } @@ -15,13 +17,13 @@ export interface AvailableBaseLayersObj { * Changes the basemap */ export default class AvailableBaseLayers { - - + + public static layerOverview: BaseLayer[]; public static osmCarto: BaseLayer; private static implementation: AvailableBaseLayersObj - + static AvailableLayersAt(location: UIEventSource): UIEventSource { return AvailableBaseLayers.implementation?.AvailableLayersAt(location) ?? new UIEventSource([]); } @@ -31,7 +33,7 @@ export default class AvailableBaseLayers { } - public static implement(backend: AvailableBaseLayersObj){ + public static implement(backend: AvailableBaseLayersObj) { AvailableBaseLayers.layerOverview = backend.layerOverview AvailableBaseLayers.osmCarto = backend.osmCarto AvailableBaseLayers.implementation = backend diff --git a/Logic/Actors/AvailableBaseLayersImplementation.ts b/Logic/Actors/AvailableBaseLayersImplementation.ts index 09f5cfe42..880311eb4 100644 --- a/Logic/Actors/AvailableBaseLayersImplementation.ts +++ b/Logic/Actors/AvailableBaseLayersImplementation.ts @@ -3,13 +3,13 @@ import {UIEventSource} from "../UIEventSource"; import Loc from "../../Models/Loc"; import {GeoOperations} from "../GeoOperations"; import * as editorlayerindex from "../../assets/editor-layer-index.json"; +import * as L from "leaflet"; import {TileLayer} from "leaflet"; import * as X from "leaflet-providers"; -import * as L from "leaflet"; import {Utils} from "../../Utils"; import {AvailableBaseLayersObj} from "./AvailableBaseLayers"; -export default class AvailableBaseLayersImplementation implements AvailableBaseLayersObj{ +export default class AvailableBaseLayersImplementation implements AvailableBaseLayersObj { public readonly osmCarto: BaseLayer = { @@ -28,102 +28,6 @@ export default class AvailableBaseLayersImplementation implements AvailableBaseL public layerOverview = AvailableBaseLayersImplementation.LoadRasterIndex().concat(AvailableBaseLayersImplementation.LoadProviderIndex()); - public AvailableLayersAt(location: UIEventSource): UIEventSource { - const source = location.map( - (currentLocation) => { - - if (currentLocation === undefined) { - return this.layerOverview; - } - - const currentLayers = source?.data; // A bit unorthodox - I know - const newLayers = this.CalculateAvailableLayersAt(currentLocation?.lon, currentLocation?.lat); - - if (currentLayers === undefined) { - return newLayers; - } - if (newLayers.length !== currentLayers.length) { - return newLayers; - } - for (let i = 0; i < newLayers.length; i++) { - if (newLayers[i].name !== currentLayers[i].name) { - return newLayers; - } - } - - return currentLayers; - }); - return source; - } - - public SelectBestLayerAccordingTo(location: UIEventSource, preferedCategory: UIEventSource): UIEventSource { - return this.AvailableLayersAt(location).map(available => { - // First float all 'best layers' to the top - available.sort((a, b) => { - if (a.isBest && b.isBest) { - return 0; - } - if (!a.isBest) { - return 1 - } - - return -1; - } - ) - - if (preferedCategory.data === undefined) { - return available[0] - } - - let prefered: string [] - if (typeof preferedCategory.data === "string") { - prefered = [preferedCategory.data] - } else { - prefered = preferedCategory.data; - } - - prefered.reverse(); - for (const category of prefered) { - //Then sort all 'photo'-layers to the top. Stability of the sorting will force a 'best' photo layer on top - available.sort((a, b) => { - if (a.category === category && b.category === category) { - return 0; - } - if (a.category !== category) { - return 1 - } - - return -1; - } - ) - } - return available[0] - }) - } - - private CalculateAvailableLayersAt(lon: number, lat: number): BaseLayer[] { - const availableLayers = [this.osmCarto] - const globalLayers = []; - for (const layerOverviewItem of this.layerOverview) { - const layer = layerOverviewItem; - - if (layer.feature?.geometry === undefined || layer.feature?.geometry === null) { - globalLayers.push(layer); - continue; - } - - if (lon === undefined || lat === undefined) { - continue; - } - - if (GeoOperations.inside([lon, lat], layer.feature)) { - availableLayers.push(layer); - } - } - - return availableLayers.concat(globalLayers); - } - private static LoadRasterIndex(): BaseLayer[] { const layers: BaseLayer[] = [] // @ts-ignore @@ -289,4 +193,100 @@ export default class AvailableBaseLayersImplementation implements AvailableBaseL subdomains: domains }); } + + public AvailableLayersAt(location: UIEventSource): UIEventSource { + const source = location.map( + (currentLocation) => { + + if (currentLocation === undefined) { + return this.layerOverview; + } + + const currentLayers = source?.data; // A bit unorthodox - I know + const newLayers = this.CalculateAvailableLayersAt(currentLocation?.lon, currentLocation?.lat); + + if (currentLayers === undefined) { + return newLayers; + } + if (newLayers.length !== currentLayers.length) { + return newLayers; + } + for (let i = 0; i < newLayers.length; i++) { + if (newLayers[i].name !== currentLayers[i].name) { + return newLayers; + } + } + + return currentLayers; + }); + return source; + } + + public SelectBestLayerAccordingTo(location: UIEventSource, preferedCategory: UIEventSource): UIEventSource { + return this.AvailableLayersAt(location).map(available => { + // First float all 'best layers' to the top + available.sort((a, b) => { + if (a.isBest && b.isBest) { + return 0; + } + if (!a.isBest) { + return 1 + } + + return -1; + } + ) + + if (preferedCategory.data === undefined) { + return available[0] + } + + let prefered: string [] + if (typeof preferedCategory.data === "string") { + prefered = [preferedCategory.data] + } else { + prefered = preferedCategory.data; + } + + prefered.reverse(); + for (const category of prefered) { + //Then sort all 'photo'-layers to the top. Stability of the sorting will force a 'best' photo layer on top + available.sort((a, b) => { + if (a.category === category && b.category === category) { + return 0; + } + if (a.category !== category) { + return 1 + } + + return -1; + } + ) + } + return available[0] + }) + } + + private CalculateAvailableLayersAt(lon: number, lat: number): BaseLayer[] { + const availableLayers = [this.osmCarto] + const globalLayers = []; + for (const layerOverviewItem of this.layerOverview) { + const layer = layerOverviewItem; + + if (layer.feature?.geometry === undefined || layer.feature?.geometry === null) { + globalLayers.push(layer); + continue; + } + + if (lon === undefined || lat === undefined) { + continue; + } + + if (GeoOperations.inside([lon, lat], layer.feature)) { + availableLayers.push(layer); + } + } + + return availableLayers.concat(globalLayers); + } } \ No newline at end of file diff --git a/Logic/Actors/BackgroundLayerResetter.ts b/Logic/Actors/BackgroundLayerResetter.ts index 60666c53d..f8c73892e 100644 --- a/Logic/Actors/BackgroundLayerResetter.ts +++ b/Logic/Actors/BackgroundLayerResetter.ts @@ -13,11 +13,11 @@ export default class BackgroundLayerResetter { location: UIEventSource, availableLayers: UIEventSource, defaultLayerId: string = undefined) { - - if(Utils.runningFromConsole){ + + if (Utils.runningFromConsole) { return } - + defaultLayerId = defaultLayerId ?? AvailableBaseLayers.osmCarto.id; // Change the baselayer back to OSM if we go out of the current range of the layer diff --git a/Logic/Actors/GeoLocationHandler.ts b/Logic/Actors/GeoLocationHandler.ts index c508f8902..4d6561391 100644 --- a/Logic/Actors/GeoLocationHandler.ts +++ b/Logic/Actors/GeoLocationHandler.ts @@ -5,12 +5,23 @@ import {VariableUiElement} from "../../UI/Base/VariableUIElement"; import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; import {QueryParameters} from "../Web/QueryParameters"; import FeatureSource from "../FeatureSource/FeatureSource"; -import StaticFeatureSource from "../FeatureSource/Sources/StaticFeatureSource"; + +export interface GeoLocationPointProperties { + id: "gps", + "user:location": "yes", + "date": string, + "latitude": number + "longitude":number, + "speed": number, + "accuracy": number + "heading": number + "altitude":number +} export default class GeoLocationHandler extends VariableUiElement { - - public readonly currentLocation : FeatureSource - + + private readonly currentLocation: FeatureSource + /** * Wether or not the geolocation is active, aka the user requested the current location * @private @@ -59,13 +70,13 @@ export default class GeoLocationHandler extends VariableUiElement { constructor( state: { - currentGPSLocation: UIEventSource, + currentUserLocation: FeatureSource, leafletMap: UIEventSource, layoutToUse: LayoutConfig, featureSwitchGeolocation: UIEventSource } ) { - const currentGPSLocation = state.currentGPSLocation + const currentGPSLocation = new UIEventSource(undefined, "GPS-coordinate") const leafletMap = state.leafletMap const hasLocation = currentGPSLocation.map( (location) => location !== undefined @@ -182,25 +193,30 @@ export default class GeoLocationHandler extends VariableUiElement { } }) - this.currentLocation = new StaticFeatureSource([], false) + this.currentLocation = state.currentUserLocation this._currentGPSLocation.addCallback((location) => { self._previousLocationGrant.setData("granted"); - const feature = { "type": "Feature", - properties: { - "user:location":"yes", - "accuracy":location.accuracy, - "speed":location.speed, + properties: { + id: "gps", + "user:location": "yes", + "date": new Date().toISOString(), + "latitude": location.latitude, + "longitude": location.longitude, + "speed": location.speed, + "accuracy": location.accuracy, + "heading": location.heading, + "altitude": location.altitude }, - geometry:{ - type:"Point", + geometry: { + type: "Point", coordinates: [location.longitude, location.latitude], } } - + self.currentLocation.features.setData([{feature, freshness: new Date()}]) - + const timeSinceRequest = (new Date().getTime() - (self._lastUserRequest?.getTime() ?? 0)) / 1000; if (timeSinceRequest < 30) { @@ -210,7 +226,7 @@ export default class GeoLocationHandler extends VariableUiElement { } }); - + } private init(askPermission: boolean, zoomToLocation: boolean) { @@ -279,7 +295,7 @@ export default class GeoLocationHandler extends VariableUiElement { ); } else { const currentZoom = this._leafletMap.data.getZoom() - + this._leafletMap.data.setView([location.latitude, location.longitude], Math.max(targetZoom ?? 0, currentZoom)); } } diff --git a/Logic/Actors/OverpassFeatureSource.ts b/Logic/Actors/OverpassFeatureSource.ts index 49c605137..feb09f952 100644 --- a/Logic/Actors/OverpassFeatureSource.ts +++ b/Logic/Actors/OverpassFeatureSource.ts @@ -113,8 +113,7 @@ export default class OverpassFeatureSource implements FeatureSource { let data: any = undefined let date: Date = undefined let lastUsed = 0; - - + const layersToDownload = [] for (const layer of this.state.layoutToUse.layers) { @@ -137,7 +136,7 @@ export default class OverpassFeatureSource implements FeatureSource { const self = this; const overpassUrls = self.state.overpassUrl.data - let bounds : BBox + let bounds: BBox do { try { @@ -180,9 +179,9 @@ export default class OverpassFeatureSource implements FeatureSource { } } while (data === undefined && this._isActive.data); - + try { - if(data === undefined){ + if (data === undefined) { return undefined } data.features.forEach(feature => SimpleMetaTagger.objectMetaInfo.applyMetaTagsOnFeature(feature, date, undefined)); diff --git a/Logic/Actors/PendingChangesUploader.ts b/Logic/Actors/PendingChangesUploader.ts index 675491467..f123123d1 100644 --- a/Logic/Actors/PendingChangesUploader.ts +++ b/Logic/Actors/PendingChangesUploader.ts @@ -31,10 +31,10 @@ export default class PendingChangesUploader { } }); - if(Utils.runningFromConsole){ + if (Utils.runningFromConsole) { return; } - + document.addEventListener('mouseout', e => { // @ts-ignore if (!e.toElement && !e.relatedTarget) { diff --git a/Logic/Actors/SelectedFeatureHandler.ts b/Logic/Actors/SelectedFeatureHandler.ts index aba97ecb1..204950ed9 100644 --- a/Logic/Actors/SelectedFeatureHandler.ts +++ b/Logic/Actors/SelectedFeatureHandler.ts @@ -10,7 +10,7 @@ import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; * Makes sure the hash shows the selected element and vice-versa. */ export default class SelectedFeatureHandler { - private static readonly _no_trigger_on = new Set(["welcome", "copyright", "layers", "new", "filters","", undefined]) + private static readonly _no_trigger_on = new Set(["welcome", "copyright", "layers", "new", "filters", "location_track", "", undefined]) private readonly hash: UIEventSource; private readonly state: { selectedElement: UIEventSource, @@ -88,7 +88,7 @@ export default class SelectedFeatureHandler { if (!(hash.startsWith("node") || hash.startsWith("way") || hash.startsWith("relation"))) { return; } - + OsmObject.DownloadObjectAsync(hash).then(obj => { @@ -114,7 +114,7 @@ export default class SelectedFeatureHandler { // Hash has been cleared - we clear the selected element state.selectedElement.setData(undefined); } else { - + // we search the element to select const feature = state.allElements.ContainingFeatures.get(h) if (feature === undefined) { diff --git a/Logic/Actors/StrayClickHandler.ts b/Logic/Actors/StrayClickHandler.ts index bdf79d162..1cde81871 100644 --- a/Logic/Actors/StrayClickHandler.ts +++ b/Logic/Actors/StrayClickHandler.ts @@ -80,6 +80,5 @@ export default class StrayClickHandler { } - } \ No newline at end of file diff --git a/Logic/Actors/TitleHandler.ts b/Logic/Actors/TitleHandler.ts index d3d2f78fb..a3c4b5081 100644 --- a/Logic/Actors/TitleHandler.ts +++ b/Logic/Actors/TitleHandler.ts @@ -8,7 +8,7 @@ import {ElementStorage} from "../ElementStorage"; import {Utils} from "../../Utils"; export default class TitleHandler { - constructor(state : { + constructor(state: { selectedElement: UIEventSource, layoutToUse: LayoutConfig, allElements: ElementStorage @@ -28,7 +28,7 @@ export default class TitleHandler { continue; } if (layer.source.osmTags.matchesProperties(tags)) { - const tagsSource = state.allElements.getEventSourceById(tags.id) + const tagsSource = state.allElements.getEventSourceById(tags.id) ?? new UIEventSource(tags) const title = new TagRenderingAnswer(tagsSource, layer.title) return new Combine([defaultTitle, " | ", title]).ConstructElement()?.innerText ?? defaultTitle; } @@ -39,7 +39,7 @@ export default class TitleHandler { currentTitle.addCallbackAndRunD(title => { - if(Utils.runningFromConsole){ + if (Utils.runningFromConsole) { return } document.title = title diff --git a/Logic/BBox.ts b/Logic/BBox.ts index ccd320125..436f00125 100644 --- a/Logic/BBox.ts +++ b/Logic/BBox.ts @@ -4,11 +4,11 @@ import {GeoOperations} from "./GeoOperations"; export class BBox { + static global: BBox = new BBox([[-180, -90], [180, 90]]); readonly maxLat: number; readonly maxLon: number; readonly minLat: number; readonly minLon: number; - static global: BBox = new BBox([[-180, -90], [180, 90]]); constructor(coordinates) { this.maxLat = -90; @@ -45,6 +45,17 @@ export class BBox { return feature.bbox; } + static fromTile(z: number, x: number, y: number): BBox { + return new BBox(Tiles.tile_bounds_lon_lat(z, x, y)) + } + + static fromTileIndex(i: number): BBox { + if (i === 0) { + return BBox.global + } + return BBox.fromTile(...Tiles.tile_from_index(i)) + } + /** * Constructs a tilerange which fully contains this bbox (thus might be a bit larger) * @param zoomlevel @@ -83,24 +94,6 @@ export class BBox { return true; } - private check() { - if (isNaN(this.maxLon) || isNaN(this.maxLat) || isNaN(this.minLon) || isNaN(this.minLat)) { - console.log(this); - throw "BBOX has NAN"; - } - } - - static fromTile(z: number, x: number, y: number): BBox { - return new BBox(Tiles.tile_bounds_lon_lat(z, x, y)) - } - - static fromTileIndex(i: number): BBox { - if (i === 0) { - return BBox.global - } - return BBox.fromTile(...Tiles.tile_from_index(i)) - } - getEast() { return this.maxLon } @@ -116,10 +109,10 @@ export class BBox { getSouth() { return this.minLat } - - contains(lonLat: [number, number]){ + + contains(lonLat: [number, number]) { return this.minLat <= lonLat[1] && lonLat[1] <= this.maxLat - && this.minLon<= lonLat[0] && lonLat[0] <= this.maxLon + && this.minLon <= lonLat[0] && lonLat[0] <= this.maxLon } pad(factor: number, maxIncrease = 2): BBox { @@ -179,4 +172,11 @@ export class BBox { } + + private check() { + if (isNaN(this.maxLon) || isNaN(this.maxLat) || isNaN(this.minLon) || isNaN(this.minLat)) { + console.log(this); + throw "BBOX has NAN"; + } + } } \ No newline at end of file diff --git a/Logic/ContributorCount.ts b/Logic/ContributorCount.ts index f39d1106f..08eb496c5 100644 --- a/Logic/ContributorCount.ts +++ b/Logic/ContributorCount.ts @@ -8,6 +8,7 @@ export default class ContributorCount { public readonly Contributors: UIEventSource> = new UIEventSource>(new Map()); private readonly state: { featurePipeline: FeaturePipeline, currentBounds: UIEventSource, locationControl: UIEventSource }; + private lastUpdate: Date = undefined; constructor(state: { featurePipeline: FeaturePipeline, currentBounds: UIEventSource, locationControl: UIEventSource }) { this.state = state; @@ -16,15 +17,13 @@ export default class ContributorCount { self.update(bbox) }) state.featurePipeline.runningQuery.addCallbackAndRun( - _ => self.update(state.currentBounds.data) + _ => self.update(state.currentBounds.data) ) - + } - private lastUpdate: Date = undefined; - private update(bbox: BBox) { - if(bbox === undefined){ + if (bbox === undefined) { return; } const now = new Date(); diff --git a/Logic/DetermineLayout.ts b/Logic/DetermineLayout.ts index b29e5f8b5..872b5b3e9 100644 --- a/Logic/DetermineLayout.ts +++ b/Logic/DetermineLayout.ts @@ -61,43 +61,10 @@ export default class DetermineLayout { layer.minzoom = Math.max(16, layer.minzoom) } } - + return [layoutToUse, undefined] } - private static async LoadRemoteTheme(link: string): Promise { - console.log("Downloading map theme from ", link); - - new FixedUiElement(`Downloading the theme from the link...`) - .AttachTo("centermessage"); - - try { - - const parsed = await Utils.downloadJson(link) - console.log("Got ", parsed) - LegacyJsonConvert.fixThemeConfig(parsed) - try { - parsed.id = link; - return new LayoutConfig(parsed, false).patchImages(link, JSON.stringify(parsed)); - } catch (e) { - console.error(e) - DetermineLayout.ShowErrorOnCustomTheme( - `${link} is invalid:`, - new FixedUiElement(e) - ) - return null; - } - - } catch (e) { - console.error(e) - DetermineLayout.ShowErrorOnCustomTheme( - `${link} is invalid - probably not found or invalid JSON:`, - new FixedUiElement(e) - ) - return null; - } - } - public static LoadLayoutFromHash( userLayoutParam: UIEventSource ): [LayoutConfig, string] | null { @@ -166,4 +133,37 @@ export default class DetermineLayout { .AttachTo("centermessage"); } + private static async LoadRemoteTheme(link: string): Promise { + console.log("Downloading map theme from ", link); + + new FixedUiElement(`Downloading the theme from the link...`) + .AttachTo("centermessage"); + + try { + + const parsed = await Utils.downloadJson(link) + console.log("Got ", parsed) + LegacyJsonConvert.fixThemeConfig(parsed) + try { + parsed.id = link; + return new LayoutConfig(parsed, false).patchImages(link, JSON.stringify(parsed)); + } catch (e) { + console.error(e) + DetermineLayout.ShowErrorOnCustomTheme( + `${link} is invalid:`, + new FixedUiElement(e) + ) + return null; + } + + } catch (e) { + console.error(e) + DetermineLayout.ShowErrorOnCustomTheme( + `${link} is invalid - probably not found or invalid JSON:`, + new FixedUiElement(e) + ) + return null; + } + } + } \ No newline at end of file diff --git a/Logic/ElementStorage.ts b/Logic/ElementStorage.ts index ae51094ae..b64ac18ef 100644 --- a/Logic/ElementStorage.ts +++ b/Logic/ElementStorage.ts @@ -39,10 +39,10 @@ export class ElementStorage { } getEventSourceById(elementId): UIEventSource { - if(elementId === undefined){ + if (elementId === undefined) { return undefined; } - return this._elements.get(elementId); + return this._elements.get(elementId); } has(id) { diff --git a/Logic/ExtraFunction.ts b/Logic/ExtraFunction.ts index a3e12567f..375515324 100644 --- a/Logic/ExtraFunction.ts +++ b/Logic/ExtraFunction.ts @@ -64,7 +64,7 @@ export class ExtraFunction { }, (params, feat) => { return (...layerIds: string[]) => { - const result : {feat:any, overlap: number}[]= [] + const result: { feat: any, overlap: number }[] = [] const bbox = BBox.get(feat) @@ -80,9 +80,9 @@ export class ExtraFunction { result.push(...GeoOperations.calculateOverlap(feat, otherLayer)); } } - + result.sort((a, b) => b.overlap - a.overlap) - + return result; } } @@ -90,7 +90,7 @@ export class ExtraFunction { private static readonly DistanceToFunc = new ExtraFunction( { name: "distanceTo", - doc: "Calculates the distance between the feature and a specified point in kilometer. The input should either be a pair of coordinates, a geojson feature or the ID of an object", + doc: "Calculates the distance between the feature and a specified point in meter. The input should either be a pair of coordinates, a geojson feature or the ID of an object", args: ["feature OR featureID OR longitude", "undefined OR latitude"] }, (featuresPerLayer, feature) => { @@ -181,7 +181,7 @@ export class ExtraFunction { } try { const parsed = JSON.parse(value) - if(parsed === null){ + if (parsed === null) { return undefined; } return parsed; diff --git a/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts b/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts index 83a269b89..4bbba043f 100644 --- a/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts +++ b/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts @@ -39,7 +39,7 @@ export default class SaveTileToLocalStorageActor { } } - public static poison(layers: string[], lon: number, lat: number) { + public static poison(layers: string[], lon: number, lat: number) { for (let z = 0; z < 25; z++) { const {x, y} = Tiles.embedded_tile(lat, lon, z) diff --git a/Logic/FeatureSource/FeaturePipeline.ts b/Logic/FeatureSource/FeaturePipeline.ts index 4e90f1616..9d10ca94e 100644 --- a/Logic/FeatureSource/FeaturePipeline.ts +++ b/Logic/FeatureSource/FeaturePipeline.ts @@ -5,11 +5,9 @@ import FeatureSource, {FeatureSourceForLayer, IndexedFeatureSource, Tiled} from import TiledFeatureSource from "./TiledFeatureSource/TiledFeatureSource"; import {UIEventSource} from "../UIEventSource"; import {TileHierarchyTools} from "./TiledFeatureSource/TileHierarchy"; -import FilteredLayer from "../../Models/FilteredLayer"; import MetaTagging from "../MetaTagging"; import RememberingSource from "./Sources/RememberingSource"; import OverpassFeatureSource from "../Actors/OverpassFeatureSource"; -import {Changes} from "../Osm/Changes"; import GeoJsonSource from "./Sources/GeoJsonSource"; import Loc from "../../Models/Loc"; import RegisteringAllFromFeatureSourceActor from "./Actors/RegisteringAllFromFeatureSourceActor"; @@ -22,11 +20,10 @@ import {NewGeometryFromChangesFeatureSource} from "./Sources/NewGeometryFromChan import ChangeGeometryApplicator from "./Sources/ChangeGeometryApplicator"; import {BBox} from "../BBox"; import OsmFeatureSource from "./TiledFeatureSource/OsmFeatureSource"; -import {OsmConnection} from "../Osm/OsmConnection"; import {Tiles} from "../../Models/TileRange"; import TileFreshnessCalculator from "./TileFreshnessCalculator"; -import {ElementStorage} from "../ElementStorage"; import FullNodeDatabaseSource from "./TiledFeatureSource/FullNodeDatabaseSource"; +import MapState from "../State/MapState"; /** @@ -51,19 +48,7 @@ export default class FeaturePipeline { public readonly newDataLoadedSignal: UIEventSource = new UIEventSource(undefined) private readonly overpassUpdater: OverpassFeatureSource - private state: { - readonly filteredLayers: UIEventSource, - readonly locationControl: UIEventSource, - readonly selectedElement: UIEventSource, - readonly changes: Changes, - readonly layoutToUse: LayoutConfig, - readonly leafletMap: any, - readonly overpassUrl: UIEventSource; - readonly overpassTimeout: UIEventSource; - readonly overpassMaxZoom: UIEventSource; - readonly osmConnection: OsmConnection - readonly currentBounds: UIEventSource - }; + private state: MapState; private readonly relationTracker: RelationsTracker private readonly perLayerHierarchy: Map; @@ -74,21 +59,7 @@ export default class FeaturePipeline { constructor( handleFeatureSource: (source: FeatureSourceForLayer & Tiled) => void, - state: { - readonly filteredLayers: UIEventSource, - readonly locationControl: UIEventSource, - readonly selectedElement: UIEventSource, - readonly changes: Changes, - readonly layoutToUse: LayoutConfig, - readonly leafletMap: any, - readonly overpassUrl: UIEventSource; - readonly overpassTimeout: UIEventSource; - readonly overpassMaxZoom: UIEventSource; - readonly osmConnection: OsmConnection - readonly currentBounds: UIEventSource, - readonly osmApiTileSize: UIEventSource, - readonly allElements: ElementStorage - }) { + state: MapState) { this.state = state; const self = this @@ -125,18 +96,26 @@ export default class FeaturePipeline { const perLayerHierarchy = new Map() this.perLayerHierarchy = perLayerHierarchy - const patchedHandleFeatureSource = function (src: FeatureSourceForLayer & IndexedFeatureSource & Tiled) { + function patchedHandleFeatureSource (src: FeatureSourceForLayer & IndexedFeatureSource & Tiled) { // This will already contain the merged features for this tile. In other words, this will only be triggered once for every tile const srcFiltered = new FilteringFeatureSource(state, src.tileIndex, - new ChangeGeometryApplicator(src, state.changes) + new ChangeGeometryApplicator(src, state.changes) ) handleFeatureSource(srcFiltered) self.somethingLoaded.setData(true) // We do not mark as visited here, this is the responsability of the code near the actual loader (e.g. overpassLoader and OSMApiFeatureLoader) - }; + } + function handlePriviligedFeatureSource(src: FeatureSourceForLayer & Tiled){ + // Passthrough to passed function, except that it registers as well + handleFeatureSource(src) + src.features.addCallbackAndRunD(fs => { + fs.forEach(ff => state.allElements.addOrGetElement(ff.feature)) + }) + } + for (const filteredLayer of state.filteredLayers.data) { const id = filteredLayer.layerDef.id @@ -147,11 +126,31 @@ export default class FeaturePipeline { this.freshnesses.set(id, new TileFreshnessCalculator()) - if(id === "type_node"){ + if (id === "type_node") { // Handles by the 'FullNodeDatabaseSource' continue; } + if (id === "gps_location") { + handlePriviligedFeatureSource(state.currentUserLocation) + continue + } + + if (id === "gps_location_history") { + handlePriviligedFeatureSource(state.historicalUserLocations) + continue + } + + if (id === "gps_track") { + handlePriviligedFeatureSource(state.historicalUserLocationsTrack) + continue + } + + if (id === "home_location") { + handlePriviligedFeatureSource(state.homeLocation) + continue + } + if (source.geojsonSource === undefined) { // This is an OSM layer // We load the cached values and register them @@ -226,15 +225,15 @@ export default class FeaturePipeline { self.freshnesses.get(flayer.layerDef.id).addTileLoad(tileId, new Date()) }) }) - - if(state.layoutToUse.trackAllNodes){ - const fullNodeDb = new FullNodeDatabaseSource( - state.filteredLayers.data.filter(l => l.layerDef.id === "type_node")[0], - tile => { - new RegisteringAllFromFeatureSourceActor(tile) - perLayerHierarchy.get(tile.layer.layerDef.id).registerTile(tile) - tile.features.addCallbackAndRunD(_ => self.newDataLoadedSignal.setData(tile)) - }) + + if (state.layoutToUse.trackAllNodes) { + const fullNodeDb = new FullNodeDatabaseSource( + state.filteredLayers.data.filter(l => l.layerDef.id === "type_node")[0], + tile => { + new RegisteringAllFromFeatureSourceActor(tile) + perLayerHierarchy.get(tile.layer.layerDef.id).registerTile(tile) + tile.features.addCallbackAndRunD(_ => self.newDataLoadedSignal.setData(tile)) + }) osmFeatureSource.rawDataHandlers.push((osmJson, tileId) => fullNodeDb.handleOsmJson(osmJson, tileId)) } @@ -299,6 +298,34 @@ export default class FeaturePipeline { } + public GetAllFeaturesWithin(bbox: BBox): any[][] { + const self = this + const tiles = [] + Array.from(this.perLayerHierarchy.keys()) + .forEach(key => tiles.push(...self.GetFeaturesWithin(key, bbox))) + return tiles; + } + + public GetFeaturesWithin(layerId: string, bbox: BBox): any[][] { + if (layerId === "*") { + return this.GetAllFeaturesWithin(bbox) + } + const requestedHierarchy = this.perLayerHierarchy.get(layerId) + if (requestedHierarchy === undefined) { + console.warn("Layer ", layerId, "is not defined. Try one of ", Array.from(this.perLayerHierarchy.keys())) + return undefined; + } + return TileHierarchyTools.getTiles(requestedHierarchy, bbox) + .filter(featureSource => featureSource.features?.data !== undefined) + .map(featureSource => featureSource.features.data.map(fs => fs.feature)) + } + + public GetTilesPerLayerWithin(bbox: BBox, handleTile: (tile: FeatureSourceForLayer & Tiled) => void) { + Array.from(this.perLayerHierarchy.values()).forEach(hierarchy => { + TileHierarchyTools.getTiles(hierarchy, bbox).forEach(handleTile) + }) + } + private freshnessForVisibleLayers(z: number, x: number, y: number): Date { let oldestDate = undefined; for (const flayer of this.state.filteredLayers.data) { @@ -438,32 +465,4 @@ export default class FeaturePipeline { } - public GetAllFeaturesWithin(bbox: BBox): any[][] { - const self = this - const tiles = [] - Array.from(this.perLayerHierarchy.keys()) - .forEach(key => tiles.push(...self.GetFeaturesWithin(key, bbox))) - return tiles; - } - - public GetFeaturesWithin(layerId: string, bbox: BBox): any[][] { - if (layerId === "*") { - return this.GetAllFeaturesWithin(bbox) - } - const requestedHierarchy = this.perLayerHierarchy.get(layerId) - if (requestedHierarchy === undefined) { - console.warn("Layer ", layerId, "is not defined. Try one of ", Array.from(this.perLayerHierarchy.keys())) - return undefined; - } - return TileHierarchyTools.getTiles(requestedHierarchy, bbox) - .filter(featureSource => featureSource.features?.data !== undefined) - .map(featureSource => featureSource.features.data.map(fs => fs.feature)) - } - - public GetTilesPerLayerWithin(bbox: BBox, handleTile: (tile: FeatureSourceForLayer & Tiled) => void) { - Array.from(this.perLayerHierarchy.values()).forEach(hierarchy => { - TileHierarchyTools.getTiles(hierarchy, bbox).forEach(handleTile) - }) - } - } \ No newline at end of file diff --git a/Logic/FeatureSource/FeatureSource.ts b/Logic/FeatureSource/FeatureSource.ts index 7d603d1f6..df8b56412 100644 --- a/Logic/FeatureSource/FeatureSource.ts +++ b/Logic/FeatureSource/FeatureSource.ts @@ -1,5 +1,4 @@ import {UIEventSource} from "../UIEventSource"; -import {Utils} from "../../Utils"; import FilteredLayer from "../../Models/FilteredLayer"; import {BBox} from "../BBox"; @@ -19,7 +18,7 @@ export interface Tiled { /** * A feature source which only contains features for the defined layer */ -export interface FeatureSourceForLayer extends FeatureSource{ +export interface FeatureSourceForLayer extends FeatureSource { readonly layer: FilteredLayer } diff --git a/Logic/FeatureSource/PerLayerFeatureSourceSplitter.ts b/Logic/FeatureSource/PerLayerFeatureSourceSplitter.ts index f9a0cbe1a..3e6f5f2a7 100644 --- a/Logic/FeatureSource/PerLayerFeatureSourceSplitter.ts +++ b/Logic/FeatureSource/PerLayerFeatureSourceSplitter.ts @@ -14,15 +14,15 @@ export default class PerLayerFeatureSourceSplitter { constructor(layers: UIEventSource, handleLayerData: (source: FeatureSourceForLayer & Tiled) => void, upstream: FeatureSource, - options?:{ - tileIndex?: number, - handleLeftovers?: (featuresWithoutLayer: any[]) => void + options?: { + tileIndex?: number, + handleLeftovers?: (featuresWithoutLayer: any[]) => void }) { const knownLayers = new Map() function update() { - const features = upstream.features.data; + const features = upstream.features?.data; if (features === undefined) { return; } @@ -35,6 +35,7 @@ export default class PerLayerFeatureSourceSplitter { const featuresPerLayer = new Map(); const noLayerFound = [] + function addTo(layer: FilteredLayer, feature: { feature, freshness }) { const id = layer.layerDef.id const list = featuresPerLayer.get(id) @@ -80,9 +81,9 @@ export default class PerLayerFeatureSourceSplitter { featureSource.features.setData(features) } } - + // AT last, the leftovers are handled - if(options?.handleLeftovers !== undefined && noLayerFound.length > 0){ + if (options?.handleLeftovers !== undefined && noLayerFound.length > 0) { options.handleLeftovers(noLayerFound) } } diff --git a/Logic/FeatureSource/Sources/ChangeGeometryApplicator.ts b/Logic/FeatureSource/Sources/ChangeGeometryApplicator.ts index a35879d96..83ab174bd 100644 --- a/Logic/FeatureSource/Sources/ChangeGeometryApplicator.ts +++ b/Logic/FeatureSource/Sources/ChangeGeometryApplicator.ts @@ -11,9 +11,9 @@ import {ChangeDescription, ChangeDescriptionTools} from "../../Osm/Actions/Chang export default class ChangeGeometryApplicator implements FeatureSourceForLayer { public readonly features: UIEventSource<{ feature: any; freshness: Date }[]> = new UIEventSource<{ feature: any; freshness: Date }[]>([]); public readonly name: string; + public readonly layer: FilteredLayer private readonly source: IndexedFeatureSource; private readonly changes: Changes; - public readonly layer: FilteredLayer constructor(source: (IndexedFeatureSource & FeatureSourceForLayer), changes: Changes) { this.source = source; @@ -22,10 +22,10 @@ export default class ChangeGeometryApplicator implements FeatureSourceForLayer { this.name = "ChangesApplied(" + source.name + ")" this.features = new UIEventSource<{ feature: any; freshness: Date }[]>(undefined) - + const self = this; source.features.addCallbackAndRunD(_ => self.update()) - + changes.allChanges.addCallbackAndRunD(_ => self.update()) } @@ -52,9 +52,9 @@ export default class ChangeGeometryApplicator implements FeatureSourceForLayer { const changesPerId = new Map() for (const ch of changesToApply) { const key = ch.type + "/" + ch.id - if(changesPerId.has(key)){ + if (changesPerId.has(key)) { changesPerId.get(key).push(ch) - }else{ + } else { changesPerId.set(key, [ch]) } } @@ -66,7 +66,7 @@ export default class ChangeGeometryApplicator implements FeatureSourceForLayer { newFeatures.push(feature) continue; } - + // Allright! We have a feature to rewrite! const copy = { ...feature diff --git a/Logic/FeatureSource/Sources/FeatureSourceMerger.ts b/Logic/FeatureSource/Sources/FeatureSourceMerger.ts index b1797d0ae..99a9b9bc5 100644 --- a/Logic/FeatureSource/Sources/FeatureSourceMerger.ts +++ b/Logic/FeatureSource/Sources/FeatureSourceMerger.ts @@ -5,7 +5,6 @@ import {UIEventSource} from "../../UIEventSource"; import FeatureSource, {FeatureSourceForLayer, IndexedFeatureSource, Tiled} from "../FeatureSource"; import FilteredLayer from "../../../Models/FilteredLayer"; -import {Utils} from "../../../Utils"; import {Tiles} from "../../../Models/TileRange"; import {BBox} from "../../BBox"; @@ -14,17 +13,17 @@ export default class FeatureSourceMerger implements FeatureSourceForLayer, Tiled public features: UIEventSource<{ feature: any; freshness: Date }[]> = new UIEventSource<{ feature: any; freshness: Date }[]>([]); public readonly name; public readonly layer: FilteredLayer - private readonly _sources: UIEventSource; public readonly tileIndex: number; public readonly bbox: BBox; public readonly containedIds: UIEventSource> = new UIEventSource>(new Set()) + private readonly _sources: UIEventSource; constructor(layer: FilteredLayer, tileIndex: number, bbox: BBox, sources: UIEventSource) { this.tileIndex = tileIndex; this.bbox = bbox; this._sources = sources; this.layer = layer; - this.name = "FeatureSourceMerger("+layer.layerDef.id+", "+Tiles.tile_from_index(tileIndex).join(",")+")" + this.name = "FeatureSourceMerger(" + layer.layerDef.id + ", " + Tiles.tile_from_index(tileIndex).join(",") + ")" const self = this; const handledSources = new Set(); diff --git a/Logic/FeatureSource/Sources/FilteringFeatureSource.ts b/Logic/FeatureSource/Sources/FilteringFeatureSource.ts index cf0475d26..d5ed4dc71 100644 --- a/Logic/FeatureSource/Sources/FilteringFeatureSource.ts +++ b/Logic/FeatureSource/Sources/FilteringFeatureSource.ts @@ -18,6 +18,8 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti locationControl: UIEventSource<{ zoom: number }>; selectedElement: UIEventSource, allElements: ElementStorage }; + private readonly _alreadyRegistered = new Set>(); + private readonly _is_dirty = new UIEventSource(false) constructor( state: { @@ -55,24 +57,6 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti this.update(); } - private readonly _alreadyRegistered = new Set>(); - private readonly _is_dirty = new UIEventSource(false) - - private registerCallback(feature: any, layer: LayerConfig) { - const src = this.state.allElements.addOrGetElement(feature) - if (this._alreadyRegistered.has(src)) { - return - } - this._alreadyRegistered.add(src) - if (layer.isShown !== undefined) { - - const self = this; - src.map(tags => layer.isShown?.GetRenderValue(tags, "yes").txt).addCallbackAndRunD(isShown => { - self._is_dirty.setData(true) - }) - } - } - public update() { const self = this; const layer = this.upstream.layer; @@ -116,4 +100,19 @@ export default class FilteringFeatureSource implements FeatureSourceForLayer, Ti this._is_dirty.setData(false) } + private registerCallback(feature: any, layer: LayerConfig) { + const src = this.state.allElements.addOrGetElement(feature) + if (this._alreadyRegistered.has(src)) { + return + } + this._alreadyRegistered.add(src) + if (layer.isShown !== undefined) { + + const self = this; + src.map(tags => layer.isShown?.GetRenderValue(tags, "yes").txt).addCallbackAndRunD(isShown => { + self._is_dirty.setData(true) + }) + } + } + } diff --git a/Logic/FeatureSource/Sources/GeoJsonSource.ts b/Logic/FeatureSource/Sources/GeoJsonSource.ts index 68f8fab82..e2269d621 100644 --- a/Logic/FeatureSource/Sources/GeoJsonSource.ts +++ b/Logic/FeatureSource/Sources/GeoJsonSource.ts @@ -15,12 +15,10 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled { public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>; public readonly name; public readonly isOsmCache: boolean - private readonly seenids: Set = new Set() public readonly layer: FilteredLayer; - public readonly tileIndex public readonly bbox; - + private readonly seenids: Set = new Set() /** * Only used if the actual source is a tiled geojson. * A big feature might be contained in multiple tiles. @@ -32,7 +30,7 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled { public constructor(flayer: FilteredLayer, zxy?: [number, number, number], options?: { - featureIdBlacklist?: UIEventSource> + featureIdBlacklist?: UIEventSource> }) { if (flayer.layerDef.source.geojsonZoomLevel !== undefined && zxy === undefined) { @@ -45,18 +43,18 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled { if (zxy !== undefined) { const [z, x, y] = zxy; let tile_bbox = BBox.fromTile(z, x, y) - let bounds : { minLat: number, maxLat: number, minLon: number, maxLon: number } = tile_bbox - if(this.layer.layerDef.source.mercatorCrs){ + let bounds: { minLat: number, maxLat: number, minLon: number, maxLon: number } = tile_bbox + if (this.layer.layerDef.source.mercatorCrs) { bounds = tile_bbox.toMercator() } url = url .replace('{z}', "" + z) .replace('{x}', "" + x) .replace('{y}', "" + y) - .replace('{y_min}',""+bounds.minLat) - .replace('{y_max}',""+bounds.maxLat) - .replace('{x_min}',""+bounds.minLon) - .replace('{x_max}',""+bounds.maxLon) + .replace('{y_min}', "" + bounds.minLat) + .replace('{y_max}', "" + bounds.maxLat) + .replace('{x_min}', "" + bounds.minLon) + .replace('{x_max}', "" + bounds.maxLon) this.tileIndex = Tiles.tile_index(z, x, y) this.bbox = BBox.fromTile(z, x, y) @@ -78,11 +76,11 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled { const self = this; Utils.downloadJson(url) .then(json => { - if(json.features === undefined || json.features === null){ + if (json.features === undefined || json.features === null) { return; } - - if(self.layer.layerDef.source.mercatorCrs){ + + if (self.layer.layerDef.source.mercatorCrs) { json = GeoOperations.GeoJsonToWGS84(json) } @@ -109,8 +107,8 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled { continue; } self.seenids.add(props.id) - - if(self.featureIdBlacklist?.data?.has(props.id)){ + + if (self.featureIdBlacklist?.data?.has(props.id)) { continue; } @@ -122,7 +120,7 @@ export default class GeoJsonSource implements FeatureSourceForLayer, Tiled { newFeatures.push({feature: feature, freshness: freshness}) } - if ( newFeatures.length == 0) { + if (newFeatures.length == 0) { return; } diff --git a/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts b/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts index bd73f04c2..6b8611d50 100644 --- a/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts +++ b/Logic/FeatureSource/Sources/NewGeometryFromChangesFeatureSource.ts @@ -7,7 +7,7 @@ import State from "../../../State"; export class NewGeometryFromChangesFeatureSource implements FeatureSource { // This class name truly puts the 'Java' into 'Javascript' - + /** * A feature source containing exclusively new elements */ @@ -53,10 +53,10 @@ export class NewGeometryFromChangesFeatureSource implements FeatureSource { for (const kv of change.tags) { tags[kv.k] = kv.v } - tags["id"] = change.type+"/"+change.id - + tags["id"] = change.type + "/" + change.id + tags["_backend"] = State.state.osmConnection._oauth_config.url - + switch (change.type) { case "node": const n = new OsmNode(change.id) @@ -85,7 +85,7 @@ export class NewGeometryFromChangesFeatureSource implements FeatureSource { } } - + self.features.ping() }) } diff --git a/Logic/FeatureSource/Sources/RememberingSource.ts b/Logic/FeatureSource/Sources/RememberingSource.ts index 683576736..c9a5e97e4 100644 --- a/Logic/FeatureSource/Sources/RememberingSource.ts +++ b/Logic/FeatureSource/Sources/RememberingSource.ts @@ -6,19 +6,19 @@ import FeatureSource, {Tiled} from "../FeatureSource"; import {UIEventSource} from "../../UIEventSource"; import {BBox} from "../../BBox"; -export default class RememberingSource implements FeatureSource , Tiled{ +export default class RememberingSource implements FeatureSource, Tiled { public readonly features: UIEventSource<{ feature: any, freshness: Date }[]>; public readonly name; - public readonly tileIndex : number - public readonly bbox : BBox - + public readonly tileIndex: number + public readonly bbox: BBox + constructor(source: FeatureSource & Tiled) { const self = this; this.name = "RememberingSource of " + source.name; - this.tileIndex= source.tileIndex + this.tileIndex = source.tileIndex this.bbox = source.bbox; - + const empty = []; this.features = source.features.map(features => { const oldFeatures = self.features?.data ?? empty; diff --git a/Logic/FeatureSource/Sources/RenderingMultiPlexerFeatureSource.ts b/Logic/FeatureSource/Sources/RenderingMultiPlexerFeatureSource.ts index eb0d4b10d..9971dbc46 100644 --- a/Logic/FeatureSource/Sources/RenderingMultiPlexerFeatureSource.ts +++ b/Logic/FeatureSource/Sources/RenderingMultiPlexerFeatureSource.ts @@ -7,7 +7,6 @@ import FeatureSource from "../FeatureSource"; import PointRenderingConfig from "../../../Models/ThemeConfig/PointRenderingConfig"; import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"; - export default class RenderingMultiPlexerFeatureSource { public readonly features: UIEventSource<(any & { pointRenderingIndex: number | undefined, lineRenderingIndex: number | undefined })[]>; @@ -29,10 +28,10 @@ export default class RenderingMultiPlexerFeatureSource { const lineRenderObjects = layer.lineRendering - const withIndex: (any & { pointRenderingIndex: number | undefined, lineRenderingIndex: number | undefined })[] = []; + const withIndex: (any & { pointRenderingIndex: number | undefined, lineRenderingIndex: number | undefined, multiLineStringIndex: number | undefined })[] = []; - function addAsPoint(feat, rendering, coordinate) { + function addAsPoint(feat, rendering, coordinate) { const patched = { ...feat, pointRenderingIndex: rendering.index @@ -55,12 +54,14 @@ export default class RenderingMultiPlexerFeatureSource { }) } } else { - // This is a a line + // This is a a line: add the centroids for (const rendering of centroidRenderings) { addAsPoint(feat, rendering, GeoOperations.centerpointCoordinates(feat)) } if (feat.geometry.type === "LineString") { + + // Add start- and endpoints const coordinates = feat.geometry.coordinates for (const rendering of startRenderings) { addAsPoint(feat, rendering, coordinates[0]) @@ -69,33 +70,45 @@ export default class RenderingMultiPlexerFeatureSource { const coordinate = coordinates[coordinates.length - 1] addAsPoint(feat, rendering, coordinate) } + } + if (feat.geometry.type === "MultiLineString") { - const lineList = feat.geometry.coordinates - for (const coordinates of lineList) { + // Multilinestrings get a special treatment: we split them into their subparts before rendering + const lineList: [number, number][][] = feat.geometry.coordinates + + for (let i1 = 0; i1 < lineList.length; i1++) { + const coordinates = lineList[i1]; - for (const rendering of startRenderings) { - const coordinate = coordinates[0] - addAsPoint(feat, rendering, coordinate) - } - for (const rendering of endRenderings) { - const coordinate = coordinates[coordinates.length - 1] - addAsPoint(feat, rendering, coordinate) + for (let i = 0; i < lineRenderObjects.length; i++) { + const orig = { + ...feat, + lineRenderingIndex: i, + multiLineStringIndex: i1 + } + orig.geometry.coordinates = coordinates + orig.geometry.type = "LineString" + withIndex.push(orig) } } + + }else{ + + // AT last, add it 'as is' to what we should render + for (let i = 0; i < lineRenderObjects.length; i++) { + withIndex.push({ + ...feat, + lineRenderingIndex: i + }) + } } - - - for (let i = 0; i < lineRenderObjects.length; i++) { - withIndex.push({ - ...feat, - lineRenderingIndex: i - }) - } + } } + + return withIndex; } ); diff --git a/Logic/FeatureSource/Sources/SimpleFeatureSource.ts b/Logic/FeatureSource/Sources/SimpleFeatureSource.ts index fd98ad92e..138a3465e 100644 --- a/Logic/FeatureSource/Sources/SimpleFeatureSource.ts +++ b/Logic/FeatureSource/Sources/SimpleFeatureSource.ts @@ -4,17 +4,18 @@ import {FeatureSourceForLayer, Tiled} from "../FeatureSource"; import {BBox} from "../../BBox"; export default class SimpleFeatureSource implements FeatureSourceForLayer, Tiled { - public readonly features: UIEventSource<{ feature: any; freshness: Date }[]> = new UIEventSource<{ feature: any; freshness: Date }[]>([]); + public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>; public readonly name: string = "SimpleFeatureSource"; public readonly layer: FilteredLayer; public readonly bbox: BBox = BBox.global; public readonly tileIndex: number; - constructor(layer: FilteredLayer, tileIndex: number) { + constructor(layer: FilteredLayer, tileIndex: number, featureSource?: UIEventSource<{ feature:any; freshness: Date }[]>) { this.name = "SimpleFeatureSource(" + layer.layerDef.id + ")" this.layer = layer this.tileIndex = tileIndex ?? 0; this.bbox = BBox.fromTileIndex(this.tileIndex) + this.features = featureSource ?? new UIEventSource<{ feature: any; freshness: Date }[]>([]); } } \ No newline at end of file diff --git a/Logic/FeatureSource/TileFreshnessCalculator.ts b/Logic/FeatureSource/TileFreshnessCalculator.ts index 85ff8ae12..58a655151 100644 --- a/Logic/FeatureSource/TileFreshnessCalculator.ts +++ b/Logic/FeatureSource/TileFreshnessCalculator.ts @@ -13,35 +13,35 @@ export default class TileFreshnessCalculator { * @param tileId * @param freshness */ - public addTileLoad(tileId: number, freshness: Date){ + public addTileLoad(tileId: number, freshness: Date) { const existingFreshness = this.freshnessFor(...Tiles.tile_from_index(tileId)) - if(existingFreshness >= freshness){ + if (existingFreshness >= freshness) { return; } this.freshnesses.set(tileId, freshness) - + // Do we have freshness for the neighbouring tiles? If so, we can mark the tile above as loaded too! let [z, x, y] = Tiles.tile_from_index(tileId) - if(z === 0){ + if (z === 0) { return; } x = x - (x % 2) // Make the tiles always even y = y - (y % 2) - + const ul = this.freshnessFor(z, x, y)?.getTime() - if(ul === undefined){ + if (ul === undefined) { return } const ur = this.freshnessFor(z, x + 1, y)?.getTime() - if(ur === undefined){ + if (ur === undefined) { return } const ll = this.freshnessFor(z, x, y + 1)?.getTime() - if(ll === undefined){ + if (ll === undefined) { return } const lr = this.freshnessFor(z, x + 1, y + 1)?.getTime() - if(lr === undefined){ + if (lr === undefined) { return } @@ -50,22 +50,22 @@ export default class TileFreshnessCalculator { date.setTime(leastFresh) this.addTileLoad( Tiles.tile_index(z - 1, Math.floor(x / 2), Math.floor(y / 2)), - date + date ) - + } - - public freshnessFor(z: number, x: number, y:number): Date { - if(z < 0){ + + public freshnessFor(z: number, x: number, y: number): Date { + if (z < 0) { return undefined } const tileId = Tiles.tile_index(z, x, y) - if(this.freshnesses.has(tileId)) { + if (this.freshnesses.has(tileId)) { return this.freshnesses.get(tileId) } // recurse up - return this.freshnessFor(z - 1, Math.floor(x /2), Math.floor(y / 2)) - + return this.freshnessFor(z - 1, Math.floor(x / 2), Math.floor(y / 2)) + } } \ No newline at end of file diff --git a/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts b/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts index faeb5869a..dcc415f31 100644 --- a/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts +++ b/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts @@ -9,9 +9,8 @@ import {Tiles} from "../../../Models/TileRange"; * A tiled source which dynamically loads the required tiles at a fixed zoom level */ export default class DynamicTileSource implements TileHierarchy { - private readonly _loadedTiles = new Set(); - public readonly loadedTiles: Map; + private readonly _loadedTiles = new Set(); constructor( layer: FilteredLayer, @@ -24,7 +23,7 @@ export default class DynamicTileSource implements TileHierarchy() + this.loadedTiles = new Map() const neededTiles = state.locationControl.map( location => { if (!layer.isDisplayed.data) { @@ -54,14 +53,14 @@ export default class DynamicTileSource implements TileHierarchy { - console.log("Tiled geojson source ",layer.layerDef.id," needs", neededIndexes) + console.log("Tiled geojson source ", layer.layerDef.id, " needs", neededIndexes) if (neededIndexes === undefined) { return; } for (const neededIndex of neededIndexes) { self._loadedTiles.add(neededIndex) const src = constructTile(Tiles.tile_from_index(neededIndex)) - if(src !== undefined){ + if (src !== undefined) { self.loadedTiles.set(neededIndex, src) } } diff --git a/Logic/FeatureSource/TiledFeatureSource/FullNodeDatabaseSource.ts b/Logic/FeatureSource/TiledFeatureSource/FullNodeDatabaseSource.ts index 750f6d037..d02ae5858 100644 --- a/Logic/FeatureSource/TiledFeatureSource/FullNodeDatabaseSource.ts +++ b/Logic/FeatureSource/TiledFeatureSource/FullNodeDatabaseSource.ts @@ -19,7 +19,7 @@ export default class FullNodeDatabaseSource implements TileHierarchy = new UIEventSource(false) + public readonly downloadedTiles = new Set() + public rawDataHandlers: ((osmJson: any, tileId: number) => void)[] = [] + private readonly _backend: string; private readonly filteredLayers: UIEventSource; private readonly handleTile: (fs: (FeatureSourceForLayer & Tiled)) => void; private isActive: UIEventSource; @@ -28,10 +29,7 @@ export default class OsmFeatureSource { }, markTileVisited?: (tileId: number) => void }; - public readonly downloadedTiles = new Set() private readonly allowedTags: TagsFilter; - - public rawDataHandlers: ((osmJson: any, tileId: number) => void)[] = [] constructor(options: { handleTile: (tile: FeatureSourceForLayer & Tiled) => void; @@ -54,13 +52,13 @@ export default class OsmFeatureSource { if (options.isActive?.data === false) { return; } - + neededTiles = neededTiles.filter(tile => !self.downloadedTiles.has(tile)) - if(neededTiles.length == 0){ + if (neededTiles.length == 0) { return; } - + self.isRunning.setData(true) try { @@ -73,7 +71,7 @@ export default class OsmFeatureSource { } } catch (e) { console.error(e) - }finally { + } finally { console.log("Done") self.isRunning.setData(false) } @@ -111,7 +109,7 @@ export default class OsmFeatureSource { geojson.features = geojson.features.filter(feature => this.allowedTags.matchesProperties(feature.properties)) geojson.features.forEach(f => f.properties["_backend"] = this._backend) - + const index = Tiles.tile_index(z, x, y); new PerLayerFeatureSourceSplitter(this.filteredLayers, this.handleTile, diff --git a/Logic/FeatureSource/TiledFeatureSource/README.md b/Logic/FeatureSource/TiledFeatureSource/README.md index 93b51c6ad..914c1caf7 100644 --- a/Logic/FeatureSource/TiledFeatureSource/README.md +++ b/Logic/FeatureSource/TiledFeatureSource/README.md @@ -11,17 +11,14 @@ Currently, they are: When the data enters from Overpass or from the OSM-API, they are first distributed per layer: OVERPASS | ---PerLayerFeatureSource---> FeatureSourceForLayer[] -OSM | +OSM | The GeoJSon files (not tiled) are then added to this list A single FeatureSourcePerLayer is then further handled by splitting it into a tile hierarchy. - - In order to keep thins snappy, they are distributed over a tiled database per layer. - ## Notes `cached-featuresbookcases` is the old key used `cahced-features{themeid}` and should be cleaned up \ No newline at end of file diff --git a/Logic/FeatureSource/TiledFeatureSource/TileHierarchyMerger.ts b/Logic/FeatureSource/TiledFeatureSource/TileHierarchyMerger.ts index 6fd3dae65..716aefde0 100644 --- a/Logic/FeatureSource/TiledFeatureSource/TileHierarchyMerger.ts +++ b/Logic/FeatureSource/TiledFeatureSource/TileHierarchyMerger.ts @@ -8,9 +8,8 @@ import {BBox} from "../../BBox"; export class TileHierarchyMerger implements TileHierarchy { public readonly loadedTiles: Map = new Map(); - private readonly sources: Map> = new Map>(); - public readonly layer: FilteredLayer; + private readonly sources: Map> = new Map>(); private _handleTile: (src: FeatureSourceForLayer & IndexedFeatureSource, index: number) => void; constructor(layer: FilteredLayer, handleTile: (src: FeatureSourceForLayer & IndexedFeatureSource & Tiled, index: number) => void) { @@ -24,7 +23,7 @@ export class TileHierarchyMerger implements TileHierarchy> public readonly bbox: BBox; + public readonly tileIndex: number; private upper_left: TiledFeatureSource private upper_right: TiledFeatureSource private lower_left: TiledFeatureSource private lower_right: TiledFeatureSource private readonly maxzoom: number; private readonly options: TiledFeatureSourceOptions - public readonly tileIndex: number; private constructor(z: number, x: number, y: number, parent: TiledFeatureSource, options?: TiledFeatureSourceOptions) { this.z = z; @@ -92,25 +91,25 @@ export default class TiledFeatureSource implements Tiled, IndexedFeatureSource, return root; } - private isSplitNeeded(featureCount: number){ - if(this.upper_left !== undefined){ + private isSplitNeeded(featureCount: number) { + if (this.upper_left !== undefined) { // This tile has been split previously, so we keep on splitting return true; } - if(this.z >= this.maxzoom){ + if (this.z >= this.maxzoom) { // We are not allowed to split any further return false } - if(this.options.minZoomLevel !== undefined && this.z < this.options.minZoomLevel){ + if (this.options.minZoomLevel !== undefined && this.z < this.options.minZoomLevel) { // We must have at least this zoom level before we are allowed to start splitting return true } - + // To much features - we split return featureCount > this.maxFeatureCount - + } - + /*** * Adds the list of features to this hierarchy. * If there are too much features, the list will be broken down and distributed over the subtiles (only retaining features that don't fit a subtile on this level) @@ -121,7 +120,7 @@ export default class TiledFeatureSource implements Tiled, IndexedFeatureSource, if (features === undefined || features.length === 0) { return; } - + if (!this.isSplitNeeded(features.length)) { this.features.setData(features) return; @@ -155,7 +154,7 @@ export default class TiledFeatureSource implements Tiled, IndexedFeatureSource, } else { overlapsboundary.push(feature) } - }else if (this.options.minZoomLevel === undefined) { + } else if (this.options.minZoomLevel === undefined) { if (bbox.isContainedIn(this.upper_left.bbox)) { ulf.push(feature) } else if (bbox.isContainedIn(this.upper_right.bbox)) { diff --git a/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts b/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts index 900393c1e..c473491b2 100644 --- a/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts +++ b/Logic/FeatureSource/TiledFeatureSource/TiledFromLocalStorageSource.ts @@ -13,44 +13,6 @@ export default class TiledFromLocalStorageSource implements TileHierarchy void; private readonly undefinedTiles: Set; - public static GetFreshnesses(layerId: string): Map { - const prefix = SaveTileToLocalStorageActor.storageKey + "-" + layerId + "-" - const freshnesses = new Map() - for (const key of Object.keys(localStorage)) { - if (!(key.startsWith(prefix) && key.endsWith("-time"))) { - continue - } - const index = Number(key.substring(prefix.length, key.length - "-time".length)) - const time = Number(localStorage.getItem(key)) - const freshness = new Date() - freshness.setTime(time) - freshnesses.set(index, freshness) - } - return freshnesses - } - - - static cleanCacheForLayer(layer: LayerConfig) { - const now = new Date() - const prefix = SaveTileToLocalStorageActor.storageKey + "-" + layer.id + "-" - console.log("Cleaning tiles of ", prefix, "with max age",layer.maxAgeOfCache) - for (const key of Object.keys(localStorage)) { - if (!(key.startsWith(prefix) && key.endsWith("-time"))) { - continue - } - const index = Number(key.substring(prefix.length, key.length - "-time".length)) - const time = Number(localStorage.getItem(key)) - const timeDiff = (now.getTime() - time) / 1000 - - if(timeDiff >= layer.maxAgeOfCache){ - const k = prefix+index; - localStorage.removeItem(k) - localStorage.removeItem(k+"-format") - localStorage.removeItem(k+"-time") - } - } - } - constructor(layer: FilteredLayer, handleFeatureSource: (src: FeatureSourceForLayer & Tiled, index: number) => void, state: { @@ -110,6 +72,43 @@ export default class TiledFromLocalStorageSource implements TileHierarchy { + const prefix = SaveTileToLocalStorageActor.storageKey + "-" + layerId + "-" + const freshnesses = new Map() + for (const key of Object.keys(localStorage)) { + if (!(key.startsWith(prefix) && key.endsWith("-time"))) { + continue + } + const index = Number(key.substring(prefix.length, key.length - "-time".length)) + const time = Number(localStorage.getItem(key)) + const freshness = new Date() + freshness.setTime(time) + freshnesses.set(index, freshness) + } + return freshnesses + } + + static cleanCacheForLayer(layer: LayerConfig) { + const now = new Date() + const prefix = SaveTileToLocalStorageActor.storageKey + "-" + layer.id + "-" + console.log("Cleaning tiles of ", prefix, "with max age", layer.maxAgeOfCache) + for (const key of Object.keys(localStorage)) { + if (!(key.startsWith(prefix) && key.endsWith("-time"))) { + continue + } + const index = Number(key.substring(prefix.length, key.length - "-time".length)) + const time = Number(localStorage.getItem(key)) + const timeDiff = (now.getTime() - time) / 1000 + + if (timeDiff >= layer.maxAgeOfCache) { + const k = prefix + index; + localStorage.removeItem(k) + localStorage.removeItem(k + "-format") + localStorage.removeItem(k + "-time") + } + } + } + private loadTile(neededIndex: number) { try { const key = SaveTileToLocalStorageActor.storageKey + "-" + this.layer.layerDef.id + "-" + neededIndex diff --git a/Logic/GeoOperations.ts b/Logic/GeoOperations.ts index a4fd2ea35..4d89faa9f 100644 --- a/Logic/GeoOperations.ts +++ b/Logic/GeoOperations.ts @@ -1,8 +1,14 @@ import * as turf from '@turf/turf' import {BBox} from "./BBox"; +import togpx from "togpx" +import Constants from "../Models/Constants"; +import LayerConfig from "../Models/ThemeConfig/LayerConfig"; export class GeoOperations { + private static readonly _earthRadius = 6378137; + private static readonly _originShift = 2 * Math.PI * GeoOperations._earthRadius / 2; + static surfaceAreaInSqMeters(feature: any) { return turf.area(feature); } @@ -24,12 +30,12 @@ export class GeoOperations { } /** - * Returns the distance between the two points in kilometers + * Returns the distance between the two points in meters * @param lonlat0 * @param lonlat1 */ static distanceBetween(lonlat0: [number, number], lonlat1: [number, number]) { - return turf.distance(lonlat0, lonlat1) + return turf.distance(lonlat0, lonlat1) * 1000 } /** @@ -40,7 +46,7 @@ export class GeoOperations { * If 'feature' is a Polygon, overlapping points and points within the polygon will be returned * * If 'feature' is a point, it will return every feature the point is embedded in. Overlap will be undefined - * + * */ static calculateOverlap(feature: any, otherFeatures: any[]): { feat: any, overlap: number }[] { @@ -237,13 +243,13 @@ export class GeoOperations { * @param point Point defined as [lon, lat] */ public static nearestPoint(way, point: [number, number]) { - if(way.geometry.type === "Polygon"){ + if (way.geometry.type === "Polygon") { way = {...way} way.geometry = {...way.geometry} way.geometry.type = "LineString" way.geometry.coordinates = way.geometry.coordinates[0] } - + return turf.nearestPointOnLine(way, point, {units: "kilometers"}); } @@ -292,10 +298,6 @@ export class GeoOperations { return headerValuesOrdered.map(v => JSON.stringify(v)).join(",") + "\n" + lines.join("\n") } - - private static readonly _earthRadius = 6378137; - private static readonly _originShift = 2 * Math.PI * GeoOperations._earthRadius / 2; - //Converts given lat/lon in WGS84 Datum to XY in Spherical Mercator EPSG:900913 public static ConvertWgs84To900913(lonLat: [number, number]): [number, number] { const lon = lonLat[0]; @@ -315,11 +317,36 @@ export class GeoOperations { y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2); return [x, y]; } - - public static GeoJsonToWGS84(geojson){ + + public static GeoJsonToWGS84(geojson) { return turf.toWgs84(geojson) } + /** + * Tries to remove points which do not contribute much to the general outline. + * Points for which the angle is ~ 180° are removed + * @param coordinates + * @constructor + */ + public static SimplifyCoordinates(coordinates: [number, number][]) { + const newCoordinates = [] + for (let i = 1; i < coordinates.length - 1; i++) { + const coordinate = coordinates[i]; + const prev = coordinates[i - 1] + const next = coordinates[i + 1] + const b0 = turf.bearing(prev, coordinate, {final: true}) + const b1 = turf.bearing(coordinate, next) + + const diff = Math.abs(b1 - b0) + if (diff < 2) { + continue + } + newCoordinates.push(coordinate) + } + return newCoordinates + + } + /** * Calculates the intersection between two features. * Returns the length if intersecting a linestring and a (multi)polygon (in meters), returns a surface area (in m²) if intersecting two (multi)polygons @@ -412,31 +439,176 @@ export class GeoOperations { return undefined; } - /** - * Tries to remove points which do not contribute much to the general outline. - * Points for which the angle is ~ 180° are removed - * @param coordinates - * @constructor - */ - public static SimplifyCoordinates(coordinates: [number, number][]){ - const newCoordinates = [] - for (let i = 1; i < coordinates.length - 1; i++){ - const coordinate = coordinates[i]; - const prev = coordinates[i - 1] - const next = coordinates[i + 1] - const b0 = turf.bearing(prev, coordinate, {final: true}) - const b1 = turf.bearing(coordinate, next) + public static AsGpx(feature, generatedWithLayer?: LayerConfig){ + + const metadata = {} + const tags = feature.properties + + if(generatedWithLayer !== undefined){ - const diff = Math.abs(b1 - b0) - if(diff < 2){ - continue + metadata["name"] = generatedWithLayer.title?.GetRenderValue(tags)?.Subs(tags)?.txt + metadata["desc"] = "Generated with MapComplete layer "+generatedWithLayer.id + if(tags._backend?.contains("openstreetmap")){ + metadata["copyright"]= "Data copyrighted by OpenStreetMap-contributors, freely available under ODbL. See https://www.openstreetmap.org/copyright" + metadata["author"] = tags["_last_edit:contributor"] + metadata["link"]= "https://www.openstreetmap.org/"+tags.id + metadata["time"] = tags["_last_edit:timestamp"] + }else{ + metadata["time"] = new Date().toISOString() } - newCoordinates.push(coordinate) } - return newCoordinates - + + return togpx(feature, { + creator: "MapComplete "+Constants.vNumber, + metadata + }) } + public static IdentifieCommonSegments(coordinatess: [number,number][][] ): { + originalIndex: number, + segmentShardWith: number[], + coordinates: [] + }[]{ + + // An edge. Note that the edge might be reversed to fix the sorting condition: start[0] < end[0] && (start[0] != end[0] || start[0] < end[1]) + type edge = {start: [number, number], end: [number, number], intermediate: [number,number][], members: {index:number, isReversed: boolean}[]} + + // The strategy: + // 1. Index _all_ edges from _every_ linestring. Index them by starting key, gather which relations run over them + // 2. Join these edges back together - as long as their membership groups are the same + // 3. Convert to results + + const allEdgesByKey = new Map() + + for (let index = 0; index < coordinatess.length; index++){ + const coordinates = coordinatess[index]; + for (let i = 0; i < coordinates.length - 1; i++){ + + const c0 = coordinates[i]; + const c1 = coordinates[i + 1] + const isReversed = (c0[0] > c1[0]) || (c0[0] == c1[0] && c0[1] > c1[1]) + + let key : string + if(isReversed){ + key = ""+c1+";"+c0 + }else{ + key = ""+c0+";"+c1 + } + const member = {index, isReversed} + if(allEdgesByKey.has(key)){ + allEdgesByKey.get(key).members.push(member) + continue + } + + let edge : edge; + if(!isReversed){ + edge = { + start : c0, + end: c1, + members: [member], + intermediate: [] + } + }else{ + edge = { + start : c1, + end: c0, + members: [member], + intermediate: [] + } + } + allEdgesByKey.set(key, edge) + + } + } + + // Lets merge them back together! + + let didMergeSomething = false; + let allMergedEdges = Array.from(allEdgesByKey.values()) + const allEdgesByStartPoint = new Map() + for (const edge of allMergedEdges) { + + edge.members.sort((m0, m1) => m0.index - m1.index) + + const kstart = edge.start+"" + if(!allEdgesByStartPoint.has(kstart)){ + allEdgesByStartPoint.set(kstart, []) + } + allEdgesByStartPoint.get(kstart).push(edge) + } + + + function membersAreCompatible(first:edge, second:edge): boolean{ + // There must be an exact match between the members + if(first.members === second.members){ + return true + } + + if(first.members.length !== second.members.length){ + return false + } + + // Members are sorted and have the same length, so we can check quickly + for (let i = 0; i < first.members.length; i++) { + const m0 = first.members[i] + const m1 = second.members[i] + if(m0.index !== m1.index || m0.isReversed !== m1.isReversed){ + return false + } + } + + // Allrigth, they are the same, lets mark this permanently + second.members = first.members + return true + + } + + do{ + didMergeSomething = false + // We use 'allMergedEdges' as our running list + const consumed = new Set() + for (const edge of allMergedEdges) { + // Can we make this edge longer at the end? + if(consumed.has(edge)){ + continue + } + + console.log("Considering edge", edge) + const matchingEndEdges = allEdgesByStartPoint.get(edge.end+"") + console.log("Matchign endpoints:", matchingEndEdges) + if(matchingEndEdges === undefined){ + continue + } + + + for (let i = 0; i < matchingEndEdges.length; i++){ + const endEdge = matchingEndEdges[i]; + + if(consumed.has(endEdge)){ + continue + } + + if(!membersAreCompatible(edge, endEdge)){ + continue + } + + // We can make the segment longer! + didMergeSomething = true + console.log("Merging ", edge, "with ", endEdge) + edge.intermediate.push(edge.end) + edge.end = endEdge.end + consumed.add(endEdge) + matchingEndEdges.splice(i, 1) + break; + } + } + + allMergedEdges = allMergedEdges.filter(edge => !consumed.has(edge)); + + }while(didMergeSomething) + + return [] + } } diff --git a/Logic/ImageProviders/AllImageProviders.ts b/Logic/ImageProviders/AllImageProviders.ts index 5d428f262..3abdc49d0 100644 --- a/Logic/ImageProviders/AllImageProviders.ts +++ b/Logic/ImageProviders/AllImageProviders.ts @@ -19,9 +19,9 @@ export default class AllImageProviders { new GenericImageProvider( [].concat(...Imgur.defaultValuePrefix, ...WikimediaImageProvider.commonsPrefixes, ...Mapillary.valuePrefixes) ) - + ] - + public static defaultKeys = [].concat(AllImageProviders.ImageAttributionSource.map(provider => provider.defaultKeyPrefixes)) @@ -32,7 +32,7 @@ export default class AllImageProviders { return undefined; } - const cacheKey = tags.data.id+tagKey + const cacheKey = tags.data.id + tagKey const cached = this._cache.get(cacheKey) if (cached !== undefined) { return cached @@ -43,22 +43,22 @@ export default class AllImageProviders { this._cache.set(cacheKey, source) const allSources = [] for (const imageProvider of AllImageProviders.ImageAttributionSource) { - + let prefixes = imageProvider.defaultKeyPrefixes - if(tagKey !== undefined){ + if (tagKey !== undefined) { prefixes = tagKey } - + const singleSource = imageProvider.GetRelevantUrls(tags, { prefixes: prefixes }) allSources.push(singleSource) singleSource.addCallbackAndRunD(_ => { - const all : ProvidedImage[] = [].concat(...allSources.map(source => source.data)) + const all: ProvidedImage[] = [].concat(...allSources.map(source => source.data)) const uniq = [] const seen = new Set() for (const img of all) { - if(seen.has(img.url)){ + if (seen.has(img.url)) { continue } seen.add(img.url) diff --git a/Logic/ImageProviders/GenericImageProvider.ts b/Logic/ImageProviders/GenericImageProvider.ts index 2f2dab322..02011687d 100644 --- a/Logic/ImageProviders/GenericImageProvider.ts +++ b/Logic/ImageProviders/GenericImageProvider.ts @@ -10,24 +10,19 @@ export default class GenericImageProvider extends ImageProvider { this._valuePrefixBlacklist = valuePrefixBlacklist; } - - protected DownloadAttribution(url: string) { - return undefined - } - async ExtractUrls(key: string, value: string): Promise[]> { if (this._valuePrefixBlacklist.some(prefix => value.startsWith(prefix))) { return [] } - - try{ + + try { new URL(value) - }catch (_){ + } catch (_) { // Not a valid URL return [] } - + return [Promise.resolve({ key: key, url: value, @@ -39,5 +34,9 @@ export default class GenericImageProvider extends ImageProvider { return undefined; } + protected DownloadAttribution(url: string) { + return undefined + } + } \ No newline at end of file diff --git a/Logic/ImageProviders/ImageProvider.ts b/Logic/ImageProviders/ImageProvider.ts index 592f9a1f0..c1d90578e 100644 --- a/Logic/ImageProviders/ImageProvider.ts +++ b/Logic/ImageProviders/ImageProvider.ts @@ -14,7 +14,7 @@ export default abstract class ImageProvider { public abstract readonly defaultKeyPrefixes: string[] private _cache = new Map>() - + GetAttributionFor(url: string): UIEventSource { const cached = this._cache.get(url); if (cached !== undefined) { @@ -27,8 +27,6 @@ export default abstract class ImageProvider { public abstract SourceIcon(backlinkSource?: string): BaseUIElement; - protected abstract DownloadAttribution(url: string): Promise; - /** * Given a properies object, maps it onto _all_ the available pictures for this imageProvider */ @@ -77,4 +75,6 @@ export default abstract class ImageProvider { public abstract ExtractUrls(key: string, value: string): Promise[]>; + protected abstract DownloadAttribution(url: string): Promise; + } \ No newline at end of file diff --git a/Logic/ImageProviders/Imgur.ts b/Logic/ImageProviders/Imgur.ts index 289dad1f8..b06b2a6c0 100644 --- a/Logic/ImageProviders/Imgur.ts +++ b/Logic/ImageProviders/Imgur.ts @@ -7,10 +7,9 @@ import {LicenseInfo} from "./LicenseInfo"; export class Imgur extends ImageProvider { - public static readonly defaultValuePrefix = ["https://i.imgur.com"] - public readonly defaultKeyPrefixes: string[] = ["image"]; - + public static readonly defaultValuePrefix = ["https://i.imgur.com"] public static readonly singleton = new Imgur(); + public readonly defaultKeyPrefixes: string[] = ["image"]; private constructor() { super(); @@ -89,6 +88,17 @@ export class Imgur extends ImageProvider { return undefined; } + public async ExtractUrls(key: string, value: string): Promise[]> { + if (Imgur.defaultValuePrefix.some(prefix => value.startsWith(prefix))) { + return [Promise.resolve({ + url: value, + key: key, + provider: this + })] + } + return [] + } + protected DownloadAttribution: (url: string) => Promise = async (url: string) => { const hash = url.substr("https://i.imgur.com/".length).split(".jpg")[0]; @@ -112,16 +122,5 @@ export class Imgur extends ImageProvider { return licenseInfo } - public async ExtractUrls(key: string, value: string): Promise[]> { - if (Imgur.defaultValuePrefix.some(prefix => value.startsWith(prefix))) { - return [Promise.resolve({ - url: value, - key: key, - provider: this - })] - } - return [] - } - } \ No newline at end of file diff --git a/Logic/ImageProviders/ImgurUploader.ts b/Logic/ImageProviders/ImgurUploader.ts index 10bf43609..65cb8c9f0 100644 --- a/Logic/ImageProviders/ImgurUploader.ts +++ b/Logic/ImageProviders/ImgurUploader.ts @@ -6,9 +6,8 @@ export default class ImgurUploader { public readonly queue: UIEventSource = new UIEventSource([]); public readonly failed: UIEventSource = new UIEventSource([]); public readonly success: UIEventSource = new UIEventSource([]); - private readonly _handleSuccessUrl: (string) => void; - public maxFileSizeInMegabytes = 10; + private readonly _handleSuccessUrl: (string) => void; constructor(handleSuccessUrl: (string) => void) { this._handleSuccessUrl = handleSuccessUrl; diff --git a/Logic/ImageProviders/Mapillary.ts b/Logic/ImageProviders/Mapillary.ts index 07e0473d4..1486c73a2 100644 --- a/Logic/ImageProviders/Mapillary.ts +++ b/Logic/ImageProviders/Mapillary.ts @@ -7,48 +7,31 @@ import Constants from "../../Models/Constants"; export class Mapillary extends ImageProvider { - defaultKeyPrefixes = ["mapillary","image"] - public static readonly singleton = new Mapillary(); private static readonly valuePrefix = "https://a.mapillary.com" - public static readonly valuePrefixes = [Mapillary.valuePrefix, "http://mapillary.com","https://mapillary.com","http://www.mapillary.com","https://www.mapillary.com"] + public static readonly valuePrefixes = [Mapillary.valuePrefix, "http://mapillary.com", "https://mapillary.com", "http://www.mapillary.com", "https://www.mapillary.com"] + defaultKeyPrefixes = ["mapillary", "image"] + + /** + * Returns the correct key for API v4.0 + */ + private static ExtractKeyFromURL(value: string): number { + + let key: string; - private static ExtractKeyFromURL(value: string, failIfNoMath = false): { - key: string, - isApiv4?: boolean - } { - - if (value.startsWith(Mapillary.valuePrefix)) { - const key = value.substring(0, value.lastIndexOf("?")).substring(value.lastIndexOf("/") + 1) - return {key: key, isApiv4: !isNaN(Number(key))}; - } const newApiFormat = value.match(/https?:\/\/www.mapillary.com\/app\/\?pKey=([0-9]*)/) if (newApiFormat !== null) { - return {key: newApiFormat[1], isApiv4: true} + key = newApiFormat[1] + } else if (value.startsWith(Mapillary.valuePrefix)) { + key = value.substring(0, value.lastIndexOf("?")).substring(value.lastIndexOf("/") + 1) } - const mapview = value.match(/https?:\/\/www.mapillary.com\/map\/im\/(.*)/) - if (mapview !== null) { - const key = mapview[1] - return {key: key, isApiv4: !isNaN(Number(key))}; + const keyAsNumber = Number(key) + if (!isNaN(keyAsNumber)) { + return keyAsNumber } - - if (value.toLowerCase().startsWith("https://www.mapillary.com/map/im/")) { - // Extract the key of the image - value = value.substring("https://www.mapillary.com/map/im/".length); - } - - const matchApi = value.match(/https?:\/\/images.mapillary.com\/([^/]*)(&.*)?/) - if (matchApi !== null) { - return {key: matchApi[1]}; - } - - if(failIfNoMath){ - return undefined; - } - - return {key: value, isApiv4: !isNaN(Number(value))}; + return undefined } SourceIcon(backlinkSource?: string): BaseUIElement { @@ -59,55 +42,28 @@ export class Mapillary extends ImageProvider { return [this.PrepareUrlAsync(key, value)] } - private async PrepareUrlAsync(key: string, value: string): Promise { - const failIfNoMatch = key.indexOf("mapillary") < 0 - const keyV = Mapillary.ExtractKeyFromURL(value, failIfNoMatch) - if(keyV === undefined){ - return undefined; - } - - if (!keyV.isApiv4) { - const url = `https://images.mapillary.com/${keyV.key}/thumb-640.jpg?client_id=${Constants.mapillary_client_token_v3}` - return { - url: url, - provider: this, - key: key - } - } else { - const mapillaryId = keyV.key; - const metadataUrl = 'https://graph.mapillary.com/' + mapillaryId + '?fields=thumb_1024_url&&access_token=' + Constants.mapillary_client_token_v4; - const response = await Utils.downloadJson(metadataUrl) - const url = response["thumb_1024_url"]; - return { - url: url, - provider: this, - key: key - } - } - } - protected async DownloadAttribution(url: string): Promise { - - const keyV = Mapillary.ExtractKeyFromURL(url) - if (keyV.isApiv4) { - const license = new LicenseInfo() - license.artist = "Contributor name unavailable"; - license.license = "CC BY-SA 4.0"; - // license.license = "Creative Commons Attribution-ShareAlike 4.0 International License"; - license.attributionRequired = true; - return license - - } - const key = keyV.key - - const metadataURL = `https://a.mapillary.com/v3/images/${key}?client_id=TXhLaWthQ1d4RUg0czVxaTVoRjFJZzowNDczNjUzNmIyNTQyYzI2` - const data = await Utils.downloadJson(metadataURL) - const license = new LicenseInfo(); - license.artist = data.properties?.username; - license.licenseShortName = "CC BY-SA 4.0"; - license.license = "Creative Commons Attribution-ShareAlike 4.0 International License"; + const license = new LicenseInfo() + license.artist = "Contributor name unavailable"; + license.license = "CC BY-SA 4.0"; + // license.license = "Creative Commons Attribution-ShareAlike 4.0 International License"; license.attributionRequired = true; - return license } + + private async PrepareUrlAsync(key: string, value: string): Promise { + const mapillaryId = Mapillary.ExtractKeyFromURL(value) + if (mapillaryId === undefined) { + return undefined; + } + + const metadataUrl = 'https://graph.mapillary.com/' + mapillaryId + '?fields=thumb_1024_url&&access_token=' + Constants.mapillary_client_token_v4; + const response = await Utils.downloadJson(metadataUrl) + const url = response["thumb_1024_url"]; + return { + url: url, + provider: this, + key: key + } + } } \ No newline at end of file diff --git a/Logic/ImageProviders/WikidataImageProvider.ts b/Logic/ImageProviders/WikidataImageProvider.ts index 139201578..c3d72d064 100644 --- a/Logic/ImageProviders/WikidataImageProvider.ts +++ b/Logic/ImageProviders/WikidataImageProvider.ts @@ -1,4 +1,3 @@ -import {Utils} from "../../Utils"; import ImageProvider, {ProvidedImage} from "./ImageProvider"; import BaseUIElement from "../../UI/BaseUIElement"; import Svg from "../../Svg"; @@ -7,10 +6,6 @@ import Wikidata from "../Web/Wikidata"; export class WikidataImageProvider extends ImageProvider { - public SourceIcon(backlinkSource?: string): BaseUIElement { - throw Svg.wikidata_svg(); - } - public static readonly singleton = new WikidataImageProvider() public readonly defaultKeyPrefixes = ["wikidata"] @@ -18,17 +13,17 @@ export class WikidataImageProvider extends ImageProvider { super() } - protected DownloadAttribution(url: string): Promise { - throw new Error("Method not implemented; shouldn't be needed!"); + public SourceIcon(backlinkSource?: string): BaseUIElement { + throw Svg.wikidata_svg(); } public async ExtractUrls(key: string, value: string): Promise[]> { const entity = await Wikidata.LoadWikidataEntryAsync(value) - if(entity === undefined){ + if (entity === undefined) { return [] } - - const allImages : Promise[] = [] + + const allImages: Promise[] = [] // P18 is the claim 'depicted in this image' for (const img of Array.from(entity.claims.get("P18") ?? [])) { const promises = await WikimediaImageProvider.singleton.ExtractUrls(undefined, img) @@ -36,19 +31,23 @@ export class WikidataImageProvider extends ImageProvider { } // P373 is 'commons category' for (let cat of Array.from(entity.claims.get("P373") ?? [])) { - if(!cat.startsWith("Category:")){ - cat = "Category:"+cat + if (!cat.startsWith("Category:")) { + cat = "Category:" + cat } const promises = await WikimediaImageProvider.singleton.ExtractUrls(undefined, cat) allImages.push(...promises) } - + const commons = entity.commons if (commons !== undefined && (commons.startsWith("Category:") || commons.startsWith("File:"))) { - const promises = await WikimediaImageProvider.singleton.ExtractUrls(undefined , commons) + const promises = await WikimediaImageProvider.singleton.ExtractUrls(undefined, commons) allImages.push(...promises) } return allImages } + protected DownloadAttribution(url: string): Promise { + throw new Error("Method not implemented; shouldn't be needed!"); + } + } \ No newline at end of file diff --git a/Logic/ImageProviders/WikimediaImageProvider.ts b/Logic/ImageProviders/WikimediaImageProvider.ts index ea122f491..ec9920640 100644 --- a/Logic/ImageProviders/WikimediaImageProvider.ts +++ b/Logic/ImageProviders/WikimediaImageProvider.ts @@ -12,10 +12,10 @@ import Wikimedia from "../Web/Wikimedia"; export class WikimediaImageProvider extends ImageProvider { - private readonly commons_key = "wikimedia_commons" - public readonly defaultKeyPrefixes = [this.commons_key,"image"] public static readonly singleton = new WikimediaImageProvider(); public static readonly commonsPrefixes = ["https://commons.wikimedia.org/wiki/", "https://upload.wikimedia.org", "File:"] + private readonly commons_key = "wikimedia_commons" + public readonly defaultKeyPrefixes = [this.commons_key, "image"] private constructor() { super(); @@ -30,6 +30,40 @@ export class WikimediaImageProvider extends ImageProvider { } + private static PrepareUrl(value: string): string { + + if (value.toLowerCase().startsWith("https://commons.wikimedia.org/wiki/")) { + return value; + } + return (`https://commons.wikimedia.org/wiki/Special:FilePath/${encodeURIComponent(value)}?width=500&height=400`) + } + + private static startsWithCommonsPrefix(value: string): boolean { + return WikimediaImageProvider.commonsPrefixes.some(prefix => value.startsWith(prefix)) + } + + private static removeCommonsPrefix(value: string): string { + if (value.startsWith("https://upload.wikimedia.org/")) { + value = value.substring(value.lastIndexOf("/") + 1) + value = decodeURIComponent(value) + if (!value.startsWith("File:")) { + value = "File:" + value + } + return value; + } + + for (const prefix of WikimediaImageProvider.commonsPrefixes) { + if (value.startsWith(prefix)) { + let part = value.substr(prefix.length) + if (prefix.startsWith("http")) { + part = decodeURIComponent(part) + } + return part + } + } + return value; + } + SourceIcon(backlink: string): BaseUIElement { const img = Svg.wikimedia_commons_white_svg() .SetStyle("width:2em;height: 2em"); @@ -44,12 +78,38 @@ export class WikimediaImageProvider extends ImageProvider { } - private static PrepareUrl(value: string): string { + public PrepUrl(value: string): ProvidedImage { + const hasCommonsPrefix = WikimediaImageProvider.startsWithCommonsPrefix(value) + value = WikimediaImageProvider.removeCommonsPrefix(value) - if (value.toLowerCase().startsWith("https://commons.wikimedia.org/wiki/")) { - return value; + if (value.startsWith("File:")) { + return this.UrlForImage(value) } - return (`https://commons.wikimedia.org/wiki/Special:FilePath/${encodeURIComponent(value)}?width=500&height=400`) + + // We do a last effort and assume this is a file + return this.UrlForImage("File:" + value) + } + + public async ExtractUrls(key: string, value: string): Promise[]> { + const hasCommonsPrefix = WikimediaImageProvider.startsWithCommonsPrefix(value) + if (key !== undefined && key !== this.commons_key && !hasCommonsPrefix) { + return [] + } + + value = WikimediaImageProvider.removeCommonsPrefix(value) + if (value.startsWith("Category:")) { + const urls = await Wikimedia.GetCategoryContents(value) + return urls.filter(url => url.startsWith("File:")).map(image => Promise.resolve(this.UrlForImage(image))) + } + if (value.startsWith("File:")) { + return [Promise.resolve(this.UrlForImage(value))] + } + if (value.startsWith("http")) { + // PRobably an error + return [] + } + // We do a last effort and assume this is a file + return [Promise.resolve(this.UrlForImage("File:" + value))] } protected async DownloadAttribution(filename: string): Promise { @@ -66,24 +126,24 @@ export class WikimediaImageProvider extends ImageProvider { const data = await Utils.downloadJson(url) const licenseInfo = new LicenseInfo(); const pageInfo = data.query.pages[-1] - if(pageInfo === undefined){ + if (pageInfo === undefined) { return undefined; } - + const license = (pageInfo.imageinfo ?? [])[0]?.extmetadata; if (license === undefined) { - console.warn("The file", filename ,"has no usable metedata or license attached... Please fix the license info file yourself!") + console.warn("The file", filename, "has no usable metedata or license attached... Please fix the license info file yourself!") return undefined; } let title = pageInfo.title - if(title.startsWith("File:")){ - title= title.substr("File:".length) + if (title.startsWith("File:")) { + title = title.substr("File:".length) } - if(title.endsWith(".jpg") || title.endsWith(".png")){ + if (title.endsWith(".jpg") || title.endsWith(".png")) { title = title.substring(0, title.length - 4) } - + licenseInfo.title = title licenseInfo.artist = license.Artist?.value; licenseInfo.license = license.License?.value; @@ -103,66 +163,6 @@ export class WikimediaImageProvider extends ImageProvider { } return {url: WikimediaImageProvider.PrepareUrl(image), key: undefined, provider: this} } - - private static startsWithCommonsPrefix(value: string): boolean{ - return WikimediaImageProvider.commonsPrefixes.some(prefix => value.startsWith(prefix)) - } - - private static removeCommonsPrefix(value: string): string{ - if(value.startsWith("https://upload.wikimedia.org/")){ - value = value.substring(value.lastIndexOf("/") + 1) - value = decodeURIComponent(value) - if(!value.startsWith("File:")){ - value = "File:"+value - } - return value; - } - - for (const prefix of WikimediaImageProvider.commonsPrefixes) { - if(value.startsWith(prefix)){ - let part = value.substr(prefix.length) - if(prefix.startsWith("http")){ - part = decodeURIComponent(part) - } - return part - } - } - return value; - } - - public PrepUrl(value: string): ProvidedImage { - const hasCommonsPrefix = WikimediaImageProvider.startsWithCommonsPrefix(value) - value = WikimediaImageProvider.removeCommonsPrefix(value) - - if (value.startsWith("File:")) { - return this.UrlForImage(value) - } - - // We do a last effort and assume this is a file - return this.UrlForImage("File:" + value) - } - - public async ExtractUrls(key: string, value: string): Promise[]> { - const hasCommonsPrefix = WikimediaImageProvider.startsWithCommonsPrefix(value) - if(key !== undefined && key !== this.commons_key && !hasCommonsPrefix){ - return [] - } - - value = WikimediaImageProvider.removeCommonsPrefix(value) - if (value.startsWith("Category:")) { - const urls = await Wikimedia.GetCategoryContents(value) - return urls.filter(url => url.startsWith("File:")).map(image => Promise.resolve(this.UrlForImage(image))) - } - if (value.startsWith("File:")) { - return [Promise.resolve(this.UrlForImage(value))] - } - if (value.startsWith("http")) { - // PRobably an error - return [] - } - // We do a last effort and assume this is a file - return [Promise.resolve(this.UrlForImage("File:" + value))] - } } diff --git a/Logic/MetaTagging.ts b/Logic/MetaTagging.ts index a6e3cc44b..0ac9ba4e1 100644 --- a/Logic/MetaTagging.ts +++ b/Logic/MetaTagging.ts @@ -18,7 +18,7 @@ export default class MetaTagging { /** * This method (re)calculates all metatags and calculated tags on every given object. * The given features should be part of the given layer - * + * * Returns true if at least one feature has changed properties */ public static addMetatags(features: { feature: any; freshness: Date }[], @@ -63,15 +63,15 @@ export default class MetaTagging { // All keys are already defined, we probably already ran this one continue } - - if(metatag.isLazy){ + + if (metatag.isLazy) { somethingChanged = true; - + metatag.applyMetaTagsOnFeature(feature, freshness, layer) - - }else{ - - + + } else { + + const newValueAdded = metatag.applyMetaTagsOnFeature(feature, freshness, layer) /* Note that the expression: * `somethingChanged = newValueAdded || metatag.applyMetaTagsOnFeature(feature, freshness)` @@ -146,12 +146,13 @@ export default class MetaTagging { } } } - - }} ) + + } + }) } - - + + functions.push(f) } return functions; diff --git a/Logic/Osm/Actions/ChangeDescription.ts b/Logic/Osm/Actions/ChangeDescription.ts index c8a262d6f..0f03caf0b 100644 --- a/Logic/Osm/Actions/ChangeDescription.ts +++ b/Logic/Osm/Actions/ChangeDescription.ts @@ -16,13 +16,17 @@ export interface ChangeDescription { /** * The type of the change */ - changeType: "answer" | "create" | "split" | "delete" | "move" | "import" | string | null + changeType: "answer" | "create" | "split" | "delete" | "move" | "import" | string | null /** * THe motivation for the change, e.g. 'deleted because does not exist anymore' */ - specialMotivation?: string + specialMotivation?: string, + /** + * Added by Changes.ts + */ + distanceToObject?: number }, - + /** * Identifier of the object */ @@ -32,11 +36,11 @@ export interface ChangeDescription { * Negative for new objects */ id: number, - + /** * All changes to tags * v = "" or v = undefined to erase this tag - * + * * Note that this list will only contain the _changes_ to the tags, not the full set of tags */ tags?: { k: string, v: string }[], @@ -65,9 +69,9 @@ export interface ChangeDescription { doDelete?: boolean } -export class ChangeDescriptionTools{ - - public static getGeojsonGeometry(change: ChangeDescription): any{ +export class ChangeDescriptionTools { + + public static getGeojsonGeometry(change: ChangeDescription): any { switch (change.type) { case "node": const n = new OsmNode(change.id) diff --git a/Logic/Osm/Actions/ChangeLocationAction.ts b/Logic/Osm/Actions/ChangeLocationAction.ts index 9bb53b427..54141d548 100644 --- a/Logic/Osm/Actions/ChangeLocationAction.ts +++ b/Logic/Osm/Actions/ChangeLocationAction.ts @@ -11,7 +11,7 @@ export default class ChangeLocationAction extends OsmChangeAction { theme: string, reason: string }) { - super(); + super(id,true); if (!id.startsWith("node/")) { throw "Invalid ID: only 'node/number' is accepted" } @@ -19,7 +19,7 @@ export default class ChangeLocationAction extends OsmChangeAction { this._newLonLat = newLonLat; this._meta = meta; } - + protected async CreateChangeDescriptions(changes: Changes): Promise { const d: ChangeDescription = { diff --git a/Logic/Osm/Actions/ChangeTagAction.ts b/Logic/Osm/Actions/ChangeTagAction.ts index 862d36629..013b90a46 100644 --- a/Logic/Osm/Actions/ChangeTagAction.ts +++ b/Logic/Osm/Actions/ChangeTagAction.ts @@ -7,19 +7,19 @@ export default class ChangeTagAction extends OsmChangeAction { private readonly _elementId: string; private readonly _tagsFilter: TagsFilter; private readonly _currentTags: any; - private readonly _meta: {theme: string, changeType: string}; + private readonly _meta: { theme: string, changeType: string }; constructor(elementId: string, tagsFilter: TagsFilter, currentTags: any, meta: { theme: string, changeType: "answer" | "soft-delete" | "add-image" | string }) { - super(); + super(elementId, true); this._elementId = elementId; this._tagsFilter = tagsFilter; this._currentTags = currentTags; this._meta = meta; } - + /** * Doublechecks that no stupid values are added */ @@ -31,11 +31,11 @@ export default class ChangeTagAction extends OsmChangeAction { return undefined; } if (value === undefined || value === null) { - console.error("Invalid value for ", key,":", value); + console.error("Invalid value for ", key, ":", value); return undefined; } - - if(typeof value !== "string"){ + + if (typeof value !== "string") { console.error("Invalid value for ", key, "as it is not a string:", value) return undefined; } @@ -53,7 +53,7 @@ export default class ChangeTagAction extends OsmChangeAction { const type = typeId[0] const id = Number(typeId [1]) return [{ - type: <"node"|"way"|"relation"> type, + type: <"node" | "way" | "relation">type, id: id, tags: changedTags, meta: this._meta diff --git a/Logic/Osm/Actions/CreateNewNodeAction.ts b/Logic/Osm/Actions/CreateNewNodeAction.ts index b8e0f0171..304db374f 100644 --- a/Logic/Osm/Actions/CreateNewNodeAction.ts +++ b/Logic/Osm/Actions/CreateNewNodeAction.ts @@ -31,7 +31,7 @@ export default class CreateNewNodeAction extends OsmChangeAction { reusePointWithinMeters?: number, theme: string, changeType: "create" | "import" | null }) { - super() + super(null,basicTags !== undefined && basicTags.length > 0) this._basicTags = basicTags; this._lat = lat; this._lon = lon; @@ -111,12 +111,12 @@ export default class CreateNewNodeAction extends OsmChangeAction { // We check that it isn't close to an already existing point let reusedPointId = undefined; const prev = <[number, number]>geojson.geometry.coordinates[index] - if (GeoOperations.distanceBetween(prev, <[number, number]>projected.geometry.coordinates) * 1000 < this._reusePointDistance) { + if (GeoOperations.distanceBetween(prev, <[number, number]>projected.geometry.coordinates) < this._reusePointDistance) { // We reuse this point instead! reusedPointId = this._snapOnto.nodes[index] } const next = <[number, number]>geojson.geometry.coordinates[index + 1] - if (GeoOperations.distanceBetween(next, <[number, number]>projected.geometry.coordinates) * 1000 < this._reusePointDistance) { + if (GeoOperations.distanceBetween(next, <[number, number]>projected.geometry.coordinates) < this._reusePointDistance) { // We reuse this point instead! reusedPointId = this._snapOnto.nodes[index + 1] } @@ -156,7 +156,7 @@ export default class CreateNewNodeAction extends OsmChangeAction { private setElementId(id: number) { this.newElementIdNumber = id; - this.newElementId = "node/"+id + this.newElementId = "node/" + id if (!this._reusePreviouslyCreatedPoint) { return } diff --git a/Logic/Osm/Actions/CreateNewWayAction.ts b/Logic/Osm/Actions/CreateNewWayAction.ts index 48b7ec7fb..ef10d417f 100644 --- a/Logic/Osm/Actions/CreateNewWayAction.ts +++ b/Logic/Osm/Actions/CreateNewWayAction.ts @@ -24,13 +24,13 @@ export default class CreateNewWayAction extends OsmChangeAction { options: { theme: string }) { - super() + super(null,true) this.coordinates = coordinates; this.tags = tags; this._options = options; } - protected async CreateChangeDescriptions(changes: Changes): Promise { + public async CreateChangeDescriptions(changes: Changes): Promise { const newElements: ChangeDescription[] = [] @@ -46,7 +46,7 @@ export default class CreateNewWayAction extends OsmChangeAction { changeType: null, theme: this._options.theme }) - await changes.applyAction(newPoint) + newElements.push(...await newPoint.CreateChangeDescriptions(changes)) pointIds.push(newPoint.newElementIdNumber) } diff --git a/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts b/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts index a411bee82..0ed45ae3d 100644 --- a/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts +++ b/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts @@ -46,7 +46,7 @@ export default class CreateWayWithPointReuseAction extends OsmChangeAction { state: FeaturePipelineState, config: MergePointConfig[] ) { - super(); + super(null,true); this._tags = tags; this._state = state; this._config = config; @@ -163,17 +163,18 @@ export default class CreateWayWithPointReuseAction extends OsmChangeAction { }) allChanges.push(...(await newNodeAction.CreateChangeDescriptions(changes))) - + nodeIdsToUse.push({ lat, lon, - nodeId : newNodeAction.newElementIdNumber}) + nodeId: newNodeAction.newElementIdNumber + }) continue - + } - + const closestPoint = info.closebyNodes[0] const id = Number(closestPoint.node.properties.id.split("/")[1]) - if(closestPoint.config.mode === "move_osm_point"){ + if (closestPoint.config.mode === "move_osm_point") { allChanges.push({ type: "node", id, @@ -194,8 +195,7 @@ export default class CreateWayWithPointReuseAction extends OsmChangeAction { theme }) - allChanges.push(...(await newWay.Perform(changes))) - + allChanges.push(...(await newWay.CreateChangeDescriptions(changes))) return allChanges } @@ -225,7 +225,7 @@ export default class CreateWayWithPointReuseAction extends OsmChangeAction { const coor = coordinates[i] // Check closeby (and probably identical) point further in the coordinate list, mark them as duplicate for (let j = i + 1; j < coordinates.length; j++) { - if (1000 * GeoOperations.distanceBetween(coor, coordinates[j]) < 0.1) { + if (GeoOperations.distanceBetween(coor, coordinates[j]) < 0.1) { coordinateInfo[j] = { lngLat: coor, identicalTo: i @@ -244,7 +244,7 @@ export default class CreateWayWithPointReuseAction extends OsmChangeAction { }[] = [] for (const node of allNodes) { const center = node.geometry.coordinates - const d = 1000 * GeoOperations.distanceBetween(coor, center) + const d = GeoOperations.distanceBetween(coor, center) if (d > maxDistance) { continue } diff --git a/Logic/Osm/Actions/DeleteAction.ts b/Logic/Osm/Actions/DeleteAction.ts index 34adc50e7..a5be01448 100644 --- a/Logic/Osm/Actions/DeleteAction.ts +++ b/Logic/Osm/Actions/DeleteAction.ts @@ -27,7 +27,7 @@ export default class DeleteAction extends OsmChangeAction { specialMotivation: string }, hardDelete: boolean) { - super() + super(id,true) this._id = id; this._hardDelete = hardDelete; this.meta = {...meta, changeType: "deletion"}; diff --git a/Logic/Osm/Actions/OsmChangeAction.ts b/Logic/Osm/Actions/OsmChangeAction.ts index 784b192ba..13a31a76a 100644 --- a/Logic/Osm/Actions/OsmChangeAction.ts +++ b/Logic/Osm/Actions/OsmChangeAction.ts @@ -8,6 +8,18 @@ import {ChangeDescription} from "./ChangeDescription"; export default abstract class OsmChangeAction { private isUsed = false + public readonly trackStatistics: boolean; + /** + * The ID of the object that is the center of this change. + * Null if the action creates a new object + * Undefined if such an id does not make sense + */ + public readonly mainObjectId: string; + + constructor(mainObjectId: string, trackStatistics: boolean = true) { + this.trackStatistics = trackStatistics; + this.mainObjectId = mainObjectId + } public Perform(changes: Changes) { if (this.isUsed) { @@ -18,6 +30,4 @@ export default abstract class OsmChangeAction { } protected abstract CreateChangeDescriptions(changes: Changes): Promise - - } \ No newline at end of file diff --git a/Logic/Osm/Actions/RelationSplitHandler.ts b/Logic/Osm/Actions/RelationSplitHandler.ts index 463674347..4cc5a0d0e 100644 --- a/Logic/Osm/Actions/RelationSplitHandler.ts +++ b/Logic/Osm/Actions/RelationSplitHandler.ts @@ -10,16 +10,16 @@ export interface RelationSplitInput { originalNodes: number[], allWaysNodesInOrder: number[][] } + abstract class AbstractRelationSplitHandler extends OsmChangeAction { protected readonly _input: RelationSplitInput; protected readonly _theme: string; constructor(input: RelationSplitInput, theme: string) { - super() + super("relation/"+input.relation.id, false) this._input = input; this._theme = theme; } - /** * Returns which node should border the member at the given index */ @@ -57,11 +57,11 @@ export default class RelationSplitHandler extends AbstractRelationSplitHandler { } async CreateChangeDescriptions(changes: Changes): Promise { - if(this._input.relation.tags["type"] === "restriction"){ + if (this._input.relation.tags["type"] === "restriction") { // This is a turn restriction return new TurnRestrictionRSH(this._input, this._theme).CreateChangeDescriptions(changes) } - return new InPlaceReplacedmentRTSH(this._input, this._theme).CreateChangeDescriptions(changes) + return new InPlaceReplacedmentRTSH(this._input, this._theme).CreateChangeDescriptions(changes) } @@ -72,68 +72,71 @@ export class TurnRestrictionRSH extends AbstractRelationSplitHandler { constructor(input: RelationSplitInput, theme: string) { super(input, theme); } - + public async CreateChangeDescriptions(changes: Changes): Promise { const relation = this._input.relation const members = relation.members - + const selfMembers = members.filter(m => m.type === "way" && m.ref === this._input.originalWayId) - - if(selfMembers.length > 1){ + + if (selfMembers.length > 1) { console.warn("Detected a turn restriction where this way has multiple occurances. This is an error") } const selfMember = selfMembers[0] - - if(selfMember.role === "via"){ + + if (selfMember.role === "via") { // A via way can be replaced in place return new InPlaceReplacedmentRTSH(this._input, this._theme).CreateChangeDescriptions(changes); } - - + + // We have to keep only the way with a common point with the rest of the relation // Let's figure out which member is neighbouring our way - - let commonStartPoint : number = await this.targetNodeAt(members.indexOf(selfMember), true) - let commonEndPoint : number = await this.targetNodeAt(members.indexOf(selfMember), false) - + + let commonStartPoint: number = await this.targetNodeAt(members.indexOf(selfMember), true) + let commonEndPoint: number = await this.targetNodeAt(members.indexOf(selfMember), false) + // In normal circumstances, only one of those should be defined let commonPoint = commonStartPoint ?? commonEndPoint - + // Let's select the way to keep - const idToKeep : {id: number} = this._input.allWaysNodesInOrder.map((nodes, i) => ({nodes: nodes, id: this._input.allWayIdsInOrder[i]})) + const idToKeep: { id: number } = this._input.allWaysNodesInOrder.map((nodes, i) => ({ + nodes: nodes, + id: this._input.allWayIdsInOrder[i] + })) .filter(nodesId => { const nds = nodesId.nodes - return nds[0] == commonPoint || nds[nds.length - 1] == commonPoint + return nds[0] == commonPoint || nds[nds.length - 1] == commonPoint })[0] - - if(idToKeep === undefined){ + + if (idToKeep === undefined) { console.error("No common point found, this was a broken turn restriction!", relation.id) return [] } - + const originalWayId = this._input.originalWayId - if(idToKeep.id === originalWayId){ + if (idToKeep.id === originalWayId) { console.log("Turn_restriction fixer: the original ID can be kept, nothing to do") return [] } - - const newMembers : { - ref:number, - type:"way" | "node" | "relation", - role:string + + const newMembers: { + ref: number, + type: "way" | "node" | "relation", + role: string } [] = relation.members.map(m => { - if(m.type === "way" && m.ref === originalWayId){ + if (m.type === "way" && m.ref === originalWayId) { return { ref: idToKeep.id, - type:"way", + type: "way", role: m.role } } return m }) - - + + return [ { type: "relation", @@ -148,7 +151,7 @@ export class TurnRestrictionRSH extends AbstractRelationSplitHandler { } ]; } - + } /** @@ -184,8 +187,8 @@ export class InPlaceReplacedmentRTSH extends AbstractRelationSplitHandler { const nodeIdBefore = await this.targetNodeAt(i - 1, false) const nodeIdAfter = await this.targetNodeAt(i + 1, true) - const firstNodeMatches = nodeIdBefore === undefined || nodeIdBefore === firstNode - const lastNodeMatches =nodeIdAfter === undefined || nodeIdAfter === lastNode + const firstNodeMatches = nodeIdBefore === undefined || nodeIdBefore === firstNode + const lastNodeMatches = nodeIdAfter === undefined || nodeIdAfter === lastNode if (firstNodeMatches && lastNodeMatches) { // We have a classic situation, forward situation @@ -200,10 +203,10 @@ export class InPlaceReplacedmentRTSH extends AbstractRelationSplitHandler { } const firstNodeMatchesRev = nodeIdBefore === undefined || nodeIdBefore === lastNode - const lastNodeMatchesRev =nodeIdAfter === undefined || nodeIdAfter === firstNode + const lastNodeMatchesRev = nodeIdAfter === undefined || nodeIdAfter === firstNode if (firstNodeMatchesRev || lastNodeMatchesRev) { // We (probably) have a reversed situation, backward situation - for (let i1 = this._input.allWayIdsInOrder.length - 1; i1 >= 0; i1--){ + for (let i1 = this._input.allWayIdsInOrder.length - 1; i1 >= 0; i1--) { // Iterate BACKWARDS const wId = this._input.allWayIdsInOrder[i1]; newMembers.push({ @@ -214,7 +217,7 @@ export class InPlaceReplacedmentRTSH extends AbstractRelationSplitHandler { } continue; } - + // Euhm, allright... Something weird is going on, but let's not care too much // Lets pretend this is forward going for (const wId of this._input.allWayIdsInOrder) { @@ -231,7 +234,7 @@ export class InPlaceReplacedmentRTSH extends AbstractRelationSplitHandler { id: relation.id, type: "relation", changes: {members: newMembers}, - meta:{ + meta: { changeType: "relation-fix", theme: this._theme } diff --git a/Logic/Osm/Actions/ReplaceGeometryAction.ts b/Logic/Osm/Actions/ReplaceGeometryAction.ts index cc56ff03e..7c7202d23 100644 --- a/Logic/Osm/Actions/ReplaceGeometryAction.ts +++ b/Logic/Osm/Actions/ReplaceGeometryAction.ts @@ -41,7 +41,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction { newTags?: Tag[] } ) { - super(); + super(wayToReplaceId, false); this.state = state; this.feature = feature; this.wayToReplaceId = wayToReplaceId; @@ -62,7 +62,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction { continue } for (let j = i + 1; j < coordinates.length; j++) { - const d = 1000 * GeoOperations.distanceBetween(coordinates[i], coordinates[j]) + const d = GeoOperations.distanceBetween(coordinates[i], coordinates[j]) if (d < 0.1) { console.log("Identical coordinates detected: ", i, " and ", j, ": ", coordinates[i], coordinates[j], "distance is", d) this.identicalTo[j] = i @@ -77,13 +77,13 @@ export default class ReplaceGeometryAction extends OsmChangeAction { public async getPreview(): Promise { const {closestIds, allNodesById} = await this.GetClosestIds(); - console.log("Generating preview, identicals are ", ) + console.log("Generating preview, identicals are ",) const preview = closestIds.map((newId, i) => { - if(this.identicalTo[i] !== undefined){ + if (this.identicalTo[i] !== undefined) { return undefined } - - + + if (newId === undefined) { return { type: "Feature", @@ -123,7 +123,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction { const {closestIds, osmWay} = await this.GetClosestIds() for (let i = 0; i < closestIds.length; i++) { - if(this.identicalTo[i] !== undefined){ + if (this.identicalTo[i] !== undefined) { const j = this.identicalTo[i] actualIdsToUse.push(actualIdsToUse[j]) continue @@ -221,7 +221,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction { const closestIds = [] const distances = [] - for (let i = 0; i < this.targetCoordinates.length; i++){ + for (let i = 0; i < this.targetCoordinates.length; i++) { const target = this.targetCoordinates[i]; let closestDistance = undefined let closestId = undefined; @@ -240,15 +240,15 @@ export default class ReplaceGeometryAction extends OsmChangeAction { // Next step: every closestId can only occur once in the list // We skip the ones which are identical - console.log("Erasing double ids") + console.log("Erasing double ids") for (let i = 0; i < closestIds.length; i++) { - if(this.identicalTo[i] !== undefined){ + if (this.identicalTo[i] !== undefined) { closestIds[i] = closestIds[this.identicalTo[i]] continue } const closestId = closestIds[i] for (let j = i + 1; j < closestIds.length; j++) { - if(this.identicalTo[j] !== undefined){ + if (this.identicalTo[j] !== undefined) { continue } const otherClosestId = closestIds[j] diff --git a/Logic/Osm/Actions/SplitAction.ts b/Logic/Osm/Actions/SplitAction.ts index 682d6dc70..3928ed405 100644 --- a/Logic/Osm/Actions/SplitAction.ts +++ b/Logic/Osm/Actions/SplitAction.ts @@ -25,8 +25,8 @@ export default class SplitAction extends OsmChangeAction { * @param meta * @param toleranceInMeters: if a splitpoint closer then this amount of meters to an existing point, the existing point will be used to split the line instead of a new point */ - constructor(wayId: string, splitPointCoordinates: [number, number][], meta: {theme: string}, toleranceInMeters = 5) { - super() + constructor(wayId: string, splitPointCoordinates: [number, number][], meta: { theme: string }, toleranceInMeters = 5) { + super(wayId,true) this.wayId = wayId; this._splitPointsCoordinates = splitPointCoordinates this._toleranceInMeters = toleranceInMeters; @@ -51,7 +51,7 @@ export default class SplitAction extends OsmChangeAction { } async CreateChangeDescriptions(changes: Changes): Promise { - const originalElement = await OsmObject.DownloadObjectAsync(this.wayId) + const originalElement = await OsmObject.DownloadObjectAsync(this.wayId) const originalNodes = originalElement.nodes; // First, calculate splitpoints and remove points close to one another @@ -180,7 +180,7 @@ export default class SplitAction extends OsmChangeAction { private CalculateSplitCoordinates(osmWay: OsmWay, toleranceInM = 5): SplitInfo[] { const wayGeoJson = osmWay.asGeoJson() // Should be [lon, lat][] - const originalPoints : [number, number][] = osmWay.coordinates.map(c => [c[1], c[0]]) + const originalPoints: [number, number][] = osmWay.coordinates.map(c => [c[1], c[0]]) const allPoints: { // lon, lat coordinates: [number, number], @@ -234,25 +234,25 @@ export default class SplitAction extends OsmChangeAction { // We keep the original points continue } - + // At this point, 'dist' told us the point is pretty close to an already existing point. // Lets see which (already existing) point is closer and mark it as splitpoint const nextPoint = allPoints[i + 1] const prevPoint = allPoints[i - 1] const distToNext = nextPoint.location - point.location const distToPrev = point.location - prevPoint.location - - if(distToNext * 1000 > toleranceInM && distToPrev * 1000 > toleranceInM){ + + if (distToNext * 1000 > toleranceInM && distToPrev * 1000 > toleranceInM) { // Both are too far away to mark them as the split point continue; } - + let closest = nextPoint if (distToNext > distToPrev) { closest = prevPoint } // Ok, we have a closest point! - if(closest.originalIndex === 0 || closest.originalIndex === originalPoints.length){ + if (closest.originalIndex === 0 || closest.originalIndex === originalPoints.length) { // We can not split on the first or last points... continue } diff --git a/Logic/Osm/Changes.ts b/Logic/Osm/Changes.ts index 72e5434c5..ccbb9e9d9 100644 --- a/Logic/Osm/Changes.ts +++ b/Logic/Osm/Changes.ts @@ -8,6 +8,11 @@ import {Utils} from "../../Utils"; import {LocalStorageSource} from "../Web/LocalStorageSource"; import SimpleMetaTagger from "../SimpleMetaTagger"; import CreateNewNodeAction from "./Actions/CreateNewNodeAction"; +import FeatureSource from "../FeatureSource/FeatureSource"; +import {ElementStorage} from "../ElementStorage"; +import {GeoLocationPointProperties} from "../Actors/GeoLocationHandler"; +import {GeoOperations} from "../GeoOperations"; +import {ChangesetTag} from "./ChangesetHandler"; /** * Handles all changes made to OSM. @@ -27,6 +32,8 @@ export class Changes { private readonly previouslyCreated: OsmObject[] = [] private readonly _leftRightSensitive: boolean; + + private _state : { allElements: ElementStorage; historicalUserLocations: FeatureSource } constructor(leftRightSensitive: boolean = false) { this._leftRightSensitive = leftRightSensitive; @@ -113,14 +120,67 @@ export class Changes { }) } - public async applyAction(action: OsmChangeAction): Promise { - this.applyChanges(await action.Perform(this)) - } + private calculateDistanceToChanges(change: OsmChangeAction, changeDescriptions: ChangeDescription[]){ - public async applyActions(actions: OsmChangeAction[]) { - for (const action of actions) { - await this.applyAction(action) + if (this._state === undefined) { + // No state loaded -> we can't calculate... + return; } + if(!change.trackStatistics){ + // Probably irrelevant, such as a new helper node + return; + } + const now = new Date() + const recentLocationPoints = this._state.historicalUserLocations.features.data.map(ff => ff.feature) + .filter(feat => feat.geometry.type === "Point") + .filter(feat => { + const visitTime = new Date((feat.properties).date) + // In seconds + const diff = (now.getTime() - visitTime.getTime()) / 1000 + return diff < Constants.nearbyVisitTime; + }) + if(recentLocationPoints.length === 0){ + // Probably no GPS enabled/no fix + return; + } + + // The applicable points, contain information in their properties about location, time and GPS accuracy + // They are all GeoLocationPointProperties + // We walk every change and determine the closest distance possible + // Only if the change itself does _not_ contain any coordinates, we fall back and search the original feature in the state + + const changedObjectCoordinates : [number, number][] = [] + + const feature = this._state.allElements.ContainingFeatures.get(change.mainObjectId) + if(feature !== undefined){ + changedObjectCoordinates.push(GeoOperations.centerpointCoordinates(feature)) + } + + for (const changeDescription of changeDescriptions) { + const chng : {lat: number, lon: number} | {coordinates : [number,number][]} | {members} = changeDescription.changes + if(chng === undefined){ + continue + } + if(chng["lat"] !== undefined){ + changedObjectCoordinates.push([chng["lat"],chng["lon"]]) + } + if(chng["coordinates"] !== undefined){ + changedObjectCoordinates.push(...chng["coordinates"]) + } + } + + return Math.min(...changedObjectCoordinates.map(coor => + Math.min(...recentLocationPoints.map(gpsPoint => { + const otherCoor = GeoOperations.centerpointCoordinates(gpsPoint) + return GeoOperations.distanceBetween(coor, otherCoor) + })) + )) + } + + public async applyAction(action: OsmChangeAction): Promise { + const changeDescriptions = await action.Perform(this) + changeDescriptions[0].meta.distanceToObject = this.calculateDistanceToChanges(action, changeDescriptions) + this.applyChanges(changeDescriptions) } public applyChanges(changes: ChangeDescription[]) { @@ -130,6 +190,13 @@ export class Changes { this.allChanges.data.push(...changes) this.allChanges.ping() } + + public useLocationHistory(state: { + allElements: ElementStorage, + historicalUserLocations: FeatureSource + }){ + this._state= state + } public registerIdRewrites(mappings: Map): void { CreateNewNodeAction.registerIdRewrites(mappings) @@ -162,7 +229,6 @@ export class Changes { return true } - const meta = pending[0].meta const perType = Array.from( Utils.Hist(pending.filter(descr => descr.meta.changeType !== undefined && descr.meta.changeType !== null) @@ -177,16 +243,51 @@ export class Changes { key: descr.meta.changeType + ":" + descr.type + "/" + descr.id, value: descr.meta.specialMotivation })) - const metatags = [{ + + const distances = Utils.NoNull(pending.map(descr => descr.meta.distanceToObject)); + distances.sort((a, b) => a - b) + const perBinCount = Constants.distanceToChangeObjectBins.map(_ => 0) + + let j = 0; + const maxDistances = Constants.distanceToChangeObjectBins + for (let i = 0; i < maxDistances.length; i++){ + const maxDistance = maxDistances[i]; + // distances is sorted in ascending order, so as soon as one is to big, all the resting elements will be bigger too + while(j < distances.length && distances[j] < maxDistance){ + perBinCount[i] ++ + j++ + } + } + + const perBinMessage = Utils.NoNull(perBinCount.map((count, i) => { + if(count === 0){ + return undefined + } + const maxD =maxDistances[i] + let key = `change_within_${maxD}m` + if(maxD === Number.MAX_VALUE){ + key = `change_over_${maxDistances[i - 1]}m` + } + return { + key , + value: count, + aggregate:true + } + })) + + // This method is only called with changedescriptions for this theme + const theme = pending[0].meta.theme + const metatags : ChangesetTag[] = [{ key: "comment", - value: "Adding data with #MapComplete for theme #" + meta.theme + value: "Adding data with #MapComplete for theme #" + theme }, { key: "theme", - value: meta.theme + value: theme }, ...perType, - ...motivations + ...motivations, + ...perBinMessage ] await State.state.osmConnection.changesetHandler.UploadChangeset( @@ -213,7 +314,7 @@ export class Changes { pendingPerTheme.get(theme).push(changeDescription) } - const successes = await Promise.all(Array.from(pendingPerTheme, ([key, value]) => value) + const successes = await Promise.all(Array.from(pendingPerTheme, ([_, value]) => value) .map(async pendingChanges => { try { return await self.flushSelectChanges(pendingChanges); diff --git a/Logic/Osm/ChangesetHandler.ts b/Logic/Osm/ChangesetHandler.ts index 4357fa054..866c61faa 100644 --- a/Logic/Osm/ChangesetHandler.ts +++ b/Logic/Osm/ChangesetHandler.ts @@ -53,61 +53,6 @@ export class ChangesetHandler { } } - private handleIdRewrite(node: any, type: string): [string, string] { - const oldId = parseInt(node.attributes.old_id.value); - if (node.attributes.new_id === undefined) { - // We just removed this point! - const element = this.allElements.getEventSourceById("node/" + oldId); - element.data._deleted = "yes" - element.ping(); - return; - } - - const newId = parseInt(node.attributes.new_id.value); - const result: [string, string] = [type + "/" + oldId, type + "/" + newId] - if (!(oldId !== undefined && newId !== undefined && - !isNaN(oldId) && !isNaN(newId))) { - return undefined; - } - if (oldId == newId) { - return undefined; - } - console.log("Rewriting id: ", type + "/" + oldId, "-->", type + "/" + newId); - const element = this.allElements.getEventSourceById("node/" + oldId); - if(element === undefined){ - // Element to rewrite not found, probably a node or relation that is not rendered - return undefined - } - element.data.id = type + "/" + newId; - this.allElements.addElementById(type + "/" + newId, element); - this.allElements.ContainingFeatures.set(type + "/" + newId, this.allElements.ContainingFeatures.get(type + "/" + oldId)) - element.ping(); - return result; - } - - private parseUploadChangesetResponse(response: XMLDocument): void { - const nodes = response.getElementsByTagName("node"); - const mappings = new Map() - // @ts-ignore - for (const node of nodes) { - const mapping = this.handleIdRewrite(node, "node") - if (mapping !== undefined) { - mappings.set(mapping[0], mapping[1]) - } - } - - const ways = response.getElementsByTagName("way"); - // @ts-ignore - for (const way of ways) { - const mapping = this.handleIdRewrite(way, "way") - if (mapping !== undefined) { - mappings.set(mapping[0], mapping[1]) - } - } - this.changes.registerIdRewrites(mappings) - - } - /** * The full logic to upload a change to one or more elements. * @@ -133,6 +78,7 @@ export class ChangesetHandler { } if (this._dryRun) { const changesetXML = generateChangeXML(123456); + console.log("Metatags are", extraMetaTags) console.log(changesetXML); return; } @@ -191,7 +137,7 @@ export class ChangesetHandler { // The old value is overwritten, thus we drop } } - + await this.UpdateTags(csId, extraMetaTags.map(csTag => <[string, string]>[csTag.key, csTag.value])) @@ -207,6 +153,60 @@ export class ChangesetHandler { } } + private handleIdRewrite(node: any, type: string): [string, string] { + const oldId = parseInt(node.attributes.old_id.value); + if (node.attributes.new_id === undefined) { + // We just removed this point! + const element = this.allElements.getEventSourceById("node/" + oldId); + element.data._deleted = "yes" + element.ping(); + return; + } + + const newId = parseInt(node.attributes.new_id.value); + const result: [string, string] = [type + "/" + oldId, type + "/" + newId] + if (!(oldId !== undefined && newId !== undefined && + !isNaN(oldId) && !isNaN(newId))) { + return undefined; + } + if (oldId == newId) { + return undefined; + } + console.log("Rewriting id: ", type + "/" + oldId, "-->", type + "/" + newId); + const element = this.allElements.getEventSourceById("node/" + oldId); + if (element === undefined) { + // Element to rewrite not found, probably a node or relation that is not rendered + return undefined + } + element.data.id = type + "/" + newId; + this.allElements.addElementById(type + "/" + newId, element); + this.allElements.ContainingFeatures.set(type + "/" + newId, this.allElements.ContainingFeatures.get(type + "/" + oldId)) + element.ping(); + return result; + } + + private parseUploadChangesetResponse(response: XMLDocument): void { + const nodes = response.getElementsByTagName("node"); + const mappings = new Map() + // @ts-ignore + for (const node of nodes) { + const mapping = this.handleIdRewrite(node, "node") + if (mapping !== undefined) { + mappings.set(mapping[0], mapping[1]) + } + } + + const ways = response.getElementsByTagName("way"); + // @ts-ignore + for (const way of ways) { + const mapping = this.handleIdRewrite(way, "way") + if (mapping !== undefined) { + mappings.set(mapping[0], mapping[1]) + } + } + this.changes.registerIdRewrites(mappings) + + } private async CloseChangeset(changesetId: number = undefined): Promise { const self = this @@ -287,7 +287,7 @@ export class ChangesetHandler { ["language", Locale.language.data], ["host", window.location.host], ["path", path], - ["source", State.state.currentGPSLocation.data !== undefined ? "survey" : undefined], + ["source", State.state.currentUserLocation.features.data.length > 0 ? "survey" : undefined], ["imagery", State.state.backgroundLayer.data.id], ...changesetTags.map(cstag => [cstag.key, cstag.value]) ] diff --git a/Logic/Osm/OsmConnection.ts b/Logic/Osm/OsmConnection.ts index 7fd107838..3ef0593c4 100644 --- a/Logic/Osm/OsmConnection.ts +++ b/Logic/Osm/OsmConnection.ts @@ -50,26 +50,28 @@ export class OsmConnection { _dryRun: boolean; public preferencesHandler: OsmPreferences; public changesetHandler: ChangesetHandler; - private fakeUser: boolean; - private _onLoggedIn: ((userDetails: UserDetails) => void)[] = []; - private readonly _iframeMode: Boolean | boolean; - private readonly _singlePage: boolean; public readonly _oauth_config: { oauth_consumer_key: string, oauth_secret: string, url: string }; + private fakeUser: boolean; + private _onLoggedIn: ((userDetails: UserDetails) => void)[] = []; + private readonly _iframeMode: Boolean | boolean; + private readonly _singlePage: boolean; private isChecking = false; - constructor(options:{dryRun?: false | boolean, - fakeUser?: false | boolean, - allElements: ElementStorage, - changes: Changes, - oauth_token?: UIEventSource, - // Used to keep multiple changesets open and to write to the correct changeset - layoutName: string, - singlePage?: boolean, - osmConfiguration?: "osm" | "osm-test" } + constructor(options: { + dryRun?: false | boolean, + fakeUser?: false | boolean, + allElements: ElementStorage, + changes: Changes, + oauth_token?: UIEventSource, + // Used to keep multiple changesets open and to write to the correct changeset + layoutName: string, + singlePage?: boolean, + osmConfiguration?: "osm" | "osm-test" + } ) { this.fakeUser = options.fakeUser ?? false; this._singlePage = options.singlePage ?? true; @@ -79,7 +81,7 @@ export class OsmConnection { this._iframeMode = Utils.runningFromConsole ? false : window !== window.top; this.userDetails = new UIEventSource(new UserDetails(this._oauth_config.url), "userDetails"); - this.userDetails.data.dryRun = (options.dryRun ?? false) || (options.fakeUser ?? false) ; + this.userDetails.data.dryRun = (options.dryRun ?? false) || (options.fakeUser ?? false); if (options.fakeUser) { const ud = this.userDetails.data; ud.csCount = 5678 @@ -112,7 +114,7 @@ export class OsmConnection { self.AttemptLogin(); }, this.auth); - options. oauth_token.setData(undefined); + options.oauth_token.setData(undefined); } if (this.auth.authenticated()) { diff --git a/Logic/Osm/OsmObject.ts b/Logic/Osm/OsmObject.ts index cfc9c5234..d28d8f165 100644 --- a/Logic/Osm/OsmObject.ts +++ b/Logic/Osm/OsmObject.ts @@ -56,7 +56,7 @@ export abstract class OsmObject { OsmObject.objectCache.set(id, src); return src; } - + static async DownloadPropertiesOf(id: string): Promise { const splitted = id.split("/"); const idN = Number(splitted[1]); @@ -84,18 +84,18 @@ export abstract class OsmObject { const parsed = OsmObject.ParseObjects(rawData.elements); // Lets fetch the object we need for (const osmObject of parsed) { - if(osmObject.type !== type){ + if (osmObject.type !== type) { continue; } - if(osmObject.id !== idN){ + if (osmObject.id !== idN) { continue } // Found the one! return osmObject } throw "PANIC: requested object is not part of the response" - - + + } @@ -170,6 +170,43 @@ export abstract class OsmObject { const elements: any[] = data.elements; return OsmObject.ParseObjects(elements); } + + public static ParseObjects(elements: any[]): OsmObject[] { + const objects: OsmObject[] = []; + const allNodes: Map = new Map() + + for (const element of elements) { + const type = element.type; + const idN = element.id; + let osmObject: OsmObject = null + switch (type) { + case("node"): + const node = new OsmNode(idN); + allNodes.set(idN, node); + osmObject = node + node.SaveExtraData(element); + break; + case("way"): + osmObject = new OsmWay(idN); + const nodes = element.nodes.map(i => allNodes.get(i)); + osmObject.SaveExtraData(element, nodes) + break; + case("relation"): + osmObject = new OsmRelation(idN); + osmObject.SaveExtraData(element, []) + break; + } + + if (osmObject !== undefined && OsmObject.backendURL !== OsmObject.defaultBackend) { + osmObject.tags["_backend"] = OsmObject.backendURL + } + + osmObject?.LoadData(element) + objects.push(osmObject) + } + return objects; + } + protected static isPolygon(tags: any): boolean { for (const tagsKey in tags) { if (!tags.hasOwnProperty(tagsKey)) { @@ -206,42 +243,6 @@ export abstract class OsmObject { return result; } - public static ParseObjects(elements: any[]): OsmObject[] { - const objects: OsmObject[] = []; - const allNodes: Map = new Map() - - for (const element of elements) { - const type = element.type; - const idN = element.id; - let osmObject: OsmObject = null - switch (type) { - case("node"): - const node = new OsmNode(idN); - allNodes.set(idN, node); - osmObject = node - node.SaveExtraData(element); - break; - case("way"): - osmObject = new OsmWay(idN); - const nodes = element.nodes.map(i => allNodes.get(i)); - osmObject.SaveExtraData(element, nodes) - break; - case("relation"): - osmObject = new OsmRelation(idN); - osmObject.SaveExtraData(element, []) - break; - } - - if (osmObject !== undefined && OsmObject.backendURL !== OsmObject.defaultBackend) { - osmObject.tags["_backend"] = OsmObject.backendURL - } - - osmObject?.LoadData(element) - objects.push(osmObject) - } - return objects; - } - // The centerpoint of the feature, as [lat, lon] public abstract centerpoint(): [number, number]; diff --git a/Logic/Osm/Overpass.ts b/Logic/Osm/Overpass.ts index 257133307..f13f7a29b 100644 --- a/Logic/Osm/Overpass.ts +++ b/Logic/Osm/Overpass.ts @@ -42,13 +42,13 @@ export class Overpass { } const self = this; const json = await Utils.downloadJson(query) - + if (json.elements.length === 0 && json.remark !== undefined) { console.warn("Timeout or other runtime error while querying overpass", json.remark); throw `Runtime error (timeout or similar)${json.remark}` } - if(json.elements.length === 0){ - console.warn("No features for" ,json) + if (json.elements.length === 0) { + console.warn("No features for", json) } self._relationTracker.RegisterRelations(json) diff --git a/Logic/Osm/RelationsTracker.ts b/Logic/Osm/RelationsTracker.ts index f0528e77d..eb776907b 100644 --- a/Logic/Osm/RelationsTracker.ts +++ b/Logic/Osm/RelationsTracker.ts @@ -1,4 +1,3 @@ -import State from "../../State"; import {UIEventSource} from "../UIEventSource"; export interface Relation { @@ -21,10 +20,6 @@ export default class RelationsTracker { constructor() { } - public RegisterRelations(overpassJson: any): void { - this.UpdateMembershipTable(RelationsTracker.GetRelationElements(overpassJson)) - } - /** * Gets an overview of the relations - except for multipolygons. We don't care about those * @param overpassJson @@ -39,6 +34,10 @@ export default class RelationsTracker { return relations } + public RegisterRelations(overpassJson: any): void { + this.UpdateMembershipTable(RelationsTracker.GetRelationElements(overpassJson)) + } + /** * Build a mapping of {memberId --> {role in relation, id of relation} } * @param relations diff --git a/Logic/SimpleMetaTagger.ts b/Logic/SimpleMetaTagger.ts index cbe30c726..c27240cf9 100644 --- a/Logic/SimpleMetaTagger.ts +++ b/Logic/SimpleMetaTagger.ts @@ -49,6 +49,7 @@ export default class SimpleMetaTagger { return true; } ) + private static latlon = new SimpleMetaTagger({ keys: ["_lat", "_lon"], doc: "The latitude and longitude of the point (or centerpoint in the case of a way/area)" @@ -78,83 +79,6 @@ export default class SimpleMetaTagger { return true; } ) - - /** - * Edits the given object to rewrite 'both'-tagging into a 'left-right' tagging scheme. - * These changes are performed in-place. - * - * Returns 'true' is at least one change has been made - * @param tags - */ - public static removeBothTagging(tags: any): boolean{ - let somethingChanged = false - /** - * Sets the key onto the properties (but doesn't overwrite if already existing) - */ - function set(k, value) { - if (tags[k] === undefined || tags[k] === "") { - tags[k] = value - somethingChanged = true - } - } - - if (tags["sidewalk"]) { - - const v = tags["sidewalk"] - switch (v) { - case "none": - case "no": - set("sidewalk:left", "no"); - set("sidewalk:right", "no"); - break - case "both": - set("sidewalk:left", "yes"); - set("sidewalk:right", "yes"); - break; - case "left": - set("sidewalk:left", "yes"); - set("sidewalk:right", "no"); - break; - case "right": - set("sidewalk:left", "no"); - set("sidewalk:right", "yes"); - break; - default: - set("sidewalk:left", v); - set("sidewalk:right", v); - break; - } - delete tags["sidewalk"] - somethingChanged = true - } - - - const regex = /\([^:]*\):both:\(.*\)/ - for (const key in tags) { - const v = tags[key] - if (key.endsWith(":both")) { - const strippedKey = key.substring(0, key.length - ":both".length) - set(strippedKey + ":left", v) - set(strippedKey + ":right", v) - delete tags[key] - continue - } - - const match = key.match(regex) - if (match !== null) { - const strippedKey = match[1] - const property = match[1] - set(strippedKey + ":left:" + property, v) - set(strippedKey + ":right:" + property, v) - console.log("Left-right rewritten " + key) - delete tags[key] - } - } - - - return somethingChanged - } - private static noBothButLeftRight = new SimpleMetaTagger( { keys: ["sidewalk:left", "sidewalk:right", "generic_key:left:property", "generic_key:right:property"], @@ -163,11 +87,11 @@ export default class SimpleMetaTagger { cleanupRetagger: true }, ((feature, state, layer) => { - - if(!layer.lineRendering.some(lr => lr.leftRightSensitive)){ + + if (!layer.lineRendering.some(lr => lr.leftRightSensitive)) { return; } - + return SimpleMetaTagger.removeBothTagging(feature.properties) }) ) @@ -451,15 +375,15 @@ export default class SimpleMetaTagger { SimpleMetaTagger.noBothButLeftRight ]; - public static readonly lazyTags: string[] = [].concat(...SimpleMetaTagger.metatags.filter(tagger => tagger.isLazy) - .map(tagger => tagger.keys)); - public readonly keys: string[]; public readonly doc: string; public readonly isLazy: boolean; public readonly includesDates: boolean public readonly applyMetaTagsOnFeature: (feature: any, freshness: Date, layer: LayerConfig) => boolean; + public static readonly lazyTags: string[] = [].concat(...SimpleMetaTagger.metatags.filter(tagger => tagger.isLazy) + .map(tagger => tagger.keys)); + /*** * A function that adds some extra data to a feature * @param docs: what does this extra data do? @@ -481,6 +405,83 @@ export default class SimpleMetaTagger { } } + /** + * Edits the given object to rewrite 'both'-tagging into a 'left-right' tagging scheme. + * These changes are performed in-place. + * + * Returns 'true' is at least one change has been made + * @param tags + */ + public static removeBothTagging(tags: any): boolean { + let somethingChanged = false + + /** + * Sets the key onto the properties (but doesn't overwrite if already existing) + */ + function set(k, value) { + if (tags[k] === undefined || tags[k] === "") { + tags[k] = value + somethingChanged = true + } + } + + if (tags["sidewalk"]) { + + const v = tags["sidewalk"] + switch (v) { + case "none": + case "no": + set("sidewalk:left", "no"); + set("sidewalk:right", "no"); + break + case "both": + set("sidewalk:left", "yes"); + set("sidewalk:right", "yes"); + break; + case "left": + set("sidewalk:left", "yes"); + set("sidewalk:right", "no"); + break; + case "right": + set("sidewalk:left", "no"); + set("sidewalk:right", "yes"); + break; + default: + set("sidewalk:left", v); + set("sidewalk:right", v); + break; + } + delete tags["sidewalk"] + somethingChanged = true + } + + + const regex = /\([^:]*\):both:\(.*\)/ + for (const key in tags) { + const v = tags[key] + if (key.endsWith(":both")) { + const strippedKey = key.substring(0, key.length - ":both".length) + set(strippedKey + ":left", v) + set(strippedKey + ":right", v) + delete tags[key] + continue + } + + const match = key.match(regex) + if (match !== null) { + const strippedKey = match[1] + const property = match[1] + set(strippedKey + ":left:" + property, v) + set(strippedKey + ":right:" + property, v) + console.log("Left-right rewritten " + key) + delete tags[key] + } + } + + + return somethingChanged + } + public static HelpText(): BaseUIElement { const subElements: (string | BaseUIElement)[] = [ new Combine([ diff --git a/Logic/State/ElementsState.ts b/Logic/State/ElementsState.ts index 637482e60..345ada244 100644 --- a/Logic/State/ElementsState.ts +++ b/Logic/State/ElementsState.ts @@ -11,6 +11,7 @@ import {Utils} from "../../Utils"; import ChangeToElementsActor from "../Actors/ChangeToElementsActor"; import PendingChangesUploader from "../Actors/PendingChangesUploader"; import TitleHandler from "../Actors/TitleHandler"; +import FeatureSource from "../FeatureSource/FeatureSource"; /** * The part of the state keeping track of where the elements, loading them, configuring the feature pipeline etc @@ -50,7 +51,6 @@ export default class ElementsState extends FeatureSwitchState { super(layoutToUse); this.changes = new Changes(layoutToUse?.isLeftRightSensitive() ?? false) - { // -- Location control initialization const zoom = UIEventSource.asFloat( diff --git a/Logic/State/FeaturePipelineState.ts b/Logic/State/FeaturePipelineState.ts index 53f21341b..96a29beb6 100644 --- a/Logic/State/FeaturePipelineState.ts +++ b/Logic/State/FeaturePipelineState.ts @@ -97,7 +97,7 @@ export default class FeaturePipelineState extends MapState { }, this ); new SelectedFeatureHandler(Hash.hash, this) - + this.AddClusteringToMap(this.leafletMap) } diff --git a/Logic/State/FeatureSwitchState.ts b/Logic/State/FeatureSwitchState.ts index d02abe270..32aca8294 100644 --- a/Logic/State/FeatureSwitchState.ts +++ b/Logic/State/FeatureSwitchState.ts @@ -146,7 +146,7 @@ export default class FeatureSwitchState { this.featureSwitchIsTesting = QueryParameters.GetBooleanQueryParameter( "test", - ""+testingDefaultValue, + "" + testingDefaultValue, "If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org" ) @@ -158,7 +158,7 @@ export default class FeatureSwitchState { this.featureSwitchFakeUser = QueryParameters.GetBooleanQueryParameter("fake-user", "false", "If true, 'dryrun' mode is activated and a fake user account is loaded") - + this.overpassUrl = QueryParameters.GetQueryParameter("overpassUrl", (layoutToUse?.overpassUrl ?? Constants.defaultOverpassUrls).join(","), diff --git a/Logic/State/MapState.ts b/Logic/State/MapState.ts index 8939149f5..319c3547a 100644 --- a/Logic/State/MapState.ts +++ b/Logic/State/MapState.ts @@ -14,7 +14,10 @@ import {QueryParameters} from "../Web/QueryParameters"; import * as personal from "../../assets/themes/personal/personal.json"; import FilterConfig from "../../Models/ThemeConfig/FilterConfig"; import ShowOverlayLayer from "../../UI/ShowDataLayer/ShowOverlayLayer"; -import {Coord} from "@turf/turf"; +import {FeatureSourceForLayer, Tiled} from "../FeatureSource/FeatureSource"; +import SimpleFeatureSource from "../FeatureSource/Sources/SimpleFeatureSource"; +import {LocalStorageSource} from "../Web/LocalStorageSource"; +import {GeoOperations} from "../GeoOperations"; /** * Contains all the leaflet-map related state @@ -45,7 +48,22 @@ export default class MapState extends UserRelatedState { /** * The location as delivered by the GPS */ - public currentGPSLocation: UIEventSource = new UIEventSource(undefined); + public currentUserLocation: FeatureSourceForLayer & Tiled; + + /** + * All previously visited points + */ + public historicalUserLocations: FeatureSourceForLayer & Tiled; + /** + * The number of seconds that the GPS-locations are stored in memory + */ + public gpsLocationHistoryRetentionTime = new UIEventSource(7 * 24 * 60 * 60, "gps_location_retention") + public historicalUserLocationsTrack: FeatureSourceForLayer & Tiled; + + /** + * A feature source containing the current home location of the user + */ + public homeLocation: FeatureSourceForLayer & Tiled public readonly mainMapObject: BaseUIElement & MinimapObj; @@ -121,9 +139,27 @@ export default class MapState extends UserRelatedState { this.lockBounds() this.AddAllOverlaysToMap(this.leafletMap) + + this.initHomeLocation() + this.initGpsLocation() + this.initUserLocationTrail() } + public AddAllOverlaysToMap(leafletMap: UIEventSource) { + const initialized = new Set() + for (const overlayToggle of this.overlayToggles) { + new ShowOverlayLayer(overlayToggle.config, leafletMap, overlayToggle.isDisplayed) + initialized.add(overlayToggle.config) + } + for (const tileLayerSource of this.layoutToUse.tileLayerSources) { + if (initialized.has(tileLayerSource)) { + continue + } + new ShowOverlayLayer(tileLayerSource, leafletMap) + } + + } private lockBounds() { const layout = this.layoutToUse; @@ -152,8 +188,123 @@ export default class MapState extends UserRelatedState { } } + private initGpsLocation() { + // Initialize the gps layer data. This is emtpy for now, the actual writing happens in the Geolocationhandler + let gpsLayerDef: FilteredLayer = this.filteredLayers.data.filter(l => l.layerDef.id === "gps_location")[0] + this.currentUserLocation = new SimpleFeatureSource(gpsLayerDef, Tiles.tile_index(0, 0, 0)); + } + + private initUserLocationTrail() { + const features = LocalStorageSource.GetParsed<{ feature: any, freshness: Date }[]>("gps_location_history", []) + const now = new Date().getTime() + features.data = features.data + .map(ff => ({feature: ff.feature, freshness: new Date(ff.freshness)})) + .filter(ff => (now - ff.freshness.getTime()) < this.gpsLocationHistoryRetentionTime.data) + features.ping() + const self = this; + let i = 0 + this.currentUserLocation.features.addCallbackAndRunD(([location]) => { + if (location === undefined) { + return; + } + + const previousLocation = features.data[features.data.length - 1] + if (previousLocation !== undefined) { + const d = GeoOperations.distanceBetween( + previousLocation.feature.geometry.coordinates, + location.feature.geometry.coordinates + ) + let timeDiff = Number.MAX_VALUE // in seconds + const olderLocation = features.data[features.data.length - 2] + if (olderLocation !== undefined) { + timeDiff = (previousLocation.freshness.getTime() - olderLocation.freshness.getTime()) / 1000 + } + if (d < 20 && timeDiff < 60) { + // Do not append changes less then 20m - it's probably noise anyway + return; + } + } + + const feature = JSON.parse(JSON.stringify(location.feature)) + feature.properties.id = "gps/" + features.data.length + i++ + features.data.push({feature, freshness: new Date()}) + features.ping() + }) + + + let gpsLayerDef: FilteredLayer = this.filteredLayers.data.filter(l => l.layerDef.id === "gps_location_history")[0] + this.historicalUserLocations = new SimpleFeatureSource(gpsLayerDef, Tiles.tile_index(0, 0, 0), features); + this.changes.useLocationHistory(this) + + + const asLine = features.map(allPoints => { + if (allPoints === undefined || allPoints.length < 2) { + return [] + } + + const feature = { + type: "Feature", + properties: { + "id": "location_track", + "_date:now": new Date().toISOString(), + }, + geometry: { + type: "LineString", + coordinates: allPoints.map(ff => ff.feature.geometry.coordinates) + } + } + + self.allElements.ContainingFeatures.set(feature.properties.id, feature) + + return [{ + feature, + freshness: new Date() + }] + }) + let gpsLineLayerDef: FilteredLayer = this.filteredLayers.data.filter(l => l.layerDef.id === "gps_track")[0] + this.historicalUserLocationsTrack = new SimpleFeatureSource(gpsLineLayerDef, Tiles.tile_index(0, 0, 0), asLine); + } + + private initHomeLocation() { + const empty = [] + const feature = UIEventSource.ListStabilized(this.osmConnection.userDetails.map(userDetails => { + + if (userDetails === undefined) { + return undefined; + } + const home = userDetails.home; + if (home === undefined) { + return undefined; + } + return [home.lon, home.lat] + })).map(homeLonLat => { + if (homeLonLat === undefined) { + return empty + } + return [{ + feature: { + "type": "Feature", + "properties": { + "id": "home", + "user:home": "yes", + "_lon": homeLonLat[0], + "_lat": homeLonLat[1] + }, + "geometry": { + "type": "Point", + "coordinates": homeLonLat + } + }, freshness: new Date() + }] + }) + + const flayer = this.filteredLayers.data.filter(l => l.layerDef.id === "home_location")[0] + this.homeLocation = new SimpleFeatureSource(flayer, Tiles.tile_index(0, 0, 0), feature) + + } + private InitializeFilteredLayers() { - // Initialize the filtered layers state const layoutToUse = this.layoutToUse; const empty = [] @@ -201,21 +352,5 @@ export default class MapState extends UserRelatedState { return new UIEventSource(flayers); } - public AddAllOverlaysToMap(leafletMap: UIEventSource) { - const initialized = new Set() - for (const overlayToggle of this.overlayToggles) { - new ShowOverlayLayer(overlayToggle.config, leafletMap, overlayToggle.isDisplayed) - initialized.add(overlayToggle.config) - } - - for (const tileLayerSource of this.layoutToUse.tileLayerSources) { - if (initialized.has(tileLayerSource)) { - continue - } - new ShowOverlayLayer(tileLayerSource, leafletMap) - } - - } - } \ No newline at end of file diff --git a/Logic/State/UserRelatedState.ts b/Logic/State/UserRelatedState.ts index 68c32351a..19d1eba85 100644 --- a/Logic/State/UserRelatedState.ts +++ b/Logic/State/UserRelatedState.ts @@ -11,6 +11,7 @@ import ElementsState from "./ElementsState"; import SelectedElementTagsUpdater from "../Actors/SelectedElementTagsUpdater"; import StaticFeatureSource from "../FeatureSource/Sources/StaticFeatureSource"; import FeatureSource from "../FeatureSource/FeatureSource"; +import {Feature} from "@turf/turf"; /** * The part of the state which keeps track of user-related stuff, e.g. the OSM-connection, @@ -36,10 +37,7 @@ export default class UserRelatedState extends ElementsState { * WHich other themes the user previously visited */ public installedThemes: UIEventSource<{ layout: LayoutConfig; definition: string }[]>; - /** - * A feature source containing the current home location of the user - */ - public homeLocation: FeatureSource + constructor(layoutToUse: LayoutConfig) { super(layoutToUse); @@ -64,7 +62,7 @@ export default class UserRelatedState extends ElementsState { if (layoutToUse?.hideFromOverview) { this.osmConnection.isLoggedIn.addCallbackAndRunD(loggedIn => { - if(loggedIn){ + if (loggedIn) { this.osmConnection .GetPreference("hidden-theme-" + layoutToUse?.id + "-enabled") .setData("true"); @@ -88,7 +86,6 @@ export default class UserRelatedState extends ElementsState { this.InitializeLanguage(); - this.initHomeLocation() new SelectedElementTagsUpdater(this) } @@ -116,37 +113,4 @@ export default class UserRelatedState extends ElementsState { .ping(); } - private initHomeLocation() { - const empty = [] - const feature = UIEventSource.ListStabilized(this.osmConnection.userDetails.map(userDetails => { - - if (userDetails === undefined) { - return undefined; - } - const home = userDetails.home; - if (home === undefined) { - return undefined; - } - return [home.lon, home.lat] - })).map(homeLonLat => { - if(homeLonLat === undefined){ - return empty - } - return [{ - "type": "Feature", - "properties": { - "user:home": "yes", - "_lon": homeLonLat[0], - "_lat": homeLonLat[1] - }, - "geometry": { - "type": "Point", - "coordinates": homeLonLat - } - }] - }) - - this.homeLocation = new StaticFeatureSource(feature, false) - } - } \ No newline at end of file diff --git a/Logic/Tags/RegexTag.ts b/Logic/Tags/RegexTag.ts index 68840188b..8e120cb71 100644 --- a/Logic/Tags/RegexTag.ts +++ b/Logic/Tags/RegexTag.ts @@ -19,7 +19,7 @@ export class RegexTag extends TagsFilter { if (fromTag === undefined) { return; } - if(typeof fromTag === "number"){ + if (typeof fromTag === "number") { fromTag = "" + fromTag; } if (typeof possibleRegex === "string") { @@ -47,11 +47,11 @@ export class RegexTag extends TagsFilter { } matchesProperties(tags: any): boolean { - if(typeof this.key === "string"){ + if (typeof this.key === "string") { const value = tags[this.key] ?? "" return RegexTag.doesMatch(value, this.value) != this.invert; } - + for (const key in tags) { if (key === undefined) { continue; diff --git a/Logic/Tags/TagUtils.ts b/Logic/Tags/TagUtils.ts index 0ff6896bb..dd54d011a 100644 --- a/Logic/Tags/TagUtils.ts +++ b/Logic/Tags/TagUtils.ts @@ -27,14 +27,14 @@ export class TagUtils { return properties; } - static changeAsProperties(kvs : {k: string, v: string}[]): any { + static changeAsProperties(kvs: { k: string, v: string }[]): any { const tags = {} for (const kv of kvs) { tags[kv.k] = kv.v } return tags } - + /** * Given two hashes of {key --> values[]}, makes sure that every neededTag is present in availableTags */ diff --git a/Logic/UIEventSource.ts b/Logic/UIEventSource.ts index 8051128ce..bb862a94a 100644 --- a/Logic/UIEventSource.ts +++ b/Logic/UIEventSource.ts @@ -1,5 +1,4 @@ import {Utils} from "../Utils"; -import * as Events from "events"; export class UIEventSource { @@ -75,27 +74,6 @@ export class UIEventSource { promise?.catch(err => console.warn("Promise failed:", err)) return src } - - public AsPromise(): Promise{ - const self = this; - return new Promise((resolve, reject) => { - if(self.data !== undefined){ - resolve(self.data) - }else{ - self.addCallbackD(data => { - resolve(data) - return true; // return true to unregister as we only need to be called once - }) - } - }) - } - - public WaitForPromise(promise: Promise, onFail: ((any) => void)): UIEventSource { - const self = this; - promise?.then(d => self.setData(d)) - promise?.catch(err =>onFail(err)) - return this - } /** * Converts a promise into a UIVentsource, sets the UIEVentSource when the result is calculated. @@ -109,20 +87,6 @@ export class UIEventSource { promise?.catch(err => src.setData({error: err})) return src } - - public withEqualityStabilized(comparator: (t:T | undefined, t1:T | undefined) => boolean): UIEventSource{ - let oldValue = undefined; - return this.map(v => { - if(v == oldValue){ - return oldValue - } - if(comparator(oldValue, v)){ - return oldValue - } - oldValue = v; - return v; - }) - } /** * Given a UIEVentSource with a list, returns a new UIEventSource which is only updated if the _contents_ of the list are different. @@ -168,6 +132,57 @@ export class UIEventSource { return stable } + public static asFloat(source: UIEventSource): UIEventSource { + return source.map( + (str) => { + let parsed = parseFloat(str); + return isNaN(parsed) ? undefined : parsed; + }, + [], + (fl) => { + if (fl === undefined || isNaN(fl)) { + return undefined; + } + return ("" + fl).substr(0, 8); + } + ) + } + + public AsPromise(): Promise { + const self = this; + return new Promise((resolve, reject) => { + if (self.data !== undefined) { + resolve(self.data) + } else { + self.addCallbackD(data => { + resolve(data) + return true; // return true to unregister as we only need to be called once + }) + } + }) + } + + public WaitForPromise(promise: Promise, onFail: ((any) => void)): UIEventSource { + const self = this; + promise?.then(d => self.setData(d)) + promise?.catch(err => onFail(err)) + return this + } + + public withEqualityStabilized(comparator: (t: T | undefined, t1: T | undefined) => boolean): UIEventSource { + let oldValue = undefined; + return this.map(v => { + if (v == oldValue) { + return oldValue + } + if (comparator(oldValue, v)) { + return oldValue + } + oldValue = v; + return v; + }) + } + /** * Adds a callback * @@ -234,14 +249,14 @@ export class UIEventSource { sink.setData(null) } else if (newEventSource === undefined) { sink.setData(undefined) - }else if (!seenEventSources.has(newEventSource)) { + } else if (!seenEventSources.has(newEventSource)) { seenEventSources.add(newEventSource) newEventSource.addCallbackAndRun(resultData => { if (mapped.data === newEventSource) { sink.setData(resultData); } }) - }else{ + } else { // Already seen, so we don't have to add a callback, just update the value sink.setData(newEventSource.data) } @@ -300,7 +315,7 @@ export class UIEventSource { } public stabilized(millisToStabilize): UIEventSource { - if(Utils.runningFromConsole){ + if (Utils.runningFromConsole) { return this; } @@ -335,20 +350,4 @@ export class UIEventSource { } }) } - - public static asFloat(source: UIEventSource): UIEventSource { - return source.map( - (str) => { - let parsed = parseFloat(str); - return isNaN(parsed) ? undefined : parsed; - }, - [], - (fl) => { - if (fl === undefined || isNaN(fl)) { - return undefined; - } - return ("" + fl).substr(0, 8); - } - ) - } } \ No newline at end of file diff --git a/Logic/Web/QueryParameters.ts b/Logic/Web/QueryParameters.ts index 8af95a69b..6a34e46bb 100644 --- a/Logic/Web/QueryParameters.ts +++ b/Logic/Web/QueryParameters.ts @@ -55,8 +55,8 @@ export class QueryParameters { return source; } - public static GetBooleanQueryParameter(key: string, deflt: string, documentation?: string): UIEventSource{ - return QueryParameters.GetQueryParameter(key, deflt, documentation).map(str => str === "true", [], b => ""+b) + public static GetBooleanQueryParameter(key: string, deflt: string, documentation?: string): UIEventSource { + return QueryParameters.GetQueryParameter(key, deflt, documentation).map(str => str === "true", [], b => "" + b) } public static GenerateQueryParameterDocs(): string { diff --git a/Logic/Web/Wikidata.ts b/Logic/Web/Wikidata.ts index 3a597a6fa..376766472 100644 --- a/Logic/Web/Wikidata.ts +++ b/Logic/Web/Wikidata.ts @@ -64,11 +64,11 @@ export class WikidataResponse { } static extractClaims(claimsJson: any): Map> { - - const simplified = wds.simplify.claims(claimsJson, { + + const simplified = wds.simplify.claims(claimsJson, { timeConverter: 'simple-day' }) - + const claims = new Map>(); for (const claimId in simplified) { const claimsList: any[] = simplified[claimId] @@ -98,11 +98,11 @@ export class WikidataLexeme { for (const sense of json.senses) { const glosses = sense.glosses for (const language in glosses) { - let previousSenses = this.senses.get(language) - if(previousSenses === undefined){ + let previousSenses = this.senses.get(language) + if (previousSenses === undefined) { previousSenses = "" - }else{ - previousSenses = previousSenses+"; " + } else { + previousSenses = previousSenses + "; " } this.senses.set(language, previousSenses + glosses[language].value ?? "") } @@ -172,7 +172,7 @@ export default class Wikidata { lang + "&type=item&origin=*" + "&props=";// props= removes some unused values in the result - const response = await Utils.downloadJson(url) + const response = await Utils.downloadJsonCached(url, 10000) const result: any[] = response.search @@ -192,6 +192,7 @@ export default class Wikidata { return result; } + public static async searchAndFetch( search: string, options?: WikidataSearchoptions @@ -247,7 +248,7 @@ export default class Wikidata { for (const identifierPrefix of Wikidata._identifierPrefixes) { if (value.startsWith(identifierPrefix)) { const trimmed = value.substring(identifierPrefix.length); - if(trimmed === ""){ + if (trimmed === "") { return undefined } const n = Number(trimmed) @@ -265,14 +266,14 @@ export default class Wikidata { return undefined; } - public static IdToArticle(id: string){ - if(id.startsWith("Q")){ - return "https://wikidata.org/wiki/"+id + public static IdToArticle(id: string) { + if (id.startsWith("Q")) { + return "https://wikidata.org/wiki/" + id } - if(id.startsWith("L")){ - return "https://wikidata.org/wiki/Lexeme:"+id + if (id.startsWith("L")) { + return "https://wikidata.org/wiki/Lexeme:" + id } - throw "Unknown id type: "+id + throw "Unknown id type: " + id } /** @@ -287,8 +288,8 @@ export default class Wikidata { } const url = "https://www.wikidata.org/wiki/Special:EntityData/" + id + ".json"; - const entities = (await Utils.downloadJson(url)).entities - const firstKey = Array.from(Object.keys(entities))[0] // Roundabout way to fetch the entity; it might have been a redirect + const entities = (await Utils.downloadJsonCached(url, 10000)).entities + const firstKey = Array.from(Object.keys(entities))[0] // Roundabout way to fetch the entity; it might have been a redirect const response = entities[firstKey] if (id.startsWith("L")) { diff --git a/Logic/Web/Wikimedia.ts b/Logic/Web/Wikimedia.ts index 8aa34068e..56ad0596b 100644 --- a/Logic/Web/Wikimedia.ts +++ b/Logic/Web/Wikimedia.ts @@ -9,8 +9,8 @@ export default class Wikimedia { * @param continueParameter: if the page indicates that more pages should be loaded, this uses a token to continue. Provided by wikimedia */ public static async GetCategoryContents(categoryName: string, - maxLoad = 10, - continueParameter: string = undefined): Promise { + maxLoad = 10, + continueParameter: string = undefined): Promise { if (categoryName === undefined || categoryName === null || categoryName === "") { return []; } diff --git a/Logic/Web/Wikipedia.ts b/Logic/Web/Wikipedia.ts index ede8e608d..3a548ee57 100644 --- a/Logic/Web/Wikipedia.ts +++ b/Logic/Web/Wikipedia.ts @@ -14,7 +14,7 @@ export default class Wikipedia { private static readonly classesToRemove = [ "shortdescription", "sidebar", - "infobox","infobox_v2", + "infobox", "infobox_v2", "noprint", "ambox", "mw-editsection", @@ -22,26 +22,27 @@ export default class Wikipedia { "mw-empty-elt", "hatnote" // Often redirects ] - + private static readonly idsToRemove = [ "sjabloon_zie" ] private static readonly _cache = new Map>() - + public static GetArticle(options: { pageName: string, - language?: "en" | string}): UIEventSource<{ success: string } | { error: any }>{ - const key = (options.language ?? "en")+":"+options.pageName + language?: "en" | string + }): UIEventSource<{ success: string } | { error: any }> { + const key = (options.language ?? "en") + ":" + options.pageName const cached = Wikipedia._cache.get(key) - if(cached !== undefined){ + if (cached !== undefined) { return cached } const v = UIEventSource.FromPromiseWithErr(Wikipedia.GetArticleAsync(options)) Wikipedia._cache.set(key, v) return v; } - + public static async GetArticleAsync(options: { pageName: string, language?: "en" | string @@ -57,24 +58,22 @@ export default class Wikipedia { const content = Array.from(div.children)[0] for (const forbiddenClass of Wikipedia.classesToRemove) { - const toRemove = content.getElementsByClassName(forbiddenClass) + const toRemove = content.getElementsByClassName(forbiddenClass) for (const toRemoveElement of Array.from(toRemove)) { toRemoveElement.parentElement?.removeChild(toRemoveElement) } } for (const forbiddenId of Wikipedia.idsToRemove) { - const toRemove = content.querySelector("#"+forbiddenId) + const toRemove = content.querySelector("#" + forbiddenId) toRemove?.parentElement?.removeChild(toRemove) } - - + const links = Array.from(content.getElementsByTagName("a")) // Rewrite relative links to absolute links + open them in a new tab - links.filter(link => link.getAttribute("href")?.startsWith("/") ?? false). - forEach(link => { + links.filter(link => link.getAttribute("href")?.startsWith("/") ?? false).forEach(link => { link.target = '_blank' // note: link.getAttribute("href") gets the textual value, link.href is the rewritten version which'll contain the host for relative paths link.href = `https://${language}.wikipedia.org${link.getAttribute("href")}`; diff --git a/Models/Constants.ts b/Models/Constants.ts index 03e6aede0..ec5e574a2 100644 --- a/Models/Constants.ts +++ b/Models/Constants.ts @@ -2,7 +2,7 @@ import {Utils} from "../Utils"; export default class Constants { - public static vNumber = "0.12.2-beta"; + public static vNumber = "0.12.8"; public static ImgurApiKey = '7070e7167f0a25a' public static readonly mapillary_client_token_v3 = 'TXhLaWthQ1d4RUg0czVxaTVoRjFJZzowNDczNjUzNmIyNTQyYzI2' public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85" @@ -17,7 +17,6 @@ export default class Constants { // Doesn't support nwr: "https://overpass.openstreetmap.fr/api/interpreter" ] - // The user journey states thresholds when a new feature gets unlocked public static userJourney = { @@ -40,6 +39,19 @@ export default class Constants { * (Note that pendingChanges might upload sooner if the popup is closed or similar) */ static updateTimeoutSec: number = 30; + /** + * If the contributor has their GPS location enabled and makes a change, + * the points visited less then `nearbyVisitTime`-seconds ago will be inspected. + * The point closest to the changed feature will be considered and this distance will be tracked. + * ALl these distances are used to calculate a nearby-score + */ + static nearbyVisitTime: number= 30 * 60; + /** + * If a user makes a change, the distance to the changed object is calculated. + * If a user makes multiple changes, all these distances are put into multiple bins, depending on this distance. + * For every bin, the totals are uploaded as metadata + */ + static distanceToChangeObjectBins = [25,50,100,500,1000,5000, Number.MAX_VALUE] private static isRetina(): boolean { if (Utils.runningFromConsole) { diff --git a/Models/Denomination.ts b/Models/Denomination.ts index 04e4077d7..d79118f51 100644 --- a/Models/Denomination.ts +++ b/Models/Denomination.ts @@ -44,13 +44,13 @@ export class Denomination { get human(): Translation { return this._human.Clone() } - + get humanSingular(): Translation { return (this._humanSingular ?? this._human).Clone() } - - getToggledHuman(isSingular: UIEventSource): BaseUIElement{ - if(this._humanSingular === undefined){ + + getToggledHuman(isSingular: UIEventSource): BaseUIElement { + if (this._humanSingular === undefined) { return this.human } return new Toggle( @@ -59,7 +59,7 @@ export class Denomination { isSingular ) } - + public canonicalValue(value: string, actAsDefault?: boolean) { if (value === undefined) { return undefined; @@ -68,12 +68,12 @@ export class Denomination { if (stripped === null) { return null; } - if(stripped === "1" && this._canonicalSingular !== undefined){ - return "1 "+this._canonicalSingular + if (stripped === "1" && this._canonicalSingular !== undefined) { + return "1 " + this._canonicalSingular } return stripped + " " + this.canonical; } - + /** * Returns the core value (without unit) if: * - the value ends with the canonical or an alternative value (or begins with if prefix is set) @@ -89,30 +89,31 @@ export class Denomination { value = value.toLowerCase() const self = this; - function startsWith(key){ - if(self.prefix){ + + function startsWith(key) { + if (self.prefix) { return value.startsWith(key) - }else{ + } else { return value.endsWith(key) } } - - function substr(key){ - if(self.prefix){ + + function substr(key) { + if (self.prefix) { return value.substr(key.length).trim() - }else{ + } else { return value.substring(0, value.length - key.length).trim() } } - - if(this.canonical !== "" && startsWith(this.canonical.toLowerCase())){ + + if (this.canonical !== "" && startsWith(this.canonical.toLowerCase())) { return substr(this.canonical) - } - - if(this._canonicalSingular !== undefined && this._canonicalSingular !== "" && startsWith(this._canonicalSingular)){ + } + + if (this._canonicalSingular !== undefined && this._canonicalSingular !== "" && startsWith(this._canonicalSingular)) { return substr(this._canonicalSingular) } - + for (const alternativeValue of this.alternativeDenominations) { if (startsWith(alternativeValue)) { return substr(alternativeValue); diff --git a/Models/FilteredLayer.ts b/Models/FilteredLayer.ts index 68ffb4483..f57cea891 100644 --- a/Models/FilteredLayer.ts +++ b/Models/FilteredLayer.ts @@ -1,10 +1,9 @@ import {UIEventSource} from "../Logic/UIEventSource"; import LayerConfig from "./ThemeConfig/LayerConfig"; -import {And} from "../Logic/Tags/And"; import FilterConfig from "./ThemeConfig/FilterConfig"; export default interface FilteredLayer { readonly isDisplayed: UIEventSource; - readonly appliedFilters: UIEventSource<{filter: FilterConfig, selected: number}[]>; + readonly appliedFilters: UIEventSource<{ filter: FilterConfig, selected: number }[]>; readonly layerDef: LayerConfig; } \ No newline at end of file diff --git a/Models/ThemeConfig/FilterConfig.ts b/Models/ThemeConfig/FilterConfig.ts index 7a032c6de..833ae5050 100644 --- a/Models/ThemeConfig/FilterConfig.ts +++ b/Models/ThemeConfig/FilterConfig.ts @@ -18,7 +18,7 @@ export default class FilterConfig { if (json.id === undefined) { throw `A filter without id was found at ${context}` } - if(json.id.match(/^[a-zA-Z0-9_-]*$/) === null){ + if (json.id.match(/^[a-zA-Z0-9_-]*$/) === null) { throw `A filter with invalid id was found at ${context}. Ids should only contain letters, numbers or - _` } @@ -42,9 +42,9 @@ export default class FilterConfig { return {question: question, osmTags: osmTags}; }); - - if(this.options.length > 1 && this.options[0].osmTags["and"]?.length !== 0){ - throw "Error in "+context+"."+this.id+": the first option of a multi-filter should always be the 'reset' option and not have any filters" + + if (this.options.length > 1 && this.options[0].osmTags["and"]?.length !== 0) { + throw "Error in " + context + "." + this.id + ": the first option of a multi-filter should always be the 'reset' option and not have any filters" } } } \ No newline at end of file diff --git a/Models/ThemeConfig/Json/LayerConfigJson.ts b/Models/ThemeConfig/Json/LayerConfigJson.ts index 1d0e7f8fd..c45548bb9 100644 --- a/Models/ThemeConfig/Json/LayerConfigJson.ts +++ b/Models/ThemeConfig/Json/LayerConfigJson.ts @@ -64,14 +64,14 @@ export interface LayerConfigJson { * NOTE: the previous format was 'overpassTags: AndOrTagConfigJson | string', which is interpreted as a shorthand for source: {osmTags: "key=value"} * While still supported, this is considered deprecated */ - source: ({ osmTags: AndOrTagConfigJson | string, overpassScript?: string } | + source: ({ osmTags: AndOrTagConfigJson | string, overpassScript?: string } | { osmTags: AndOrTagConfigJson | string, geoJson: string, geoJsonZoomLevel?: number, isOsmCache?: boolean, mercatorCrs?: boolean }) & ({ /** * The maximum amount of seconds that a tile is allowed to linger in the cache */ maxCacheAge?: number }) - + /** * * A list of extra tags to calculate, specified as "keyToAssignTo=javascript-expression". @@ -93,8 +93,8 @@ export interface LayerConfigJson { /** * This tag rendering should either be 'yes' or 'no'. If 'no' is returned, then the feature will be hidden from view. - * This is useful to hide certain features from view. - * + * This is useful to hide certain features from view. + * * Important: hiding features does not work dynamically, but is only calculated when the data is first renders. * This implies that it is not possible to hide a feature after a tagging change * @@ -207,15 +207,13 @@ export interface LayerConfigJson { * This is mainly create questions for a 'left' and a 'right' side of the road. * These will be grouped and questions will be asked together */ - tagRenderings?: (string | {builtin: string, override: any} | TagRenderingConfigJson | { + tagRenderings?: (string | { builtin: string, override: any } | TagRenderingConfigJson | { rewrite: { sourceString: string, into: string[] }[], - renderings: (string | {builtin: string, override: any} | TagRenderingConfigJson)[] + renderings: (string | { builtin: string, override: any } | TagRenderingConfigJson)[] }) [], - - /** @@ -273,15 +271,15 @@ export interface LayerConfigJson { /** * Indicates if a point can be moved and configures the modalities. - * + * * A feature can be moved by MapComplete if: - * + * * - It is a point * - The point is _not_ part of a way or a a relation. - * + * * Off by default. Can be enabled by setting this flag or by configuring. */ - allowMove?: boolean | MoveConfigJson + allowMove?: boolean | MoveConfigJson /** * IF set, a 'split this road' button is shown diff --git a/Models/ThemeConfig/Json/LayoutConfigJson.ts b/Models/ThemeConfig/Json/LayoutConfigJson.ts index de2abe0a1..27d10823e 100644 --- a/Models/ThemeConfig/Json/LayoutConfigJson.ts +++ b/Models/ThemeConfig/Json/LayoutConfigJson.ts @@ -1,4 +1,3 @@ -import {TagRenderingConfigJson} from "./TagRenderingConfigJson"; import {LayerConfigJson} from "./LayerConfigJson"; import TilesourceConfigJson from "./TilesourceConfigJson"; @@ -15,7 +14,7 @@ import TilesourceConfigJson from "./TilesourceConfigJson"; * General remark: a type (string | any) indicates either a fixed or a translatable string. */ export interface LayoutConfigJson { - + /** * The id of this layout. * @@ -216,7 +215,7 @@ export interface LayoutConfigJson { */ maxZoom?: number, /** - * The number of elements per tile needed to start clustering + * The number of elements per tile needed to start clustering * If clustering is defined, defaults to 25 */ minNeededElements?: number diff --git a/Models/ThemeConfig/Json/LineRenderingConfigJson.ts b/Models/ThemeConfig/Json/LineRenderingConfigJson.ts index 708366767..2b2606473 100644 --- a/Models/ThemeConfig/Json/LineRenderingConfigJson.ts +++ b/Models/ThemeConfig/Json/LineRenderingConfigJson.ts @@ -2,9 +2,9 @@ import {TagRenderingConfigJson} from "./TagRenderingConfigJson"; /** * The LineRenderingConfig gives all details onto how to render a single line of a feature. - * + * * This can be used if: - * + * * - The feature is a line * - The feature is an area */ @@ -28,9 +28,25 @@ export default interface LineRenderingConfigJson { dashArray?: string | TagRenderingConfigJson /** - * The number of pixels this line should be moved. + * The form at the end of a line + */ + lineCap?: "round" | "square" | "butt" | string | TagRenderingConfigJson + + /** + * Wehter or not to fill polygons + */ + fill?: "yes" | "no" | TagRenderingConfigJson + + /** + * The color to fill a polygon with. + * If undefined, this will be slightly more opaque version of the stroke line + */ + fillColor?: string | TagRenderingConfigJson + + /** + * The number of pixels this line should be moved. * Use a positive numbe to move to the right, a negative to move to the left (left/right as defined by the drawing direction of the line). - * + * * IMPORTANT: MapComplete will already normalize 'key:both:property' and 'key:both' into the corresponding 'key:left' and 'key:right' tagging (same for 'sidewalk=left/right/both' which is rewritten to 'sidewalk:left' and 'sidewalk:right') * This simplifies programming. Refer to the CalculatedTags.md-documentation for more details */ diff --git a/Models/ThemeConfig/Json/PointRenderingConfigJson.ts b/Models/ThemeConfig/Json/PointRenderingConfigJson.ts index 45f34b755..75e663361 100644 --- a/Models/ThemeConfig/Json/PointRenderingConfigJson.ts +++ b/Models/ThemeConfig/Json/PointRenderingConfigJson.ts @@ -3,9 +3,9 @@ import {AndOrTagConfigJson} from "./TagConfigJson"; /** * The PointRenderingConfig gives all details onto how to render a single point of a feature. - * + * * This can be used if: - * + * * - The feature is a point * - To render something at the centroid of an area, or at the start, end or projected centroid of a way */ @@ -16,7 +16,7 @@ export default interface PointRenderingConfigJson { * Using `location: ["point", "centroid"] will always render centerpoint */ location: ("point" | "centroid" | "start" | "end")[] - + /** * The icon for an element. * Note that this also doubles as the icon for this layer (rendered with the overpass-tags) ÃĄnd the icon in the presets. diff --git a/Models/ThemeConfig/Json/TagRenderingConfigJson.ts b/Models/ThemeConfig/Json/TagRenderingConfigJson.ts index 0be6c6967..75f91018c 100644 --- a/Models/ThemeConfig/Json/TagRenderingConfigJson.ts +++ b/Models/ThemeConfig/Json/TagRenderingConfigJson.ts @@ -8,7 +8,9 @@ export interface TagRenderingConfigJson { /** * The id of the tagrendering, should be an unique string. - * Used to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise + * Used to keep the translations in sync. Only used in the tagRenderings-array of a layerConfig, not requered otherwise. + * + * Use 'questions' to trigger the question box of this group (if a group is defined) */ id?: string, @@ -17,7 +19,7 @@ export interface TagRenderingConfigJson { * The first tagRendering of a group will always be a sticky element. */ group?: string - + /** * Renders this value. Note that "{key}"-parts are substituted by the corresponding values of the element. * If neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value. @@ -89,13 +91,13 @@ export interface TagRenderingConfigJson { * Allows fixed-tag inputs, shown either as radiobuttons or as checkboxes */ mappings?: { - + /** * If this condition is met, then the text under `then` will be shown. * If no value matches, and the user selects this mapping as an option, then these tags will be uploaded to OSM. - * + * * For example: {'if': 'diet:vegetarion=yes', 'then':'A vegetarian option is offered here'} - * + * * This can be an substituting-tag as well, e.g. {'if': 'addr:street:={_calculated_nearby_streetname}', 'then': '{_calculated_nearby_streetname}'} */ if: AndOrTagConfigJson | string, diff --git a/Models/ThemeConfig/Json/UnitConfigJson.ts b/Models/ThemeConfig/Json/UnitConfigJson.ts index c8c22afc0..5eba5eaf4 100644 --- a/Models/ThemeConfig/Json/UnitConfigJson.ts +++ b/Models/ThemeConfig/Json/UnitConfigJson.ts @@ -12,12 +12,11 @@ export default interface UnitConfigJson { /** * The possible denominations */ - applicableUnits:ApplicableUnitJson[] + applicableUnits: ApplicableUnitJson[] } -export interface ApplicableUnitJson -{ +export interface ApplicableUnitJson { /** * The canonical value which will be added to the text. * e.g. "m" for meters @@ -28,8 +27,8 @@ export interface ApplicableUnitJson * The canonical denomination in the case that the unit is precisely '1' */ canonicalDenominationSingular?: string, - - + + /** * A list of alternative values which can occur in the OSM database - used for parsing. */ diff --git a/Models/ThemeConfig/LayerConfig.ts b/Models/ThemeConfig/LayerConfig.ts index 5c8090d61..34245bd7b 100644 --- a/Models/ThemeConfig/LayerConfig.ts +++ b/Models/ThemeConfig/LayerConfig.ts @@ -17,6 +17,12 @@ import LineRenderingConfigJson from "./Json/LineRenderingConfigJson"; import {TagRenderingConfigJson} from "./Json/TagRenderingConfigJson"; import {UIEventSource} from "../../Logic/UIEventSource"; import BaseUIElement from "../../UI/BaseUIElement"; +import Combine from "../../UI/Base/Combine"; +import Title from "../../UI/Base/Title"; +import List from "../../UI/Base/List"; +import Link from "../../UI/Base/Link"; +import {Utils} from "../../Utils"; +import * as icons from "../../assets/tagRenderings/icons.json" export default class LayerConfig extends WithContextLoader { @@ -127,7 +133,6 @@ export default class LayerConfig extends WithContextLoader { const code = kv.substring(index + 1); try { - new Function("feat", "return " + code + ";"); } catch (e) { throw `Invalid function definition: code ${code} is invalid:${e} (at ${context})` @@ -191,39 +196,65 @@ export default class LayerConfig extends WithContextLoader { throw "MapRendering is undefined in " + context } - this.mapRendering = json.mapRendering - .filter(r => r["location"] !== undefined) - .map((r, i) => new PointRenderingConfig(r, context + ".mapRendering[" + i + "]")) + if (json.mapRendering === null) { + this.mapRendering = [] + this.lineRendering = [] + } else { + this.mapRendering = Utils.NoNull(json.mapRendering) + .filter(r => r["location"] !== undefined) + .map((r, i) => new PointRenderingConfig(r, context + ".mapRendering[" + i + "]")) - this.lineRendering = json.mapRendering - .filter(r => r["location"] === undefined) - .map((r, i) => new LineRenderingConfig(r, context + ".mapRendering[" + i + "]")) + this.lineRendering = Utils.NoNull(json.mapRendering) + .filter(r => r["location"] === undefined) + .map((r, i) => new LineRenderingConfig(r, context + ".mapRendering[" + i + "]")) + const hasCenterRendering = this.mapRendering.some(r => r.location.has("centroid") || r.location.has("start") || r.location.has("end")) + + if (this.lineRendering.length === 0 && this.mapRendering.length === 0) { + console.log(json.mapRendering) + throw("The layer " + this.id + " does not have any maprenderings defined and will thus not show up on the map at all. If this is intentional, set maprenderings to 'null' instead of '[]'") + } else if (!hasCenterRendering && this.lineRendering.length === 0) { + throw "The layer " + this.id + " might not render ways. This might result in dropped information" + } + } - this.tagRenderings = this.ExtractLayerTagRenderings(json) const missingIds = json.tagRenderings?.filter(tr => typeof tr !== "string" && tr["builtin"] === undefined && tr["id"] === undefined && tr["rewrite"] === undefined) ?? []; - - if (missingIds.length > 0 && official) { + if (missingIds?.length > 0 && official) { console.error("Some tagRenderings of", this.id, "are missing an id:", missingIds) throw "Missing ids in tagrenderings" } + this.tagRenderings = this.ExtractLayerTagRenderings(json, official) + if (official) { + + const emptyIds = this.tagRenderings.filter(tr => tr.id === ""); + if (emptyIds.length > 0) { + throw `Some tagrendering-ids are empty or have an emtpy string; this is not allowed (at ${context})` + } + + const duplicateIds = Utils.Dupicates(this.tagRenderings.map(f => f.id).filter(id => id !== "questions")) + if (duplicateIds.length > 0) { + throw `Some tagRenderings have a duplicate id: ${duplicateIds} (at ${context}.tagRenderings)` + } + } + this.filters = (json.filter ?? []).map((option, i) => { return new FilterConfig(option, `${context}.filter-[${i}]`) }); + { + const duplicateIds = Utils.Dupicates(this.filters.map(f => f.id)) + if (duplicateIds.length > 0) { + throw `Some filters have a duplicate id: ${duplicateIds} (at ${context}.filters)` + } + } + if (json["filters"] !== undefined) { throw "Error in " + context + ": use 'filter' instead of 'filters'" } const titleIcons = []; - const defaultIcons = [ - "phonelink", - "emaillink", - "wikipedialink", - "osmlink", - "sharelink", - ]; + const defaultIcons = icons.defaultIcons; for (const icon of json.titleIcons ?? defaultIcons) { if (icon === "defaults") { titleIcons.push(...defaultIcons); @@ -232,7 +263,9 @@ export default class LayerConfig extends WithContextLoader { } } - this.titleIcons = this.ParseTagRenderings(titleIcons, true); + this.titleIcons = this.ParseTagRenderings(titleIcons, { + readOnlyMode: true + }); this.title = this.tr("title", undefined); this.isShown = this.tr("isShown", "yes"); @@ -264,7 +297,10 @@ export default class LayerConfig extends WithContextLoader { } } - public defaultIcon() : BaseUIElement | undefined{ + public defaultIcon(): BaseUIElement | undefined { + if (this.mapRendering === undefined || this.mapRendering === null) { + return undefined; + } const mapRendering = this.mapRendering.filter(r => r.location.has("point"))[0] if (mapRendering === undefined) { return undefined @@ -273,7 +309,7 @@ export default class LayerConfig extends WithContextLoader { return mapRendering.GenerateLeafletStyle(defaultTags, false, {noSize: true}).html } - public ExtractLayerTagRenderings(json: LayerConfigJson): TagRenderingConfig[] { + public ExtractLayerTagRenderings(json: LayerConfigJson, official: boolean): TagRenderingConfig[] { if (json.tagRenderings === undefined) { return [] @@ -306,12 +342,16 @@ export default class LayerConfig extends WithContextLoader { throw `Error in ${this._context}.tagrenderings[${i}]: got a value which defines either \`rewrite\` or \`renderings\`, but not both. Either define both or move the \`renderings\` out of this scope` } - const allRenderings = this.ParseTagRenderings(normalTagRenderings, false); + const allRenderings = this.ParseTagRenderings(normalTagRenderings, + { + requiresId: official + }); if (renderingsToRewrite.length === 0) { return allRenderings } + /* Used for left|right group creation and replacement */ function prepConfig(keyToRewrite: string, target: string, tr: TagRenderingConfigJson) { function replaceRecursive(transl: string | any) { @@ -343,7 +383,9 @@ export default class LayerConfig extends WithContextLoader { const textToReplace = rewriteGroup.rewrite.sourceString const targets = rewriteGroup.rewrite.into for (const target of targets) { - const parsedRenderings = this.ParseTagRenderings(tagRenderings, false, tr => prepConfig(textToReplace, target, tr)) + const parsedRenderings = this.ParseTagRenderings(tagRenderings, { + prepConfig: tr => prepConfig(textToReplace, target, tr) + }) if (!rewriteGroups.has(target)) { rewriteGroups.set(target, []) @@ -369,6 +411,45 @@ export default class LayerConfig extends WithContextLoader { } + public GenerateDocumentation(usedInThemes: string[], addedByDefault = false, canBeIncluded = true): BaseUIElement { + const extraProps = [] + + if (canBeIncluded) { + if (addedByDefault) { + extraProps.push("**This layer is included automatically in every theme. This layer might contain no points**") + } + if (this.title === undefined) { + extraProps.push("Not clickable by default. If you import this layer in your theme, override `title` to make this clickable") + } + if (this.name === undefined) { + extraProps.push("Not visible in the layer selection by default. If you want to make this layer toggable, override `name`") + } + if (this.mapRendering.length === 0) { + extraProps.push("Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`") + } + } else { + extraProps.push("This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.") + } + + + let usingLayer: BaseUIElement[] = [] + if (usedInThemes?.length > 0 && !addedByDefault) { + usingLayer = [new Title("Themes using this layer", 4), + new List((usedInThemes ?? []).map(id => new Link(id, "https://mapcomplete.osm.be/" + id))) + ] + } + + return new Combine([ + new Title(this.id, 3), + this.description, + + new Link("Go to the source code", `../assets/layers/${this.id}/${this.id}.json`), + + new List(extraProps), + ...usingLayer + ]).SetClass("flex flex-col") + } + public CustomCodeSnippets(): string[] { if (this.calculatedTags === undefined) { return []; diff --git a/Models/ThemeConfig/LayoutConfig.ts b/Models/ThemeConfig/LayoutConfig.ts index 8702a3cbf..61efd8520 100644 --- a/Models/ThemeConfig/LayoutConfig.ts +++ b/Models/ThemeConfig/LayoutConfig.ts @@ -52,8 +52,8 @@ export default class LayoutConfig { public readonly overpassMaxZoom: number public readonly osmApiTileSize: number public readonly official: boolean; - public readonly trackAllNodes : boolean; - + public readonly trackAllNodes: boolean; + constructor(json: LayoutConfigJson, official = true, context?: string) { this.official = official; this.id = json.id; @@ -63,7 +63,7 @@ export default class LayoutConfig { this.version = json.version; this.language = []; this.trackAllNodes = false - + if (typeof json.language === "string") { this.language = [json.language]; } else { @@ -87,32 +87,32 @@ export default class LayoutConfig { this.startZoom = json.startZoom; this.startLat = json.startLat; this.startLon = json.startLon; - if(json.widenFactor <= 0){ - throw "Widenfactor too small, shoud be > 0" + if (json.widenFactor <= 0) { + throw "Widenfactor too small, shoud be > 0" } - if(json.widenFactor > 20){ - throw "Widenfactor is very big, use a value between 1 and 5 (current value is "+json.widenFactor+") at "+context + if (json.widenFactor > 20) { + throw "Widenfactor is very big, use a value between 1 and 5 (current value is " + json.widenFactor + ") at " + context } - + this.widenFactor = json.widenFactor ?? 1.5; - + this.defaultBackgroundId = json.defaultBackgroundId; - this.tileLayerSources = (json.tileLayerSources??[]).map((config, i) => new TilesourceConfig(config, `${this.id}.tileLayerSources[${i}]`)) - const layerInfo = LayoutConfig.ExtractLayers(json, official, context); + this.tileLayerSources = (json.tileLayerSources ?? []).map((config, i) => new TilesourceConfig(config, `${this.id}.tileLayerSources[${i}]`)) + const layerInfo = LayoutConfig.ExtractLayers(json, official, context); this.layers = layerInfo.layers this.trackAllNodes = layerInfo.extractAllNodes - - + + this.clustering = { maxZoom: 16, minNeededElements: 25, }; - if(json.clustering === false){ + if (json.clustering === false) { this.clustering = { maxZoom: 0, minNeededElements: 100000, }; - }else if (json.clustering) { + } else if (json.clustering) { this.clustering = { maxZoom: json.clustering.maxZoom ?? 18, minNeededElements: json.clustering.minNeededElements ?? 25, @@ -124,7 +124,7 @@ export default class LayoutConfig { if (json.hideInOverview) { throw "The json for " + this.id + " contains a 'hideInOverview'. Did you mean hideFromOverview instead?" } - this.lockLocation = <[[number, number], [number, number]]> json.lockLocation ?? undefined; + this.lockLocation = <[[number, number], [number, number]]>json.lockLocation ?? undefined; this.enableUserBadge = json.enableUserBadge ?? true; this.enableShareScreen = json.enableShareScreen ?? true; this.enableMoreQuests = json.enableMoreQuests ?? true; @@ -139,10 +139,10 @@ export default class LayoutConfig { this.enableIframePopout = json.enableIframePopout ?? true this.customCss = json.customCss; this.overpassUrl = Constants.defaultOverpassUrls - if(json.overpassUrl !== undefined){ - if(typeof json.overpassUrl === "string"){ + if (json.overpassUrl !== undefined) { + if (typeof json.overpassUrl === "string") { this.overpassUrl = [json.overpassUrl] - }else{ + } else { this.overpassUrl = json.overpassUrl } } @@ -152,20 +152,24 @@ export default class LayoutConfig { } - private static ExtractLayers(json: LayoutConfigJson, official: boolean, context: string): {layers: LayerConfig[], extractAllNodes: boolean} { + private static ExtractLayers(json: LayoutConfigJson, official: boolean, context: string): { layers: LayerConfig[], extractAllNodes: boolean } { const result: LayerConfig[] = [] let exportAllNodes = false json.layers.forEach((layer, i) => { - + if (typeof layer === "string") { if (AllKnownLayers.sharedLayersJson.get(layer) !== undefined) { if (json.overrideAll !== undefined) { - let lyr = JSON.parse(JSON.stringify(AllKnownLayers.sharedLayersJson[layer])); + let lyr = JSON.parse(JSON.stringify(AllKnownLayers.sharedLayersJson.get(layer))); const newLayer = new LayerConfig(Utils.Merge(json.overrideAll, lyr), `${json.id}+overrideAll.layers[${i}]`, official) result.push(newLayer) return } else { - result.push(AllKnownLayers.sharedLayers[layer]) + const shared = AllKnownLayers.sharedLayers.get(layer) + if(shared === undefined){ + throw `Shared layer ${layer} not found (at ${context}.layers[${i}])` + } + result.push(shared) return } } else { @@ -179,11 +183,10 @@ export default class LayoutConfig { layer = Utils.Merge(json.overrideAll, layer); } // @ts-ignore - const newLayer = new LayerConfig(layer, `${json.id}.layers[${i}]`, official) - result.push(newLayer) + result.push(new LayerConfig(layer, `${json.id}.layers[${i}]`, official)) return } - + // @ts-ignore let names = layer.builtin; if (typeof names === "string") { @@ -191,11 +194,11 @@ export default class LayoutConfig { } names.forEach(name => { - if(name === "type_node"){ + if (name === "type_node") { // This is a very special layer which triggers special behaviour exportAllNodes = true; } - + const shared = AllKnownLayers.sharedLayersJson.get(name); if (shared === undefined) { throw `Unknown shared/builtin layer ${name} at ${context}.layers[${i}]. Available layers are ${Array.from(AllKnownLayers.sharedLayersJson.keys()).join(", ")}`; @@ -204,13 +207,19 @@ export default class LayoutConfig { if (json.overrideAll !== undefined) { newLayer = Utils.Merge(json.overrideAll, newLayer); } - // @ts-ignore - const layerConfig = new LayerConfig(newLayer, `${json.id}.layers[${i}]`, official) - result.push(layerConfig) + result.push(new LayerConfig(newLayer, `${json.id}.layers[${i}]`, official)) return }) }); + + // Some special layers which are always included by default + for (const defaultLayer of AllKnownLayers.added_by_default) { + if(result.some(l => l?.id === defaultLayer)){ + continue; // Already added + } + result.push(AllKnownLayers.sharedLayers.get(defaultLayer)) + } return {layers: result, extractAllNodes: exportAllNodes} } @@ -287,9 +296,21 @@ export default class LayoutConfig { }) return new LayoutConfig(JSON.parse(originalJson), false, "Layout rewriting") } - - public isLeftRightSensitive(){ + + public isLeftRightSensitive() { return this.layers.some(l => l.isLeftRightSensitive()) } + + public getMatchingLayer(tags: any) : LayerConfig | undefined{ + if(tags === undefined){ + return undefined + } + for (const layer of this.layers) { + if (layer.source.osmTags.matchesProperties(tags)) { + return layer + } + } + return undefined + } } \ No newline at end of file diff --git a/Models/ThemeConfig/LegacyJsonConvert.ts b/Models/ThemeConfig/LegacyJsonConvert.ts index 7f7b0e30f..5a691e0a2 100644 --- a/Models/ThemeConfig/LegacyJsonConvert.ts +++ b/Models/ThemeConfig/LegacyJsonConvert.ts @@ -32,7 +32,7 @@ export default class LegacyJsonConvert { // This is a legacy format, lets create a pointRendering let location: ("point" | "centroid")[] = ["point"] let wayHandling: number = config["wayHandling"] ?? 0 - if (wayHandling === 2) { + if (wayHandling !== 0) { location = ["point", "centroid"] } config.mapRendering = [ @@ -57,20 +57,19 @@ export default class LegacyJsonConvert { } } - - delete config["color"] - delete config["width"] - delete config["dashArray"] - - delete config["icon"] - delete config["iconOverlays"] - delete config["label"] - delete config["iconSize"] - delete config["rotation"] - delete config["wayHandling"] - } + delete config["color"] + delete config["width"] + delete config["dashArray"] + + delete config["icon"] + delete config["iconOverlays"] + delete config["label"] + delete config["iconSize"] + delete config["rotation"] + delete config["wayHandling"] + for (const mapRenderingElement of config.mapRendering) { if (mapRenderingElement["iconOverlays"] !== undefined) { mapRenderingElement["iconBadges"] = mapRenderingElement["iconOverlays"] diff --git a/Models/ThemeConfig/LineRenderingConfig.ts b/Models/ThemeConfig/LineRenderingConfig.ts index 1f0397888..f2eed60d1 100644 --- a/Models/ThemeConfig/LineRenderingConfig.ts +++ b/Models/ThemeConfig/LineRenderingConfig.ts @@ -1,6 +1,4 @@ -import PointRenderingConfigJson from "./Json/PointRenderingConfigJson"; import WithContextLoader from "./WithContextLoader"; -import {UIEventSource} from "../../Logic/UIEventSource"; import TagRenderingConfig from "./TagRenderingConfig"; import {Utils} from "../../Utils"; import LineRenderingConfigJson from "./Json/LineRenderingConfigJson"; @@ -11,7 +9,10 @@ export default class LineRenderingConfig extends WithContextLoader { public readonly color: TagRenderingConfig; public readonly width: TagRenderingConfig; public readonly dashArray: TagRenderingConfig; + public readonly lineCap: TagRenderingConfig; public readonly offset: TagRenderingConfig; + public readonly fill: TagRenderingConfig; + public readonly fillColor: TagRenderingConfig; public readonly leftRightSensitive: boolean constructor(json: LineRenderingConfigJson, context: string) { @@ -19,6 +20,9 @@ export default class LineRenderingConfig extends WithContextLoader { this.color = this.tr("color", "#0000ff"); this.width = this.tr("width", "7"); this.dashArray = this.tr("dashArray", ""); + this.lineCap = this.tr("lineCap", "round"); + this.fill = this.tr("fill", undefined); + this.fillColor = this.tr("fillColor", undefined); this.leftRightSensitive = json.offset !== undefined && json.offset !== 0 && json.offset !== "0" @@ -26,12 +30,7 @@ export default class LineRenderingConfig extends WithContextLoader { } public GenerateLeafletStyle(tags: {}): - { - color: string, - weight: number, - dashArray: string, - offset: number - } { + { fillColor?: string; color: string; lineCap: string; offset: number; weight: number; dashArray: string; fill?: boolean } { function rendernum(tr: TagRenderingConfig, deflt: number) { const str = Number(render(tr, "" + deflt)); const n = Number(str); @@ -45,7 +44,11 @@ export default class LineRenderingConfig extends WithContextLoader { if (tags === undefined) { return deflt } + if(tr === undefined){return deflt} const str = tr?.GetRenderValue(tags)?.txt ?? deflt; + if (str === "") { + return deflt + } return Utils.SubstituteKeys(str, tags)?.replace(/{.*}/g, ""); } @@ -56,15 +59,27 @@ export default class LineRenderingConfig extends WithContextLoader { "--catch-detail-color" ); } - - const weight = rendernum(this.width, 5); - const offset = rendernum(this.offset, 0) - return { + + const style = { color, - weight, dashArray, - offset + weight: rendernum(this.width, 5), + lineCap: render(this.lineCap), + offset: rendernum(this.offset, 0) } + + const fillStr = render(this.fill, undefined) + let fill: boolean = undefined; + if (fillStr !== undefined && fillStr !== "") { + style["fill"] = fillStr === "yes" || fillStr === "true" + } + + const fillColorStr = render(this.fillColor, undefined) + if(fillColorStr !== undefined){ + style["fillColor"] = fillColorStr + } + return style + } } \ No newline at end of file diff --git a/Models/ThemeConfig/PointRenderingConfig.ts b/Models/ThemeConfig/PointRenderingConfig.ts index 911a2ed54..8e047c24b 100644 --- a/Models/ThemeConfig/PointRenderingConfig.ts +++ b/Models/ThemeConfig/PointRenderingConfig.ts @@ -15,7 +15,7 @@ import {VariableUiElement} from "../../UI/Base/VariableUIElement"; export default class PointRenderingConfig extends WithContextLoader { - private static readonly allowed_location_codes = new Set(["point", "centroid","start","end"]) + private static readonly allowed_location_codes = new Set(["point", "centroid", "start", "end"]) public readonly location: Set<"point" | "centroid" | "start" | "end"> public readonly icon: TagRenderingConfig; @@ -26,34 +26,34 @@ export default class PointRenderingConfig extends WithContextLoader { constructor(json: PointRenderingConfigJson, context: string) { super(json, context) - - if(typeof json.location === "string"){ + + if (typeof json.location === "string") { json.location = [json.location] } - + this.location = new Set(json.location) - + this.location.forEach(l => { const allowed = PointRenderingConfig.allowed_location_codes - if(!allowed.has(l)){ + if (!allowed.has(l)) { throw `A point rendering has an invalid location: '${l}' is not one of ${Array.from(allowed).join(", ")} (at ${context}.location)` } }) - - if(json.icon === undefined && json.label === undefined){ + + if (json.icon === undefined && json.label === undefined) { throw `A point rendering should define at least an icon or a label` } - if(this.location.size == 0){ - throw "A pointRendering should have at least one 'location' to defined where it should be rendered. (At "+context+".location)" + if (this.location.size == 0) { + throw "A pointRendering should have at least one 'location' to defined where it should be rendered. (At " + context + ".location)" } this.icon = this.tr("icon", ""); this.iconBadges = (json.iconBadges ?? []).map((overlay, i) => { - let tr : TagRenderingConfig; + let tr: TagRenderingConfig; if (typeof overlay.then === "string" && SharedTagRenderings.SharedIcons.get(overlay.then) !== undefined) { tr = SharedTagRenderings.SharedIcons.get(overlay.then); - }else{ + } else { tr = new TagRenderingConfig( overlay.then, `iconBadges.${i}` @@ -77,6 +77,43 @@ export default class PointRenderingConfig extends WithContextLoader { this.rotation = this.tr("rotation", "0"); } + /** + * Given a single HTML spec (either a single image path OR "image_path_to_known_svg:fill-colour", returns a fixedUIElement containing that + * The element will fill 100% and be positioned absolutely with top:0 and left: 0 + */ + private static FromHtmlSpec(htmlSpec: string, style: string, isBadge = false): BaseUIElement { + if (htmlSpec === undefined) { + return undefined; + } + const match = htmlSpec.match(/([a-zA-Z0-9_]*):([^;]*)/); + if (match !== null && Svg.All[match[1] + ".svg"] !== undefined) { + const svg = (Svg.All[match[1] + ".svg"] as string) + const targetColor = match[2] + const img = new Img(svg.replace(/#000000/g, targetColor), true) + .SetStyle(style) + if (isBadge) { + img.SetClass("badge") + } + return img + } else { + return new FixedUiElement(``); + } + } + + private static FromHtmlMulti(multiSpec: string, rotation: string, isBadge: boolean, defaultElement: BaseUIElement = undefined) { + if (multiSpec === undefined) { + return defaultElement + } + const style = `width:100%;height:100%;transform: rotate( ${rotation} );display:block;position: absolute; top: 0; left: 0`; + + const htmlDefs = multiSpec.trim()?.split(";") ?? [] + const elements = Utils.NoEmpty(htmlDefs).map(def => PointRenderingConfig.FromHtmlSpec(def, style, isBadge)) + if (elements.length === 0) { + return defaultElement + } else { + return new Combine(elements).SetClass("relative block w-full h-full") + } + } public ExtractImages(): Set { const parts: Set[] = []; @@ -92,44 +129,6 @@ export default class PointRenderingConfig extends WithContextLoader { return allIcons; } - /** - * Given a single HTML spec (either a single image path OR "image_path_to_known_svg:fill-colour", returns a fixedUIElement containing that - * The element will fill 100% and be positioned absolutely with top:0 and left: 0 - */ - private static FromHtmlSpec(htmlSpec: string, style: string, isBadge = false): BaseUIElement { - if (htmlSpec === undefined) { - return undefined; - } - const match = htmlSpec.match(/([a-zA-Z0-9_]*):([^;]*)/); - if (match !== null && Svg.All[match[1] + ".svg"] !== undefined) { - const svg = (Svg.All[match[1] + ".svg"] as string) - const targetColor = match[2] - const img = new Img(svg.replace(/#000000/g, targetColor), true) - .SetStyle(style) - if(isBadge){ - img.SetClass("badge") - } - return img - } else { - return new FixedUiElement(``); - } - } - - private static FromHtmlMulti(multiSpec: string, rotation: string , isBadge: boolean, defaultElement: BaseUIElement = undefined){ - if(multiSpec === undefined){ - return defaultElement - } - const style = `width:100%;height:100%;transform: rotate( ${rotation} );display:block;position: absolute; top: 0; left: 0`; - - const htmlDefs = multiSpec.trim()?.split(";") ?? [] - const elements = Utils.NoEmpty(htmlDefs).map(def => PointRenderingConfig.FromHtmlSpec(def, style, isBadge)) - if (elements.length === 0) { - return defaultElement - } else { - return new Combine(elements).SetClass("relative block w-full h-full") - } - } - public GetSimpleIcon(tags: UIEventSource): BaseUIElement { const self = this; if (this.icon === undefined) { @@ -137,58 +136,16 @@ export default class PointRenderingConfig extends WithContextLoader { } return new VariableUiElement(tags.map(tags => { const rotation = Utils.SubstituteKeys(self.rotation?.GetRenderValue(tags)?.txt ?? "0deg", tags) - + const htmlDefs = Utils.SubstituteKeys(self.icon.GetRenderValue(tags)?.txt, tags) - let defaultPin : BaseUIElement = undefined - if(self.label === undefined){ - defaultPin = Svg.teardrop_with_hole_green_svg() + let defaultPin: BaseUIElement = undefined + if (self.label === undefined) { + defaultPin = Svg.teardrop_with_hole_green_svg() } - return PointRenderingConfig.FromHtmlMulti(htmlDefs, rotation,false, defaultPin) + return PointRenderingConfig.FromHtmlMulti(htmlDefs, rotation, false, defaultPin) })).SetClass("w-full h-full block") } - private GetBadges(tags: UIEventSource): BaseUIElement { - if (this.iconBadges.length === 0) { - return undefined - } - return new VariableUiElement( - tags.map(tags => { - - const badgeElements = this.iconBadges.map(badge => { - - if (!badge.if.matchesProperties(tags)) { - // Doesn't match... - return undefined - } - - const htmlDefs = Utils.SubstituteKeys(badge.then.GetRenderValue(tags)?.txt, tags) - const badgeElement= PointRenderingConfig.FromHtmlMulti(htmlDefs, "0", true)?.SetClass("block relative") - if(badgeElement === undefined){ - return undefined; - } - return new Combine([badgeElement]).SetStyle("width: 1.5rem").SetClass("block") - - }) - - return new Combine(badgeElements).SetClass("inline-flex h-full") - })).SetClass("absolute bottom-0 right-1/3 h-1/2 w-0") - } - - private GetLabel(tags: UIEventSource): BaseUIElement { - if (this.label === undefined) { - return undefined; - } - const self = this; - return new VariableUiElement(tags.map(tags => { - const label = self.label - ?.GetRenderValue(tags) - ?.Subs(tags) - ?.SetClass("block text-center") - return new Combine([label]).SetClass("flex flex-col items-center mt-1") - })) - - } - public GenerateLeafletStyle( tags: UIEventSource, clickable: boolean, @@ -246,9 +203,9 @@ export default class PointRenderingConfig extends WithContextLoader { const iconAndBadges = new Combine([this.GetSimpleIcon(tags), this.GetBadges(tags)]) .SetClass("block relative") - if(!options?.noSize){ + if (!options?.noSize) { iconAndBadges.SetStyle(`width: ${iconW}px; height: ${iconH}px`) - }else{ + } else { iconAndBadges.SetClass("w-full h-full") } @@ -264,4 +221,46 @@ export default class PointRenderingConfig extends WithContextLoader { }; } + private GetBadges(tags: UIEventSource): BaseUIElement { + if (this.iconBadges.length === 0) { + return undefined + } + return new VariableUiElement( + tags.map(tags => { + + const badgeElements = this.iconBadges.map(badge => { + + if (!badge.if.matchesProperties(tags)) { + // Doesn't match... + return undefined + } + + const htmlDefs = Utils.SubstituteKeys(badge.then.GetRenderValue(tags)?.txt, tags) + const badgeElement = PointRenderingConfig.FromHtmlMulti(htmlDefs, "0", true)?.SetClass("block relative") + if (badgeElement === undefined) { + return undefined; + } + return new Combine([badgeElement]).SetStyle("width: 1.5rem").SetClass("block") + + }) + + return new Combine(badgeElements).SetClass("inline-flex h-full") + })).SetClass("absolute bottom-0 right-1/3 h-1/2 w-0") + } + + private GetLabel(tags: UIEventSource): BaseUIElement { + if (this.label === undefined) { + return undefined; + } + const self = this; + return new VariableUiElement(tags.map(tags => { + const label = self.label + ?.GetRenderValue(tags) + ?.Subs(tags) + ?.SetClass("block text-center") + return new Combine([label]).SetClass("flex flex-col items-center mt-1") + })) + + } + } \ No newline at end of file diff --git a/Models/ThemeConfig/SourceConfig.ts b/Models/ThemeConfig/SourceConfig.ts index b378d0acd..7cb58124b 100644 --- a/Models/ThemeConfig/SourceConfig.ts +++ b/Models/ThemeConfig/SourceConfig.ts @@ -8,7 +8,7 @@ export default class SourceConfig { public readonly geojsonSource?: string; public readonly geojsonZoomLevel?: number; public readonly isOsmCacheLayer: boolean; - public readonly mercatorCrs: boolean; + public readonly mercatorCrs: boolean; constructor(params: { mercatorCrs?: boolean; @@ -36,11 +36,12 @@ export default class SourceConfig { console.error(params) throw `Source said it is a OSM-cached layer, but didn't define the actual source of the cache (in context ${context})` } - if(params.geojsonSource !== undefined && params.geojsonSourceLevel !== undefined){ - if(! ["x","y","x_min","x_max","y_min","Y_max"].some(toSearch => params.geojsonSource.indexOf(toSearch) > 0)){ + if (params.geojsonSource !== undefined && params.geojsonSourceLevel !== undefined) { + if (!["x", "y", "x_min", "x_max", "y_min", "Y_max"].some(toSearch => params.geojsonSource.indexOf(toSearch) > 0)) { throw `Source defines a geojson-zoomLevel, but does not specify {x} nor {y} (or equivalent), this is probably a bug (in context ${context})` - }} - this.osmTags = params.osmTags ?? new RegexTag("id",/.*/); + } + } + this.osmTags = params.osmTags ?? new RegexTag("id", /.*/); this.overpassScript = params.overpassScript; this.geojsonSource = params.geojsonSource; this.geojsonZoomLevel = params.geojsonSourceLevel; diff --git a/Models/ThemeConfig/TagRenderingConfig.ts b/Models/ThemeConfig/TagRenderingConfig.ts index 7ef2c5fec..c1374b7ee 100644 --- a/Models/ThemeConfig/TagRenderingConfig.ts +++ b/Models/ThemeConfig/TagRenderingConfig.ts @@ -48,15 +48,18 @@ export default class TagRenderingConfig { this.render = null; this.question = null; this.condition = null; - } - - - if(typeof json === "number"){ - this.render = Translations.WT( ""+json) + this.id = "questions" + this.group = "" return; } - - + + + if (typeof json === "number") { + this.render = Translations.T("" + json, context + ".render") + return; + } + + if (json === undefined) { throw "Initing a TagRenderingConfig with undefined in " + context; } @@ -66,15 +69,19 @@ export default class TagRenderingConfig { return; } - + this.id = json.id ?? ""; + if(this.id.match(/^[a-zA-Z0-9 ()?\/=:;,_-]*$/) === null){ + throw "Invalid ID in "+context+": an id can only contain [a-zA-Z0-0_-] as characters. The offending id is: "+this.id + } + this.group = json.group ?? ""; this.render = Translations.T(json.render, context + ".render"); this.question = Translations.T(json.question, context + ".question"); this.condition = TagUtils.Tag(json.condition ?? {"and": []}, `${context}.condition`); if (json.freeform) { - if(json.freeform.addExtraTags !== undefined && json.freeform.addExtraTags.map === undefined){ + if (json.freeform.addExtraTags !== undefined && json.freeform.addExtraTags.map === undefined) { throw `Freeform.addExtraTags should be a list of strings - not a single string (at ${context})` } this.freeform = { @@ -97,6 +104,12 @@ export default class TagRenderingConfig { throw `Freeform.args is defined. This should probably be 'freeform.helperArgs' (at ${context})` } + + if(json.freeform.key === "questions"){ + if(this.id !== "questions"){ + throw `If you use a freeform key 'questions', the ID must be 'questions' too to trigger the special behaviour. The current id is '${this.id}' (at ${context})` + } + } if (ValidatedTextField.AllTypes[this.freeform.type] === undefined) { @@ -134,8 +147,8 @@ export default class TagRenderingConfig { if (typeof mapping.if !== "string" && mapping.if["length"] !== undefined) { throw `${ctx}: Invalid mapping: "if" is defined as an array. Use {"and": } or {"or": } instead` } - - if(mapping.addExtraTags !== undefined && this.multiAnswer){ + + if (mapping.addExtraTags !== undefined && this.multiAnswer) { throw `${ctx}: Invalid mapping: got a multi-Answer with addExtraTags; this is not allowed` } @@ -150,7 +163,7 @@ export default class TagRenderingConfig { ifnot: (mapping.ifnot !== undefined ? TagUtils.Tag(mapping.ifnot, `${ctx}.ifnot`) : undefined), then: Translations.T(mapping.then, `${ctx}.then`), hideInAnswer: hideInAnswer, - addExtraTags: (mapping.addExtraTags??[]).map((str, j) => TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`)) + addExtraTags: (mapping.addExtraTags ?? []).map((str, j) => TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`)) }; if (this.question) { if (hideInAnswer !== true && mp.if !== undefined && !mp.if.isUsableAsAnswer()) { @@ -170,10 +183,55 @@ export default class TagRenderingConfig { throw `${context}: A question is defined, but no mappings nor freeform (key) are. The question is ${this.question.txt} at ${context}` } - if (this.freeform && this.render === undefined) { - throw `${context}: Detected a freeform key without rendering... Key: ${this.freeform.key} in ${context}` + if (this.id === "questions" && this.render !== undefined) { + for (const ln in this.render.translations) { + const txt :string = this.render.translations[ln] + if(txt.indexOf("{questions}") >= 0){ + continue + } + throw `${context}: The rendering for language ${ln} does not contain {questions}. This is a bug, as this rendering should include exactly this to trigger those questions to be shown!` + + } + if(this.freeform?.key !== undefined && this.freeform?.key !== "questions"){ + throw `${context}: If the ID is questions to trigger a question box, the only valid freeform value is 'questions' as well. Set freeform to questions or remove the freeform all together` + } } + + if (this.freeform) { + if(this.render === undefined){ + throw `${context}: Detected a freeform key without rendering... Key: ${this.freeform.key} in ${context}` + } + for (const ln in this.render.translations) { + const txt :string = this.render.translations[ln] + if(txt === ""){ + throw context+" Rendering for language "+ln+" is empty" + } + if(txt.indexOf("{"+this.freeform.key+"}") >= 0){ + continue + } + if(txt.indexOf("{"+this.freeform.key+":") >= 0){ + continue + } + if(txt.indexOf("{canonical("+this.freeform.key+")") >= 0){ + continue + } + if(this.freeform.type === "opening_hours" && txt.indexOf("{opening_hours_table(") >= 0){ + continue + } + if(this.freeform.type === "wikidata" && txt.indexOf("{wikipedia("+this.freeform.key) >= 0){ + continue + } + if(this.freeform.key === "wikidata" && txt.indexOf("{wikipedia()") >= 0){ + continue + } + throw `${context}: The rendering for language ${ln} does not contain the freeform key {${this.freeform.key}}. This is a bug, as this rendering should show exactly this freeform key!\nThe rendering is ${txt} ` + + } + } + + + if (this.render && this.question && this.freeform === undefined) { throw `${context}: Detected a tagrendering which takes input without freeform key in ${context}; the question is ${this.question.txt}` } @@ -235,7 +293,7 @@ export default class TagRenderingConfig { public IsKnown(tags: any): boolean { if (this.condition && !this.condition.matchesProperties(tags)) { - // Filtered away by the condition + // Filtered away by the condition, so it is kindof known return true; } if (this.multiAnswer) { @@ -260,6 +318,7 @@ export default class TagRenderingConfig { return false; } + /** * Gets all the render values. Will return multiple render values if 'multianswer' is enabled. * The result will equal [GetRenderValue] if not 'multiAnswer' @@ -316,6 +375,9 @@ export default class TagRenderingConfig { } } + if(this.id === "questions"){ + return this.render + } if (this.freeform?.key === undefined) { return this.render; diff --git a/Models/ThemeConfig/TilesourceConfig.ts b/Models/ThemeConfig/TilesourceConfig.ts index aed5b9604..661172bcf 100644 --- a/Models/ThemeConfig/TilesourceConfig.ts +++ b/Models/ThemeConfig/TilesourceConfig.ts @@ -19,7 +19,7 @@ export default class TilesourceConfig { this.minzoom = config.minZoom ?? 0 this.maxzoom = config.maxZoom ?? 999 this.defaultState = config.defaultState ?? true; - if(this.id === undefined){ + if (this.id === undefined) { throw "An id is obligated" } if (this.minzoom > this.maxzoom) { @@ -34,7 +34,7 @@ export default class TilesourceConfig { if (this.source.indexOf("{zoom}") >= 0) { throw "Invalid source url: use {z} instead of {zoom} (at " + ctx + ".source)" } - if(!this.defaultState && config.name === undefined){ + if (!this.defaultState && config.name === undefined) { throw "Disabling an overlay without a name is not possible" } } diff --git a/Models/ThemeConfig/WithContextLoader.ts b/Models/ThemeConfig/WithContextLoader.ts index fea75511e..ed9e2580a 100644 --- a/Models/ThemeConfig/WithContextLoader.ts +++ b/Models/ThemeConfig/WithContextLoader.ts @@ -4,8 +4,12 @@ import {TagRenderingConfigJson} from "./Json/TagRenderingConfigJson"; import {Utils} from "../../Utils"; export default class WithContextLoader { - private readonly _json: any; protected readonly _context: string; + private readonly _json: any; + + public static getKnownTagRenderings : ((id: string) => TagRenderingConfigJson)= function(id) { + return SharedTagRenderings.SharedTagRenderingJson.get(id) +} constructor(json: any, context: string) { this._json = json; @@ -44,18 +48,26 @@ export default class WithContextLoader { * A string is interpreted as a name to call */ public ParseTagRenderings( - tagRenderings?: (string | { builtin: string, override: any } | TagRenderingConfigJson)[], - readOnly = false, - prepConfig: ((config: TagRenderingConfigJson) => TagRenderingConfigJson) = undefined - ) : TagRenderingConfig[]{ + tagRenderings: (string | { builtin: string, override: any } | TagRenderingConfigJson)[], + options?:{ + /** + * Throw an error if 'question' is defined + */ + readOnlyMode?: boolean, + requiresId?: boolean + prepConfig?: ((config: TagRenderingConfigJson) => TagRenderingConfigJson) + + } + ): TagRenderingConfig[] { if (tagRenderings === undefined) { return []; } const context = this._context const renderings: TagRenderingConfig[] = [] - if (prepConfig === undefined) { - prepConfig = c => c + options = options ?? {} + if (options.prepConfig === undefined) { + options.prepConfig = c => c } for (let i = 0; i < tagRenderings.length; i++) { let renderingJson = tagRenderings[i] @@ -65,19 +77,7 @@ export default class WithContextLoader { if (renderingJson["builtin"] !== undefined) { const renderingId = renderingJson["builtin"] - if (renderingId === "questions") { - if (readOnly) { - throw `A tagrendering has a question, but asking a question does not make sense here: is it a title icon or a geojson-layer? ${context}. The offending tagrendering is ${JSON.stringify( - renderingJson - )}`; - } - - const tr = new TagRenderingConfig("questions", context); - renderings.push(tr) - continue; - } - - let sharedJson = SharedTagRenderings.SharedTagRenderingJson.get(renderingId) + let sharedJson = WithContextLoader.getKnownTagRenderings(renderingId) if (sharedJson === undefined) { const keys = Array.from(SharedTagRenderings.SharedTagRenderingJson.keys()); throw `Predefined tagRendering ${renderingId} not found in ${context}.\n Try one of ${keys.join( @@ -85,15 +85,22 @@ export default class WithContextLoader { )}\n If you intent to output this text literally, use {\"render\": } instead"}`; } if (renderingJson["override"] !== undefined) { - sharedJson = Utils.Merge(renderingJson["override"], sharedJson) + sharedJson = Utils.Merge(renderingJson["override"], JSON.parse(JSON.stringify(sharedJson))) } renderingJson = sharedJson } - const patchedConfig = prepConfig(renderingJson) + const patchedConfig = options.prepConfig(renderingJson) const tr = new TagRenderingConfig(patchedConfig, `${context}.tagrendering[${i}]`); + if(options.readOnlyMode && tr.question !== undefined){ + throw "A question is defined for "+`${context}.tagrendering[${i}], but this is not allowed at this position - probably because this rendering is an icon, badge or label` + } + if(options.requiresId && tr.id === ""){ + throw `${context}.tagrendering[${i}] has an invalid ID - make sure it is defined and not empty` + } + renderings.push(tr) } diff --git a/Models/TileRange.ts b/Models/TileRange.ts index cccfe1964..9a585a30e 100644 --- a/Models/TileRange.ts +++ b/Models/TileRange.ts @@ -1,5 +1,5 @@ import {control} from "leaflet"; -import zoom = control.zoom; + export interface TileRange { xstart: number, @@ -15,7 +15,7 @@ export class Tiles { public static MapRange(tileRange: TileRange, f: (x: number, y: number) => T): T[] { const result: T[] = [] const total = tileRange.total - if(total > 100000){ + if (total > 100000) { throw "Tilerange too big" } for (let x = tileRange.xstart; x <= tileRange.xend; x++) { @@ -27,24 +27,6 @@ export class Tiles { return result; } - - private static tile2long(x, z) { - return (x / Math.pow(2, z) * 360 - 180); - } - - private static tile2lat(y, z) { - const n = Math.PI - 2 * Math.PI * y / Math.pow(2, z); - return (180 / Math.PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)))); - } - - private static lon2tile(lon, zoom) { - return (Math.floor((lon + 180) / 360 * Math.pow(2, zoom))); - } - - private static lat2tile(lat, zoom) { - return (Math.floor((1 - Math.log(Math.tan(lat * Math.PI / 180) + 1 / Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, zoom))); - } - /** * Calculates the tile bounds of the * @param z @@ -56,7 +38,6 @@ export class Tiles { return [[Tiles.tile2lat(y, z), Tiles.tile2long(x, z)], [Tiles.tile2lat(y + 1, z), Tiles.tile2long(x + 1, z)]] } - static tile_bounds_lon_lat(z: number, x: number, y: number): [[number, number], [number, number]] { return [[Tiles.tile2long(x, z), Tiles.tile2lat(y, z)], [Tiles.tile2long(x + 1, z), Tiles.tile2lat(y + 1, z)]] } @@ -67,13 +48,14 @@ export class Tiles { * @param x * @param y */ - static centerPointOf(z: number, x: number, y: number): [number, number]{ - return [(Tiles.tile2long(x, z) + Tiles.tile2long(x+1, z)) / 2, (Tiles.tile2lat(y, z) + Tiles.tile2lat(y+1, z)) / 2] + static centerPointOf(z: number, x: number, y: number): [number, number] { + return [(Tiles.tile2long(x, z) + Tiles.tile2long(x + 1, z)) / 2, (Tiles.tile2lat(y, z) + Tiles.tile2lat(y + 1, z)) / 2] } - + static tile_index(z: number, x: number, y: number): number { return ((x * (2 << z)) + y) * 100 + z } + /** * Given a tile index number, returns [z, x, y] * @param index @@ -93,7 +75,7 @@ export class Tiles { static embedded_tile(lat: number, lon: number, z: number): { x: number, y: number, z: number } { return {x: Tiles.lon2tile(lon, z), y: Tiles.lat2tile(lat, z), z: z} } - + static TileRangeBetween(zoomlevel: number, lat0: number, lon0: number, lat1: number, lon1: number): TileRange { const t0 = Tiles.embedded_tile(lat0, lon0, zoomlevel) const t1 = Tiles.embedded_tile(lat1, lon1, zoomlevel) @@ -114,5 +96,22 @@ export class Tiles { } } - + private static tile2long(x, z) { + return (x / Math.pow(2, z) * 360 - 180); + } + + private static tile2lat(y, z) { + const n = Math.PI - 2 * Math.PI * y / Math.pow(2, z); + return (180 / Math.PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)))); + } + + private static lon2tile(lon, zoom) { + return (Math.floor((lon + 180) / 360 * Math.pow(2, zoom))); + } + + private static lat2tile(lat, zoom) { + return (Math.floor((1 - Math.log(Math.tan(lat * Math.PI / 180) + 1 / Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, zoom))); + } + + } \ No newline at end of file diff --git a/Models/Unit.ts b/Models/Unit.ts index 2512580bc..88f41ee41 100644 --- a/Models/Unit.ts +++ b/Models/Unit.ts @@ -37,7 +37,9 @@ export class Unit { const possiblePostFixes = new Set() function addPostfixesOf(str) { - if(str === undefined){return} + if (str === undefined) { + return + } str = str.toLowerCase() for (let i = 0; i < str.length + 1; i++) { const substr = str.substring(0, i) @@ -54,8 +56,8 @@ export class Unit { this.possiblePostFixes.sort((a, b) => b.length - a.length) } - - static fromJson(json: UnitConfigJson, ctx: string){ + + static fromJson(json: UnitConfigJson, ctx: string) { const appliesTo = json.appliesToKey for (let i = 0; i < appliesTo.length; i++) { let key = appliesTo[i]; @@ -82,7 +84,7 @@ export class Unit { const applicable = json.applicableUnits.map((u, i) => new Denomination(u, `${ctx}.units[${i}]`)) return new Unit(appliesTo, applicable, json.eraseInvalidValues ?? false) } - + isApplicableToKey(key: string | undefined): boolean { if (key === undefined) { return false; @@ -112,7 +114,7 @@ export class Unit { return undefined; } const [stripped, denom] = this.findDenomination(value) - const human = stripped === "1" ? denom?.humanSingular : denom?.human + const human = stripped === "1" ? denom?.humanSingular : denom?.human if (human === undefined) { return new FixedUiElement(stripped ?? value); } diff --git a/README.md b/README.md index 6f05efe8f..cd024056a 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ > Let a thousand flowers bloom -**MapComplete is an OpenStreetMap viewer and editor.** It shows map features on a certain topic, and allows to see, edit and -add new features to the map. It can be seen as a +**MapComplete is an OpenStreetMap viewer and editor.** It shows map features on a certain topic, and allows to see, edit +and add new features to the map. It can be seen as a webversion [crossover of StreetComplete and MapContrib](Docs/MapComplete_vs_other_editors.md). It tries to be just as easy to use as StreetComplete, but it allows to focus on one single theme per instance (e.g. nature, bicycle infrastructure, ...) @@ -15,20 +15,23 @@ infrastructure, ...) - Easy to set up a custom theme - Easy to fall down the rabbit hole of OSM -**The basic functionality is** to download some map features from Overpass and then ask certain questions. An answer is sent -back to directly to OpenStreetMap. +**The basic functionality is** to download some map features from Overpass and then ask certain questions. An answer is +sent back to directly to OpenStreetMap. Furthermore, it shows images present in the `image` tag or, if a `wikidata` or `wikimedia_commons`-tag is present, it follows those to get these images too. -**An explicit non-goal** of MapComplete is to modify geometries of ways. Although adding a point to a way or splitting a way -in two parts might be added one day. +**An explicit non-goal** of MapComplete is to modify geometries of ways. Although adding a point to a way or splitting a +way in two parts might be added one day. -**More about MapComplete:** [Watch Pieter's talk on the 2021 State Of The Map Conference](https://media.ccc.de/v/sotm2021-9448-introduction-and-review-of-mapcomplete) ([YouTube](https://www.youtube.com/watch?v=zTtMn6fNbYY)) about the history, vision and future of MapComplete. +**More about +MapComplete:** [Watch Pieter's talk on the 2021 State Of The Map Conference](https://media.ccc.de/v/sotm2021-9448-introduction-and-review-of-mapcomplete) ([YouTube](https://www.youtube.com/watch?v=zTtMn6fNbYY)) +about the history, vision and future of MapComplete. # Creating your own theme It is possible to quickly make and distribute your own theme + - [please read the documentation on how to do this](Docs/Making_Your_Own_Theme.md). ## Examples diff --git a/State.ts b/State.ts index f11113f4a..9a0f47816 100644 --- a/State.ts +++ b/State.ts @@ -14,6 +14,5 @@ export default class State extends FeaturePipelineState { super(layoutToUse) } - } diff --git a/UI/AllThemesGui.ts b/UI/AllThemesGui.ts index ec5e2481d..0113ddbc1 100644 --- a/UI/AllThemesGui.ts +++ b/UI/AllThemesGui.ts @@ -8,32 +8,31 @@ import {Utils} from "../Utils"; import LanguagePicker from "./LanguagePicker"; import IndexText from "./BigComponents/IndexText"; import FeaturedMessage from "./BigComponents/FeaturedMessage"; -import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; export default class AllThemesGui { constructor() { - - try{ - - new FixedUiElement("").AttachTo("centermessage") - const state = new UserRelatedState(undefined); - const intro = new Combine([ - LanguagePicker.CreateLanguagePicker(Translations.t.index.title.SupportedLanguages()) - .SetClass("absolute top-2 right-3"), - new IndexText() - ]); - new Combine([ - intro, - new FeaturedMessage(), - new MoreScreen(state, true), - Translations.t.general.aboutMapcomplete - .Subs({"osmcha_link": Utils.OsmChaLinkFor(7)}) - .SetClass("link-underline"), - new FixedUiElement("v" + Constants.vNumber) - ]).SetClass("block m-5 lg:w-3/4 lg:ml-40") - .SetStyle("pointer-events: all;") - .AttachTo("topleft-tools"); - }catch (e) { + + try { + + new FixedUiElement("").AttachTo("centermessage") + const state = new UserRelatedState(undefined, undefined); + const intro = new Combine([ + LanguagePicker.CreateLanguagePicker(Translations.t.index.title.SupportedLanguages()) + .SetClass("absolute top-2 right-3"), + new IndexText() + ]); + new Combine([ + intro, + new FeaturedMessage(), + new MoreScreen(state, true), + Translations.t.general.aboutMapcomplete + .Subs({"osmcha_link": Utils.OsmChaLinkFor(7)}) + .SetClass("link-underline"), + new FixedUiElement("v" + Constants.vNumber) + ]).SetClass("block m-5 lg:w-3/4 lg:ml-40") + .SetStyle("pointer-events: all;") + .AttachTo("topleft-tools"); + } catch (e) { new FixedUiElement("Seems like no layers are compiled - check the output of `npm run generate:layeroverview`. Is this visible online? Contact pietervdvn immediately!").SetClass("alert") .AttachTo("centermessage") } diff --git a/UI/Base/AsyncLazy.ts b/UI/Base/AsyncLazy.ts index b8db53d3c..5d1eed9a9 100644 --- a/UI/Base/AsyncLazy.ts +++ b/UI/Base/AsyncLazy.ts @@ -3,26 +3,25 @@ import {VariableUiElement} from "./VariableUIElement"; import {UIEventSource} from "../../Logic/UIEventSource"; import Loading from "./Loading"; -export default class AsyncLazy extends BaseUIElement{ +export default class AsyncLazy extends BaseUIElement { private readonly _f: () => Promise; - + constructor(f: () => Promise) { super(); this._f = f; } - + protected InnerConstructElement(): HTMLElement { // The caching of the BaseUIElement will guarantee that _f will only be called once - + return new VariableUiElement( UIEventSource.FromPromise(this._f()).map(el => { - if(el === undefined){ + if (el === undefined) { return new Loading() } return el }) - ).ConstructElement() } - + } \ No newline at end of file diff --git a/UI/Base/Combine.ts b/UI/Base/Combine.ts index 2c64779a7..e714092f6 100644 --- a/UI/Base/Combine.ts +++ b/UI/Base/Combine.ts @@ -30,13 +30,13 @@ export default class Combine extends BaseUIElement { if (subEl === undefined || subEl === null) { continue; } - try{ - - const subHtml = subEl.ConstructElement() - if (subHtml !== undefined) { - el.appendChild(subHtml) - } - }catch(e){ + try { + + const subHtml = subEl.ConstructElement() + if (subHtml !== undefined) { + el.appendChild(subHtml) + } + } catch (e) { console.error("Could not generate subelement in combine due to ", e) } } diff --git a/UI/Base/Img.ts b/UI/Base/Img.ts index 876265b86..7104dfeb2 100644 --- a/UI/Base/Img.ts +++ b/UI/Base/Img.ts @@ -10,7 +10,7 @@ export default class Img extends BaseUIElement { fallbackImage?: string }) { super(); - if(src === undefined || src === "undefined"){ + if (src === undefined || src === "undefined") { throw "Undefined src for image" } this._src = src; @@ -44,7 +44,7 @@ export default class Img extends BaseUIElement { } el.onerror = () => { if (self._options?.fallbackImage) { - if(el.src === self._options.fallbackImage){ + if (el.src === self._options.fallbackImage) { // Sigh... nothing to be done anymore return; } diff --git a/UI/Base/Lazy.ts b/UI/Base/Lazy.ts index e2b846cd8..1852099f8 100644 --- a/UI/Base/Lazy.ts +++ b/UI/Base/Lazy.ts @@ -1,16 +1,16 @@ import BaseUIElement from "../BaseUIElement"; -export default class Lazy extends BaseUIElement{ +export default class Lazy extends BaseUIElement { private readonly _f: () => BaseUIElement; - + constructor(f: () => BaseUIElement) { super(); this._f = f; } - + protected InnerConstructElement(): HTMLElement { // The caching of the BaseUIElement will guarantee that _f will only be called once return this._f().ConstructElement(); } - + } \ No newline at end of file diff --git a/UI/Base/Loading.ts b/UI/Base/Loading.ts index c2636c1f3..e577f2847 100644 --- a/UI/Base/Loading.ts +++ b/UI/Base/Loading.ts @@ -1,4 +1,3 @@ -import {FixedUiElement} from "./FixedUiElement"; import {Translation} from "../i18n/Translation"; import Combine from "./Combine"; import Svg from "../../Svg"; @@ -6,11 +5,11 @@ import Translations from "../i18n/Translations"; export default class Loading extends Combine { constructor(msg?: Translation | string) { - const t = Translations.T(msg ) ?? Translations.t.general.loading.Clone(); + const t = Translations.T(msg) ?? Translations.t.general.loading.Clone(); t.SetClass("pl-2") super([ Svg.loading_svg().SetClass("animate-spin").SetStyle("width: 1.5rem; height: 1.5rem;"), - t + t ]) this.SetClass("flex p-1") } diff --git a/UI/Base/Minimap.ts b/UI/Base/Minimap.ts index 4a878684e..1a0fd4c02 100644 --- a/UI/Base/Minimap.ts +++ b/UI/Base/Minimap.ts @@ -17,8 +17,10 @@ export interface MinimapOptions { } export interface MinimapObj { - readonly leafletMap: UIEventSource, - installBounds(factor: number | BBox, showRange?: boolean) : void + readonly leafletMap: UIEventSource, + + installBounds(factor: number | BBox, showRange?: boolean): void + TakeScreenshot(): Promise; } diff --git a/UI/Base/MinimapImplementation.ts b/UI/Base/MinimapImplementation.ts index 271b5d5cf..3ade20f17 100644 --- a/UI/Base/MinimapImplementation.ts +++ b/UI/Base/MinimapImplementation.ts @@ -103,6 +103,12 @@ export default class MinimapImplementation extends BaseUIElement implements Mini }) } + public async TakeScreenshot() { + const screenshotter = new SimpleMapScreenshoter(); + screenshotter.addTo(this.leafletMap.data); + return await screenshotter.takeScreen('image') + } + protected InnerConstructElement(): HTMLElement { const div = document.createElement("div") div.id = this._id; @@ -148,8 +154,8 @@ export default class MinimapImplementation extends BaseUIElement implements Mini const self = this; let currentLayer = this._background.data.layer() let latLon = <[number, number]>[location.data?.lat ?? 0, location.data?.lon ?? 0] - if(isNaN(latLon[0]) || isNaN(latLon[1])){ - latLon = [0,0] + if (isNaN(latLon[0]) || isNaN(latLon[1])) { + latLon = [0, 0] } const options = { center: latLon, @@ -279,10 +285,4 @@ export default class MinimapImplementation extends BaseUIElement implements Mini this.leafletMap.setData(map) } - - public async TakeScreenshot(){ - const screenshotter = new SimpleMapScreenshoter(); - screenshotter.addTo(this.leafletMap.data); - return await screenshotter.takeScreen('image') - } } \ No newline at end of file diff --git a/UI/Base/ScrollableFullScreen.ts b/UI/Base/ScrollableFullScreen.ts index 248f9a884..b5b15229f 100644 --- a/UI/Base/ScrollableFullScreen.ts +++ b/UI/Base/ScrollableFullScreen.ts @@ -19,8 +19,8 @@ import Img from "./Img"; export default class ScrollableFullScreen extends UIElement { private static readonly empty = new FixedUiElement(""); private static _currentlyOpen: ScrollableFullScreen; - private hashToShow: string; public isShown: UIEventSource; + private hashToShow: string; private _component: BaseUIElement; private _fullscreencomponent: BaseUIElement; @@ -55,19 +55,12 @@ export default class ScrollableFullScreen extends UIElement { if (!isShown.data) { return; } - if (hash === undefined || hash === "") { + if (hash === undefined || hash === "" || hash !== hashToShow) { isShown.setData(false) } }) } - private clear() { - ScrollableFullScreen.empty.AttachTo("fullscreen") - const fs = document.getElementById("fullscreen"); - ScrollableFullScreen._currentlyOpen?.isShown?.setData(false); - fs.classList.add("hidden") - } - InnerRender(): BaseUIElement { return this._component; } @@ -80,6 +73,13 @@ export default class ScrollableFullScreen extends UIElement { fs.classList.remove("hidden") } + private clear() { + ScrollableFullScreen.empty.AttachTo("fullscreen") + const fs = document.getElementById("fullscreen"); + ScrollableFullScreen._currentlyOpen?.isShown?.setData(false); + fs.classList.add("hidden") + } + private BuildComponent(title: BaseUIElement, content: BaseUIElement, isShown: UIEventSource) { const returnToTheMap = new Combine([ diff --git a/UI/Base/TabbedComponent.ts b/UI/Base/TabbedComponent.ts index e151df6c5..d931cf475 100644 --- a/UI/Base/TabbedComponent.ts +++ b/UI/Base/TabbedComponent.ts @@ -6,7 +6,7 @@ import {VariableUiElement} from "./VariableUIElement"; export class TabbedComponent extends Combine { - constructor(elements: { header: BaseUIElement | string, content: BaseUIElement | string }[], + constructor(elements: { header: BaseUIElement | string, content: BaseUIElement | string }[], openedTab: (UIEventSource | number) = 0, options?: { leftOfHeader?: BaseUIElement @@ -15,13 +15,13 @@ export class TabbedComponent extends Combine { const openedTabSrc = typeof (openedTab) === "number" ? new UIEventSource(openedTab) : (openedTab ?? new UIEventSource(0)) - const tabs: BaseUIElement[] = [options?.leftOfHeader ] + const tabs: BaseUIElement[] = [options?.leftOfHeader] const contentElements: BaseUIElement[] = []; for (let i = 0; i < elements.length; i++) { let element = elements[i]; const header = Translations.W(element.header).onClick(() => openedTabSrc.setData(i)) openedTabSrc.addCallbackAndRun(selected => { - if(selected >= elements.length){ + if (selected >= elements.length) { selected = 0 } if (selected === i) { @@ -40,7 +40,7 @@ export class TabbedComponent extends Combine { } const header = new Combine(tabs).SetClass("tabs-header-bar") - if(options?.styleHeader){ + if (options?.styleHeader) { options.styleHeader(header) } const actualContent = new VariableUiElement( diff --git a/UI/Base/Title.ts b/UI/Base/Title.ts index d9b1c464c..adf4b2dd7 100644 --- a/UI/Base/Title.ts +++ b/UI/Base/Title.ts @@ -7,9 +7,9 @@ export default class Title extends BaseUIElement { constructor(embedded: string | BaseUIElement, level: number = 3) { super() - if(typeof embedded === "string"){ - this._embedded = new FixedUiElement(embedded) - }else{ + if (typeof embedded === "string") { + this._embedded = new FixedUiElement(embedded) + } else { this._embedded = embedded } this._level = level; @@ -19,14 +19,14 @@ export default class Title extends BaseUIElement { const embedded = " " + this._embedded.AsMarkdown() + " "; if (this._level == 1) { - return "\n" + embedded + "\n" + "=".repeat(embedded.length) + "\n\n" + return "\n\n" + embedded + "\n" + "=".repeat(embedded.length) + "\n\n" } if (this._level == 2) { - return "\n" + embedded + "\n" + "-".repeat(embedded.length) + "\n\n" + return "\n\n" + embedded + "\n" + "-".repeat(embedded.length) + "\n\n" } - return "\n" + "#".repeat(this._level) + embedded + "\n\n"; + return "\n\n" + "#".repeat(this._level) + embedded + "\n\n"; } protected InnerConstructElement(): HTMLElement { diff --git a/UI/BaseUIElement.ts b/UI/BaseUIElement.ts index 80cb7b26e..b9c085fa5 100644 --- a/UI/BaseUIElement.ts +++ b/UI/BaseUIElement.ts @@ -45,7 +45,9 @@ export default abstract class BaseUIElement { * Adds all the relevant classes, space separated */ public SetClass(clss: string) { - if(clss == undefined){return } + if (clss == undefined) { + return + } const all = clss.split(" ").map(clsName => clsName.trim()); let recordedChange = false; for (let c of all) { @@ -159,7 +161,7 @@ export default abstract class BaseUIElement { } public AsMarkdown(): string { - throw "AsMarkdown is not implemented by " + this.constructor.name + throw "AsMarkdown is not implemented by " + this.constructor.name+"; implement it in the subclass" } protected abstract InnerConstructElement(): HTMLElement; diff --git a/UI/BigComponents/Attribution.ts b/UI/BigComponents/Attribution.ts index 267bd776c..e2f6b6562 100644 --- a/UI/BigComponents/Attribution.ts +++ b/UI/BigComponents/Attribution.ts @@ -15,7 +15,7 @@ import {Utils} from "../../Utils"; */ export default class Attribution extends Combine { - constructor(location: UIEventSource, + constructor(location: UIEventSource, userDetails: UIEventSource, layoutToUse: LayoutConfig, currentBounds: UIEventSource) { diff --git a/UI/BigComponents/CopyrightPanel.ts b/UI/BigComponents/CopyrightPanel.ts index bcf7f3784..ceef210e7 100644 --- a/UI/BigComponents/CopyrightPanel.ts +++ b/UI/BigComponents/CopyrightPanel.ts @@ -36,8 +36,8 @@ export default class CopyrightPanel extends Combine { locationControl: UIEventSource, osmConnection: OsmConnection }, contributions: UIEventSource>) { - - const t =Translations.t.general.attribution + + const t = Translations.t.general.attribution const layoutToUse = state.layoutToUse const josmState = new UIEventSource(undefined) // Reset after 15s @@ -53,7 +53,7 @@ export default class CopyrightPanel extends Combine { newTab: true }), new SubtleButton(Svg.statistics_ui().SetStyle(iconStyle), t.openOsmcha.Subs({theme: state.layoutToUse.title}), { - url: Utils.OsmChaLinkFor(31, state.layoutToUse.id), + url: Utils.OsmChaLinkFor(31, state.layoutToUse.id), newTab: true }), new VariableUiElement(state.locationControl.map(location => { @@ -63,50 +63,53 @@ export default class CopyrightPanel extends Combine { new VariableUiElement(state.locationControl.map(location => { const mapillaryLink = `https://www.mapillary.com/app/?focus=map&lat=${location?.lat ?? 0}&lng=${location?.lon ?? 0}&z=${Math.max((location?.zoom ?? 2) - 1, 1)}` - return new SubtleButton(Svg.mapillary_black_ui().SetStyle(iconStyle), t.openMapillary, {url: mapillaryLink, newTab: true}) + return new SubtleButton(Svg.mapillary_black_ui().SetStyle(iconStyle), t.openMapillary, { + url: mapillaryLink, + newTab: true + }) })), new VariableUiElement(josmState.map(state => { - if(state === undefined){ + if (state === undefined) { return undefined } state = state.toUpperCase() - if(state === "OK"){ + if (state === "OK") { return t.josmOpened.SetClass("thanks") } return t.josmNotOpened.SetClass("alert") })), new Toggle( - new SubtleButton(Svg.josm_logo_ui().SetStyle(iconStyle) , t.editJosm).onClick(() => { - const bounds: any = state.currentBounds.data; - if (bounds === undefined) { - return undefined - } - const top = bounds.getNorth(); - const bottom = bounds.getSouth(); - const right = bounds.getEast(); - const left = bounds.getWest(); - const josmLink = `http://127.0.0.1:8111/load_and_zoom?left=${left}&right=${right}&top=${top}&bottom=${bottom}` - Utils.download(josmLink).then(answer => josmState.setData(answer.replace(/\n/g, '').trim())).catch(_ => josmState.setData("ERROR")) - }), undefined, state.osmConnection.userDetails.map(ud => ud.loggedIn && ud.csCount >= Constants.userJourney.historyLinkVisible)), - - ].map(button => button.SetStyle("max-height: 3rem")) - + new SubtleButton(Svg.josm_logo_ui().SetStyle(iconStyle), t.editJosm).onClick(() => { + const bounds: any = state.currentBounds.data; + if (bounds === undefined) { + return undefined + } + const top = bounds.getNorth(); + const bottom = bounds.getSouth(); + const right = bounds.getEast(); + const left = bounds.getWest(); + const josmLink = `http://127.0.0.1:8111/load_and_zoom?left=${left}&right=${right}&top=${top}&bottom=${bottom}` + Utils.download(josmLink).then(answer => josmState.setData(answer.replace(/\n/g, '').trim())).catch(_ => josmState.setData("ERROR")) + }), undefined, state.osmConnection.userDetails.map(ud => ud.loggedIn && ud.csCount >= Constants.userJourney.historyLinkVisible)), + + ] + const iconAttributions = Utils.NoNull(Array.from(layoutToUse.ExtractImages())) .map(CopyrightPanel.IconAttribution) - - let maintainer : BaseUIElement= undefined - if(layoutToUse.maintainer !== undefined && layoutToUse.maintainer !== "" && layoutToUse.maintainer.toLowerCase() !== "mapcomplete"){ + + let maintainer: BaseUIElement = undefined + if (layoutToUse.maintainer !== undefined && layoutToUse.maintainer !== "" && layoutToUse.maintainer.toLowerCase() !== "mapcomplete") { maintainer = Translations.t.general.attribution.themeBy.Subs({author: layoutToUse.maintainer}) } - + super([ Translations.t.general.attribution.attributionContent, + new FixedUiElement("MapComplete "+Constants.vNumber).SetClass("font-bold"), maintainer, new Combine(actionButtons).SetClass("block w-full"), new FixedUiElement(layoutToUse.credits), - new Attribution(State.state.locationControl, State.state.osmConnection.userDetails, State.state.layoutToUse, State.state.currentBounds), new VariableUiElement(contributions.map(contributions => { - if(contributions === undefined){ + if (contributions === undefined) { return "" } const sorted = Array.from(contributions, ([name, value]) => ({ @@ -143,7 +146,7 @@ export default class CopyrightPanel extends Combine { ...iconAttributions ].map(e => e?.SetClass("mt-4"))); this.SetClass("flex flex-col link-underline overflow-hidden") - this.SetStyle("max-width: calc(100vw - 5em); width: 40rem; margin-left: 0.75rem; margin-right: 0.5rem") + this.SetStyle("max-width: calc(100vw - 3em); width: 40rem; margin-left: 0.75rem; margin-right: 0.5rem") } private static CodeContributors(): BaseUIElement { diff --git a/UI/BigComponents/DownloadPanel.ts b/UI/BigComponents/DownloadPanel.ts index 552f6f357..520473625 100644 --- a/UI/BigComponents/DownloadPanel.ts +++ b/UI/BigComponents/DownloadPanel.ts @@ -12,26 +12,25 @@ import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"; import {UIEventSource} from "../../Logic/UIEventSource"; import SimpleMetaTagger from "../../Logic/SimpleMetaTagger"; import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; -import {meta} from "@turf/turf"; import {BBox} from "../../Logic/BBox"; export class DownloadPanel extends Toggle { - + constructor() { const state: { featurePipeline: FeaturePipeline, layoutToUse: LayoutConfig, currentBounds: UIEventSource } = State.state - + const t = Translations.t.general.download const name = State.state.layoutToUse.id; - + const includeMetaToggle = new CheckBoxes([t.includeMetaData.Clone()]) const metaisIncluded = includeMetaToggle.GetValue().map(selected => selected.length > 0) - + const buttonGeoJson = new SubtleButton(Svg.floppy_ui(), new Combine([t.downloadGeojson.Clone().SetClass("font-bold"), t.downloadGeoJsonHelper.Clone()]).SetClass("flex flex-col")) @@ -42,7 +41,7 @@ export class DownloadPanel extends Toggle { mimetype: "application/vnd.geo+json" }); }) - + const buttonCSV = new SubtleButton(Svg.floppy_ui(), new Combine( [t.downloadCSV.Clone().SetClass("font-bold"), @@ -59,9 +58,9 @@ export class DownloadPanel extends Toggle { const downloadButtons = new Combine( [new Title(t.title), - buttonGeoJson, + buttonGeoJson, buttonCSV, - includeMetaToggle, + includeMetaToggle, t.licenseInfo.Clone().SetClass("link-underline")]) .SetClass("w-full flex flex-col border-4 border-gray-300 rounded-3xl p-4") @@ -107,7 +106,7 @@ export class DownloadPanel extends Toggle { } return { - type:"FeatureCollection", + type: "FeatureCollection", features: resultFeatures } diff --git a/UI/BigComponents/FeaturedMessage.ts b/UI/BigComponents/FeaturedMessage.ts index 4c369b175..aede8e416 100644 --- a/UI/BigComponents/FeaturedMessage.ts +++ b/UI/BigComponents/FeaturedMessage.ts @@ -20,7 +20,7 @@ export default class FeaturedMessage extends Combine { if (wm.end_date <= now) { continue } - + if (welcome_message !== undefined) { console.warn("Multiple applicable messages today:", welcome_message.featured_theme) } @@ -62,7 +62,7 @@ export default class FeaturedMessage extends Combine { message: wm.message, featured_theme: wm.featured_theme }) - + } return all_messages } diff --git a/UI/BigComponents/FullWelcomePaneWithTabs.ts b/UI/BigComponents/FullWelcomePaneWithTabs.ts index da16326e4..38ad51ddb 100644 --- a/UI/BigComponents/FullWelcomePaneWithTabs.ts +++ b/UI/BigComponents/FullWelcomePaneWithTabs.ts @@ -28,8 +28,8 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { osmConnection: OsmConnection, featureSwitchShareScreen: UIEventSource, featureSwitchMoreQuests: UIEventSource, - locationControl: UIEventSource, - backgroundLayer: UIEventSource, + locationControl: UIEventSource, + backgroundLayer: UIEventSource, filteredLayers: UIEventSource } & UserRelatedState) { const layoutToUse = state.layoutToUse; @@ -70,10 +70,10 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { tabs.push({ header: Svg.add_img, content: - new Combine([ - Translations.t.general.morescreen.intro, - new MoreScreen(state) - ]).SetClass("flex flex-col") + new Combine([ + Translations.t.general.morescreen.intro, + new MoreScreen(state) + ]).SetClass("flex flex-col") }); } @@ -91,7 +91,7 @@ export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { const tabs = FullWelcomePaneWithTabs.ConstructBaseTabs(state, isShown) const tabsWithAboutMc = [...FullWelcomePaneWithTabs.ConstructBaseTabs(state, isShown)] - + tabsWithAboutMc.push({ header: Svg.help, content: new Combine([Translations.t.general.aboutMapcomplete diff --git a/UI/BigComponents/ImportButton.ts b/UI/BigComponents/ImportButton.ts index 5175132d9..d03bfc45d 100644 --- a/UI/BigComponents/ImportButton.ts +++ b/UI/BigComponents/ImportButton.ts @@ -9,7 +9,6 @@ import Toggle from "../Input/Toggle"; import CreateNewNodeAction from "../../Logic/Osm/Actions/CreateNewNodeAction"; import {Tag} from "../../Logic/Tags/Tag"; import Loading from "../Base/Loading"; -import CreateNewWayAction from "../../Logic/Osm/Actions/CreateNewWayAction"; import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"; import {OsmConnection} from "../../Logic/Osm/OsmConnection"; import {Changes} from "../../Logic/Osm/Changes"; @@ -32,7 +31,6 @@ import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeature import ShowDataMultiLayer from "../ShowDataLayer/ShowDataMultiLayer"; import BaseLayer from "../../Models/BaseLayer"; import ReplaceGeometryAction from "../../Logic/Osm/Actions/ReplaceGeometryAction"; -import FullNodeDatabaseSource from "../../Logic/FeatureSource/TiledFeatureSource/FullNodeDatabaseSource"; import CreateWayWithPointReuseAction from "../../Logic/Osm/Actions/CreateWayWithPointReuseAction"; import OsmChangeAction from "../../Logic/Osm/Actions/OsmChangeAction"; import FeatureSource from "../../Logic/FeatureSource/FeatureSource"; @@ -282,8 +280,8 @@ export default class ImportButton extends Toggle { } public static createConfirmForWay(o: ImportButtonState, - isImported: UIEventSource, - importClicked: UIEventSource): BaseUIElement { + isImported: UIEventSource, + importClicked: UIEventSource): BaseUIElement { const confirmationMap = Minimap.createMiniMap({ allowMoving: true, @@ -301,8 +299,8 @@ export default class ImportButton extends Toggle { allElements: o.state.allElements, layers: o.state.filteredLayers }) - - let action : OsmChangeAction & {getPreview() : Promise} + + let action: OsmChangeAction & { getPreview(): Promise } const theme = o.state.layoutToUse.id const changes = o.state.changes @@ -320,7 +318,7 @@ export default class ImportButton extends Toggle { ) confirm = async () => { - changes.applyAction (action) + changes.applyAction(action) return o.feature.properties.id } @@ -332,8 +330,8 @@ export default class ImportButton extends Toggle { } else if (geom.type === "Polygon") { coordinates = geom.coordinates[0] } - - + + action = new CreateWayWithPointReuseAction( o.newTags.data, coordinates, @@ -341,13 +339,13 @@ export default class ImportButton extends Toggle { o.state, [{ withinRangeOfM: 1, - ifMatches: new Tag("_is_part_of_building","true"), - mode:"move_osm_point" - + ifMatches: new Tag("_is_part_of_building", "true"), + mode: "move_osm_point" + }] ) - - + + confirm = async () => { changes.applyAction(action) return undefined diff --git a/UI/BigComponents/LeftControls.ts b/UI/BigComponents/LeftControls.ts index aff6b01f4..b0fc84da2 100644 --- a/UI/BigComponents/LeftControls.ts +++ b/UI/BigComponents/LeftControls.ts @@ -45,8 +45,8 @@ export default class LeftControls extends Combine { state, new ContributorCount(state).Contributors ), - "copyright", - guiState.copyrightViewIsOpened + "copyright", + guiState.copyrightViewIsOpened ); const copyrightButton = new Toggle( diff --git a/UI/BigComponents/MoreScreen.ts b/UI/BigComponents/MoreScreen.ts index 84475d3be..6e5cbd988 100644 --- a/UI/BigComponents/MoreScreen.ts +++ b/UI/BigComponents/MoreScreen.ts @@ -39,110 +39,6 @@ export default class MoreScreen extends Combine { ]); } - - private static createUnofficialThemeList(buttonClass: string, state: UserRelatedState, themeListClasses): BaseUIElement { - return new VariableUiElement(state.installedThemes.map(customThemes => { - if (customThemes.length <= 0) { - return undefined; - } - const customThemeButtons = customThemes.map(theme => MoreScreen.createLinkButton(state, theme.layout, theme.definition)?.SetClass(buttonClass)) - return new Combine([ - Translations.t.general.customThemeIntro.Clone(), - new Combine(customThemeButtons).SetClass(themeListClasses) - ]); - })); - } - - private static createPreviouslyVistedHiddenList(state: UserRelatedState, buttonClass: string, themeListStyle: string) { - const t = Translations.t.general.morescreen - const prefix = "mapcomplete-hidden-theme-" - const hiddenTotal = AllKnownLayouts.layoutsList.filter(layout => layout.hideFromOverview).length - return new Toggle( - new VariableUiElement( - state.osmConnection.preferencesHandler.preferences.map(allPreferences => { - const knownThemes = Utils.NoNull(Object.keys(allPreferences) - .filter(key => key.startsWith(prefix)) - .map(key => key.substring(prefix.length, key.length - "-enabled".length)) - .map(theme => { - return AllKnownLayouts.allKnownLayouts.get(theme); - })) - if (knownThemes.length === 0) { - return undefined - } - - const knownLayouts = new Combine(knownThemes.map(layout => - MoreScreen.createLinkButton(state, layout)?.SetClass(buttonClass) - )).SetClass(themeListStyle) - - return new Combine([ - new Title(t.previouslyHiddenTitle), - t.hiddenExplanation.Subs({hidden_discovered: ""+knownThemes.length,total_hidden: ""+hiddenTotal}), - knownLayouts - ]) - - }) - ).SetClass("flex flex-col"), - undefined, - state.osmConnection.isLoggedIn - ) - - - } - - private static createOfficialThemesList(state: { osmConnection: OsmConnection, locationControl?: UIEventSource }, buttonClass: string): BaseUIElement { - let officialThemes = AllKnownLayouts.layoutsList - - let buttons = officialThemes.map((layout) => { - if (layout === undefined) { - console.trace("Layout is undefined") - return undefined - } - if(layout.hideFromOverview){ - return undefined; - } - const button = MoreScreen.createLinkButton(state, layout)?.SetClass(buttonClass); - if (layout.id === personal.id) { - return new VariableUiElement( - state.osmConnection.userDetails.map(userdetails => userdetails.csCount) - .map(csCount => { - if (csCount < Constants.userJourney.personalLayoutUnlock) { - return undefined - } else { - return button - } - }) - ) - } - return button; - }) - - let customGeneratorLink = MoreScreen.createCustomGeneratorButton(state) - buttons.splice(0, 0, customGeneratorLink); - - return new Combine(buttons) - } - - /* - * Returns either a link to the issue tracker or a link to the custom generator, depending on the achieved number of changesets - * */ - private static createCustomGeneratorButton(state: { osmConnection: OsmConnection }): VariableUiElement { - const tr = Translations.t.general.morescreen; - return new VariableUiElement( - state.osmConnection.userDetails.map(userDetails => { - if (userDetails.csCount < Constants.userJourney.themeGeneratorReadOnlyUnlock) { - return new SubtleButton(null, tr.requestATheme.Clone(), { - url: "https://github.com/pietervdvn/MapComplete/issues", - newTab: true - }); - } - return new SubtleButton(Svg.pencil_ui(), tr.createYourOwnTheme.Clone(), { - url: "https://pietervdvn.github.io/mc/legacy/070/customGenerator.html", - newTab: false - }); - }) - ) - } - /** * Creates a button linking to the given theme * @private @@ -161,7 +57,7 @@ export default class MoreScreen extends Combine { console.error("ID is undefined for layout", layout); return undefined; } - + if (layout.id === state?.layoutToUse?.id) { return undefined; } @@ -210,5 +106,110 @@ export default class MoreScreen extends Combine { ]), {url: linkText, newTab: false}); } + private static createUnofficialThemeList(buttonClass: string, state: UserRelatedState, themeListClasses): BaseUIElement { + return new VariableUiElement(state.installedThemes.map(customThemes => { + if (customThemes.length <= 0) { + return undefined; + } + const customThemeButtons = customThemes.map(theme => MoreScreen.createLinkButton(state, theme.layout, theme.definition)?.SetClass(buttonClass)) + return new Combine([ + Translations.t.general.customThemeIntro.Clone(), + new Combine(customThemeButtons).SetClass(themeListClasses) + ]); + })); + } + + private static createPreviouslyVistedHiddenList(state: UserRelatedState, buttonClass: string, themeListStyle: string) { + const t = Translations.t.general.morescreen + const prefix = "mapcomplete-hidden-theme-" + const hiddenTotal = AllKnownLayouts.layoutsList.filter(layout => layout.hideFromOverview).length + return new Toggle( + new VariableUiElement( + state.osmConnection.preferencesHandler.preferences.map(allPreferences => { + const knownThemes = Utils.NoNull(Object.keys(allPreferences) + .filter(key => key.startsWith(prefix)) + .map(key => key.substring(prefix.length, key.length - "-enabled".length)) + .map(theme => AllKnownLayouts.allKnownLayouts.get(theme))) + .filter(theme => theme?.hideFromOverview) + if (knownThemes.length === 0) { + return undefined + } + + const knownLayouts = new Combine(knownThemes.map(layout => + MoreScreen.createLinkButton(state, layout)?.SetClass(buttonClass) + )).SetClass(themeListStyle) + + return new Combine([ + new Title(t.previouslyHiddenTitle), + t.hiddenExplanation.Subs({ + hidden_discovered: "" + knownThemes.length, + total_hidden: "" + hiddenTotal + }), + knownLayouts + ]) + + }) + ).SetClass("flex flex-col"), + undefined, + state.osmConnection.isLoggedIn + ) + + + } + + private static createOfficialThemesList(state: { osmConnection: OsmConnection, locationControl?: UIEventSource }, buttonClass: string): BaseUIElement { + let officialThemes = AllKnownLayouts.layoutsList + + let buttons = officialThemes.map((layout) => { + if (layout === undefined) { + console.trace("Layout is undefined") + return undefined + } + if (layout.hideFromOverview) { + return undefined; + } + const button = MoreScreen.createLinkButton(state, layout)?.SetClass(buttonClass); + if (layout.id === personal.id) { + return new VariableUiElement( + state.osmConnection.userDetails.map(userdetails => userdetails.csCount) + .map(csCount => { + if (csCount < Constants.userJourney.personalLayoutUnlock) { + return undefined + } else { + return button + } + }) + ) + } + return button; + }) + + let customGeneratorLink = MoreScreen.createCustomGeneratorButton(state) + buttons.splice(0, 0, customGeneratorLink); + + return new Combine(buttons) + } + + /* + * Returns either a link to the issue tracker or a link to the custom generator, depending on the achieved number of changesets + * */ + private static createCustomGeneratorButton(state: { osmConnection: OsmConnection }): VariableUiElement { + const tr = Translations.t.general.morescreen; + return new VariableUiElement( + state.osmConnection.userDetails.map(userDetails => { + if (userDetails.csCount < Constants.userJourney.themeGeneratorReadOnlyUnlock) { + return new SubtleButton(null, tr.requestATheme.Clone(), { + url: "https://github.com/pietervdvn/MapComplete/issues", + newTab: true + }); + } + return new SubtleButton(Svg.pencil_ui(), tr.createYourOwnTheme.Clone(), { + url: "https://pietervdvn.github.io/mc/legacy/070/customGenerator.html", + newTab: false + }); + }) + ) + } + } \ No newline at end of file diff --git a/UI/BigComponents/RightControls.ts b/UI/BigComponents/RightControls.ts index 35f11754c..470774786 100644 --- a/UI/BigComponents/RightControls.ts +++ b/UI/BigComponents/RightControls.ts @@ -9,19 +9,12 @@ import AllKnownLayers from "../../Customizations/AllKnownLayers"; export default class RightControls extends Combine { - constructor(state:MapState) { - + constructor(state: MapState) { + const geolocatioHandler = new GeoLocationHandler( state ) - - new ShowDataLayer({ - layerToShow: AllKnownLayers.sharedLayers.get("gps_location"), - leafletMap: state.leafletMap, - enablePopups: true, - features: geolocatioHandler.currentLocation - }) - + const geolocationButton = new Toggle( new MapControlButton( geolocatioHandler diff --git a/UI/BigComponents/ShareScreen.ts b/UI/BigComponents/ShareScreen.ts index 9fc7dde91..0f3bd5bae 100644 --- a/UI/BigComponents/ShareScreen.ts +++ b/UI/BigComponents/ShareScreen.ts @@ -15,7 +15,7 @@ import FilteredLayer from "../../Models/FilteredLayer"; export default class ShareScreen extends Combine { - constructor(state: {layoutToUse: LayoutConfig, locationControl: UIEventSource, backgroundLayer: UIEventSource, filteredLayers: UIEventSource}) { + constructor(state: { layoutToUse: LayoutConfig, locationControl: UIEventSource, backgroundLayer: UIEventSource, filteredLayers: UIEventSource }) { const layout = state?.layoutToUse; const tr = Translations.t.general.sharescreen; @@ -62,40 +62,39 @@ export default class ShareScreen extends Combine { } - - const currentLayer: UIEventSource<{ id: string, name: string, layer: any }> = state.backgroundLayer; - const currentBackground = new VariableUiElement(currentLayer.map(layer => { - return tr.fsIncludeCurrentBackgroundMap.Subs({name: layer?.name ?? ""}); - })); - const includeCurrentBackground = new Toggle( - new Combine([check(), currentBackground]), - new Combine([nocheck(), currentBackground]), - new UIEventSource(true) - ).ToggleOnClick() - optionCheckboxes.push(includeCurrentBackground); - optionParts.push(includeCurrentBackground.isEnabled.map((includeBG) => { - if (includeBG) { - return "background=" + currentLayer.data.id - } else { - return null - } - }, [currentLayer])); + const currentLayer: UIEventSource<{ id: string, name: string, layer: any }> = state.backgroundLayer; + const currentBackground = new VariableUiElement(currentLayer.map(layer => { + return tr.fsIncludeCurrentBackgroundMap.Subs({name: layer?.name ?? ""}); + })); + const includeCurrentBackground = new Toggle( + new Combine([check(), currentBackground]), + new Combine([nocheck(), currentBackground]), + new UIEventSource(true) + ).ToggleOnClick() + optionCheckboxes.push(includeCurrentBackground); + optionParts.push(includeCurrentBackground.isEnabled.map((includeBG) => { + if (includeBG) { + return "background=" + currentLayer.data.id + } else { + return null + } + }, [currentLayer])); - const includeLayerChoices = new Toggle( - new Combine([check(), tr.fsIncludeCurrentLayers.Clone()]), - new Combine([nocheck(), tr.fsIncludeCurrentLayers.Clone()]), - new UIEventSource(true) - ).ToggleOnClick() - optionCheckboxes.push(includeLayerChoices); + const includeLayerChoices = new Toggle( + new Combine([check(), tr.fsIncludeCurrentLayers.Clone()]), + new Combine([nocheck(), tr.fsIncludeCurrentLayers.Clone()]), + new UIEventSource(true) + ).ToggleOnClick() + optionCheckboxes.push(includeLayerChoices); - optionParts.push(includeLayerChoices.isEnabled.map((includeLayerSelection) => { - if (includeLayerSelection) { - return Utils.NoNull(state.filteredLayers.data.map(fLayerToParam)).join("&") - } else { - return null - } - }, state.filteredLayers.data.map((flayer) => flayer.isDisplayed))); + optionParts.push(includeLayerChoices.isEnabled.map((includeLayerSelection) => { + if (includeLayerSelection) { + return Utils.NoNull(state.filteredLayers.data.map(fLayerToParam)).join("&") + } else { + return null + } + }, state.filteredLayers.data.map((flayer) => flayer.isDisplayed))); const switches = [ diff --git a/UI/BigComponents/SimpleAddUI.ts b/UI/BigComponents/SimpleAddUI.ts index f7931b853..04a3aa314 100644 --- a/UI/BigComponents/SimpleAddUI.ts +++ b/UI/BigComponents/SimpleAddUI.ts @@ -105,7 +105,7 @@ export default class SimpleAddUI extends Toggle { selectedPreset.setData(undefined) } - const message =Translations.t.general.add.addNew.Subs({category: preset.name}); + const message = Translations.t.general.add.addNew.Subs({category: preset.name}); return new ConfirmLocationOfPoint(state, filterViewIsOpened, preset, message, state.LastClickLocation.data, diff --git a/UI/DefaultGUI.ts b/UI/DefaultGUI.ts index 0c93e4bf8..a4ac2ddee 100644 --- a/UI/DefaultGUI.ts +++ b/UI/DefaultGUI.ts @@ -44,123 +44,11 @@ export default class DefaultGUI { this.SetupUIElements(); this.SetupMap() - } - - - private SetupMap(){ - const state = this.state; - const guiState = this._guiState; - - // Attach the map - state.mainMapObject.SetClass("w-full h-full") - .AttachTo("leafletDiv") - - this.setupClickDialogOnMap( - guiState.filterViewIsOpened, - state - ) - - - new ShowDataLayer({ - leafletMap: state.leafletMap, - layerToShow: AllKnownLayers.sharedLayers.get("home_location"), - features: state.homeLocation, - enablePopups: false, - }) - - state.leafletMap.addCallbackAndRunD(_ => { - // Lets assume that all showDataLayers are initialized at this point - state.selectedElement.ping() - State.state.locationControl.ping(); - return true; - }) - - } - - private SetupUIElements(){ - const state = this.state; - const guiState = this._guiState; - - const self =this - Toggle.If(state.featureSwitchUserbadge, - () => new UserBadge(state) - ).AttachTo("userbadge") - - Toggle.If(state.featureSwitchSearch, - () => new SearchAndGo(state)) - .AttachTo("searchbox"); - - - let iframePopout: () => BaseUIElement = undefined; - - if (window !== window.top) { - // MapComplete is running in an iframe - iframePopout = () => new VariableUiElement(state.locationControl.map(loc => { - const url = `${window.location.origin}${window.location.pathname}?z=${loc.zoom ?? 0}&lat=${loc.lat ?? 0}&lon=${loc.lon ?? 0}`; - const link = new Link(Svg.pop_out_img, url, true).SetClass("block w-full h-full p-1.5") - return new MapControlButton(link) - })) - - } - - new Toggle(new Lazy(() => self.InitWelcomeMessage()), - Toggle.If(state.featureSwitchIframePopoutEnabled, iframePopout), - state.featureSwitchWelcomeMessage - ).AttachTo("messagesbox"); - - new LeftControls(state, guiState).AttachTo("bottom-left"); - new RightControls(state).AttachTo("bottom-right"); - - new CenterMessageBox(state).AttachTo("centermessage"); - document - .getElementById("centermessage") - .classList.add("pointer-events-none"); - - // We have to ping the welcomeMessageIsOpened and other isOpened-stuff to activate the FullScreenMessage if needed - for (const state of guiState.allFullScreenStates) { - if(state.data){ - state.ping() - } + + if(state.layoutToUse.customCss !== undefined && window.location.pathname.indexOf("index") >= 0){ + Utils.LoadCustomCss(state.layoutToUse.customCss) } - - /** - * At last, if the map moves or an element is selected, we close all the panels just as well - */ - - state.selectedElement.addCallbackAndRunD((_) => { - guiState.allFullScreenStates.forEach(s => s.setData(false)) - }); - } - - private InitWelcomeMessage() : BaseUIElement{ - const isOpened = this._guiState.welcomeMessageIsOpened - const fullOptions = new FullWelcomePaneWithTabs(isOpened, this._guiState.welcomeMessageOpenedTab, this.state); - - // ?-Button on Desktop, opens panel with close-X. - const help = new MapControlButton(Svg.help_svg()); - help.onClick(() => isOpened.setData(true)); - - - const openedTime = new Date().getTime(); - this.state.locationControl.addCallback(() => { - if (new Date().getTime() - openedTime < 15 * 1000) { - // Don't autoclose the first 15 secs when the map is moving - return; - } - isOpened.setData(false); - }); - - this.state.selectedElement.addCallbackAndRunD((_) => { - isOpened.setData(false); - }); - - return new Toggle( - fullOptions.SetClass("welcomeMessage pointer-events-auto"), - help.SetClass("pointer-events-auto"), - isOpened - ) - } public setupClickDialogOnMap(filterViewIsOpened: UIEventSource, state: FeaturePipelineState) { @@ -207,4 +95,120 @@ export default class DefaultGUI { } + private SetupMap() { + const state = this.state; + const guiState = this._guiState; + + // Attach the map + state.mainMapObject.SetClass("w-full h-full") + .AttachTo("leafletDiv") + + this.setupClickDialogOnMap( + guiState.filterViewIsOpened, + state + ) + + + new ShowDataLayer({ + leafletMap: state.leafletMap, + layerToShow: AllKnownLayers.sharedLayers.get("home_location"), + features: state.homeLocation, + enablePopups: false, + }) + + state.leafletMap.addCallbackAndRunD(_ => { + // Lets assume that all showDataLayers are initialized at this point + state.selectedElement.ping() + State.state.locationControl.ping(); + return true; + }) + + } + + private SetupUIElements() { + const state = this.state; + const guiState = this._guiState; + + const self = this + Toggle.If(state.featureSwitchUserbadge, + () => new UserBadge(state) + ).AttachTo("userbadge") + + Toggle.If(state.featureSwitchSearch, + () => new SearchAndGo(state)) + .AttachTo("searchbox"); + + + let iframePopout: () => BaseUIElement = undefined; + + if (window !== window.top) { + // MapComplete is running in an iframe + iframePopout = () => new VariableUiElement(state.locationControl.map(loc => { + const url = `${window.location.origin}${window.location.pathname}?z=${loc.zoom ?? 0}&lat=${loc.lat ?? 0}&lon=${loc.lon ?? 0}`; + const link = new Link(Svg.pop_out_img, url, true).SetClass("block w-full h-full p-1.5") + return new MapControlButton(link) + })) + + } + + new Toggle(new Lazy(() => self.InitWelcomeMessage()), + Toggle.If(state.featureSwitchIframePopoutEnabled, iframePopout), + state.featureSwitchWelcomeMessage + ).AttachTo("messagesbox"); + + + new LeftControls(state, guiState).AttachTo("bottom-left"); + new RightControls(state).AttachTo("bottom-right"); + + new CenterMessageBox(state).AttachTo("centermessage"); + document + .getElementById("centermessage") + .classList.add("pointer-events-none"); + + // We have to ping the welcomeMessageIsOpened and other isOpened-stuff to activate the FullScreenMessage if needed + for (const state of guiState.allFullScreenStates) { + if (state.data) { + state.ping() + } + } + + /** + * At last, if the map moves or an element is selected, we close all the panels just as well + */ + + state.selectedElement.addCallbackAndRunD((_) => { + guiState.allFullScreenStates.forEach(s => s.setData(false)) + }); + } + + private InitWelcomeMessage(): BaseUIElement { + const isOpened = this._guiState.welcomeMessageIsOpened + const fullOptions = new FullWelcomePaneWithTabs(isOpened, this._guiState.welcomeMessageOpenedTab, this.state); + + // ?-Button on Desktop, opens panel with close-X. + const help = new MapControlButton(Svg.help_svg()); + help.onClick(() => isOpened.setData(true)); + + + const openedTime = new Date().getTime(); + this.state.locationControl.addCallback(() => { + if (new Date().getTime() - openedTime < 15 * 1000) { + // Don't autoclose the first 15 secs when the map is moving + return; + } + isOpened.setData(false); + }); + + this.state.selectedElement.addCallbackAndRunD((_) => { + isOpened.setData(false); + }); + + return new Toggle( + fullOptions.SetClass("welcomeMessage pointer-events-auto"), + help.SetClass("pointer-events-auto"), + isOpened + ) + + } + } \ No newline at end of file diff --git a/UI/DefaultGuiState.ts b/UI/DefaultGuiState.ts index 7c5cae139..537eb4b70 100644 --- a/UI/DefaultGuiState.ts +++ b/UI/DefaultGuiState.ts @@ -4,13 +4,13 @@ import Constants from "../Models/Constants"; import Hash from "../Logic/Web/Hash"; export class DefaultGuiState { + static state: DefaultGuiState; public readonly welcomeMessageIsOpened: UIEventSource; public readonly downloadControlIsOpened: UIEventSource; public readonly filterViewIsOpened: UIEventSource; public readonly copyrightViewIsOpened: UIEventSource; public readonly welcomeMessageOpenedTab: UIEventSource public readonly allFullScreenStates: UIEventSource[] = [] - static state: DefaultGuiState; constructor() { diff --git a/UI/ExportPDF.ts b/UI/ExportPDF.ts index e03103322..6f27794f8 100644 --- a/UI/ExportPDF.ts +++ b/UI/ExportPDF.ts @@ -11,6 +11,7 @@ import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; import FeaturePipeline from "../Logic/FeatureSource/FeaturePipeline"; import ShowDataLayer from "./ShowDataLayer/ShowDataLayer"; import {BBox} from "../Logic/BBox"; + /** * Creates screenshoter to take png screenshot * Creates jspdf and downloads it @@ -79,10 +80,10 @@ export default class ExportPDF { minimap.AttachTo(options.freeDivId) // Next: we prepare the features. Only fully contained features are shown - minimap.leafletMap .addCallbackAndRunD(leaflet => { + minimap.leafletMap.addCallbackAndRunD(leaflet => { const bounds = BBox.fromLeafletBounds(leaflet.getBounds().pad(0.2)) options.features.GetTilesPerLayerWithin(bounds, tile => { - if(tile.layer.layerDef.minzoom > l.zoom){ + if (tile.layer.layerDef.minzoom > l.zoom) { return } new ShowDataLayer( @@ -95,7 +96,7 @@ export default class ExportPDF { } ) }) - + }) State.state.AddAllOverlaysToMap(minimap.leafletMap) @@ -107,9 +108,8 @@ export default class ExportPDF { } private async CreatePdf(minimap: MinimapObj) { - - - + + console.log("PDF creation started") const t = Translations.t.general.pdf; const layout = this._layout diff --git a/UI/Image/AttributedImage.ts b/UI/Image/AttributedImage.ts index b0bb60d80..031f81ced 100644 --- a/UI/Image/AttributedImage.ts +++ b/UI/Image/AttributedImage.ts @@ -12,10 +12,10 @@ export class AttributedImage extends Combine { let img: BaseUIElement; let attr: BaseUIElement img = new Img(imageInfo.url, false, { - fallbackImage: imageInfo.provider === Mapillary.singleton ? "./assets/svg/blocked.svg" : undefined + fallbackImage: imageInfo.provider === Mapillary.singleton ? "./assets/svg/blocked.svg" : undefined }); attr = new Attribution(imageInfo.provider.GetAttributionFor(imageInfo.url), - imageInfo.provider.SourceIcon(), + imageInfo.provider.SourceIcon(), ) diff --git a/UI/Image/Attribution.ts b/UI/Image/Attribution.ts index 713b228c6..3db016da0 100644 --- a/UI/Image/Attribution.ts +++ b/UI/Image/Attribution.ts @@ -13,10 +13,10 @@ export default class Attribution extends VariableUiElement { } super( license.map((license: LicenseInfo) => { - if(license === undefined){ + if (license === undefined) { return undefined } - + return new Combine([ icon?.SetClass("block left").SetStyle("height: 2em; width: 2em; padding-right: 0.5em;"), diff --git a/UI/Image/DeleteImage.ts b/UI/Image/DeleteImage.ts index 68afbb3fc..eca3dc738 100644 --- a/UI/Image/DeleteImage.ts +++ b/UI/Image/DeleteImage.ts @@ -15,19 +15,19 @@ export default class DeleteImage extends Toggle { const isDeletedBadge = Translations.t.image.isDeleted.Clone() .SetClass("rounded-full p-1") .SetStyle("color:white;background:#ff8c8c") - .onClick(async() => { - await State.state?.changes?.applyAction(new ChangeTagAction(tags.data.id, new Tag(key, oldValue), tags.data, { - changeType: "answer", - theme: "test" - })) + .onClick(async () => { + await State.state?.changes?.applyAction(new ChangeTagAction(tags.data.id, new Tag(key, oldValue), tags.data, { + changeType: "answer", + theme: "test" + })) }); const deleteButton = Translations.t.image.doDelete.Clone() .SetClass("block w-full pl-4 pr-4") .SetStyle("color:white;background:#ff8c8c; border-top-left-radius:30rem; border-top-right-radius: 30rem;") - .onClick( async() => { - await State.state?.changes?.applyAction( - new ChangeTagAction(tags.data.id, new Tag(key, ""), tags.data,{ + .onClick(async () => { + await State.state?.changes?.applyAction( + new ChangeTagAction(tags.data.id, new Tag(key, ""), tags.data, { changeType: "answer", theme: "test" }) diff --git a/UI/Image/ImageCarousel.ts b/UI/Image/ImageCarousel.ts index 43ce32682..c0fc52eda 100644 --- a/UI/Image/ImageCarousel.ts +++ b/UI/Image/ImageCarousel.ts @@ -9,7 +9,7 @@ import ImageProvider from "../../Logic/ImageProviders/ImageProvider"; export class ImageCarousel extends Toggle { - constructor(images: UIEventSource<{ key: string, url: string, provider: ImageProvider }[]>, + constructor(images: UIEventSource<{ key: string, url: string, provider: ImageProvider }[]>, tags: UIEventSource, keys: string[]) { const uiElements = images.map((imageURLS: { key: string, url: string, provider: ImageProvider }[]) => { diff --git a/UI/Image/ImageUploadFlow.ts b/UI/Image/ImageUploadFlow.ts index c0407c208..5a49d8d72 100644 --- a/UI/Image/ImageUploadFlow.ts +++ b/UI/Image/ImageUploadFlow.ts @@ -16,13 +16,13 @@ import {VariableUiElement} from "../Base/VariableUIElement"; export class ImageUploadFlow extends Toggle { - + private static readonly uploadCountsPerId = new Map>() - + constructor(tagsSource: UIEventSource, imagePrefix: string = "image", text: string = undefined) { const perId = ImageUploadFlow.uploadCountsPerId const id = tagsSource.data.id - if(!perId.has(id)){ + if (!perId.has(id)) { perId.set(id, new UIEventSource(0)) } const uploadedCount = perId.get(id) @@ -39,7 +39,7 @@ export class ImageUploadFlow extends Toggle { key = imagePrefix + ":" + freeIndex; } console.log("Adding image:" + key, url); - uploadedCount.data ++ + uploadedCount.data++ uploadedCount.ping() Promise.resolve(State.state.changes .applyAction(new ChangeTagAction( @@ -50,17 +50,17 @@ export class ImageUploadFlow extends Toggle { } ))) }) - + const licensePicker = new LicensePicker() const t = Translations.t.image; - - let labelContent : BaseUIElement - if(text === undefined) { - labelContent = Translations.t.image.addPicture.Clone().SetClass("block align-middle mt-1 ml-3 text-4xl ") - }else{ - labelContent = new FixedUiElement(text).SetClass("block align-middle mt-1 ml-3 text-2xl ") - } + + let labelContent: BaseUIElement + if (text === undefined) { + labelContent = Translations.t.image.addPicture.Clone().SetClass("block align-middle mt-1 ml-3 text-4xl ") + } else { + labelContent = new FixedUiElement(text).SetClass("block align-middle mt-1 ml-3 text-2xl ") + } const label = new Combine([ Svg.camera_plus_ui().SetClass("block w-12 h-12 p-1 text-4xl "), labelContent @@ -74,17 +74,17 @@ export class ImageUploadFlow extends Toggle { for (var i = 0; i < filelist.length; i++) { - const sizeInBytes= filelist[i].size + const sizeInBytes = filelist[i].size console.log(filelist[i].name + " has a size of " + sizeInBytes + " Bytes"); - if(sizeInBytes > uploader.maxFileSizeInMegabytes * 1000000){ + if (sizeInBytes > uploader.maxFileSizeInMegabytes * 1000000) { alert(Translations.t.image.toBig.Subs({ actual_size: (Math.floor(sizeInBytes / 1000000)) + "MB", - max_size: uploader.maxFileSizeInMegabytes+"MB" + max_size: uploader.maxFileSizeInMegabytes + "MB" }).txt) return; } } - + console.log("Received images from the user, starting upload") const license = licensePicker.GetValue()?.data ?? "CC0" @@ -114,31 +114,31 @@ export class ImageUploadFlow extends Toggle { const uploadFlow: BaseUIElement = new Combine([ new VariableUiElement(uploader.queue.map(q => q.length).map(l => { - if(l == 0){ + if (l == 0) { return undefined; } - if(l == 1){ - return t.uploadingPicture.Clone().SetClass("alert") - }else{ + if (l == 1) { + return t.uploadingPicture.Clone().SetClass("alert") + } else { return t.uploadingMultiple.Subs({count: "" + l}).SetClass("alert") } })), new VariableUiElement(uploader.failed.map(q => q.length).map(l => { - if(l==0){ + if (l == 0) { return undefined } return t.uploadFailed.Clone().SetClass("alert"); })), new VariableUiElement(uploadedCount.map(l => { - if(l == 0){ - return undefined; + if (l == 0) { + return undefined; } - if(l == 1){ + if (l == 1) { return t.uploadDone.Clone().SetClass("thanks"); } return t.uploadMultipleDone.Subs({count: l}).SetClass("thanks") })), - + fileSelector, Translations.t.image.respectPrivacy.Clone().SetStyle("font-size:small;"), licensePicker diff --git a/UI/Input/FixedInputElement.ts b/UI/Input/FixedInputElement.ts index 479aba16c..37e025b79 100644 --- a/UI/Input/FixedInputElement.ts +++ b/UI/Input/FixedInputElement.ts @@ -15,9 +15,9 @@ export class FixedInputElement extends InputElement { comparator: ((t0: T, t1: T) => boolean) = undefined) { super(); this._comparator = comparator ?? ((t0, t1) => t0 == t1); - if(value instanceof UIEventSource){ + if (value instanceof UIEventSource) { this.value = value - }else{ + } else { this.value = new UIEventSource(value); } diff --git a/UI/Input/LengthInput.ts b/UI/Input/LengthInput.ts index 2875f4362..2c041618a 100644 --- a/UI/Input/LengthInput.ts +++ b/UI/Input/LengthInput.ts @@ -45,7 +45,7 @@ export default class LengthInput extends InputElement { background: this.background, allowMoving: false, location: this._location, - attribution:true, + attribution: true, leafletOptions: { tap: true } @@ -136,7 +136,7 @@ export default class LengthInput extends InputElement { if (leaflet) { const first = leaflet.layerPointToLatLng(firstClickXY) const last = leaflet.layerPointToLatLng([dx, dy]) - const geoDist = Math.floor(GeoOperations.distanceBetween([first.lng, first.lat], [last.lng, last.lat]) * 10000) / 10 + const geoDist = Math.floor(GeoOperations.distanceBetween([first.lng, first.lat], [last.lng, last.lat]) * 10) / 10 self.value.setData("" + geoDist) } diff --git a/UI/Input/LocationInput.ts b/UI/Input/LocationInput.ts index 21cfdebe7..df7958de7 100644 --- a/UI/Input/LocationInput.ts +++ b/UI/Input/LocationInput.ts @@ -24,7 +24,7 @@ export default class LocationInput extends InputElement implements MinimapO osmTags: {and: []} }, mapRendering: [{ - location: ["point"], + location: ["point","centroid"], icon: "./assets/svg/crosshair-empty.svg" }] }, "matchpoint icon", true @@ -96,22 +96,22 @@ export default class LocationInput extends InputElement implements MinimapO let min = undefined; let matchedWay = undefined; for (const feature of self._snapTo.data ?? []) { - try{ - - const nearestPointOnLine = GeoOperations.nearestPoint(feature.feature, [loc.lon, loc.lat]) - if (min === undefined) { - min = nearestPointOnLine - matchedWay = feature.feature; - continue; - } + try { - if (min.properties.dist > nearestPointOnLine.properties.dist) { - min = nearestPointOnLine - matchedWay = feature.feature; + const nearestPointOnLine = GeoOperations.nearestPoint(feature.feature, [loc.lon, loc.lat]) + if (min === undefined) { + min = nearestPointOnLine + matchedWay = feature.feature; + continue; + } - } - }catch(e){ - console.log("Snapping to a nearest point failed for ", feature.feature,"due to ", e) + if (min.properties.dist > nearestPointOnLine.properties.dist) { + min = nearestPointOnLine + matchedWay = feature.feature; + + } + } catch (e) { + console.log("Snapping to a nearest point failed for ", feature.feature, "due to ", e) } } @@ -167,8 +167,9 @@ export default class LocationInput extends InputElement implements MinimapO installBounds(factor: number | BBox, showRange?: boolean): void { this.map.installBounds(factor, showRange) } + TakeScreenshot(): Promise { - return this.map.TakeScreenshot() + return this.map.TakeScreenshot() } protected InnerConstructElement(): HTMLElement { diff --git a/UI/Input/Toggle.ts b/UI/Input/Toggle.ts index 886412352..f62298601 100644 --- a/UI/Input/Toggle.ts +++ b/UI/Input/Toggle.ts @@ -18,16 +18,8 @@ export default class Toggle extends VariableUiElement { this.isEnabled = isEnabled } - public ToggleOnClick(): Toggle { - const self = this; - this.onClick(() => { - self.isEnabled.setData(!self.isEnabled.data); - }) - return this; - } - - public static If(condition: UIEventSource, constructor: () => BaseUIElement): BaseUIElement { - if(constructor === undefined){ + public static If(condition: UIEventSource, constructor: () => BaseUIElement): BaseUIElement { + if (constructor === undefined) { return undefined } return new Toggle( @@ -35,6 +27,14 @@ export default class Toggle extends VariableUiElement { undefined, condition ) - + + } + + public ToggleOnClick(): Toggle { + const self = this; + this.onClick(() => { + self.isEnabled.setData(!self.isEnabled.data); + }) + return this; } } \ No newline at end of file diff --git a/UI/Input/ValidatedTextField.ts b/UI/Input/ValidatedTextField.ts index 77cc5c433..181cd5ea6 100644 --- a/UI/Input/ValidatedTextField.ts +++ b/UI/Input/ValidatedTextField.ts @@ -187,16 +187,16 @@ class OpeningHoursTextField implements TextFieldDef { return new OpeningHoursInput(value, prefix, postfix) } } - export default class ValidatedTextField { public static tpList: TextFieldDef[] = [ + ValidatedTextField.tp( "string", "A basic string"), ValidatedTextField.tp( "text", - "A string, but allows input of longer strings more comfortably (a text area)", + "A string, but allows input of longer strings more comfortably and supports newlines (a text area)", undefined, undefined, undefined, @@ -271,7 +271,7 @@ export default class ValidatedTextField { if (args[0]) { zoom = Number(args[0]) if (isNaN(zoom)) { - console.error("Invalid zoom level for argument at 'length'-input. The offending argument is: ",args[0]," (using 19 instead)") + console.error("Invalid zoom level for argument at 'length'-input. The offending argument is: ", args[0], " (using 19 instead)") zoom = 19 } } @@ -473,6 +473,9 @@ export default class ValidatedTextField { options.inputMode = tp.inputmode; + if(tp.inputmode === "text") { + options.htmlType = "area" + } let input: InputElement = new TextField(options); diff --git a/UI/Input/VariableInputElement.ts b/UI/Input/VariableInputElement.ts index 1918dfe9a..f7bb2d8f8 100644 --- a/UI/Input/VariableInputElement.ts +++ b/UI/Input/VariableInputElement.ts @@ -5,9 +5,9 @@ import {VariableUiElement} from "../Base/VariableUIElement"; export default class VariableInputElement extends InputElement { + public readonly IsSelected: UIEventSource; private readonly value: UIEventSource; private readonly element: BaseUIElement - public readonly IsSelected: UIEventSource; private readonly upstream: UIEventSource>; constructor(upstream: UIEventSource>) { @@ -23,13 +23,12 @@ export default class VariableInputElement extends InputElement { return this.value; } - protected InnerConstructElement(): HTMLElement { - return this.element.ConstructElement(); - } - - IsValid(t: T): boolean { return this.upstream.data.IsValid(t); } + protected InnerConstructElement(): HTMLElement { + return this.element.ConstructElement(); + } + } \ No newline at end of file diff --git a/UI/OpeningHours/OpeningHoursInput.ts b/UI/OpeningHours/OpeningHoursInput.ts index 88b061a3d..50aa52cf4 100644 --- a/UI/OpeningHours/OpeningHoursInput.ts +++ b/UI/OpeningHours/OpeningHoursInput.ts @@ -28,12 +28,12 @@ export default class OpeningHoursInput extends InputElement { this._value = value; let valueWithoutPrefix = value if (prefix !== "" && postfix !== "") { - + valueWithoutPrefix = value.map(str => { if (str === undefined) { return undefined; } - if(str === ""){ + if (str === "") { return "" } if (str.startsWith(prefix) && str.endsWith(postfix)) { @@ -44,7 +44,7 @@ export default class OpeningHoursInput extends InputElement { if (noPrefix === undefined) { return undefined; } - if(noPrefix === ""){ + if (noPrefix === "") { return "" } if (noPrefix.startsWith(prefix) && noPrefix.endsWith(postfix)) { diff --git a/UI/Popup/EditableTagRendering.ts b/UI/Popup/EditableTagRendering.ts index be9634b2f..48cd669ef 100644 --- a/UI/Popup/EditableTagRendering.ts +++ b/UI/Popup/EditableTagRendering.ts @@ -16,9 +16,9 @@ export default class EditableTagRendering extends Toggle { constructor(tags: UIEventSource, configuration: TagRenderingConfig, units: Unit [], - options:{ - editMode? : UIEventSource , - innerElementClasses?: string + options: { + editMode?: UIEventSource, + innerElementClasses?: string } ) { @@ -28,7 +28,7 @@ export default class EditableTagRendering extends Toggle { const renderingIsShown = tags.map(tags => configuration.IsKnown(tags) && (configuration?.condition?.matchesProperties(tags) ?? true)) - + super( new Lazy(() => { const editMode = options.editMode ?? new UIEventSource(false) @@ -40,8 +40,8 @@ export default class EditableTagRendering extends Toggle { renderingIsShown ) } - - private static CreateRendering(tags: UIEventSource, configuration: TagRenderingConfig, units: Unit[], editMode: UIEventSource) : BaseUIElement{ + + private static CreateRendering(tags: UIEventSource, configuration: TagRenderingConfig, units: Unit[], editMode: UIEventSource): BaseUIElement { const answer: BaseUIElement = new TagRenderingAnswer(tags, configuration) answer.SetClass("w-full") let rendering = answer; diff --git a/UI/Popup/FeatureInfoBox.ts b/UI/Popup/FeatureInfoBox.ts index 3ec287856..b6d79abd5 100644 --- a/UI/Popup/FeatureInfoBox.ts +++ b/UI/Popup/FeatureInfoBox.ts @@ -17,6 +17,8 @@ import {Translation} from "../i18n/Translation"; import {Utils} from "../../Utils"; import {SubstitutedTranslation} from "../SubstitutedTranslation"; import MoveWizard from "./MoveWizard"; +import Toggle from "../Input/Toggle"; +import {FixedUiElement} from "../Base/FixedUiElement"; export default class FeatureInfoBox extends ScrollableFullScreen { @@ -51,13 +53,20 @@ export default class FeatureInfoBox extends ScrollableFullScreen { private static GenerateContent(tags: UIEventSource, layerConfig: LayerConfig): BaseUIElement { - let questionBoxes: Map = new Map(); + let questionBoxes: Map = new Map(); const allGroupNames = Utils.Dedup(layerConfig.tagRenderings.map(tr => tr.group)) if (State.state.featureSwitchUserbadge.data) { + const questionSpecs = layerConfig.tagRenderings.filter(tr => tr.id === "questions") for (const groupName of allGroupNames) { const questions = layerConfig.tagRenderings.filter(tr => tr.group === groupName) - const questionBox = new QuestionBox(tags, questions, layerConfig.units); + const questionSpec = questionSpecs.filter(tr => tr.group === groupName)[0] + const questionBox = new QuestionBox({ + tagsSource: tags, + tagRenderings: questions, + units: layerConfig.units, + showAllQuestionsAtOnce: questionSpec?.freeform?.helperArgs["showAllQuestions"] ?? State.state.featureSwitchShowAllQuestions + }); questionBoxes.set(groupName, questionBox) } } @@ -74,26 +83,41 @@ export default class FeatureInfoBox extends ScrollableFullScreen { // This is a question box! const questionBox = questionBoxes.get(tr.group) questionBoxes.delete(tr.group) - renderingsForGroup.push(questionBox) + + if (tr.render !== undefined) { + questionBox.SetClass("text-sm") + const renderedQuestion = new TagRenderingAnswer(tags, tr, tr.group + " questions", "", { + specialViz: new Map([["questions", questionBox]]) + }) + const possiblyHidden = new Toggle( + renderedQuestion, + undefined, + questionBox.restingQuestions.map(ls => ls?.length > 0) + ) + renderingsForGroup.push(possiblyHidden) + } else { + renderingsForGroup.push(questionBox) + } + } else { let classes = innerClasses - let isHeader = renderingsForGroup.length === 0 && i > 0 - if(isHeader){ + let isHeader = renderingsForGroup.length === 0 && i > 0 + if (isHeader) { // This is the first element of a group! // It should act as header and be sticky - classes= "" + classes = "" } - - const etr = new EditableTagRendering(tags, tr, layerConfig.units,{ + + const etr = new EditableTagRendering(tags, tr, layerConfig.units, { innerElementClasses: innerClasses }) - if(isHeader){ + if (isHeader) { etr.SetClass("sticky top-0") } renderingsForGroup.push(etr) } } - + allRenderings.push(...renderingsForGroup) } diff --git a/UI/Popup/MoveWizard.ts b/UI/Popup/MoveWizard.ts index 254c7a0ca..b86a55937 100644 --- a/UI/Popup/MoveWizard.ts +++ b/UI/Popup/MoveWizard.ts @@ -42,7 +42,7 @@ export default class MoveWizard extends Toggle { changes: Changes, layoutToUse: LayoutConfig, allElements: ElementStorage - }, options : MoveConfig) { + }, options: MoveConfig) { const t = Translations.t.move const loginButton = new Toggle( @@ -64,7 +64,7 @@ export default class MoveWizard extends Toggle { minZoom: 6 }) } - if(options.enableImproveAccuracy){ + if (options.enableImproveAccuracy) { reasons.push({ text: t.reasons.reasonInaccurate, invitingText: t.inviteToMove.reasonInaccurate, @@ -79,8 +79,8 @@ export default class MoveWizard extends Toggle { const currentStep = new UIEventSource<"start" | "reason" | "pick_location" | "moved">("start") const moveReason = new UIEventSource(undefined) - let moveButton : BaseUIElement; - if(reasons.length === 1){ + let moveButton: BaseUIElement; + if (reasons.length === 1) { const reason = reasons[0] moveReason.setData(reason) moveButton = new SubtleButton( @@ -89,7 +89,7 @@ export default class MoveWizard extends Toggle { ).onClick(() => { currentStep.setData("pick_location") }) - }else{ + } else { moveButton = new SubtleButton( Svg.move_ui().SetStyle("height: 1.5rem; width: auto"), t.inviteToMove.generic @@ -97,7 +97,7 @@ export default class MoveWizard extends Toggle { currentStep.setData("reason") }) } - + const moveAgainButton = new SubtleButton( Svg.move_ui(), @@ -107,8 +107,6 @@ export default class MoveWizard extends Toggle { }) - - const selectReason = new Combine(reasons.map(r => new SubtleButton(r.icon, r.text).onClick(() => { moveReason.setData(r) currentStep.setData("pick_location") @@ -129,16 +127,16 @@ export default class MoveWizard extends Toggle { }) let background: string[] - if(typeof reason.background == "string"){ + if (typeof reason.background == "string") { background = [reason.background] - }else{ + } else { background = reason.background } - + const locationInput = new LocationInput({ minZoom: reason.minZoom, centerLocation: loc, - mapBackground:AvailableBaseLayers.SelectBestLayerAccordingTo(loc, new UIEventSource(background)) + mapBackground: AvailableBaseLayers.SelectBestLayerAccordingTo(loc, new UIEventSource(background)) }) if (reason.lockBounds) { @@ -198,8 +196,8 @@ export default class MoveWizard extends Toggle { moveDisallowedReason.setData(t.isWay) } else if (id.startsWith("relation")) { moveDisallowedReason.setData(t.isRelation) - } else if(id.indexOf("-") < 0) { - + } else if (id.indexOf("-") < 0) { + OsmObject.DownloadReferencingWays(id).then(referencing => { if (referencing.length > 0) { console.log("Got a referencing way, move not allowed") @@ -207,7 +205,7 @@ export default class MoveWizard extends Toggle { } }) OsmObject.DownloadReferencingRelations(id).then(partOf => { - if(partOf.length > 0){ + if (partOf.length > 0) { moveDisallowedReason.setData(t.partOfRelation) } }) diff --git a/UI/Popup/MultiApply.ts b/UI/Popup/MultiApply.ts index 159bdd321..1f13f7d02 100644 --- a/UI/Popup/MultiApply.ts +++ b/UI/Popup/MultiApply.ts @@ -32,6 +32,7 @@ export interface MultiApplyParams { class MultiApplyExecutor { + private static executorCache = new Map() private readonly originalValues = new Map() private readonly params: MultiApplyParams; @@ -48,7 +49,7 @@ class MultiApplyExecutor { const self = this; const relevantValues = p.tagsSource.map(tags => { const currentValues = p.keysToApply.map(key => tags[key]) - // By stringifying, we have a very clear ping when they changec + // By stringifying, we have a very clear ping when they changec return JSON.stringify(currentValues); }) relevantValues.addCallbackD(_ => { @@ -57,6 +58,15 @@ class MultiApplyExecutor { } } + public static GetApplicator(id: string, params: MultiApplyParams): MultiApplyExecutor { + if (MultiApplyExecutor.executorCache.has(id)) { + return MultiApplyExecutor.executorCache.get(id) + } + const applicator = new MultiApplyExecutor(params) + MultiApplyExecutor.executorCache.set(id, applicator) + return applicator + } + public applyTaggingOnOtherFeatures() { console.log("Multi-applying changes...") const featuresToChange = this.params.featureIds.data @@ -103,17 +113,6 @@ class MultiApplyExecutor { } } - private static executorCache = new Map() - - public static GetApplicator(id: string, params: MultiApplyParams): MultiApplyExecutor { - if (MultiApplyExecutor.executorCache.has(id)) { - return MultiApplyExecutor.executorCache.get(id) - } - const applicator = new MultiApplyExecutor(params) - MultiApplyExecutor.executorCache.set(id, applicator) - return applicator - } - } export default class MultiApply extends Toggle { diff --git a/UI/Popup/QuestionBox.ts b/UI/Popup/QuestionBox.ts index 5dfa062ea..5a857eef2 100644 --- a/UI/Popup/QuestionBox.ts +++ b/UI/Popup/QuestionBox.ts @@ -1,7 +1,6 @@ import {UIEventSource} from "../../Logic/UIEventSource"; import TagRenderingQuestion from "./TagRenderingQuestion"; import Translations from "../i18n/Translations"; -import State from "../../State"; import Combine from "../Base/Combine"; import BaseUIElement from "../BaseUIElement"; import {VariableUiElement} from "../Base/VariableUIElement"; @@ -14,71 +13,119 @@ import Lazy from "../Base/Lazy"; * Generates all the questions, one by one */ export default class QuestionBox extends VariableUiElement { + public readonly skippedQuestions: UIEventSource; + public readonly restingQuestions: UIEventSource; + + constructor(options: { + tagsSource: UIEventSource, + tagRenderings: TagRenderingConfig[], units: Unit[], + showAllQuestionsAtOnce?: boolean | UIEventSource + }) { - constructor(tagsSource: UIEventSource, tagRenderings: TagRenderingConfig[], units: Unit[]) { - const skippedQuestions: UIEventSource = new UIEventSource([]) - tagRenderings = tagRenderings + const tagsSource = options.tagsSource + const units = options.units + options.showAllQuestionsAtOnce = options.showAllQuestionsAtOnce ?? false + const tagRenderings = options.tagRenderings .filter(tr => tr.question !== undefined) - .filter(tr => tr.question !== null); + .filter(tr => tr.question !== null) - super(tagsSource.map(tags => { - if (tags === undefined) { - return undefined; + + const tagRenderingQuestions = tagRenderings + .map((tagRendering, i) => + new Lazy(() => new TagRenderingQuestion(tagsSource, tagRendering, + { + units: units, + afterSave: () => { + // We save and indicate progress by pinging and recalculating + skippedQuestions.ping(); + }, + cancelButton: Translations.t.general.skip.Clone() + .SetClass("btn btn-secondary mr-3") + .onClick(() => { + skippedQuestions.data.push(i); + skippedQuestions.ping(); + }) + } + ))); + + + const skippedQuestionsButton = Translations.t.general.skippedQuestions + .onClick(() => { + skippedQuestions.setData([]); + }) + tagsSource.map(tags => { + if (tags === undefined) { + return undefined; + } + for (let i = 0; i < tagRenderingQuestions.length; i++) { + let tagRendering = tagRenderings[i]; + + if (skippedQuestions.data.indexOf(i) >= 0) { + continue; + } + if (tagRendering.IsKnown(tags)) { + continue; + } + if (tagRendering.condition && + !tagRendering.condition.matchesProperties(tags)) { + // Filtered away by the condition, so it is kindof known + continue; } - const tagRenderingQuestions = tagRenderings - .map((tagRendering, i) => - new Lazy(() => new TagRenderingQuestion(tagsSource, tagRendering, - { - units: units, - afterSave: () => { - // We save and indicate progress by pinging and recalculating - skippedQuestions.ping(); - }, - cancelButton: Translations.t.general.skip.Clone() - .SetClass("btn btn-secondary mr-3") - .onClick(() => { - skippedQuestions.data.push(i); - skippedQuestions.ping(); - }) - } - ))); + // this value is NOT known - this is the question we have to show! + return i + } + return undefined; // The questions are depleted + }, [skippedQuestions]); + + const questionsToAsk: UIEventSource = tagsSource.map(tags => { + if (tags === undefined) { + return []; + } + const qs = [] + for (let i = 0; i < tagRenderingQuestions.length; i++) { + let tagRendering = tagRenderings[i]; - const skippedQuestionsButton = Translations.t.general.skippedQuestions - .onClick(() => { - skippedQuestions.setData([]); - }) + if (skippedQuestions.data.indexOf(i) >= 0) { + continue; + } + if (tagRendering.IsKnown(tags)) { + continue; + } + if (tagRendering.condition && + !tagRendering.condition.matchesProperties(tags)) { + // Filtered away by the condition, so it is kindof known + continue; + } + // this value is NOT known - this is the question we have to show! + qs.push(tagRenderingQuestions[i]) + } + return qs + }, [skippedQuestions]) - const allQuestions: BaseUIElement[] = [] - for (let i = 0; i < tagRenderingQuestions.length; i++) { - let tagRendering = tagRenderings[i]; - - if (tagRendering.IsKnown(tags)) { - continue; - } - - if (skippedQuestions.data.indexOf(i) >= 0) { - continue; - } - // this value is NOT known - we show the questions for it - if (State.state.featureSwitchShowAllQuestions.data || allQuestions.length == 0) { - allQuestions.push(tagRenderingQuestions[i]) - } - + super(questionsToAsk.map(allQuestions => { + const els: BaseUIElement[] = [] + if (options.showAllQuestionsAtOnce === true || options.showAllQuestionsAtOnce["data"]) { + els.push(...questionsToAsk.data) + } else { + els.push(allQuestions[0]) } if (skippedQuestions.data.length > 0) { - allQuestions.push(skippedQuestionsButton) + els.push(skippedQuestionsButton) } - - return new Combine(allQuestions).SetClass("block mb-8") - }, [skippedQuestions]) + return new Combine(els).SetClass("block mb-8") + }) ) + this.skippedQuestions = skippedQuestions; + this.restingQuestions = questionsToAsk + + } } \ No newline at end of file diff --git a/UI/Popup/SplitRoadWizard.ts b/UI/Popup/SplitRoadWizard.ts index 9ee39f683..7a534ca8b 100644 --- a/UI/Popup/SplitRoadWizard.ts +++ b/UI/Popup/SplitRoadWizard.ts @@ -23,7 +23,7 @@ export default class SplitRoadWizard extends Toggle { source: {osmTags: "_cutposition=yes"}, mapRendering: [ { - location: ["point","centroid"], + location: ["point", "centroid"], icon: {render: "circle:white;./assets/svg/scissors.svg"}, iconSize: {render: "30,30,center"} } @@ -93,9 +93,9 @@ export default class SplitRoadWizard extends Toggle { function onMapClick(coordinates) { // First, we check if there is another, already existing point nearby const points = splitPoints.data.map((f, i) => [f.feature, i]) - .filter(p => GeoOperations.distanceBetween(p[0].geometry.coordinates, coordinates) * 1000 < 5) + .filter(p => GeoOperations.distanceBetween(p[0].geometry.coordinates, coordinates) < 5) .map(p => p[1]) - .sort() + .sort((a, b) => a - b) .reverse() if (points.length > 0) { for (const point of points) { diff --git a/UI/Popup/TagRenderingAnswer.ts b/UI/Popup/TagRenderingAnswer.ts index 3567ec70d..c7724b538 100644 --- a/UI/Popup/TagRenderingAnswer.ts +++ b/UI/Popup/TagRenderingAnswer.ts @@ -11,10 +11,16 @@ import TagRenderingConfig from "../../Models/ThemeConfig/TagRenderingConfig"; */ export default class TagRenderingAnswer extends VariableUiElement { - constructor(tagsSource: UIEventSource, configuration: TagRenderingConfig, contentClasses: string = "", contentStyle: string = "") { + constructor(tagsSource: UIEventSource, configuration: TagRenderingConfig, + contentClasses: string = "", contentStyle: string = "", options?:{ + specialViz: Map + }) { if (configuration === undefined) { throw "Trying to generate a tagRenderingAnswer without configuration..." } + if (tagsSource === undefined) { + throw "Trying to generate a tagRenderingAnswer without tagSource..." + } super(tagsSource.map(tags => { if (tags === undefined) { return undefined; @@ -31,7 +37,7 @@ export default class TagRenderingAnswer extends VariableUiElement { return undefined; } - const valuesToRender: BaseUIElement[] = trs.map(tr => new SubstitutedTranslation(tr, tagsSource)) + const valuesToRender: BaseUIElement[] = trs.map(tr => new SubstitutedTranslation(tr, tagsSource, options?.specialViz)) if (valuesToRender.length === 1) { return valuesToRender[0]; } else if (valuesToRender.length > 1) { diff --git a/UI/ShowDataLayer/ShowDataLayer.ts b/UI/ShowDataLayer/ShowDataLayer.ts index 497c9282b..f306cadf2 100644 --- a/UI/ShowDataLayer/ShowDataLayer.ts +++ b/UI/ShowDataLayer/ShowDataLayer.ts @@ -1,4 +1,3 @@ - import {UIEventSource} from "../../Logic/UIEventSource"; import LayerConfig from "../../Models/ThemeConfig/LayerConfig"; import FeatureInfoBox from "../Popup/FeatureInfoBox"; @@ -20,6 +19,7 @@ We don't actually import it here. It is imported in the 'MinimapImplementation'- */ export default class ShowDataLayer { + private static dataLayerIds = 0 private readonly _leafletMap: UIEventSource; private readonly _enablePopups: boolean; private readonly _features: RenderingMultiPlexerFeatureSource @@ -30,7 +30,6 @@ export default class ShowDataLayer { private _cleanCount = 0; private geoLayer = undefined; private isDirty = false; - /** * If the selected element triggers, this is used to lookup the correct layer and to open the popup * Used to avoid a lot of callbacks on the selected element @@ -39,9 +38,7 @@ export default class ShowDataLayer { * @private */ private readonly leafletLayersPerId = new Map() - private readonly showDataLayerid: number; - private static dataLayerIds = 0 constructor(options: ShowDataLayerOptions & { layerToShow: LayerConfig }) { this._leafletMap = options.leafletMap; @@ -155,33 +152,34 @@ export default class ShowDataLayer { continue } try { - if ((feat.geometry.type === "LineString" || feat.geometry.type === "MultiLineString")) { + if (feat.geometry.type === "LineString") { const self = this; const coords = L.GeoJSON.coordsToLatLngs(feat.geometry.coordinates) const tagsSource = this.allElements?.addOrGetElement(feat) ?? new UIEventSource(feat.properties); let offsettedLine; tagsSource - .map(tags => this._layerToShow.lineRendering[feat.lineRenderingIndex].GenerateLeafletStyle(tags)) + .map(tags => this._layerToShow.lineRendering[feat.lineRenderingIndex].GenerateLeafletStyle(tags)) .withEqualityStabilized((a, b) => { - if(a === b){ + if (a === b) { return true } - if(a === undefined || b === undefined){ + if (a === undefined || b === undefined) { return false } return a.offset === b.offset && a.color === b.color && a.weight === b.weight && a.dashArray === b.dashArray }) .addCallbackAndRunD(lineStyle => { - if (offsettedLine !== undefined) { - self.geoLayer.removeLayer(offsettedLine) - } - offsettedLine = L.polyline(coords, lineStyle); - this.postProcessFeature(feat, offsettedLine) - offsettedLine.addTo(this.geoLayer) - }) + if (offsettedLine !== undefined) { + self.geoLayer.removeLayer(offsettedLine) + } + // @ts-ignore + offsettedLine = L.polyline(coords, lineStyle); + this.postProcessFeature(feat, offsettedLine) + offsettedLine.addTo(this.geoLayer) + }) } else { this.geoLayer.addData(feat); - } + } } catch (e) { console.error("Could not add ", feat, "to the geojson layer in leaflet due to", e, e.stack) } @@ -192,7 +190,7 @@ export default class ShowDataLayer { const bounds = this.geoLayer.getBounds() mp.fitBounds(bounds, {animate: false}) } catch (e) { - console.debug("Invalid bounds",e) + console.debug("Invalid bounds", e) } } @@ -272,7 +270,7 @@ export default class ShowDataLayer { let infobox: FeatureInfoBox = undefined; - const id = `popup-${feature.properties.id}-${feature.geometry.type}-${this.showDataLayerid}-${this._cleanCount}-${feature.pointRenderingIndex ?? feature.lineRenderingIndex}` + const id = `popup-${feature.properties.id}-${feature.geometry.type}-${this.showDataLayerid}-${this._cleanCount}-${feature.pointRenderingIndex ?? feature.lineRenderingIndex}-${feature.multiLineStringIndex ?? ""}` popup.setContent(`
Popup for ${feature.properties.id} ${feature.geometry.type} ${id} is loading
`) leafletLayer.on("popupopen", () => { if (infobox === undefined) { @@ -292,7 +290,7 @@ export default class ShowDataLayer { } }); - + // Add the feature to the index to open the popup when needed this.leafletLayersPerId.set(feature.properties.id + feature.geometry.type, { diff --git a/UI/ShowDataLayer/ShowOverlayLayer.ts b/UI/ShowDataLayer/ShowOverlayLayer.ts index e75d26390..8d9a49784 100644 --- a/UI/ShowDataLayer/ShowOverlayLayer.ts +++ b/UI/ShowDataLayer/ShowOverlayLayer.ts @@ -1,19 +1,18 @@ import TilesourceConfig from "../../Models/ThemeConfig/TilesourceConfig"; import {UIEventSource} from "../../Logic/UIEventSource"; -import * as L from "leaflet"; export default class ShowOverlayLayer { public static implementation: (config: TilesourceConfig, leafletMap: UIEventSource, isShown?: UIEventSource) => void; - + constructor(config: TilesourceConfig, leafletMap: UIEventSource, isShown: UIEventSource = undefined) { - if(ShowOverlayLayer.implementation === undefined){ + if (ShowOverlayLayer.implementation === undefined) { throw "Call ShowOverlayLayerImplemenation.initialize() first before using this" } - ShowOverlayLayer.implementation(config, leafletMap, isShown) + ShowOverlayLayer.implementation(config, leafletMap, isShown) } } \ No newline at end of file diff --git a/UI/ShowDataLayer/ShowOverlayLayerImplementation.ts b/UI/ShowDataLayer/ShowOverlayLayerImplementation.ts index ef92aef4e..d9201fec5 100644 --- a/UI/ShowDataLayer/ShowOverlayLayerImplementation.ts +++ b/UI/ShowDataLayer/ShowOverlayLayerImplementation.ts @@ -4,14 +4,14 @@ import {UIEventSource} from "../../Logic/UIEventSource"; import ShowOverlayLayer from "./ShowOverlayLayer"; export default class ShowOverlayLayerImplementation { - - public static Implement(){ + + public static Implement() { ShowOverlayLayer.implementation = ShowOverlayLayerImplementation.AddToMap } - + public static AddToMap(config: TilesourceConfig, leafletMap: UIEventSource, - isShown: UIEventSource = undefined){ + isShown: UIEventSource = undefined) { leafletMap.map(leaflet => { if (leaflet === undefined) { return; @@ -41,5 +41,5 @@ export default class ShowOverlayLayerImplementation { }) } - + } \ No newline at end of file diff --git a/UI/ShowDataLayer/ShowTileInfo.ts b/UI/ShowDataLayer/ShowTileInfo.ts index 1bb636727..e2ba01adf 100644 --- a/UI/ShowDataLayer/ShowTileInfo.ts +++ b/UI/ShowDataLayer/ShowTileInfo.ts @@ -6,6 +6,7 @@ import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeature import {GeoOperations} from "../../Logic/GeoOperations"; import {Tiles} from "../../Models/TileRange"; import * as clusterstyle from "../../assets/layers/cluster_style/cluster_style.json" + export default class ShowTileInfo { public static readonly styling = new LayerConfig( clusterstyle, "tileinfo", true) diff --git a/UI/ShowDataLayer/TileHierarchyAggregator.ts b/UI/ShowDataLayer/TileHierarchyAggregator.ts index 42878131c..49007a78a 100644 --- a/UI/ShowDataLayer/TileHierarchyAggregator.ts +++ b/UI/ShowDataLayer/TileHierarchyAggregator.ts @@ -10,6 +10,12 @@ import FilteredLayer from "../../Models/FilteredLayer"; * A feature source containing but a single feature, which keeps stats about a tile */ export class TileHierarchyAggregator implements FeatureSource { + private static readonly empty = [] + public totalValue: number = 0 + public showCount: number = 0 + public hiddenCount: number = 0 + public readonly features = new UIEventSource<{ feature: any, freshness: Date }[]>(TileHierarchyAggregator.empty) + public readonly name; private _parent: TileHierarchyAggregator; private _root: TileHierarchyAggregator; private _z: number; @@ -17,21 +23,12 @@ export class TileHierarchyAggregator implements FeatureSource { private _y: number; private _tileIndex: number private _counter: SingleTileCounter - private _subtiles: [TileHierarchyAggregator, TileHierarchyAggregator, TileHierarchyAggregator, TileHierarchyAggregator] = [undefined, undefined, undefined, undefined] - public totalValue: number = 0 - public showCount: number = 0 - public hiddenCount: number = 0 - - private static readonly empty = [] - public readonly features = new UIEventSource<{ feature: any, freshness: Date }[]>(TileHierarchyAggregator.empty) - public readonly name; - private readonly featuresStatic = [] private readonly featureProperties: { count: string, kilocount: string, tileId: string, id: string, showCount: string, totalCount: string }; private readonly _state: { filteredLayers: UIEventSource }; private readonly updateSignal = new UIEventSource(undefined) - + private constructor(parent: TileHierarchyAggregator, state: { filteredLayers: UIEventSource @@ -45,7 +42,7 @@ export class TileHierarchyAggregator implements FeatureSource { this._y = y; this._tileIndex = Tiles.tile_index(z, x, y) this.name = "Count(" + this._tileIndex + ")" - + const totals = { id: "" + this._tileIndex, tileId: "" + this._tileIndex, @@ -87,6 +84,10 @@ export class TileHierarchyAggregator implements FeatureSource { this.featuresStatic.push({feature: box, freshness: now}) } + public static createHierarchy(state: { filteredLayers: UIEventSource }) { + return new TileHierarchyAggregator(undefined, state, 0, 0, 0) + } + public getTile(tileIndex): TileHierarchyAggregator { if (tileIndex === this._tileIndex) { return this; @@ -103,6 +104,61 @@ export class TileHierarchyAggregator implements FeatureSource { return this._subtiles[subtileIndex]?.getTile(tileIndex) } + public addTile(source: FeatureSourceForLayer & Tiled) { + const self = this; + if (source.tileIndex === this._tileIndex) { + if (this._counter === undefined) { + this._counter = new SingleTileCounter(this._tileIndex) + this._counter.countsPerLayer.addCallbackAndRun(_ => self.update()) + } + this._counter.addTileCount(source) + } else { + + // We have to give it to one of the subtiles + let [tileZ, tileX, tileY] = Tiles.tile_from_index(source.tileIndex) + while (tileZ - 1 > this._z) { + tileX = Math.floor(tileX / 2) + tileY = Math.floor(tileY / 2) + tileZ-- + } + const xDiff = tileX - (2 * this._x) + const yDiff = tileY - (2 * this._y) + + const subtileIndex = yDiff * 2 + xDiff; + if (this._subtiles[subtileIndex] === undefined) { + this._subtiles[subtileIndex] = new TileHierarchyAggregator(this, this._state, tileZ, tileX, tileY) + } + this._subtiles[subtileIndex].addTile(source) + } + this.updateSignal.setData(source) + } + + getCountsForZoom(clusteringConfig: { maxZoom: number }, locationControl: UIEventSource<{ zoom: number }>, cutoff: number = 0): FeatureSource { + const self = this + const empty = [] + const features = locationControl.map(loc => loc.zoom).map(targetZoom => { + if (targetZoom - 1 > clusteringConfig.maxZoom) { + return empty + } + + const features = [] + self.visitSubTiles(aggr => { + if (aggr.showCount < cutoff) { + return false + } + if (aggr._z === targetZoom) { + features.push(...aggr.features.data) + return false + } + return aggr._z <= targetZoom; + }) + + return features + }, [this.updateSignal.stabilized(500)]) + + return new StaticFeatureSource(features, true); + } + private update() { const newMap = new Map() let total = 0 @@ -162,71 +218,12 @@ export class TileHierarchyAggregator implements FeatureSource { } } - public addTile(source: FeatureSourceForLayer & Tiled) { - const self = this; - if (source.tileIndex === this._tileIndex) { - if (this._counter === undefined) { - this._counter = new SingleTileCounter(this._tileIndex) - this._counter.countsPerLayer.addCallbackAndRun(_ => self.update()) - } - this._counter.addTileCount(source) - } else { - - // We have to give it to one of the subtiles - let [tileZ, tileX, tileY] = Tiles.tile_from_index(source.tileIndex) - while (tileZ - 1 > this._z) { - tileX = Math.floor(tileX / 2) - tileY = Math.floor(tileY / 2) - tileZ-- - } - const xDiff = tileX - (2 * this._x) - const yDiff = tileY - (2 * this._y) - - const subtileIndex = yDiff * 2 + xDiff; - if (this._subtiles[subtileIndex] === undefined) { - this._subtiles[subtileIndex] = new TileHierarchyAggregator(this, this._state, tileZ, tileX, tileY) - } - this._subtiles[subtileIndex].addTile(source) - } - this.updateSignal.setData(source) - } - - public static createHierarchy(state: { filteredLayers: UIEventSource }) { - return new TileHierarchyAggregator(undefined, state, 0, 0, 0) - } - private visitSubTiles(f: (aggr: TileHierarchyAggregator) => boolean) { const visitFurther = f(this) if (visitFurther) { this._subtiles.forEach(tile => tile?.visitSubTiles(f)) } } - - getCountsForZoom(clusteringConfig: { maxZoom: number }, locationControl: UIEventSource<{ zoom: number }>, cutoff: number = 0): FeatureSource { - const self = this - const empty = [] - const features = locationControl.map(loc => loc.zoom).map(targetZoom => { - if (targetZoom - 1 > clusteringConfig.maxZoom) { - return empty - } - - const features = [] - self.visitSubTiles(aggr => { - if (aggr.showCount < cutoff) { - return false - } - if (aggr._z === targetZoom) { - features.push(...aggr.features.data) - return false - } - return aggr._z <= targetZoom; - }) - - return features - }, [this.updateSignal.stabilized(500)]) - - return new StaticFeatureSource(features, true); - } } /** @@ -236,11 +233,10 @@ class SingleTileCounter implements Tiled { public readonly bbox: BBox; public readonly tileIndex: number; public readonly countsPerLayer: UIEventSource> = new UIEventSource>(new Map()) - private readonly registeredLayers: Map = new Map(); public readonly z: number public readonly x: number public readonly y: number - + private readonly registeredLayers: Map = new Map(); constructor(tileIndex: number) { this.tileIndex = tileIndex diff --git a/UI/SpecialVisualizations.ts b/UI/SpecialVisualizations.ts index 674b44499..bcce130a1 100644 --- a/UI/SpecialVisualizations.ts +++ b/UI/SpecialVisualizations.ts @@ -33,18 +33,17 @@ import AllKnownLayers from "../Customizations/AllKnownLayers"; import ShowDataLayer from "./ShowDataLayer/ShowDataLayer"; import Link from "./Base/Link"; import List from "./Base/List"; -import {OsmConnection} from "../Logic/Osm/OsmConnection"; import {SubtleButton} from "./Base/SubtleButton"; import ChangeTagAction from "../Logic/Osm/Actions/ChangeTagAction"; import {And} from "../Logic/Tags/And"; import Toggle from "./Input/Toggle"; -import Img from "./Base/Img"; -import FilteredLayer from "../Models/FilteredLayer"; import {DefaultGuiState} from "./DefaultGuiState"; +import {GeoOperations} from "../Logic/GeoOperations"; +import Hash from "../Logic/Web/Hash"; export interface SpecialVisualization { funcName: string, - constr: ((state: State, tagSource: UIEventSource, argument: string[], guistate: DefaultGuiState) => BaseUIElement), + constr: ((state: State, tagSource: UIEventSource, argument: string[], guistate: DefaultGuiState,) => BaseUIElement), docs: string, example?: string, args: { name: string, defaultValue?: string, doc: string }[] @@ -161,7 +160,7 @@ export default class SpecialVisualizations { } ], example: "`{minimap()}`, `{minimap(17, id, _list_of_embedded_feature_ids_calculated_by_calculated_tag):height:10rem; border: 2px solid black}`", - constr: (state, tagSource, args) => { + constr: (state, tagSource, args, defaultGuiState) => { const keys = [...args] keys.splice(0, 1) @@ -177,9 +176,10 @@ export default class SpecialVisualizations { } for (const id of idList) { + const feature = featureStore.get(id) features.push({ freshness: new Date(), - feature: featureStore.get(id) + feature }) } } @@ -427,12 +427,7 @@ export default class SpecialVisualizations { const title = state?.layoutToUse?.title?.txt ?? "MapComplete"; - let matchingLayer: LayerConfig = undefined; - for (const layer of (state?.layoutToUse?.layers ?? [])) { - if (layer.source.osmTags.matchesProperties(tagSource?.data)) { - matchingLayer = layer - } - } + let matchingLayer: LayerConfig = state?.layoutToUse?.getMatchingLayer(tagSource?.data); let name = matchingLayer?.title?.GetRenderValue(tagSource.data)?.txt ?? tagSource.data?.name ?? "POI"; if (name) { name = `${name} (${title})` @@ -568,22 +563,22 @@ export default class SpecialVisualizations { } const targetIdKey = args[3] const t = Translations.t.general.apply_button - + const tagsExplanation = new VariableUiElement(tagsToApply.map(tagsToApply => { const tagsStr = tagsToApply.map(t => t.asHumanString(false, true)).join("&"); let el: BaseUIElement = new FixedUiElement(tagsStr) - if(targetIdKey !== undefined){ - const targetId = tags.data[targetIdKey] ?? tags.data.id - el = t.appliedOnAnotherObject.Subs({tags: tagsStr , id: targetId }) + if (targetIdKey !== undefined) { + const targetId = tags.data[targetIdKey] ?? tags.data.id + el = t.appliedOnAnotherObject.Subs({tags: tagsStr, id: targetId}) } return el; } )).SetClass("subtle") - + const applied = new UIEventSource(false) const applyButton = new SubtleButton(image, new Combine([msg, tagsExplanation]).SetClass("flex flex-col")) .onClick(() => { - const targetId = tags.data[ targetIdKey] ?? tags.data.id + const targetId = tags.data[targetIdKey] ?? tags.data.id const changeAction = new ChangeTagAction(targetId, new And(tagsToApply.data), tags.data, // We pass in the tags of the selected element, not the tags of the target element! @@ -596,15 +591,53 @@ export default class SpecialVisualizations { applied.setData(true) }) - + return new Toggle( new Toggle( - t.isApplied.SetClass("thanks"), - applyButton, + t.isApplied.SetClass("thanks"), + applyButton, applied ) , undefined, state.osmConnection.isLoggedIn) } + }, + { + funcName: "export_as_gpx", + docs: "Exports the selected feature as GPX-file", + args: [], + constr: (state, tagSource, args) => { + const t = Translations.t.general.download; + + return new SubtleButton(Svg.download_ui(), + new Combine([t.downloadGpx.SetClass("font-bold text-lg"), + t.downloadGpxHelper.SetClass("subtle")]).SetClass("flex flex-col") + ).onClick(() => { + console.log("Exporting as GPX!") + const tags = tagSource.data + const feature = state.allElements.ContainingFeatures.get(tags.id) + const matchingLayer = state?.layoutToUse?.getMatchingLayer(tags) + const gpx = GeoOperations.AsGpx(feature, matchingLayer) + const title = matchingLayer.title?.GetRenderValue(tags)?.Subs(tags)?.txt ?? "gpx_track" + Utils.offerContentsAsDownloadableFile(gpx, title + "_mapcomplete_export.gpx", { + mimetype: "{gpx=application/gpx+xml}" + }) + + + }) + } + }, + { + funcName: "clear_location_history", + docs: "A button to remove the travelled track information from the device", + args: [], + constr: state => { + return new SubtleButton( + Svg.delete_icon_svg().SetStyle("height: 1.5rem"), Translations.t.general.removeLocationHistory + ).onClick(() => { + state.historicalUserLocations.features.setData([]) + Hash.hash.setData(undefined) + }) + } } ] diff --git a/UI/SubstitutedTranslation.ts b/UI/SubstitutedTranslation.ts index 076073f75..69f57683f 100644 --- a/UI/SubstitutedTranslation.ts +++ b/UI/SubstitutedTranslation.ts @@ -63,7 +63,6 @@ export class SubstitutedTranslation extends VariableUiElement { this.SetClass("w-full") } - public static ExtractSpecialComponents(template: string, extraMappings: SpecialVisualization[] = []): { fixed?: string, special?: { diff --git a/UI/Wikipedia/WikidataPreviewBox.ts b/UI/Wikipedia/WikidataPreviewBox.ts index 1d7595e6d..525e102b5 100644 --- a/UI/Wikipedia/WikidataPreviewBox.ts +++ b/UI/Wikipedia/WikidataPreviewBox.ts @@ -4,7 +4,6 @@ import Wikidata, {WikidataResponse} from "../../Logic/Web/Wikidata"; import {Translation} from "../i18n/Translation"; import {FixedUiElement} from "../Base/FixedUiElement"; import Loading from "../Base/Loading"; -import {Transform} from "stream"; import Translations from "../i18n/Translations"; import Combine from "../Base/Combine"; import Img from "../Base/Img"; @@ -16,6 +15,43 @@ import {Utils} from "../../Utils"; export default class WikidataPreviewBox extends VariableUiElement { + private static isHuman = [ + {p: 31/*is a*/, q: 5 /* human */}, + ] + // @ts-ignore + private static extraProperties: { + requires?: { p: number, q?: number }[], + property: string, + display: Translation | Map BaseUIElement) /*If translation: Subs({value: * }) */> + }[] = [ + { + requires: WikidataPreviewBox.isHuman, + property: "P21", + display: new Map([ + ['Q6581097', () => Svg.gender_male_ui().SetStyle("width: 1rem; height: auto")], + ['Q6581072', () => Svg.gender_female_ui().SetStyle("width: 1rem; height: auto")], + ['Q1097630', () => Svg.gender_inter_ui().SetStyle("width: 1rem; height: auto")], + ['Q1052281', () => Svg.gender_trans_ui().SetStyle("width: 1rem; height: auto")/*'transwomen'*/], + ['Q2449503', () => Svg.gender_trans_ui().SetStyle("width: 1rem; height: auto")/*'transmen'*/], + ['Q48270', () => Svg.gender_queer_ui().SetStyle("width: 1rem; height: auto")] + ]) + }, + { + property: "P569", + requires: WikidataPreviewBox.isHuman, + display: new Translation({ + "*": "Born: {value}" + }) + }, + { + property: "P570", + requires: WikidataPreviewBox.isHuman, + display: new Translation({ + "*": "Died: {value}" + }) + } + ] + constructor(wikidataId: UIEventSource) { let inited = false; const wikidata = wikidataId @@ -45,6 +81,7 @@ export default class WikidataPreviewBox extends VariableUiElement { })) } + // @ts-ignore public static WikidataResponsePreview(wikidata: WikidataResponse): BaseUIElement { let link = new Link( @@ -57,7 +94,7 @@ export default class WikidataPreviewBox extends VariableUiElement { let info = new Combine([ new Combine( [Translation.fromMap(wikidata.labels)?.SetClass("font-bold"), - link]).SetClass("flex justify-between"), + link]).SetClass("flex justify-between"), Translation.fromMap(wikidata.descriptions), WikidataPreviewBox.QuickFacts(wikidata) ]).SetClass("flex flex-col link-underline") @@ -80,87 +117,49 @@ export default class WikidataPreviewBox extends VariableUiElement { return info } - private static isHuman = [ - {p: 31/*is a*/, q: 5 /* human */}, - ] - // @ts-ignore - // @ts-ignore - private static extraProperties: { - requires?: { p: number, q?: number }[], - property: string, - display: Translation | Map BaseUIElement) /*If translation: Subs({value: * }) */> - }[] = [ - { - requires: WikidataPreviewBox.isHuman, - property: "P21", - display: new Map([ - ['Q6581097', () => Svg.gender_male_ui().SetStyle("width: 1rem; height: auto")], - ['Q6581072', () => Svg.gender_female_ui().SetStyle("width: 1rem; height: auto")], - ['Q1097630',() => Svg.gender_inter_ui().SetStyle("width: 1rem; height: auto")], - ['Q1052281',() => Svg.gender_trans_ui().SetStyle("width: 1rem; height: auto")/*'transwomen'*/], - ['Q2449503',() => Svg.gender_trans_ui().SetStyle("width: 1rem; height: auto")/*'transmen'*/], - ['Q48270',() => Svg.gender_queer_ui().SetStyle("width: 1rem; height: auto")] - ]) - }, - { - property: "P569", - requires: WikidataPreviewBox.isHuman, - display: new Translation({ - "*":"Born: {value}" - }) - }, - { - property: "P570", - requires: WikidataPreviewBox.isHuman, - display: new Translation({ - "*":"Died: {value}" - }) - } - ] - public static QuickFacts(wikidata: WikidataResponse): BaseUIElement { - - const els : BaseUIElement[] = [] + + const els: BaseUIElement[] = [] for (const extraProperty of WikidataPreviewBox.extraProperties) { let hasAllRequirements = true for (const requirement of extraProperty.requires) { - if(!wikidata.claims?.has("P"+requirement.p)){ + if (!wikidata.claims?.has("P" + requirement.p)) { hasAllRequirements = false; break } - if(!wikidata.claims?.get("P"+requirement.p).has("Q"+requirement.q)){ + if (!wikidata.claims?.get("P" + requirement.p).has("Q" + requirement.q)) { hasAllRequirements = false; break } } - if(!hasAllRequirements){ + if (!hasAllRequirements) { continue } - + const key = extraProperty.property const display = extraProperty.display const value: string[] = Array.from(wikidata.claims.get(key)) - if(value === undefined){ + if (value === undefined) { continue } - if(display instanceof Translation){ + if (display instanceof Translation) { els.push(display.Subs({value: value.join(", ")}).SetClass("m-2")) continue } const constructors = Utils.NoNull(value.map(property => display.get(property))) const elems = constructors.map(v => { - if(typeof v === "string"){ + if (typeof v === "string") { return new FixedUiElement(v) - }else{ + } else { return v(); } }) els.push(new Combine(elems).SetClass("flex m-2")) } - if(els.length === 0){ + if (els.length === 0) { return undefined; } - + return new Combine(els).SetClass("flex") } diff --git a/UI/Wikipedia/WikidataSearchBox.ts b/UI/Wikipedia/WikidataSearchBox.ts index da0c90ebc..c3df838cd 100644 --- a/UI/Wikipedia/WikidataSearchBox.ts +++ b/UI/Wikipedia/WikidataSearchBox.ts @@ -13,6 +13,8 @@ import Svg from "../../Svg"; export default class WikidataSearchBox extends InputElement { + private static readonly _searchCache = new Map>() + IsSelected: UIEventSource = new UIEventSource(false); private readonly wikidataId: UIEventSource private readonly searchText: UIEventSource @@ -29,6 +31,10 @@ export default class WikidataSearchBox extends InputElement { return this.wikidataId; } + IsValid(t: string): boolean { + return t.startsWith("Q") && !isNaN(Number(t.substring(1))); + } + protected InnerConstructElement(): HTMLElement { const searchField = new TextField({ @@ -46,12 +52,20 @@ export default class WikidataSearchBox extends InputElement { return; } searchFailMessage.setData(undefined) - lastSearchResults.WaitForPromise( - Wikidata.searchAndFetch(searchText, { - lang: Locale.language.data, + + const lang = Locale.language.data + const key = lang + ":" + searchText + let promise = WikidataSearchBox._searchCache.get(key) + if (promise === undefined) { + promise = Wikidata.searchAndFetch(searchText, { + lang, maxCount: 5 } - ), err => searchFailMessage.setData(err)) + ) + WikidataSearchBox._searchCache.set(key, promise) + } + + lastSearchResults.WaitForPromise(promise, err => searchFailMessage.setData(err)) }) @@ -61,10 +75,10 @@ export default class WikidataSearchBox extends InputElement { return new Combine([Translations.t.general.wikipedia.failed.Clone().SetClass("alert"), searchFailMessage.data]) } - if(searchResults.length === 0){ + if (searchResults.length === 0) { return Translations.t.general.wikipedia.noResults.Subs({search: searchField.GetValue().data ?? ""}) } - + if (searchResults.length === 0) { return Translations.t.general.wikipedia.doSearch } @@ -88,7 +102,6 @@ export default class WikidataSearchBox extends InputElement { }, [searchFailMessage])) - // const full = new Combine([ new Title(Translations.t.general.wikipedia.searchWikidata, 3).SetClass("m-2"), new Combine([ @@ -108,10 +121,4 @@ export default class WikidataSearchBox extends InputElement { ]).ConstructElement(); } - IsSelected: UIEventSource = new UIEventSource(false); - - IsValid(t: string): boolean { - return t.startsWith("Q") && !isNaN(Number(t.substring(1))); - } - } \ No newline at end of file diff --git a/UI/Wikipedia/WikipediaBox.ts b/UI/Wikipedia/WikipediaBox.ts index 28fd62dc7..b1a28fd46 100644 --- a/UI/Wikipedia/WikipediaBox.ts +++ b/UI/Wikipedia/WikipediaBox.ts @@ -88,7 +88,7 @@ export default class WikipediaBox extends Combine { } const wikidata = maybewikidata["success"] - if(wikidata === undefined){ + if (wikidata === undefined) { return "failed" } if (wikidata.wikisites.size === 0) { @@ -118,13 +118,13 @@ export default class WikipediaBox extends Combine { return wp.failed.Clone().SetClass("alert p-4") } if (status[0] == "no page") { - const [_, wd] = <[string, WikidataResponse]> status + const [_, wd] = <[string, WikidataResponse]>status return new Combine([ WikidataPreviewBox.WikidataResponsePreview(wd), wp.noWikipediaPage.Clone().SetClass("subtle")]).SetClass("flex flex-col p-4") } - const [pagetitle, language, wd] = <[string, string, WikidataResponse]> status + const [pagetitle, language, wd] = <[string, string, WikidataResponse]>status return WikipediaBox.createContents(pagetitle, language, wd) }) @@ -134,27 +134,27 @@ export default class WikipediaBox extends Combine { const titleElement = new VariableUiElement(wikiLink.map(state => { if (typeof state !== "string") { const [pagetitle, _] = state - if(pagetitle === "no page"){ - const wd = state[1] - return new Title( Translation.fromMap(wd.labels),3) + if (pagetitle === "no page") { + const wd = state[1] + return new Title(Translation.fromMap(wd.labels), 3) } return new Title(pagetitle, 3) } //return new Title(Translations.t.general.wikipedia.wikipediaboxTitle.Clone(), 2) - return new Title(wikidataId,3) + return new Title(wikidataId, 3) })) const linkElement = new VariableUiElement(wikiLink.map(state => { if (typeof state !== "string") { const [pagetitle, language] = state - if(pagetitle === "no page"){ - const wd = state[1] - return new Link(Svg.pop_out_ui().SetStyle("width: 1.2rem").SetClass("block "), - "https://www.wikidata.org/wiki/"+wd.id + if (pagetitle === "no page") { + const wd = state[1] + return new Link(Svg.pop_out_ui().SetStyle("width: 1.2rem").SetClass("block "), + "https://www.wikidata.org/wiki/" + wd.id , true) } - + const url = `https://${language}.wikipedia.org/wiki/${pagetitle}` return new Link(Svg.pop_out_ui().SetStyle("width: 1.2rem").SetClass("block "), url, true) } @@ -202,7 +202,7 @@ export default class WikipediaBox extends Combine { return new Combine([ quickFacts?.SetClass("border-2 border-grey rounded-lg m-1 mb-0"), new VariableUiElement(contents) - .SetClass("block pl-6 pt-2")]) + .SetClass("block pl-6 pt-2")]) } } \ No newline at end of file diff --git a/UI/i18n/Translation.ts b/UI/i18n/Translation.ts index 87dddde40..f3966508f 100644 --- a/UI/i18n/Translation.ts +++ b/UI/i18n/Translation.ts @@ -34,6 +34,38 @@ export class Translation extends BaseUIElement { return this.textFor(Translation.forcedLanguage ?? Locale.language.data) } + static ExtractAllTranslationsFrom(object: any, context = ""): { context: string, tr: Translation }[] { + const allTranslations: { context: string, tr: Translation }[] = [] + for (const key in object) { + const v = object[key] + if (v === undefined || v === null) { + continue + } + if (v instanceof Translation) { + allTranslations.push({context: context + "." + key, tr: v}) + continue + } + if (typeof v === "object") { + allTranslations.push(...Translation.ExtractAllTranslationsFrom(v, context + "." + key)) + + } + } + return allTranslations + } + + static fromMap(transl: Map) { + const translations = {} + let hasTranslation = false; + transl?.forEach((value, key) => { + translations[key] = value + hasTranslation = true + }) + if (!hasTranslation) { + return undefined + } + return new Translation(translations); + } + public textFor(language: string): string { if (this.translations["*"]) { return this.translations["*"]; @@ -195,36 +227,8 @@ export class Translation extends BaseUIElement { } return allIcons.filter(icon => icon != undefined) } - - static ExtractAllTranslationsFrom(object: any, context = ""): { context: string, tr: Translation }[] { - const allTranslations: { context: string, tr: Translation }[] = [] - for (const key in object) { - const v = object[key] - if (v === undefined || v === null) { - continue - } - if (v instanceof Translation) { - allTranslations.push({context: context +"." + key, tr: v}) - continue - } - if (typeof v === "object") { - allTranslations.push(...Translation.ExtractAllTranslationsFrom(v, context + "." + key)) - continue - } - } - return allTranslations - } - - static fromMap(transl: Map) { - const translations = {} - let hasTranslation = false; - transl?.forEach((value, key) => { - translations[key] = value - hasTranslation = true - }) - if(!hasTranslation){ - return undefined - } - return new Translation(translations); + + AsMarkdown(): string { + return this.txt } } \ No newline at end of file diff --git a/UI/i18n/Translations.ts b/UI/i18n/Translations.ts index fa5c0da7b..6052d8b28 100644 --- a/UI/i18n/Translations.ts +++ b/UI/i18n/Translations.ts @@ -25,8 +25,8 @@ export default class Translations { if (t === undefined || t === null) { return undefined; } - if(typeof t === "number"){ - t = ""+t + if (typeof t === "number") { + t = "" + t } if (typeof t === "string") { return new Translation({"*": t}, context); @@ -47,7 +47,7 @@ export default class Translations { return undefined; } if (typeof (s) === "string") { - return new Translation({en: s}); + return new Translation({'*': s}); } if (s instanceof Translation) { return s.Clone() /* MUST CLONE HERE! */; diff --git a/Utils.ts b/Utils.ts index e0dbf2641..114125926 100644 --- a/Utils.ts +++ b/Utils.ts @@ -10,12 +10,7 @@ export class Utils { public static runningFromConsole = typeof window === "undefined"; public static readonly assets_path = "./assets/svg/"; public static externalDownloadFunction: (url: string, headers?: any) => Promise; - private static knownKeys = ["addExtraTags", "and", "calculatedTags", "changesetmessage", "clustering", "color", "condition", "customCss", "dashArray", "defaultBackgroundId", "description", "descriptionTail", "doNotDownload", "enableAddNewPoints", "enableBackgroundLayerSelection", "enableGeolocation", "enableLayers", "enableMoreQuests", "enableSearch", "enableShareScreen", "enableUserBadge", "freeform", "hideFromOverview", "hideInAnswer", "icon", "iconOverlays", "iconSize", "id", "if", "ifnot", "isShown", "key", "language", "layers", "lockLocation", "maintainer", "mappings", "maxzoom", "maxZoom", "minNeededElements", "minzoom", "multiAnswer", "name", "or", "osmTags", "passAllFeatures", "presets", "question", "render", "roaming", "roamingRenderings", "rotation", "shortDescription", "socialImage", "source", "startLat", "startLon", "startZoom", "tagRenderings", "tags", "then", "title", "titleIcons", "type", "version", "wayHandling", "widenFactor", "width"] - private static extraKeys = ["nl", "en", "fr", "de", "pt", "es", "name", "phone", "email", "amenity", "leisure", "highway", "building", "yes", "no", "true", "false"] - private static injectedDownloads = {} - private static _download_cache = new Map, timestamp: number }>() - - public static Special_visualizations_tagsToApplyHelpText = `These can either be a tag to add, such as \`amenity=fast_food\` or can use a substitution, e.g. \`addr:housenumber=$number\`. + public static Special_visualizations_tagsToApplyHelpText = `These can either be a tag to add, such as \`amenity=fast_food\` or can use a substitution, e.g. \`addr:housenumber=$number\`. This new point will then have the tags \`amenity=fast_food\` and \`addr:housenumber\` with the value that was saved in \`number\` in the original feature. If a value to substitute is undefined, empty string will be used instead. @@ -26,7 +21,11 @@ Remark that the syntax is slightly different then expected; it uses '$' to note Note that these values can be prepare with javascript in the theme by using a [calculatedTag](calculatedTags.md#calculating-tags-with-javascript) ` - + private static knownKeys = ["addExtraTags", "and", "calculatedTags", "changesetmessage", "clustering", "color", "condition", "customCss", "dashArray", "defaultBackgroundId", "description", "descriptionTail", "doNotDownload", "enableAddNewPoints", "enableBackgroundLayerSelection", "enableGeolocation", "enableLayers", "enableMoreQuests", "enableSearch", "enableShareScreen", "enableUserBadge", "freeform", "hideFromOverview", "hideInAnswer", "icon", "iconOverlays", "iconSize", "id", "if", "ifnot", "isShown", "key", "language", "layers", "lockLocation", "maintainer", "mappings", "maxzoom", "maxZoom", "minNeededElements", "minzoom", "multiAnswer", "name", "or", "osmTags", "passAllFeatures", "presets", "question", "render", "roaming", "roamingRenderings", "rotation", "shortDescription", "socialImage", "source", "startLat", "startLon", "startZoom", "tagRenderings", "tags", "then", "title", "titleIcons", "type", "version", "wayHandling", "widenFactor", "width"] + private static extraKeys = ["nl", "en", "fr", "de", "pt", "es", "name", "phone", "email", "amenity", "leisure", "highway", "building", "yes", "no", "true", "false"] + private static injectedDownloads = {} + private static _download_cache = new Map, timestamp: number }>() + static EncodeXmlValue(str) { if (typeof str !== "string") { str = "" + str @@ -145,6 +144,21 @@ Note that these values can be prepare with javascript in the theme by using a [c return newArr; } + public static Dupicates(arr: string[]): string[] { + if (arr === undefined) { + return undefined; + } + const newArr = []; + const seen = new Set(); + for (const string of arr) { + if(seen.has(string)){ + newArr.push(string) + } + seen.add(string) + } + return newArr; + } + public static Identical(t1: T[], t2: T[], eq?: (t: T, t0: T) => boolean): boolean { if (t1.length !== t2.length) { return false @@ -187,7 +201,14 @@ Note that these values can be prepare with javascript in the theme by using a [c while (match) { const key = match[1] - txt = txt.replace("{" + key + "}", tags[key] ?? "") + let v = tags[key] + if(v !== undefined ){ + if(typeof v !== "string"){ + v = ""+v + } + v = v.replace(/\n/g, "
") + } + txt = txt.replace("{" + key + "}", v ?? "") match = txt.match(regex) } @@ -203,7 +224,7 @@ Note that these values can be prepare with javascript in the theme by using a [c link.href = location; link.media = 'all'; head.appendChild(link); - console.log("Added custom layout ", location) + console.log("Added custom css file ", location) } /** @@ -236,6 +257,9 @@ Note that these values can be prepare with javascript in the theme by using a [c } const sourceV = source[key]; + if(target === null){ + return source + } const targetV = target[key] if (typeof sourceV === "object") { if (sourceV === null) { @@ -337,6 +361,34 @@ Note that these values can be prepare with javascript in the theme by using a [c ) } + public static upload(url: string, data, headers?: any): Promise { + + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.onload = () => { + if (xhr.status == 200) { + resolve(xhr.response) + } else if (xhr.status === 509 || xhr.status === 429) { + reject("rate limited") + } else { + reject(xhr.statusText) + } + }; + xhr.open('POST', url); + if (headers !== undefined) { + + for (const key in headers) { + xhr.setRequestHeader(key, headers[key]) + } + } + + xhr.send(data); + xhr.onerror = reject + } + ) + } + + public static async downloadJsonCached(url: string, maxCacheTimeMs: number, headers?: any): Promise { const cached = Utils._download_cache.get(url) if (cached !== undefined) { @@ -473,7 +525,7 @@ Note that these values can be prepare with javascript in the theme by using a [c if (theme !== undefined) { osmcha_link = osmcha_link + "," + `"comment":[{"label":"#${theme}","value":"#${theme}"}]` } - return "https://osmcha.org/?filters=" + encodeURIComponent("{"+osmcha_link+"}") + return "https://osmcha.org/?filters=" + encodeURIComponent("{" + osmcha_link + "}") } private static colorDiff(c0: { r: number, g: number, b: number }, c1: { r: number, g: number, b: number }) { diff --git a/assets/layers/artwork/artwork.json b/assets/layers/artwork/artwork.json index 857dbe9d9..3969e0e2d 100644 --- a/assets/layers/artwork/artwork.json +++ b/assets/layers/artwork/artwork.json @@ -1,440 +1,447 @@ { - "id": "artwork", - "name": { - "en": "Artworks", - "nl": "Kunstwerken", - "fr": "Œuvres d'art", - "de": "Kunstwerke", - "id": "Karya seni", - "it": "Opere d’arte", - "ru": "ПŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", - "es": "Obras de arte", - "ja": "įžŽčĄ“品", - "zh_Hant": "č—čĄ“å“", - "nb_NO": "Kunstverk" + "id": "artwork", + "name": { + "en": "Artworks", + "nl": "Kunstwerken", + "fr": "Œuvres d'art", + "de": "Kunstwerke", + "id": "Karya seni", + "it": "Opere d’arte", + "ru": "ПŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", + "es": "Obras de arte", + "ja": "įžŽčĄ“品", + "zh_Hant": "č—čĄ“å“", + "nb_NO": "Kunstverk" + }, + "source": { + "osmTags": "tourism=artwork" + }, + "title": { + "render": { + "en": "Artwork", + "nl": "Kunstwerk", + "fr": "Œuvre d'art", + "de": "Kunstwerk", + "id": "Karya Seni", + "it": "Opera d’arte", + "ru": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°", + "es": "Obra de arte", + "ja": "ã‚ĸãƒŧトワãƒŧク", + "zh_Hant": "č—čĄ“å“", + "nb_NO": "Kunstverk", + "fi": "Taideteos", + "gl": "Obra de arte", + "hu": "MÅąalkotÃĄs", + "pl": "Dzieło sztuki", + "pt": "Obra de arte", + "pt_BR": "Obra de arte", + "sv": "Konstverk" }, - "source": { - "osmTags": "tourism=artwork" - }, - "title": { - "render": { - "en": "Artwork", - "nl": "Kunstwerk", - "fr": "Œuvre d'art", - "de": "Kunstwerk", - "id": "Karya Seni", - "it": "Opera d’arte", - "ru": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°", - "es": "Obra de arte", - "ja": "ã‚ĸãƒŧトワãƒŧク", - "zh_Hant": "č—čĄ“å“", - "nb_NO": "Kunstverk", - "sv": "Konstverk", - "pt_BR": "Obra de arte", - "pt": "Obra de arte", - "pl": "Dzieło sztuki", - "hu": "MÅąalkotÃĄs", - "gl": "Obra de arte", - "fi": "Taideteos" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "en": "Artwork {name}", - "nl": "Kunstwerk {name}", - "fr": "Œuvre d'art {name}", - "de": "Kunstwerk {name}", - "id": "Karya Seni {name}", - "it": "Opera {name}", - "ru": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ° {name}", - "es": "Obra de arte {nombre}", - "ja": "ã‚ĸãƒŧトワãƒŧク {name}", - "zh_Hant": "č—čĄ“å“{name}", - "fi": "Taideteos {name}", - "gl": "Obra de arte {name}", - "hu": "MÅąalkotÃĄs {name}", - "nb_NO": "Kunstverk {name}", - "pl": "Dzieło sztuki {name}", - "pt": "Obra de arte {name}", - "pt_BR": "Obra de arte {name}", - "sv": "Konstverk {name}" - } - } - ] - }, - "icon": { - "render": "./assets/themes/artwork/artwork.svg" - }, - "color": { - "render": "#0000ff" - }, - "width": { - "render": "10" - }, - "description": { - "en": "Diverse pieces of artwork", - "nl": "Verschillende soorten kunstwerken", - "fr": "Diverses œuvres d'art", - "de": "Verschiedene Kunstwerke", - "it": "Diverse opere d’arte", - "ru": "РаСĐŊООйŅ€Đ°ĐˇĐŊŅ‹Đĩ ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", - "es": "Diversas piezas de obras de arte", - "ja": "多様ãĒäŊœå“", - "zh_Hant": "ä¸åŒéĄžåž‹įš„č—čĄ“å“" - }, - "minzoom": 12, - "wayHandling": 2, - "presets": [ - { - "tags": [ - "tourism=artwork" - ], - "title": { - "en": "Artwork", - "nl": "Kunstwerk", - "fr": "Œuvre d'art", - "de": "Kunstwerk", - "it": "Opera d’arte", - "ru": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°", - "es": "Obra de arte", - "ja": "ã‚ĸãƒŧトワãƒŧク", - "zh_Hant": "č—čĄ“å“", - "nb_NO": "Kunstverk", - "fi": "Taideteos", - "gl": "Obra de arte", - "hu": "MÅąalkotÃĄs", - "id": "Karya Seni", - "pl": "Dzieło sztuki", - "pt": "Obra de arte", - "pt_BR": "Obra de arte", - "sv": "Konstverk" - } - } - ], - "tagRenderings": [ - "images", - { - "render": { - "en": "This is a {artwork_type}", - "nl": "Dit is een {artwork_type}", - "fr": "Type d'œuvre : {artwork_type}", - "de": "Dies ist ein {artwork_type}", - "it": "Si tratta di un {artwork_type}", - "ru": "Đ­Ņ‚Đž {artwork_type}", - "es": "Esta es un {artwork_type}", - "ja": "これは{artwork_type}です", - "zh_Hant": "這是 {artwork_type}", - "nb_NO": "Dette er et kunstverk av typen {artwork_type}" - }, - "question": { - "en": "What is the type of this artwork?", - "nl": "Wat voor soort kunstwerk is dit?", - "fr": "Quel est le type de cette œuvre d'art?", - "de": "Was ist die Art dieses Kunstwerks?", - "it": "Che tipo di opera d’arte è questo?", - "ru": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° Ņ€Đ°ĐąĐžŅ‚Đ°?", - "es": "CuÃĄl es el tipo de esta obra de arte?", - "ja": "こぎäŊœå“ãŽį¨ŽéĄžã¯äŊ•ã§ã™ã‹?", - "zh_Hant": "這是äģ€éēŧéĄžåž‹įš„č—čĄ“å“īŧŸ", - "nb_NO": "Hvilken type kunstverk er dette?" - }, - "freeform": { - "key": "artwork_type", - "addExtraTags": [ - "fixme=Artowrk type was added with the freeform, might need another check" - ] - }, - "mappings": [ - { - "if": "artwork_type=architecture", - "then": { - "en": "Architecture", - "nl": "Architectuur", - "fr": "Architecture", - "de": "Architektur", - "it": "Architettura", - "ru": "АŅ€Ņ…иŅ‚ĐĩĐēŅ‚ŅƒŅ€Đ°", - "ja": "åģēį‰Š", - "zh_Hant": "åģēį¯‰į‰Š", - "nb_NO": "Arkitektur" - } - }, - { - "if": "artwork_type=mural", - "then": { - "en": "Mural", - "nl": "Muurschildering", - "fr": "Peinture murale", - "de": "Wandbild", - "it": "Murale", - "ru": "ФŅ€ĐĩŅĐēĐ°", - "ja": "åŖį”ģ", - "zh_Hant": "åŖį•Ģ", - "nb_NO": "Veggmaleri" - } - }, - { - "if": "artwork_type=painting", - "then": { - "en": "Painting", - "nl": "Schilderij", - "fr": "Peinture", - "de": "Malerei", - "it": "Dipinto", - "ru": "ЖивоĐŋиŅŅŒ", - "ja": "įĩĩį”ģ", - "zh_Hant": "įšĒį•Ģ", - "nb_NO": "Maleri" - } - }, - { - "if": "artwork_type=sculpture", - "then": { - "en": "Sculpture", - "nl": "Beeldhouwwerk", - "fr": "Sculpture", - "de": "Skulptur", - "it": "Scultura", - "ru": "ĐĄĐēŅƒĐģŅŒĐŋŅ‚ŅƒŅ€Đ°", - "ja": "åŊĢåˆģ", - "zh_Hant": "é›•åĄ‘", - "nb_NO": "Skulptur" - } - }, - { - "if": "artwork_type=statue", - "then": { - "en": "Statue", - "nl": "Standbeeld", - "fr": "Statue", - "de": "Statue", - "it": "Statua", - "ru": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ", - "ja": "åŊĢ像", - "zh_Hant": "雕像", - "nb_NO": "Statue" - } - }, - { - "if": "artwork_type=bust", - "then": { - "en": "Bust", - "nl": "Buste", - "fr": "Buste", - "de": "BÃŧste", - "it": "Busto", - "ru": "БŅŽŅŅ‚", - "ja": "čƒ¸åƒ", - "zh_Hant": "半čēĢ像", - "nb_NO": "Byste" - } - }, - { - "if": "artwork_type=stone", - "then": { - "en": "Stone", - "nl": "Steen", - "fr": "Rocher", - "de": "Stein", - "it": "Masso", - "ru": "КаĐŧĐĩĐŊŅŒ", - "ja": "įŸŗ", - "zh_Hant": "įŸŗé ­", - "nb_NO": "Stein" - } - }, - { - "if": "artwork_type=installation", - "then": { - "en": "Installation", - "nl": "Installatie", - "fr": "Installation", - "de": "Installation", - "it": "Istallazione", - "ru": "ИĐŊŅŅ‚Đ°ĐģĐģŅŅ†Đ¸Ņ", - "ja": "イãƒŗã‚šã‚ŋãƒŦãƒŧã‚ˇãƒ§ãƒŗ", - "zh_Hant": "厉čŖ", - "nb_NO": "Installasjon" - } - }, - { - "if": "artwork_type=graffiti", - "then": { - "en": "Graffiti", - "nl": "Graffiti", - "fr": "Graffiti", - "de": "Graffiti", - "it": "Graffiti", - "ru": "ГŅ€Đ°Ņ„Ņ„иŅ‚и", - "ja": "čŊ書き", - "zh_Hant": "åĄ—é´¨", - "nb_NO": "Graffiti" - } - }, - { - "if": "artwork_type=relief", - "then": { - "en": "Relief", - "nl": "ReliÃĢf", - "fr": "Relief", - "de": "Relief", - "it": "Rilievo", - "ru": "Đ ĐĩĐģŅŒĐĩŅ„", - "ja": "ãƒŦãƒĒãƒŧフ", - "zh_Hant": "å¯Ŧ慰", - "nb_NO": "Relieff" - } - }, - { - "if": "artwork_type=azulejo", - "then": { - "en": "Azulejo (Spanish decorative tilework)", - "nl": "Azulejo (Spaanse siertegels)", - "fr": "Azulejo (faïence latine)", - "de": "Azulejo (spanische dekorative Fliesenarbeit)", - "it": "Azulejo (ornamento decorativo piastrellato spagnolo)", - "ru": "АСŅƒĐģĐĩĖĐļŅƒ (иŅĐŋĐ°ĐŊŅĐēĐ°Ņ Ņ€ĐžŅĐŋиŅŅŒ ĐŗĐģаСŅƒŅ€ĐžĐ˛Đ°ĐŊĐŊОК ĐēĐĩŅ€Đ°ĐŧиŅ‡ĐĩŅĐēОК ĐŋĐģиŅ‚Đēи)", - "ja": "Azulejo (゚ペイãƒŗぎčŖ…éŖžã‚ŋイãƒĢ)", - "zh_Hant": "Azulejo (čĨŋį­į‰™é›•åĄ‘äŊœå“åį¨ą)", - "nb_NO": "Azulejo (Spansk dekorativt flisverk)" - } - }, - { - "if": "artwork_type=tilework", - "then": { - "en": "Tilework", - "nl": "Tegelwerk", - "fr": "Carrelage", - "de": "Fliesenarbeit", - "it": "Mosaico di piastrelle", - "ru": "ПĐģиŅ‚ĐēĐ° (ĐŧОСаиĐēĐ°)", - "ja": "ã‚ŋイãƒĢワãƒŧク", - "zh_Hant": "į“ˇįŖš", - "nb_NO": "Flisarbeid" - } - } - ], - "id": "artwork-artwork_type" - }, - { - "question": { - "en": "Which artist created this?", - "nl": "Welke kunstenaar creÃĢerde dit kunstwerk?", - "fr": "Quel artiste a crÊÊ cette œuvre ?", - "de": "Welcher KÃŧnstler hat das geschaffen?", - "it": "Quale artista ha creato quest’opera?", - "ru": "КаĐēОК Ņ…ŅƒĐ´ĐžĐļĐŊиĐē ŅĐžĐˇĐ´Đ°Đģ ŅŅ‚Đž?", - "ja": "おぎã‚ĸãƒŧテã‚Ŗ゚トがäŊœãŖたんですか?", - "zh_Hant": "å‰ĩ造這個įš„č—čĄ“åŽļ是čĒ°īŧŸ", - "nb_NO": "Hvilken artist lagde dette?" - }, - "render": { - "en": "Created by {artist_name}", - "nl": "GecreÃĢerd door {artist_name}", - "fr": "CrÊÊ par {artist_name}", - "de": "Erstellt von {artist_name}", - "it": "Creato da {artist_name}", - "ru": "ХОСдаĐŊĐž {artist_name}", - "ja": "äŊœæˆč€…:{artist_name}", - "zh_Hant": "{artist_name} å‰ĩäŊœ", - "nb_NO": "Laget av {artist_name}" - }, - "freeform": { - "key": "artist_name" - }, - "id": "artwork-artist_name" - }, - { - "question": { - "en": "Is there a website with more information about this artwork?", - "nl": "Is er een website met meer informatie over dit kunstwerk?", - "fr": "Existe-t-il un site web oÚ trouver plus d'informations sur cette œuvre d'art ?", - "de": "Gibt es eine Website mit weiteren Informationen Ãŧber dieses Kunstwerk?", - "it": "Esiste un sito web con maggiori informazioni su quest’opera?", - "ru": "ЕŅŅ‚ŅŒ Đģи ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", - "ja": "こぎäŊœå“ãĢついãĻぎčŠŗã—ã„æƒ…å ąã¯ãŠãŽã‚Ļェブã‚ĩイトãĢありぞすか?", - "zh_Hant": "在é‚Ŗ個įļ˛įĢ™čƒŊå¤ æ‰žåˆ°æ›´å¤šč—čĄ“å“įš„čŗ‡č¨ŠīŧŸ", - "nb_NO": "Finnes det en nettside med mer info om dette kunstverket?" - }, - "render": { - "en": "More information on this website", - "nl": "Meer informatie op deze website", - "fr": "Plus d'info sÃģr ce site web", - "de": "Weitere Informationen auf dieser Webseite", - "id": "Info lanjut tersedia di laman web ini.", - "it": "Ulteriori informazioni su questo sito web", - "ru": "БоĐģŅŒŅˆĐĩ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Đ¸ ĐŊĐ° ŅŅ‚ĐžĐŧ ŅĐ°ĐšŅ‚Đĩ", - "ja": "Webã‚ĩイトãĢčŠŗį´°æƒ…å ąãŒã‚ã‚‹", - "zh_Hant": "這個įļ˛įĢ™æœ‰æ›´å¤ščŗ‡č¨Š", - "nb_NO": "Mer info er ÃĨ finne pÃĨ denne nettsiden" - }, - "freeform": { - "key": "website", - "type": "url" - }, - "id": "artwork-website" - }, - { - "question": { - "en": "Which Wikidata-entry corresponds with this artwork?", - "nl": "Welk Wikidata-item beschrijft dit kunstwerk?", - "fr": "Quelle entrÊe Wikidata correspond à cette œuvre d'art ?", - "de": "Welcher Wikidata-Eintrag entspricht diesem Kunstwerk?", - "it": "Quale elemento Wikidata corrisponde a quest’opera d’arte?", - "ru": "КаĐēĐ°Ņ СаĐŋиŅŅŒ в Wikidata ŅĐžĐžŅ‚вĐĩŅ‚ŅĐ˛ŅƒĐĩŅ‚ ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", - "ja": "こぎã‚ĸãƒŧトワãƒŧクãĢé–ĸするWikidataぎエãƒŗトãƒĒãƒŧはおれですか?", - "zh_Hant": "é€™å€‹č—čĄ“å“æœ‰é‚Ŗ個對應įš„ Wikidata 項į›ŽīŧŸ", - "nb_NO": "Hvilken Wikipedia-oppføring samsvarer med dette kunstverket?" - }, - "render": { - "en": "Corresponds with {wikidata}", - "nl": "Komt overeen met {wikidata}", - "fr": "Correspond à {wikidata}", - "de": "Entspricht {wikidata}", - "it": "Corrisponde a {wikidata}", - "ru": "ЗаĐŋиŅŅŒ Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ в wikidata: {wikidata}", - "ja": "{wikidata}ãĢé–ĸé€Ŗする", - "zh_Hant": "與 {wikidata}對應", - "nb_NO": "Samsvarer med {wikidata}" - }, - "freeform": { - "key": "wikidata", - "type": "wikidata" - }, - "id": "artwork-wikidata" - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "razed:tourism=artwork", - "tourism=" - ] - }, - "neededChangesets": 5 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/artwork/artwork.svg" - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#0000ff" - }, - "width": { - "render": "10" - } + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Artwork {name}", + "nl": "Kunstwerk {name}", + "fr": "Œuvre d'art {name}", + "de": "Kunstwerk {name}", + "id": "Karya Seni {name}", + "it": "Opera {name}", + "ru": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ° {name}", + "es": "Obra de arte {nombre}", + "ja": "ã‚ĸãƒŧトワãƒŧク {name}", + "zh_Hant": "č—čĄ“å“{name}", + "fi": "Taideteos {name}", + "gl": "Obra de arte {name}", + "hu": "MÅąalkotÃĄs {name}", + "nb_NO": "Kunstverk {name}", + "pl": "Dzieło sztuki {name}", + "pt": "Obra de arte {name}", + "pt_BR": "Obra de arte {name}", + "sv": "Konstverk {name}" } + } ] + }, + "description": { + "en": "Diverse pieces of artwork", + "nl": "Verschillende soorten kunstwerken", + "fr": "Diverses œuvres d'art", + "de": "Verschiedene Kunstwerke", + "it": "Diverse opere d’arte", + "ru": "РаСĐŊООйŅ€Đ°ĐˇĐŊŅ‹Đĩ ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", + "es": "Diversas piezas de obras de arte", + "ja": "多様ãĒäŊœå“", + "zh_Hant": "ä¸åŒéĄžåž‹įš„č—čĄ“å“", + "id": "Beragam karya seni" + }, + "minzoom": 12, + "presets": [ + { + "tags": [ + "tourism=artwork" + ], + "title": { + "en": "Artwork", + "nl": "Kunstwerk", + "fr": "Œuvre d'art", + "de": "Kunstwerk", + "it": "Opera d’arte", + "ru": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°", + "es": "Obra de arte", + "ja": "ã‚ĸãƒŧトワãƒŧク", + "zh_Hant": "č—čĄ“å“", + "nb_NO": "Kunstverk", + "fi": "Taideteos", + "gl": "Obra de arte", + "hu": "MÅąalkotÃĄs", + "id": "Karya Seni", + "pl": "Dzieło sztuki", + "pt": "Obra de arte", + "pt_BR": "Obra de arte", + "sv": "Konstverk" + } + } + ], + "tagRenderings": [ + "images", + { + "render": { + "en": "This is a {artwork_type}", + "nl": "Dit is een {artwork_type}", + "fr": "Type d'œuvre : {artwork_type}", + "de": "Dies ist ein {artwork_type}", + "it": "Si tratta di un {artwork_type}", + "ru": "Đ­Ņ‚Đž {artwork_type}", + "es": "Esta es un {artwork_type}", + "ja": "これは{artwork_type}です", + "zh_Hant": "這是 {artwork_type}", + "nb_NO": "Dette er et kunstverk av typen {artwork_type}", + "id": "Ini adalah {artwork_type}" + }, + "question": { + "en": "What is the type of this artwork?", + "nl": "Wat voor soort kunstwerk is dit?", + "fr": "Quel est le type de cette œuvre d'art?", + "de": "Was ist die Art dieses Kunstwerks?", + "it": "Che tipo di opera d’arte è questo?", + "ru": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° Ņ€Đ°ĐąĐžŅ‚Đ°?", + "es": "CuÃĄl es el tipo de esta obra de arte?", + "ja": "こぎäŊœå“ãŽį¨ŽéĄžã¯äŊ•ã§ã™ã‹?", + "zh_Hant": "這是äģ€éēŧéĄžåž‹įš„č—čĄ“å“īŧŸ", + "nb_NO": "Hvilken type kunstverk er dette?", + "id": "Apa jenis karya seni ini?" + }, + "freeform": { + "key": "artwork_type", + "addExtraTags": [ + "fixme=Artowrk type was added with the freeform, might need another check" + ] + }, + "mappings": [ + { + "if": "artwork_type=architecture", + "then": { + "en": "Architecture", + "nl": "Architectuur", + "fr": "Architecture", + "de": "Architektur", + "it": "Architettura", + "ru": "АŅ€Ņ…иŅ‚ĐĩĐēŅ‚ŅƒŅ€Đ°", + "ja": "åģēį‰Š", + "zh_Hant": "åģēį¯‰į‰Š", + "nb_NO": "Arkitektur", + "id": "Arsitektur" + } + }, + { + "if": "artwork_type=mural", + "then": { + "en": "Mural", + "nl": "Muurschildering", + "fr": "Peinture murale", + "de": "Wandbild", + "it": "Murale", + "ru": "ФŅ€ĐĩŅĐēĐ°", + "ja": "åŖį”ģ", + "zh_Hant": "åŖį•Ģ", + "nb_NO": "Veggmaleri", + "id": "Mural" + } + }, + { + "if": "artwork_type=painting", + "then": { + "en": "Painting", + "nl": "Schilderij", + "fr": "Peinture", + "de": "Malerei", + "it": "Dipinto", + "ru": "ЖивоĐŋиŅŅŒ", + "ja": "įĩĩį”ģ", + "zh_Hant": "įšĒį•Ģ", + "nb_NO": "Maleri", + "id": "Lukisan" + } + }, + { + "if": "artwork_type=sculpture", + "then": { + "en": "Sculpture", + "nl": "Beeldhouwwerk", + "fr": "Sculpture", + "de": "Skulptur", + "it": "Scultura", + "ru": "ĐĄĐēŅƒĐģŅŒĐŋŅ‚ŅƒŅ€Đ°", + "ja": "åŊĢåˆģ", + "zh_Hant": "é›•åĄ‘", + "nb_NO": "Skulptur", + "id": "Patung" + } + }, + { + "if": "artwork_type=statue", + "then": { + "en": "Statue", + "nl": "Standbeeld", + "fr": "Statue", + "de": "Statue", + "it": "Statua", + "ru": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ", + "ja": "åŊĢ像", + "zh_Hant": "雕像", + "nb_NO": "Statue" + } + }, + { + "if": "artwork_type=bust", + "then": { + "en": "Bust", + "nl": "Buste", + "fr": "Buste", + "de": "BÃŧste", + "it": "Busto", + "ru": "БŅŽŅŅ‚", + "ja": "čƒ¸åƒ", + "zh_Hant": "半čēĢ像", + "nb_NO": "Byste" + } + }, + { + "if": "artwork_type=stone", + "then": { + "en": "Stone", + "nl": "Steen", + "fr": "Rocher", + "de": "Stein", + "it": "Masso", + "ru": "КаĐŧĐĩĐŊŅŒ", + "ja": "įŸŗ", + "zh_Hant": "įŸŗé ­", + "nb_NO": "Stein", + "id": "Batu" + } + }, + { + "if": "artwork_type=installation", + "then": { + "en": "Installation", + "nl": "Installatie", + "fr": "Installation", + "de": "Installation", + "it": "Istallazione", + "ru": "ИĐŊŅŅ‚Đ°ĐģĐģŅŅ†Đ¸Ņ", + "ja": "イãƒŗã‚šã‚ŋãƒŦãƒŧã‚ˇãƒ§ãƒŗ", + "zh_Hant": "厉čŖ", + "nb_NO": "Installasjon", + "id": "Instalasi" + } + }, + { + "if": "artwork_type=graffiti", + "then": { + "en": "Graffiti", + "nl": "Graffiti", + "fr": "Graffiti", + "de": "Graffiti", + "it": "Graffiti", + "ru": "ГŅ€Đ°Ņ„Ņ„иŅ‚и", + "ja": "čŊ書き", + "zh_Hant": "åĄ—é´¨", + "nb_NO": "Graffiti", + "id": "Graffiti" + } + }, + { + "if": "artwork_type=relief", + "then": { + "en": "Relief", + "nl": "ReliÃĢf", + "fr": "Relief", + "de": "Relief", + "it": "Rilievo", + "ru": "Đ ĐĩĐģŅŒĐĩŅ„", + "ja": "ãƒŦãƒĒãƒŧフ", + "zh_Hant": "å¯Ŧ慰", + "nb_NO": "Relieff", + "id": "Relief" + } + }, + { + "if": "artwork_type=azulejo", + "then": { + "en": "Azulejo (Spanish decorative tilework)", + "nl": "Azulejo (Spaanse siertegels)", + "fr": "Azulejo (faïence latine)", + "de": "Azulejo (spanische dekorative Fliesenarbeit)", + "it": "Azulejo (ornamento decorativo piastrellato spagnolo)", + "ru": "АСŅƒĐģĐĩĖĐļŅƒ (иŅĐŋĐ°ĐŊŅĐēĐ°Ņ Ņ€ĐžŅĐŋиŅŅŒ ĐŗĐģаСŅƒŅ€ĐžĐ˛Đ°ĐŊĐŊОК ĐēĐĩŅ€Đ°ĐŧиŅ‡ĐĩŅĐēОК ĐŋĐģиŅ‚Đēи)", + "ja": "Azulejo (゚ペイãƒŗぎčŖ…éŖžã‚ŋイãƒĢ)", + "zh_Hant": "Azulejo (čĨŋį­į‰™é›•åĄ‘äŊœå“åį¨ą)", + "nb_NO": "Azulejo (Spansk dekorativt flisverk)", + "id": "Azulejo (ubin dekoratif Spanyol)" + } + }, + { + "if": "artwork_type=tilework", + "then": { + "en": "Tilework", + "nl": "Tegelwerk", + "fr": "Carrelage", + "de": "Fliesenarbeit", + "it": "Mosaico di piastrelle", + "ru": "ПĐģиŅ‚ĐēĐ° (ĐŧОСаиĐēĐ°)", + "ja": "ã‚ŋイãƒĢワãƒŧク", + "zh_Hant": "į“ˇįŖš", + "nb_NO": "Flisarbeid" + } + } + ], + "id": "artwork-artwork_type" + }, + { + "question": { + "en": "Which artist created this?", + "nl": "Welke kunstenaar creÃĢerde dit kunstwerk?", + "fr": "Quel artiste a crÊÊ cette œuvre ?", + "de": "Welcher KÃŧnstler hat das geschaffen?", + "it": "Quale artista ha creato quest’opera?", + "ru": "КаĐēОК Ņ…ŅƒĐ´ĐžĐļĐŊиĐē ŅĐžĐˇĐ´Đ°Đģ ŅŅ‚Đž?", + "ja": "おぎã‚ĸãƒŧテã‚Ŗ゚トがäŊœãŖたんですか?", + "zh_Hant": "å‰ĩ造這個įš„č—čĄ“åŽļ是čĒ°īŧŸ", + "nb_NO": "Hvilken artist lagde dette?", + "id": "Seniman mana yang menciptakan ini?" + }, + "render": { + "en": "Created by {artist_name}", + "nl": "GecreÃĢerd door {artist_name}", + "fr": "CrÊÊ par {artist_name}", + "de": "Erstellt von {artist_name}", + "it": "Creato da {artist_name}", + "ru": "ХОСдаĐŊĐž {artist_name}", + "ja": "äŊœæˆč€…:{artist_name}", + "zh_Hant": "{artist_name} å‰ĩäŊœ", + "nb_NO": "Laget av {artist_name}", + "id": "Dibuat oleh {artist_name}" + }, + "freeform": { + "key": "artist_name" + }, + "id": "artwork-artist_name" + }, + { + "question": { + "en": "Is there a website with more information about this artwork?", + "nl": "Is er een website met meer informatie over dit kunstwerk?", + "fr": "Existe-t-il un site web oÚ trouver plus d'informations sur cette œuvre d'art ?", + "de": "Gibt es eine Website mit weiteren Informationen Ãŧber dieses Kunstwerk?", + "it": "Esiste un sito web con maggiori informazioni su quest’opera?", + "ru": "ЕŅŅ‚ŅŒ Đģи ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", + "ja": "こぎäŊœå“ãĢついãĻぎčŠŗã—ã„æƒ…å ąã¯ãŠãŽã‚Ļェブã‚ĩイトãĢありぞすか?", + "zh_Hant": "在é‚Ŗ個įļ˛įĢ™čƒŊå¤ æ‰žåˆ°æ›´å¤šč—čĄ“å“įš„čŗ‡č¨ŠīŧŸ", + "nb_NO": "Finnes det en nettside med mer info om dette kunstverket?", + "id": "Adakah situs web mengenai informasi lebih lanjut tentang karya seni ini?" + }, + "render": { + "en": "More information on this website", + "nl": "Meer informatie op deze website", + "fr": "Plus d'info sÃģr ce site web", + "de": "Weitere Informationen auf dieser Webseite", + "id": "Info lanjut tersedia di laman web ini", + "it": "Ulteriori informazioni su questo sito web", + "ru": "БоĐģŅŒŅˆĐĩ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Đ¸ ĐŊĐ° ŅŅ‚ĐžĐŧ ŅĐ°ĐšŅ‚Đĩ", + "ja": "Webã‚ĩイトãĢčŠŗį´°æƒ…å ąãŒã‚ã‚‹", + "zh_Hant": "這個įļ˛įĢ™æœ‰æ›´å¤ščŗ‡č¨Š", + "nb_NO": "Mer info er ÃĨ finne pÃĨ denne nettsiden" + }, + "freeform": { + "key": "website", + "type": "url" + }, + "id": "artwork-website" + }, + { + "question": { + "en": "Which Wikidata-entry corresponds with this artwork?", + "nl": "Welk Wikidata-item beschrijft dit kunstwerk?", + "fr": "Quelle entrÊe Wikidata correspond à cette œuvre d'art ?", + "de": "Welcher Wikidata-Eintrag entspricht diesem Kunstwerk?", + "it": "Quale elemento Wikidata corrisponde a quest’opera d’arte?", + "ru": "КаĐēĐ°Ņ СаĐŋиŅŅŒ в Wikidata ŅĐžĐžŅ‚вĐĩŅ‚ŅĐ˛ŅƒĐĩŅ‚ ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", + "ja": "こぎã‚ĸãƒŧトワãƒŧクãĢé–ĸするWikidataぎエãƒŗトãƒĒãƒŧはおれですか?", + "zh_Hant": "é€™å€‹č—čĄ“å“æœ‰é‚Ŗ個對應įš„ Wikidata 項į›ŽīŧŸ", + "nb_NO": "Hvilken Wikipedia-oppføring samsvarer med dette kunstverket?", + "id": "Entri Wikidata mana yang sesuai dengan karya seni ini?" + }, + "render": { + "en": "Corresponds with {wikidata}", + "nl": "Komt overeen met {wikidata}", + "fr": "Correspond à {wikidata}", + "de": "Entspricht {wikidata}", + "it": "Corrisponde a {wikidata}", + "ru": "ЗаĐŋиŅŅŒ Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ в wikidata: {wikidata}", + "ja": "{wikidata}ãĢé–ĸé€Ŗする", + "zh_Hant": "與 {wikidata}對應", + "nb_NO": "Samsvarer med {wikidata}", + "id": "Sesuai dengan {wikidata}" + }, + "freeform": { + "key": "wikidata", + "type": "wikidata" + }, + "id": "artwork-wikidata" + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "razed:tourism=artwork", + "tourism=" + ] + }, + "neededChangesets": 5 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { + "render": "./assets/themes/artwork/artwork.svg" + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": { + "render": "#0000ff" + }, + "width": { + "render": "10" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/barrier/barrier.json b/assets/layers/barrier/barrier.json index 01f2b580c..b481674b8 100644 --- a/assets/layers/barrier/barrier.json +++ b/assets/layers/barrier/barrier.json @@ -1,339 +1,337 @@ { - "id": "barrier", - "name": { - "en": "Barriers", - "nl": "Barrières", - "de": "Hindernisse", - "ru": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виŅ" + "id": "barrier", + "name": { + "en": "Barriers", + "nl": "Barrières", + "de": "Hindernisse", + "ru": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виŅ" + }, + "description": { + "en": "Obstacles while cycling, such as bollards and cycle barriers", + "nl": "Hindernissen tijdens het fietsen, zoals paaltjes en fietshekjes", + "de": "Hindernisse beim Fahrradfahren, wie zum Beispiel Poller und Fahrrad Barrieren" + }, + "source": { + "osmTags": { + "or": [ + "barrier=bollard", + "barrier=cycle_barrier" + ] + } + }, + "minzoom": 17, + "title": { + "render": { + "en": "Barrier", + "nl": "Barrière", + "de": "Hindernis", + "ru": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виĐĩ" }, - "description": { - "en": "Obstacles while cycling, such as bollards and cycle barriers", - "nl": "Hindernissen tijdens het fietsen, zoals paaltjes en fietshekjes", - "de": "Hindernisse beim Fahrradfahren, wie zum Beispiel Poller und Fahrrad Barrieren" - }, - "source": { - "osmTags": { - "or": [ - "barrier=bollard", - "barrier=cycle_barrier" - ] + "mappings": [ + { + "if": "barrier=bollard", + "then": { + "en": "Bollard", + "nl": "Paaltje", + "de": "Poller", + "ru": "ПŅ€Đ¸ĐēĐžĐģ" } - }, - "minzoom": 17, - "title": { - "render": { - "en": "Barrier", - "nl": "Barrière", - "de": "Hindernis", - "ru": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виĐĩ" - }, - "mappings": [ - { - "if": "barrier=bollard", - "then": { - "en": "Bollard", - "nl": "Paaltje", - "de": "Poller", - "ru": "ПŅ€Đ¸ĐēĐžĐģ" - } - }, - { - "if": "barrier=cycle_barrier", - "then": { - "en": "Cycling Barrier", - "nl": "Fietshekjes", - "de": "Barriere fÃŧr Radfahrer" - } - } - ] - }, - "icon": "./assets/layers/barrier/barrier.svg", - "width": "5", - "presets": [ - { - "title": { - "en": "Bollard", - "nl": "Paaltje", - "de": "Poller", - "ru": "ПŅ€Đ¸ĐēĐžĐģ" - }, - "tags": [ - "barrier=bollard" - ], - "description": { - "en": "A bollard in the road", - "nl": "Een paaltje in de weg", - "de": "Ein Poller auf der Straße" - }, - "preciseInput": { - "preferredBackground": [ - "photo" - ], - "snapToLayer": "cycleways_and_roads", - "maxSnapDistance": 25 - } - }, - { - "title": { - "en": "Cycle barrier", - "nl": "Fietshekjes", - "de": "Fahrradhindernis" - }, - "tags": [ - "barrier=bollard" - ], - "description": { - "en": "Cycle barrier, slowing down cyclists", - "nl": "Fietshekjes, voor het afremmen van fietsers", - "de": "Fahrradhindernis, das Radfahrer abbremst" - }, - "preciseInput": { - "preferredBackground": [ - "photo" - ], - "snapToLayer": "cycleways_and_roads", - "maxSnapDistance": 25 - } - } - ], - "tagRenderings": [ - { - "question": { - "en": "Can a bicycle go past this barrier?", - "nl": "Kan een fietser langs deze barrière?", - "de": "Kann ein Radfahrer das Hindernis passieren?" - }, - "mappings": [ - { - "if": "bicycle=yes", - "then": { - "en": "A cyclist can go past this.", - "nl": "Een fietser kan hier langs.", - "de": "Ein Radfahrer kann hindurchfahren." - } - }, - { - "if": "bicycle=no", - "then": { - "en": "A cyclist can not go past this.", - "nl": "Een fietser kan hier niet langs.", - "de": "Ein Radfahrer kann nicht hindurchfahren." - } - } - ], - "id": "bicycle=yes/no" - }, - { - "question": { - "en": "What kind of bollard is this?", - "nl": "Wat voor soort paal is dit?", - "de": "Um was fÃŧr einen Poller handelt es sich?" - }, - "condition": "barrier=bollard", - "mappings": [ - { - "if": "bollard=removable", - "then": { - "en": "Removable bollard", - "nl": "Verwijderbare paal", - "de": "Entfernbarer Poller" - } - }, - { - "if": "bollard=fixed", - "then": { - "en": "Fixed bollard", - "nl": "Vaste paal", - "de": "Feststehender Poller" - } - }, - { - "if": "bollard=foldable", - "then": { - "en": "Bollard that can be folded down", - "nl": "Paal die platgevouwen kan worden", - "de": "Umlegbarer Poller" - } - }, - { - "if": "bollard=flexible", - "then": { - "en": "Flexible bollard, usually plastic", - "nl": "Flexibele paal, meestal plastic", - "de": "Flexibler Poller, meist aus Kunststoff" - } - }, - { - "if": "bollard=rising", - "then": { - "en": "Rising bollard", - "nl": "Verzonken poller", - "de": "Ausfahrender Poller" - } - } - ], - "id": "Bollard type" - }, - { - "question": { - "en": "What kind of cycling barrier is this?", - "nl": "Wat voor fietshekjes zijn dit?", - "de": "Um welche Art Fahrradhindernis handelt es sich?" - }, - "condition": "barrier=cycle_barrier", - "mappings": [ - { - "if": "cycle_barrier:type=single", - "then": { - "en": "Single, just two barriers with a space inbetween ", - "nl": "Enkelvoudig, slechts twee hekjes met ruimte ertussen ", - "de": "Einfach, nur zwei Barrieren mit einem Zwischenraum " - } - }, - { - "if": "cycle_barrier:type=double", - "then": { - "en": "Double, two barriers behind each other ", - "nl": "Dubbel, twee hekjes achter elkaar ", - "de": "Doppelt, zwei Barrieren hintereinander " - } - }, - { - "if": "cycle_barrier:type=triple", - "then": { - "en": "Triple, three barriers behind each other ", - "nl": "Drievoudig, drie hekjes achter elkaar ", - "de": "Dreifach, drei Barrieren hintereinander " - } - }, - { - "if": "cycle_barrier:type=squeeze", - "then": { - "en": "Squeeze gate, gap is smaller at top, than at the bottom ", - "nl": "Knijppoort, ruimte is smaller aan de top, dan aan de bodem ", - "de": "Eine Durchfahrtsbeschränkung, Durchfahrtsbreite ist oben kleiner als unten " - } - } - ], - "id": "Cycle barrier type" - }, - { - "render": { - "en": "Maximum width: {maxwidth:physical} m", - "nl": "Maximumbreedte: {maxwidth:physical} m", - "de": "Maximale Durchfahrtsbreite: {maxwidth:physical} m" - }, - "question": { - "en": "How wide is the gap left over besides the barrier?", - "nl": "Hoe breed is de ruimte naast de barrière?", - "de": "Welche Durchfahrtsbreite hat das Hindernis?" - }, - "condition": { - "and": [ - "cycle_barrier:type!=double", - "cycle_barrier:type!=triple" - ] - }, - "freeform": { - "key": "maxwidth:physical", - "type": "length", - "helperArgs": [ - "20", - "map" - ] - }, - "id": "MaxWidth" - }, - { - "render": { - "en": "Space between barriers (along the length of the road): {width:separation} m", - "nl": "Ruimte tussen barrières (langs de lengte van de weg): {width:separation} m", - "de": "Abstand zwischen den Barrieren (entlang der Straße): {width:separation} m" - }, - "question": { - "en": "How much space is there between the barriers (along the length of the road)?", - "nl": "Hoeveel ruimte is er tussen de barrières (langs de lengte van de weg)?", - "de": "Wie groß ist der Abstand zwischen den Barrieren (entlang der Straße)?" - }, - "condition": { - "or": [ - "cycle_barrier:type=double", - "cycle_barrier:type=triple" - ] - }, - "freeform": { - "key": "width:separation", - "type": "length", - "helperArgs": [ - "21", - "map" - ] - }, - "id": "Space between barrier (cyclebarrier)" - }, - { - "render": { - "en": "Width of opening: {width:opening} m", - "nl": "Breedte van de opening: {width:opening} m", - "de": "Breite der Öffnung: {width:opening} m" - }, - "question": { - "en": "How wide is the smallest opening next to the barriers?", - "nl": "Hoe breed is de smalste opening naast de barrières?", - "de": "Wie breit ist die kleinste Öffnung neben den Barrieren?" - }, - "condition": { - "or": [ - "cycle_barrier:type=double", - "cycle_barrier:type=triple" - ] - }, - "freeform": { - "key": "width:opening", - "type": "length", - "helperArgs": [ - "21", - "map" - ] - }, - "id": "Width of opening (cyclebarrier)" - }, - { - "render": { - "en": "Overlap: {overlap} m", - "de": "Überschneidung: {overlap} m" - }, - "question": { - "en": "How much overlap do the barriers have?", - "nl": "Hoeveel overlappen de barrières?", - "de": "Wie stark Ãŧberschneiden sich die Barrieren?" - }, - "condition": { - "or": [ - "cycle_barrier:type=double", - "cycle_barrier:type=triple" - ] - }, - "freeform": { - "key": "overlap", - "type": "length", - "helperArgs": [ - "21", - "map" - ] - }, - "id": "Overlap (cyclebarrier)" - } - ], - "mapRendering": [ - { - "icon": "./assets/layers/barrier/barrier.svg", - "location": [ - "point" - ] - }, - { - "width": "5" + }, + { + "if": "barrier=cycle_barrier", + "then": { + "en": "Cycling Barrier", + "nl": "Fietshekjes", + "de": "Barriere fÃŧr Radfahrer" } + } ] + }, + "presets": [ + { + "title": { + "en": "Bollard", + "nl": "Paaltje", + "de": "Poller", + "ru": "ПŅ€Đ¸ĐēĐžĐģ" + }, + "tags": [ + "barrier=bollard" + ], + "description": { + "en": "A bollard in the road", + "nl": "Een paaltje in de weg", + "de": "Ein Poller auf der Straße" + }, + "preciseInput": { + "preferredBackground": [ + "photo" + ], + "snapToLayer": "cycleways_and_roads", + "maxSnapDistance": 25 + } + }, + { + "title": { + "en": "Cycle barrier", + "nl": "Fietshekjes", + "de": "Fahrradhindernis" + }, + "tags": [ + "barrier=bollard" + ], + "description": { + "en": "Cycle barrier, slowing down cyclists", + "nl": "Fietshekjes, voor het afremmen van fietsers", + "de": "Fahrradhindernis, das Radfahrer abbremst" + }, + "preciseInput": { + "preferredBackground": [ + "photo" + ], + "snapToLayer": "cycleways_and_roads", + "maxSnapDistance": 25 + } + } + ], + "tagRenderings": [ + { + "question": { + "en": "Can a bicycle go past this barrier?", + "nl": "Kan een fietser langs deze barrière?", + "de": "Kann ein Radfahrer das Hindernis passieren?" + }, + "mappings": [ + { + "if": "bicycle=yes", + "then": { + "en": "A cyclist can go past this.", + "nl": "Een fietser kan hier langs.", + "de": "Ein Radfahrer kann hindurchfahren." + } + }, + { + "if": "bicycle=no", + "then": { + "en": "A cyclist can not go past this.", + "nl": "Een fietser kan hier niet langs.", + "de": "Ein Radfahrer kann nicht hindurchfahren." + } + } + ], + "id": "bicycle=yes/no" + }, + { + "question": { + "en": "What kind of bollard is this?", + "nl": "Wat voor soort paal is dit?", + "de": "Um was fÃŧr einen Poller handelt es sich?" + }, + "condition": "barrier=bollard", + "mappings": [ + { + "if": "bollard=removable", + "then": { + "en": "Removable bollard", + "nl": "Verwijderbare paal", + "de": "Entfernbarer Poller" + } + }, + { + "if": "bollard=fixed", + "then": { + "en": "Fixed bollard", + "nl": "Vaste paal", + "de": "Feststehender Poller" + } + }, + { + "if": "bollard=foldable", + "then": { + "en": "Bollard that can be folded down", + "nl": "Paal die platgevouwen kan worden", + "de": "Umlegbarer Poller" + } + }, + { + "if": "bollard=flexible", + "then": { + "en": "Flexible bollard, usually plastic", + "nl": "Flexibele paal, meestal plastic", + "de": "Flexibler Poller, meist aus Kunststoff" + } + }, + { + "if": "bollard=rising", + "then": { + "en": "Rising bollard", + "nl": "Verzonken poller", + "de": "Ausfahrender Poller" + } + } + ], + "id": "Bollard type" + }, + { + "question": { + "en": "What kind of cycling barrier is this?", + "nl": "Wat voor fietshekjes zijn dit?", + "de": "Um welche Art Fahrradhindernis handelt es sich?" + }, + "condition": "barrier=cycle_barrier", + "mappings": [ + { + "if": "cycle_barrier:type=single", + "then": { + "en": "Single, just two barriers with a space inbetween ", + "nl": "Enkelvoudig, slechts twee hekjes met ruimte ertussen ", + "de": "Einfach, nur zwei Barrieren mit einem Zwischenraum " + } + }, + { + "if": "cycle_barrier:type=double", + "then": { + "en": "Double, two barriers behind each other ", + "nl": "Dubbel, twee hekjes achter elkaar ", + "de": "Doppelt, zwei Barrieren hintereinander " + } + }, + { + "if": "cycle_barrier:type=triple", + "then": { + "en": "Triple, three barriers behind each other ", + "nl": "Drievoudig, drie hekjes achter elkaar ", + "de": "Dreifach, drei Barrieren hintereinander " + } + }, + { + "if": "cycle_barrier:type=squeeze", + "then": { + "en": "Squeeze gate, gap is smaller at top, than at the bottom ", + "nl": "Knijppoort, ruimte is smaller aan de top, dan aan de bodem ", + "de": "Eine Durchfahrtsbeschränkung, Durchfahrtsbreite ist oben kleiner als unten " + } + } + ], + "id": "Cycle barrier type" + }, + { + "render": { + "en": "Maximum width: {maxwidth:physical} m", + "nl": "Maximumbreedte: {maxwidth:physical} m", + "de": "Maximale Durchfahrtsbreite: {maxwidth:physical} m" + }, + "question": { + "en": "How wide is the gap left over besides the barrier?", + "nl": "Hoe breed is de ruimte naast de barrière?", + "de": "Welche Durchfahrtsbreite hat das Hindernis?" + }, + "condition": { + "and": [ + "cycle_barrier:type!=double", + "cycle_barrier:type!=triple" + ] + }, + "freeform": { + "key": "maxwidth:physical", + "type": "length", + "helperArgs": [ + "20", + "map" + ] + }, + "id": "MaxWidth" + }, + { + "render": { + "en": "Space between barriers (along the length of the road): {width:separation} m", + "nl": "Ruimte tussen barrières (langs de lengte van de weg): {width:separation} m", + "de": "Abstand zwischen den Barrieren (entlang der Straße): {width:separation} m" + }, + "question": { + "en": "How much space is there between the barriers (along the length of the road)?", + "nl": "Hoeveel ruimte is er tussen de barrières (langs de lengte van de weg)?", + "de": "Wie groß ist der Abstand zwischen den Barrieren (entlang der Straße)?" + }, + "condition": { + "or": [ + "cycle_barrier:type=double", + "cycle_barrier:type=triple" + ] + }, + "freeform": { + "key": "width:separation", + "type": "length", + "helperArgs": [ + "21", + "map" + ] + }, + "id": "Space between barrier (cyclebarrier)" + }, + { + "render": { + "en": "Width of opening: {width:opening} m", + "nl": "Breedte van de opening: {width:opening} m", + "de": "Breite der Öffnung: {width:opening} m" + }, + "question": { + "en": "How wide is the smallest opening next to the barriers?", + "nl": "Hoe breed is de smalste opening naast de barrières?", + "de": "Wie breit ist die kleinste Öffnung neben den Barrieren?" + }, + "condition": { + "or": [ + "cycle_barrier:type=double", + "cycle_barrier:type=triple" + ] + }, + "freeform": { + "key": "width:opening", + "type": "length", + "helperArgs": [ + "21", + "map" + ] + }, + "id": "Width of opening (cyclebarrier)" + }, + { + "render": { + "en": "Overlap: {overlap} m", + "de": "Überschneidung: {overlap} m" + }, + "question": { + "en": "How much overlap do the barriers have?", + "nl": "Hoeveel overlappen de barrières?", + "de": "Wie stark Ãŧberschneiden sich die Barrieren?" + }, + "condition": { + "or": [ + "cycle_barrier:type=double", + "cycle_barrier:type=triple" + ] + }, + "freeform": { + "key": "overlap", + "type": "length", + "helperArgs": [ + "21", + "map" + ] + }, + "id": "Overlap (cyclebarrier)" + } + ], + "mapRendering": [ + { + "icon": "./assets/layers/barrier/barrier.svg", + "location": [ + "point" + ] + }, + { + "width": "5" + } + ] } \ No newline at end of file diff --git a/assets/layers/bench/bench.json b/assets/layers/bench/bench.json index 89d567abb..833ba00d9 100644 --- a/assets/layers/bench/bench.json +++ b/assets/layers/bench/bench.json @@ -1,677 +1,647 @@ { - "id": "bench", - "name": { - "en": "Benches", - "de": "Sitzbänke", - "fr": "Bancs", - "nl": "Zitbanken", - "es": "Bancos", - "hu": "Padok", - "id": "Bangku", - "it": "Panchine", - "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи", + "id": "bench", + "name": { + "en": "Benches", + "de": "Sitzbänke", + "fr": "Bancs", + "nl": "Zitbanken", + "es": "Bancos", + "hu": "Padok", + "id": "Bangku", + "it": "Panchine", + "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи", + "zh_Hans": "é•ŋ椅", + "zh_Hant": "é•ˇæ¤…", + "nb_NO": "Benker", + "fi": "Penkit", + "pl": "Ławki", + "pt_BR": "Bancos", + "pt": "Bancos" + }, + "minzoom": 17, + "source": { + "osmTags": "amenity=bench" + }, + "title": { + "render": { + "en": "Bench", + "de": "Sitzbank", + "fr": "Banc", + "nl": "Zitbank", + "es": "Banco", + "hu": "Pad", + "id": "Bangku", + "it": "Panchina", + "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°", + "zh_Hans": "é•ŋ椅", + "zh_Hant": "é•ˇæ¤…", + "nb_NO": "Benk", + "fi": "Penkki", + "pl": "Ławka", + "pt_BR": "Banco", + "pt": "Banco" + } + }, + "tagRenderings": [ + "images", + { + "mappings": [ + { + "if": "backrest=yes", + "then": { + "en": "Backrest: Yes", + "de": "RÃŧckenlehne: Ja", + "fr": "Dossier : Oui", + "nl": "Heeft een rugleuning", + "es": "Respaldo: Si", + "hu": "HÃĄttÃĄmla: Igen", + "id": "Sandaran: Ya", + "it": "Schienale: SÃŦ", + "ru": "ĐĄĐž ŅĐŋиĐŊĐēОК", + "zh_Hans": "靠背īŧšæœ‰", + "zh_Hant": "靠背īŧšæœ‰", + "nb_NO": "Rygglene: Ja", + "fi": "Selkänoja: kyllä", + "pl": "Oparcie: Tak", + "pt_BR": "Encosto: Sim", + "pt": "Encosto: Sim" + } + }, + { + "if": "backrest=no", + "then": { + "en": "Backrest: No", + "de": "RÃŧckenlehne: Nein", + "fr": "Dossier : Non", + "nl": "Rugleuning ontbreekt", + "es": "Respaldo: No", + "hu": "HÃĄttÃĄmla: Nem", + "id": "Sandaran: Tidak", + "it": "Schienale: No", + "ru": "БĐĩС ŅĐŋиĐŊĐēи", + "zh_Hans": "靠背īŧšæ— ", + "zh_Hant": "靠背īŧšį„Ą", + "nb_NO": "Rygglene: Nei", + "fi": "Selkänoja: ei", + "pl": "Oparcie: Nie", + "pt_BR": "Encosto: NÃŖo", + "pt": "Encosto: NÃŖo" + } + } + ], + "question": { + "en": "Does this bench have a backrest?", + "de": "Hat diese Bank eine RÃŧckenlehne?", + "fr": "Ce banc dispose-t-il d'un dossier ?", + "nl": "Heeft deze zitbank een rugleuning?", + "es": "ÂŋEste banco tiene un respaldo?", + "hu": "Van hÃĄttÃĄmlÃĄja ennek a padnak?", + "id": "Apakah bangku ini memiliki sandaran?", + "it": "Questa panchina ha lo schienale?", + "ru": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ŅĐŋиĐŊĐēĐ°?", + "zh_Hans": "čŋ™ä¸Ēé•ŋæ¤…æœ‰é čƒŒå—īŧŸ", + "zh_Hant": "é€™å€‹é•ˇæ¤…æ˜¯åĻæœ‰é čƒŒīŧŸ", + "nb_NO": "Har denne beken et rygglene?", + "pl": "Czy ta ławka ma oparcie?", + "pt_BR": "Este assento tem um escosto?", + "pt": "Este assento tem um escosto?" + }, + "id": "bench-backrest" + }, + { + "render": { + "en": "{seats} seats", + "de": "{seats} Sitzplätze", + "fr": "{seats} places", + "nl": "{seats} zitplaatsen", + "es": "{seats} asientos", + "hu": "{seats} Ãŧlőhely", + "id": "{seats} kursi", + "it": "{seats} posti", + "ru": "{seats} ĐŧĐĩŅŅ‚", + "zh_Hant": "{seats} åē§äŊæ•¸", + "nb_NO": "{seats} seter", + "pl": "{seats} siedzeń", + "pt_BR": "{seats} assentos", + "pt": "{seats} assentos" + }, + "freeform": { + "key": "seats", + "type": "nat" + }, + "question": { + "en": "How many seats does this bench have?", + "de": "Wie viele Sitzplätze hat diese Bank?", + "fr": "De combien de places dispose ce banc ?", + "nl": "Hoeveel zitplaatsen heeft deze bank?", + "es": "ÂŋCuÃĄntos asientos tiene este banco?", + "hu": "HÃĄny Ãŧlőhely van ezen a padon?", + "it": "Quanti posti ha questa panchina?", + "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ĐŧĐĩŅŅ‚ ĐŊĐ° ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", + "zh_Hans": "čŋ™ä¸Ēé•ŋ椅有几ä¸Ēåē§äŊīŧŸ", + "zh_Hant": "é€™å€‹é•ˇæ¤…æœ‰åšžå€‹äŊå­īŧŸ", + "nb_NO": "Hvor mange sitteplasser har denne benken?", + "pl": "Ile siedzeń ma ta ławka?", + "pt_BR": "Quantos assentos este banco tem?", + "pt": "Quantos assentos este banco tem?" + }, + "id": "bench-seats" + }, + { + "render": { + "en": "Material: {material}", + "de": "Material: {material}", + "fr": "MatÊriau : {material}", + "nl": "Gemaakt van {material}", + "es": "Material: {material}", + "hu": "Anyag: {material}", + "it": "Materiale: {material}", + "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: {material}", + "zh_HanÃĨ¨s": "æč´¨: {material}", + "zh_Hant": "材čŗĒīŧš{material}", + "nb_NO": "Materiale: {material}", + "fi": "Materiaali: {material}", + "zh_Hans": "æč´¨: {material}", + "pl": "Materiał: {material}", + "pt_BR": "Material: {material}", + "pt": "Material: {material}", + "eo": "Materialo: {material}" + }, + "freeform": { + "key": "material", + "addExtraTags": [] + }, + "mappings": [ + { + "if": "material=wood", + "then": { + "en": "Material: wood", + "de": "Material: Holz", + "fr": "MatÊriau : bois", + "nl": "Gemaakt uit hout", + "es": "Material: madera", + "hu": "Anyag: fa", + "it": "Materiale: legno", + "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: Đ´ĐĩŅ€ĐĩвО", + "zh_Hans": "æč´¨īŧšæœ¨", + "nb_NO": "Materiale: tre", + "zh_Hant": "材čŗĒīŧšæœ¨é ­", + "pt_BR": "Material: madeira", + "fi": "Materiaali: puu", + "pl": "Materiał: drewno", + "pt": "Material: madeira", + "eo": "Materialo: ligna" + } + }, + { + "if": "material=metal", + "then": { + "en": "Material: metal", + "de": "Material: Metall", + "fr": "MatÊriau : mÊtal", + "nl": "Gemaakt uit metaal", + "es": "Material: metal", + "hu": "Anyag: fÊm", + "it": "Materiale: metallo", + "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŧĐĩŅ‚Đ°ĐģĐģ", + "zh_Hans": "æč´¨īŧšé‡‘åąž", + "nb_NO": "Materiale: metall", + "zh_Hant": "材čŗĒīŧšé‡‘åąŦ", + "pl": "Materiał: metal", + "pt_BR": "Material: metal", + "pt": "Material: metal", + "eo": "Materialo: metala" + } + }, + { + "if": "material=stone", + "then": { + "en": "Material: stone", + "de": "Material: Stein", + "fr": "MatÊriau : pierre", + "nl": "Gemaakt uit steen", + "es": "Material: piedra", + "hu": "Anyag: kő", + "it": "Materiale: pietra", + "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐēĐ°ĐŧĐĩĐŊŅŒ", + "zh_Hans": "æč´¨īŧšįŸŗ头", + "nb_NO": "Materiale: stein", + "zh_Hant": "材čŗĒīŧšįŸŗé ­", + "pt_BR": "Material: pedra", + "fi": "Materiaali: kivi", + "pl": "Materiał: kamień", + "pt": "Material: pedra", + "eo": "Materialo: ŝtona" + } + }, + { + "if": "material=concrete", + "then": { + "en": "Material: concrete", + "de": "Material: Beton", + "fr": "MatÊriau : bÊton", + "nl": "Gemaakt uit beton", + "es": "Material: concreto", + "hu": "Anyag: beton", + "it": "Materiale: cemento", + "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐąĐĩŅ‚ĐžĐŊ", + "zh_Hans": "æč´¨īŧšæˇˇå‡åœŸ", + "nb_NO": "Materiale: betong", + "zh_Hant": "材čŗĒīŧšæ°´æŗĨ", + "pt_BR": "Material: concreto", + "fi": "Materiaali: betoni", + "pl": "Materiał: beton", + "pt": "Material: concreto", + "eo": "Materialo: betona" + } + }, + { + "if": "material=plastic", + "then": { + "en": "Material: plastic", + "de": "Material: Kunststoff", + "fr": "MatÊriau : plastique", + "nl": "Gemaakt uit plastiek", + "es": "Material: plastico", + "hu": "Anyag: mÅąanyag", + "it": "Materiale: plastica", + "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŋĐģĐ°ŅŅ‚иĐē", + "zh_Hans": "æč´¨īŧšåĄ‘æ–™", + "nb_NO": "Materiale: plastikk", + "zh_Hant": "材čŗĒīŧšåĄ‘膠", + "pt_BR": "Material: plÃĄstico", + "fi": "Materiaali: muovi", + "pl": "Materiał: plastik", + "pt": "Material: plÃĄstico", + "eo": "Materialo: plasta" + } + }, + { + "if": "material=steel", + "then": { + "en": "Material: steel", + "de": "Material: Stahl", + "fr": "MatÊriau : acier", + "nl": "Gemaakt uit staal", + "es": "Material: acero", + "hu": "Anyag: acÊl", + "it": "Materiale: acciaio", + "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ŅŅ‚Đ°ĐģŅŒ", + "zh_Hans": "æč´¨īŧšä¸é”ˆé’ĸ", + "nb_NO": "Materiale: stÃĨl", + "zh_Hant": "材čŗĒīŧšé‹ŧéĩ", + "pt_BR": "Material: aço", + "fi": "Materiaali: teräs", + "pl": "Materiał: stal", + "pt": "Material: aço", + "eo": "Materialo: ŝtala" + } + } + ], + "question": { + "en": "What is the bench (seating) made from?", + "de": "Aus welchem Material besteht die Sitzbank (Sitzfläche)?", + "fr": "De quel matÊriau ce banc est-il fait ?", + "nl": "Uit welk materiaal is het zitgedeelte van deze zitbank gemaakt?", + "hu": "Miből van a pad (Ãŧlő rÊsze)?", + "it": "Di che materiale è fatta questa panchina?", + "zh_Hans": "čŋ™ä¸Ēé•ŋ椅īŧˆæˆ–åē§æ¤…īŧ‰æ˜¯į”¨äģ€äšˆææ–™åšįš„īŧŸ", + "ru": "ИС ĐēĐ°ĐēĐžĐŗĐž ĐŧĐ°Ņ‚ĐĩŅ€Đ¸Đ°ĐģĐ° ŅĐ´ĐĩĐģĐ°ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", + "zh_Hant": "é€™å€‹é•ˇæ¤… (åē§äŊ) 是äģ€éēŧ做įš„īŧŸ", + "pt_BR": "De que Ê feito o banco (assento)?", + "pl": "Z czego wykonana jest ławka (siedzisko)?", + "pt": "De que Ê feito o banco (assento)?" + }, + "id": "bench-material" + }, + { + "question": { + "en": "In which direction are you looking when sitting on the bench?", + "de": "In welche Richtung schaut man, wenn man auf der Bank sitzt?", + "nl": "In welke richting kijk je wanneer je op deze zitbank zit?", + "fr": "Dans quelle direction regardez-vous quand vous ÃĒtes assis sur le banc ?", + "hu": "Milyen irÃĄnyba nÊz a pad?", + "it": "In che direzione si guarda quando si è seduti su questa panchina?", + "ru": "В ĐēĐ°ĐēĐžĐŧ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊии вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ, ĐēĐžĐŗĐ´Đ° ŅĐ¸Đ´Đ¸Ņ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", + "zh_Hans": "坐在é•ŋ椅上įš„æ—ļ候äŊ į›Žč§†įš„斚向是å“ĒčžšīŧŸ", + "zh_Hant": "ååœ¨é•ˇæ¤…æ™‚æ˜¯éĸ對é‚Ŗ個斚向īŧŸ", + "pt_BR": "Em que direçÃŖo vocÃĒ olha quando estÃĄ sentado no banco?", + "pl": "W jakim kierunku patrzysz siedząc na ławce?", + "pt": "Em que direçÃŖo olha quando estÃĄ sentado no banco?" + }, + "render": { + "en": "When sitting on the bench, one looks towards {direction}°.", + "de": "Wenn man auf der Bank sitzt, schaut man in Richtung {direction}°.", + "nl": "Wanneer je op deze bank zit, dan kijk je in {direction}°.", + "fr": "Assis sur le banc, on regarde vers {direction}°.", + "hu": "A pad {direction}° felÊ nÊz.", + "it": "Quando si è seduti su questa panchina, si guarda verso {direction}°.", + "zh_Hans": "坐在é•ŋ椅上įš„æ—ļ候į›Žč§†æ–šå‘ä¸ē {direction}°斚äŊã€‚", + "ru": "ХидŅ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ, вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ в ŅŅ‚ĐžŅ€ĐžĐŊŅƒ {direction}°.", + "zh_Hant": "į•ļååœ¨é•ˇæ¤…æ™‚īŧŒé‚Ŗ個äēē朝向 {direction}°。", + "pl": "Siedząc na ławce, patrzy się w kierunku {direction}°.", + "pt_BR": "Ao sentar-se no banco, olha-se para {direction} °.", + "pt": "Ao sentar-se no banco, olha-se para {direction} °." + }, + "freeform": { + "key": "direction", + "type": "direction" + }, + "id": "bench-direction" + }, + { + "render": { + "en": "Colour: {colour}", + "de": "Farbe: {colour}", + "fr": "Couleur : {colour}", + "nl": "Kleur: {colour}", + "hu": "Szín: {colour}", + "it": "Colore: {colour}", + "ru": "ĐĻвĐĩŅ‚: {colour}", + "id": "Warna: {colour}", + "zh_Hans": "éĸœč‰˛īŧš {colour}", + "zh_Hant": "顏色īŧš{colour}", + "nb_NO": "Farge: {colour}", + "pt_BR": "Cor: {colour}", + "fi": "Väri: {colour}", + "pl": "Kolor: {colour}", + "pt": "Cor: {colour}", + "eo": "Koloro: {colour}" + }, + "question": { + "en": "Which colour does this bench have?", + "de": "Welche Farbe hat diese Sitzbank?", + "fr": "Quelle est la couleur de ce banc ?", + "nl": "Welke kleur heeft deze zitbank?", + "hu": "Milyen színÅą a pad?", + "it": "Di che colore è questa panchina?", + "ru": "КаĐēĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", + "zh_Hans": "čŋ™ä¸Ēé•ŋ椅是äģ€äšˆéĸœč‰˛įš„īŧŸ", + "zh_Hant": "é€™å€‹é•ˇæ¤…æ˜¯äģ€éēŧ顏色įš„īŧŸ", + "pt_BR": "Qual a cor dessa bancada?", + "pl": "Jaki kolor ma ta ławka?", + "pt": "Qual a cor dessa bancada?" + }, + "freeform": { + "key": "colour", + "type": "color" + }, + "mappings": [ + { + "if": "colour=brown", + "then": { + "en": "Colour: brown", + "de": "Farbe: braun", + "fr": "Couleur : marron", + "nl": "De kleur is bruin", + "hu": "Szín: barna", + "it": "Colore: marrone", + "ru": "ĐĻвĐĩŅ‚: ĐēĐžŅ€Đ¸Ņ‡ĐŊĐĩвŅ‹Đš", + "zh_Hans": "éĸœč‰˛īŧšæŖ•", + "zh_Hant": "顏色īŧšæŖ•č‰˛", + "nb_NO": "Farge: brun", + "pt_BR": "Cor: marrom", + "fi": "Väri: ruskea", + "pl": "Kolor: brązowy", + "pt": "Cor: castanho", + "eo": "Koloro: bruna" + } + }, + { + "if": "colour=green", + "then": { + "en": "Colour: green", + "de": "Farbe: grÃŧn", + "fr": "Couleur : verte", + "nl": "De kleur is groen", + "hu": "Szín: zÃļld", + "it": "Colore: verde", + "ru": "ĐĻвĐĩŅ‚: СĐĩĐģĐĩĐŊŅ‹Đš", + "zh_Hans": "éĸœč‰˛īŧšįģŋ", + "zh_Hant": "顏色īŧšįļ č‰˛", + "nb_NO": "Farge: grønn", + "pt_BR": "Cor: verde", + "fi": "Väri: vihreä", + "pl": "Kolor: zielony", + "pt": "Cor: verde", + "eo": "Koloro: verda" + } + }, + { + "if": "colour=gray", + "then": { + "en": "Colour: gray", + "de": "Farbe: grau", + "fr": "Couleur : gris", + "nl": "De kleur is grijs", + "hu": "Szín: szÃŧrke", + "it": "Colore: grigio", + "ru": "ĐĻвĐĩŅ‚: ŅĐĩŅ€Ņ‹Đš", + "zh_Hans": "éĸœč‰˛īŧšį°", + "zh_Hant": "顏色īŧšį°č‰˛", + "nb_NO": "Farge: grÃĨ", + "pt_BR": "Cor: cinza", + "fi": "Väri: harmaa", + "pl": "Kolor: szary", + "pt": "Cor: cinzento", + "eo": "Koloro: griza" + } + }, + { + "if": "colour=white", + "then": { + "en": "Colour: white", + "de": "Farbe: weiß", + "fr": "Couleur : blanc", + "nl": "De kleur is wit", + "hu": "Szín: fehÊr", + "it": "Colore: bianco", + "ru": "ĐĻвĐĩŅ‚: ĐąĐĩĐģŅ‹Đš", + "zh_Hans": "éĸœč‰˛īŧšį™Ŋ", + "zh_Hant": "顏色īŧšį™Ŋ色", + "nb_NO": "Farge: hvit", + "pt_BR": "Cor: branco", + "fi": "Väri: valkoinen", + "pl": "Kolor: biały", + "pt": "Cor: branco", + "eo": "Koloro: blanka" + } + }, + { + "if": "colour=red", + "then": { + "en": "Colour: red", + "de": "Farbe: rot", + "fr": "Couleur : rouge", + "nl": "De kleur is rood", + "hu": "Szín: piros", + "it": "Colore: rosso", + "ru": "ĐĻвĐĩŅ‚: ĐēŅ€Đ°ŅĐŊŅ‹Đš", + "zh_Hans": "éĸœč‰˛īŧšįēĸ", + "zh_Hant": "顏色īŧšį´…色", + "nb_NO": "Farge: rød", + "pt_BR": "Cor: vermelho", + "fi": "Väri: punainen", + "pl": "Kolor: czerwony", + "pt": "Cor: vermelho", + "eo": "Koloro: ruĝa" + } + }, + { + "if": "colour=black", + "then": { + "en": "Colour: black", + "de": "Farbe: schwarz", + "fr": "Couleur : noire", + "nl": "De kleur is zwart", + "hu": "Szín: fekete", + "it": "Colore: nero", + "ru": "ĐĻвĐĩŅ‚: Ņ‡Ņ‘Ņ€ĐŊŅ‹Đš", + "zh_Hans": "éĸœč‰˛īŧšéģ‘", + "zh_Hant": "顏色īŧšéģ‘色", + "nb_NO": "Farge: svart", + "pt_BR": "Cor: preto", + "fi": "Väri: musta", + "pl": "Kolor: czarny", + "pt": "Cor: preto", + "eo": "Koloro: nigra" + } + }, + { + "if": "colour=blue", + "then": { + "en": "Colour: blue", + "de": "Farbe: blau", + "fr": "Couleur : bleu", + "nl": "De kleur is blauw", + "hu": "Szín: kÊk", + "it": "Colore: blu", + "ru": "ĐĻвĐĩŅ‚: ŅĐ¸ĐŊиК", + "zh_Hans": "éĸœč‰˛īŧšč“", + "zh_Hant": "顏色īŧšč—č‰˛", + "nb_NO": "Farge: blÃĨ", + "pt_BR": "Cor: azul", + "fi": "Väri: sininen", + "pl": "Kolor: niebieski", + "pt": "Cor: azul", + "eo": "Koloro: blua" + } + }, + { + "if": "colour=yellow", + "then": { + "en": "Colour: yellow", + "de": "Farbe: gelb", + "fr": "Couleur : jaune", + "nl": "De kleur is geel", + "hu": "Szín: sÃĄrga", + "it": "Colore: giallo", + "ru": "ĐĻвĐĩŅ‚: ĐļĐĩĐģŅ‚Ņ‹Đš", + "zh_Hans": "éĸœč‰˛īŧšéģ„", + "zh_Hant": "顏色īŧšéģƒč‰˛", + "nb_NO": "Farge: gul", + "pt_BR": "Cor: amarelo", + "fi": "Väri: keltainen", + "pl": "Kolor: ÅŧÃŗłty", + "pt": "Cor: amarelo", + "eo": "Koloro: flava" + } + } + ], + "id": "bench-colour" + }, + { + "question": { + "en": "When was this bench last surveyed?", + "nl": "Wanneer is deze laatste bank laatst gesurveyed?", + "fr": "Quand ce banc a-t-il ÊtÊ contrôlÊ pour la dernière fois ?", + "it": "Quando è stata verificata l’ultima volta questa panchina?", + "zh_Hans": "上æŦĄå¯ščŋ™ä¸Ēé•ŋæ¤…åŽžåœ°č°ƒæŸĨ是äģ€äšˆæ—ļ候īŧŸ", + "de": "Wann wurde diese Bank zuletzt ÃŧberprÃŧft?", + "ru": "КоĐŗĐ´Đ° ĐŋĐžŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐģи ŅŅ‚Ņƒ ŅĐēĐ°ĐŧĐĩĐšĐēŅƒ?", + "zh_Hant": "上一æŦĄæŽĸå¯Ÿé•ˇæ¤…æ˜¯äģ€éēŧ時候īŧŸ", + "pt_BR": "Quando esta bancada foi pesquisada pela Ãēltima vez?", + "pl": "Kiedy ostatnio badano tę ławkę?", + "pt": "Quando esta bancada foi pesquisada pela Ãēltima vez?" + }, + "render": { + "en": "This bench was last surveyed on {survey:date}", + "nl": "Deze bank is laatst gesurveyd op {survey:date}", + "fr": "Ce banc a ÊtÊ contrôlÊ pour la dernière fois le {survey:date}", + "it": "Questa panchina è stata controllata l’ultima volta in data {survey:date}", + "zh_Hans": "čŋ™ä¸Ēé•ŋ椅äēŽ {survey:date}最后一æŦĄåŽžåœ°č°ƒæŸĨ", + "de": "Diese Bank wurde zuletzt ÃŧberprÃŧft am {survey:date}", + "ru": "ПоŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐŊиĐĩ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ĐŋŅ€ĐžĐ˛ĐžĐ´Đ¸ĐģĐžŅŅŒ {survey:date}", + "zh_Hant": "é€™å€‹é•ˇæ¤…æœ€åžŒæ˜¯åœ¨ {survey:date} æŽĸæŸĨįš„", + "pt_BR": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}", + "pl": "Ławka ta była ostatnio badana w dniu {survey:date}", + "pt": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}" + }, + "freeform": { + "key": "survey:date", + "type": "date" + }, + "mappings": [ + { + "if": "survey:date:={_now:date}", + "then": "Surveyed today!" + } + ], + "id": "bench-survey:date" + } + ], + "presets": [ + { + "tags": [ + "amenity=bench" + ], + "title": { + "en": "bench", + "de": "sitzbank", + "fr": "banc", + "nl": "zitbank", + "es": "banco", + "it": "panchina", + "ru": "cĐēĐ°ĐŧĐĩĐšĐēĐ°", + "id": "bangku", "zh_Hans": "é•ŋ椅", + "nb_NO": "benk", "zh_Hant": "é•ˇæ¤…", - "nb_NO": "Benker", - "fi": "Penkit", - "pl": "Ławki", - "pt_BR": "Bancos", - "pt": "Bancos" + "pt_BR": "banco", + "fi": "penkki", + "pl": "Ławka", + "pt": "banco" + }, + "presiceInput": { + "preferredBackground": "photo" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity=bench", + "amenity=" + ] }, - "minzoom": 17, - "source": { - "osmTags": "amenity=bench" - }, - "wayHandling": 1, - "title": { - "render": { - "en": "Bench", - "de": "Sitzbank", - "fr": "Banc", - "nl": "Zitbank", - "es": "Banco", - "hu": "Pad", - "id": "Bangku", - "it": "Panchina", - "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°", - "zh_Hans": "é•ŋ椅", - "zh_Hant": "é•ˇæ¤…", - "nb_NO": "Benk", - "fi": "Penkki", - "pl": "Ławka", - "pt_BR": "Banco", - "pt": "Banco" - } - }, - "tagRenderings": [ - "images", - { - "render": { - "en": "Backrest", - "de": "RÃŧckenlehne", - "fr": "Dossier", - "nl": "Rugleuning", - "es": "Respaldo", - "hu": "HÃĄttÃĄmla", - "id": "Sandaran", - "it": "Schienale", - "ru": "ĐĄĐŋиĐŊĐēĐ°", - "zh_Hans": "靠背", - "zh_Hant": "靠背", - "nb_NO": "Rygglene", - "fi": "Selkänoja", - "pl": "Oparcie", - "pt_BR": "Encosto", - "pt": "Encosto" - }, - "freeform": { - "key": "backrest" - }, - "mappings": [ - { - "if": "backrest=yes", - "then": { - "en": "Backrest: Yes", - "de": "RÃŧckenlehne: Ja", - "fr": "Dossier : Oui", - "nl": "Heeft een rugleuning", - "es": "Respaldo: Si", - "hu": "HÃĄttÃĄmla: Igen", - "id": "Sandaran: Ya", - "it": "Schienale: SÃŦ", - "ru": "ĐĄĐž ŅĐŋиĐŊĐēОК", - "zh_Hans": "靠背īŧšæœ‰", - "zh_Hant": "靠背īŧšæœ‰", - "nb_NO": "Rygglene: Ja", - "fi": "Selkänoja: kyllä", - "pl": "Oparcie: Tak", - "pt_BR": "Encosto: Sim", - "pt": "Encosto: Sim" - } - }, - { - "if": "backrest=no", - "then": { - "en": "Backrest: No", - "de": "RÃŧckenlehne: Nein", - "fr": "Dossier : Non", - "nl": "Rugleuning ontbreekt", - "es": "Respaldo: No", - "hu": "HÃĄttÃĄmla: Nem", - "id": "Sandaran: Tidak", - "it": "Schienale: No", - "ru": "БĐĩС ŅĐŋиĐŊĐēи", - "zh_Hans": "靠背īŧšæ— ", - "zh_Hant": "靠背īŧšį„Ą", - "nb_NO": "Rygglene: Nei", - "fi": "Selkänoja: ei", - "pl": "Oparcie: Nie", - "pt_BR": "Encosto: NÃŖo", - "pt": "Encosto: NÃŖo" - } - } - ], - "question": { - "en": "Does this bench have a backrest?", - "de": "Hat diese Bank eine RÃŧckenlehne?", - "fr": "Ce banc dispose-t-il d'un dossier ?", - "nl": "Heeft deze zitbank een rugleuning?", - "es": "ÂŋEste banco tiene un respaldo?", - "hu": "Van hÃĄttÃĄmlÃĄja ennek a padnak?", - "id": "Apakah bangku ini memiliki sandaran?", - "it": "Questa panchina ha lo schienale?", - "ru": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ŅĐŋиĐŊĐēĐ°?", - "zh_Hans": "čŋ™ä¸Ēé•ŋæ¤…æœ‰é čƒŒå—īŧŸ", - "zh_Hant": "é€™å€‹é•ˇæ¤…æ˜¯åĻæœ‰é čƒŒīŧŸ", - "nb_NO": "Har denne beken et rygglene?", - "pl": "Czy ta ławka ma oparcie?", - "pt_BR": "Este assento tem um escosto?", - "pt": "Este assento tem um escosto?" - }, - "id": "bench-backrest" - }, - { - "render": { - "en": "{seats} seats", - "de": "{seats} Sitzplätze", - "fr": "{seats} places", - "nl": "{seats} zitplaatsen", - "es": "{seats} asientos", - "hu": "{seats} Ãŧlőhely", - "id": "{seats} kursi", - "it": "{seats} posti", - "ru": "{seats} ĐŧĐĩŅŅ‚", - "zh_Hant": "{seats} åē§äŊæ•¸", - "nb_NO": "{seats} seter", - "pl": "{seats} siedzeń", - "pt_BR": "{seats} assentos", - "pt": "{seats} assentos" - }, - "freeform": { - "key": "seats", - "type": "nat" - }, - "question": { - "en": "How many seats does this bench have?", - "de": "Wie viele Sitzplätze hat diese Bank?", - "fr": "De combien de places dispose ce banc ?", - "nl": "Hoeveel zitplaatsen heeft deze bank?", - "es": "ÂŋCuÃĄntos asientos tiene este banco?", - "hu": "HÃĄny Ãŧlőhely van ezen a padon?", - "it": "Quanti posti ha questa panchina?", - "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ĐŧĐĩŅŅ‚ ĐŊĐ° ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", - "zh_Hans": "čŋ™ä¸Ēé•ŋ椅有几ä¸Ēåē§äŊīŧŸ", - "zh_Hant": "é€™å€‹é•ˇæ¤…æœ‰åšžå€‹äŊå­īŧŸ", - "nb_NO": "Hvor mange sitteplasser har denne benken?", - "pl": "Ile siedzeń ma ta ławka?", - "pt_BR": "Quantos assentos este banco tem?", - "pt": "Quantos assentos este banco tem?" - }, - "id": "bench-seats" - }, - { - "render": { - "en": "Material: {material}", - "de": "Material: {material}", - "fr": "MatÊriau : {material}", - "nl": "Gemaakt van {material}", - "es": "Material: {material}", - "hu": "Anyag: {material}", - "it": "Materiale: {material}", - "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: {material}", - "zh_HanÃĨ¨s": "æč´¨: {material}", - "zh_Hant": "材čŗĒīŧš{material}", - "nb_NO": "Materiale: {material}", - "fi": "Materiaali: {material}", - "zh_Hans": "æč´¨: {material}", - "pl": "Materiał: {material}", - "pt_BR": "Material: {material}", - "pt": "Material: {material}", - "eo": "Materialo: {material}" - }, - "freeform": { - "key": "material", - "addExtraTags": [] - }, - "mappings": [ - { - "if": "material=wood", - "then": { - "en": "Material: wood", - "de": "Material: Holz", - "fr": "MatÊriau : bois", - "nl": "Gemaakt uit hout", - "es": "Material: madera", - "hu": "Anyag: fa", - "it": "Materiale: legno", - "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: Đ´ĐĩŅ€ĐĩвО", - "zh_Hans": "æč´¨īŧšæœ¨", - "nb_NO": "Materiale: tre", - "zh_Hant": "材čŗĒīŧšæœ¨é ­", - "pt_BR": "Material: madeira", - "fi": "Materiaali: puu", - "pl": "Materiał: drewno", - "pt": "Material: madeira", - "eo": "Materialo: ligna" - } - }, - { - "if": "material=metal", - "then": { - "en": "Material: metal", - "de": "Material: Metall", - "fr": "MatÊriau : mÊtal", - "nl": "Gemaakt uit metaal", - "es": "Material: metal", - "hu": "Anyag: fÊm", - "it": "Materiale: metallo", - "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŧĐĩŅ‚Đ°ĐģĐģ", - "zh_Hans": "æč´¨īŧšé‡‘åąž", - "nb_NO": "Materiale: metall", - "zh_Hant": "材čŗĒīŧšé‡‘åąŦ", - "pl": "Materiał: metal", - "pt_BR": "Material: metal", - "pt": "Material: metal", - "eo": "Materialo: metala" - } - }, - { - "if": "material=stone", - "then": { - "en": "Material: stone", - "de": "Material: Stein", - "fr": "MatÊriau : pierre", - "nl": "Gemaakt uit steen", - "es": "Material: piedra", - "hu": "Anyag: kő", - "it": "Materiale: pietra", - "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐēĐ°ĐŧĐĩĐŊŅŒ", - "zh_Hans": "æč´¨īŧšįŸŗ头", - "nb_NO": "Materiale: stein", - "zh_Hant": "材čŗĒīŧšįŸŗé ­", - "pt_BR": "Material: pedra", - "fi": "Materiaali: kivi", - "pl": "Materiał: kamień", - "pt": "Material: pedra", - "eo": "Materialo: ŝtona" - } - }, - { - "if": "material=concrete", - "then": { - "en": "Material: concrete", - "de": "Material: Beton", - "fr": "MatÊriau : bÊton", - "nl": "Gemaakt uit beton", - "es": "Material: concreto", - "hu": "Anyag: beton", - "it": "Materiale: cemento", - "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐąĐĩŅ‚ĐžĐŊ", - "zh_Hans": "æč´¨īŧšæˇˇå‡åœŸ", - "nb_NO": "Materiale: betong", - "zh_Hant": "材čŗĒīŧšæ°´æŗĨ", - "pt_BR": "Material: concreto", - "fi": "Materiaali: betoni", - "pl": "Materiał: beton", - "pt": "Material: concreto", - "eo": "Materialo: betona" - } - }, - { - "if": "material=plastic", - "then": { - "en": "Material: plastic", - "de": "Material: Kunststoff", - "fr": "MatÊriau : plastique", - "nl": "Gemaakt uit plastiek", - "es": "Material: plastico", - "hu": "Anyag: mÅąanyag", - "it": "Materiale: plastica", - "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŋĐģĐ°ŅŅ‚иĐē", - "zh_Hans": "æč´¨īŧšåĄ‘æ–™", - "nb_NO": "Materiale: plastikk", - "zh_Hant": "材čŗĒīŧšåĄ‘膠", - "pt_BR": "Material: plÃĄstico", - "fi": "Materiaali: muovi", - "pl": "Materiał: plastik", - "pt": "Material: plÃĄstico", - "eo": "Materialo: plasta" - } - }, - { - "if": "material=steel", - "then": { - "en": "Material: steel", - "de": "Material: Stahl", - "fr": "MatÊriau : acier", - "nl": "Gemaakt uit staal", - "es": "Material: acero", - "hu": "Anyag: acÊl", - "it": "Materiale: acciaio", - "ru": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ŅŅ‚Đ°ĐģŅŒ", - "zh_Hans": "æč´¨īŧšä¸é”ˆé’ĸ", - "nb_NO": "Materiale: stÃĨl", - "zh_Hant": "材čŗĒīŧšé‹ŧéĩ", - "pt_BR": "Material: aço", - "fi": "Materiaali: teräs", - "pl": "Materiał: stal", - "pt": "Material: aço", - "eo": "Materialo: ŝtala" - } - } - ], - "question": { - "en": "What is the bench (seating) made from?", - "de": "Aus welchem Material besteht die Sitzbank (Sitzfläche)?", - "fr": "De quel matÊriau ce banc est-il fait ?", - "nl": "Uit welk materiaal is het zitgedeelte van deze zitbank gemaakt?", - "hu": "Miből van a pad (Ãŧlő rÊsze)?", - "it": "Di che materiale è fatta questa panchina?", - "zh_Hans": "čŋ™ä¸Ēé•ŋ椅īŧˆæˆ–åē§æ¤…īŧ‰æ˜¯į”¨äģ€äšˆææ–™åšįš„īŧŸ", - "ru": "ИС ĐēĐ°ĐēĐžĐŗĐž ĐŧĐ°Ņ‚ĐĩŅ€Đ¸Đ°ĐģĐ° ŅĐ´ĐĩĐģĐ°ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", - "zh_Hant": "é€™å€‹é•ˇæ¤… (åē§äŊ) 是äģ€éēŧ做įš„īŧŸ", - "pt_BR": "De que Ê feito o banco (assento)?", - "pl": "Z czego wykonana jest ławka (siedzisko)?", - "pt": "De que Ê feito o banco (assento)?" - }, - "id": "bench-material" - }, - { - "question": { - "en": "In which direction are you looking when sitting on the bench?", - "de": "In welche Richtung schaut man, wenn man auf der Bank sitzt?", - "nl": "In welke richting kijk je wanneer je op deze zitbank zit?", - "fr": "Dans quelle direction regardez-vous quand vous ÃĒtes assis sur le banc ?", - "hu": "Milyen irÃĄnyba nÊz a pad?", - "it": "In che direzione si guarda quando si è seduti su questa panchina?", - "ru": "В ĐēĐ°ĐēĐžĐŧ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊии вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ, ĐēĐžĐŗĐ´Đ° ŅĐ¸Đ´Đ¸Ņ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", - "zh_Hans": "坐在é•ŋ椅上įš„æ—ļ候äŊ į›Žč§†įš„斚向是å“ĒčžšīŧŸ", - "zh_Hant": "ååœ¨é•ˇæ¤…æ™‚æ˜¯éĸ對é‚Ŗ個斚向īŧŸ", - "pt_BR": "Em que direçÃŖo vocÃĒ olha quando estÃĄ sentado no banco?", - "pl": "W jakim kierunku patrzysz siedząc na ławce?", - "pt": "Em que direçÃŖo olha quando estÃĄ sentado no banco?" - }, - "render": { - "en": "When sitting on the bench, one looks towards {direction}°.", - "de": "Wenn man auf der Bank sitzt, schaut man in Richtung {direction}°.", - "nl": "Wanneer je op deze bank zit, dan kijk je in {direction}°.", - "fr": "Assis sur le banc, on regarde vers {direction}°.", - "hu": "A pad {direction}° felÊ nÊz.", - "it": "Quando si è seduti su questa panchina, si guarda verso {direction}°.", - "zh_Hans": "坐在é•ŋ椅上įš„æ—ļ候į›Žč§†æ–šå‘ä¸ē {direction}°斚äŊã€‚", - "ru": "ХидŅ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ, вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ в ŅŅ‚ĐžŅ€ĐžĐŊŅƒ {direction}°.", - "zh_Hant": "į•ļååœ¨é•ˇæ¤…æ™‚īŧŒé‚Ŗ個äēē朝向 {direction}°。", - "pl": "Siedząc na ławce, patrzy się w kierunku {direction}°.", - "pt_BR": "Ao sentar-se no banco, olha-se para {direction} °.", - "pt": "Ao sentar-se no banco, olha-se para {direction} °." - }, - "freeform": { - "key": "direction", - "type": "direction" - }, - "id": "bench-direction" - }, - { - "render": { - "en": "Colour: {colour}", - "de": "Farbe: {colour}", - "fr": "Couleur : {colour}", - "nl": "Kleur: {colour}", - "hu": "Szín: {colour}", - "it": "Colore: {colour}", - "ru": "ĐĻвĐĩŅ‚: {colour}", - "id": "Warna: {colour}", - "zh_Hans": "éĸœč‰˛īŧš {colour}", - "zh_Hant": "顏色īŧš{colour}", - "nb_NO": "Farge: {colour}", - "pt_BR": "Cor: {colour}", - "fi": "Väri: {colour}", - "pl": "Kolor: {colour}", - "pt": "Cor: {colour}", - "eo": "Koloro: {colour}" - }, - "question": { - "en": "Which colour does this bench have?", - "de": "Welche Farbe hat diese Sitzbank?", - "fr": "Quelle est la couleur de ce banc ?", - "nl": "Welke kleur heeft deze zitbank?", - "hu": "Milyen színÅą a pad?", - "it": "Di che colore è questa panchina?", - "ru": "КаĐēĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", - "zh_Hans": "čŋ™ä¸Ēé•ŋ椅是äģ€äšˆéĸœč‰˛įš„īŧŸ", - "zh_Hant": "é€™å€‹é•ˇæ¤…æ˜¯äģ€éēŧ顏色įš„īŧŸ", - "pt_BR": "Qual a cor dessa bancada?", - "pl": "Jaki kolor ma ta ławka?", - "pt": "Qual a cor dessa bancada?" - }, - "freeform": { - "key": "colour", - "type": "color" - }, - "mappings": [ - { - "if": "colour=brown", - "then": { - "en": "Colour: brown", - "de": "Farbe: braun", - "fr": "Couleur : marron", - "nl": "De kleur is bruin", - "hu": "Szín: barna", - "it": "Colore: marrone", - "ru": "ĐĻвĐĩŅ‚: ĐēĐžŅ€Đ¸Ņ‡ĐŊĐĩвŅ‹Đš", - "zh_Hans": "éĸœč‰˛īŧšæŖ•", - "zh_Hant": "顏色īŧšæŖ•č‰˛", - "nb_NO": "Farge: brun", - "pt_BR": "Cor: marrom", - "fi": "Väri: ruskea", - "pl": "Kolor: brązowy", - "pt": "Cor: castanho", - "eo": "Koloro: bruna" - } - }, - { - "if": "colour=green", - "then": { - "en": "Colour: green", - "de": "Farbe: grÃŧn", - "fr": "Couleur : verte", - "nl": "De kleur is groen", - "hu": "Szín: zÃļld", - "it": "Colore: verde", - "ru": "ĐĻвĐĩŅ‚: СĐĩĐģĐĩĐŊŅ‹Đš", - "zh_Hans": "éĸœč‰˛īŧšįģŋ", - "zh_Hant": "顏色īŧšįļ č‰˛", - "nb_NO": "Farge: grønn", - "pt_BR": "Cor: verde", - "fi": "Väri: vihreä", - "pl": "Kolor: zielony", - "pt": "Cor: verde", - "eo": "Koloro: verda" - } - }, - { - "if": "colour=gray", - "then": { - "en": "Colour: gray", - "de": "Farbe: grau", - "fr": "Couleur : gris", - "nl": "De kleur is grijs", - "hu": "Szín: szÃŧrke", - "it": "Colore: grigio", - "ru": "ĐĻвĐĩŅ‚: ŅĐĩŅ€Ņ‹Đš", - "zh_Hans": "éĸœč‰˛īŧšį°", - "zh_Hant": "顏色īŧšį°č‰˛", - "nb_NO": "Farge: grÃĨ", - "pt_BR": "Cor: cinza", - "fi": "Väri: harmaa", - "pl": "Kolor: szary", - "pt": "Cor: cinzento", - "eo": "Koloro: griza" - } - }, - { - "if": "colour=white", - "then": { - "en": "Colour: white", - "de": "Farbe: weiß", - "fr": "Couleur : blanc", - "nl": "De kleur is wit", - "hu": "Szín: fehÊr", - "it": "Colore: bianco", - "ru": "ĐĻвĐĩŅ‚: ĐąĐĩĐģŅ‹Đš", - "zh_Hans": "éĸœč‰˛īŧšį™Ŋ", - "zh_Hant": "顏色īŧšį™Ŋ色", - "nb_NO": "Farge: hvit", - "pt_BR": "Cor: branco", - "fi": "Väri: valkoinen", - "pl": "Kolor: biały", - "pt": "Cor: branco", - "eo": "Koloro: blanka" - } - }, - { - "if": "colour=red", - "then": { - "en": "Colour: red", - "de": "Farbe: rot", - "fr": "Couleur : rouge", - "nl": "De kleur is rood", - "hu": "Szín: piros", - "it": "Colore: rosso", - "ru": "ĐĻвĐĩŅ‚: ĐēŅ€Đ°ŅĐŊŅ‹Đš", - "zh_Hans": "éĸœč‰˛īŧšįēĸ", - "zh_Hant": "顏色īŧšį´…色", - "nb_NO": "Farge: rød", - "pt_BR": "Cor: vermelho", - "fi": "Väri: punainen", - "pl": "Kolor: czerwony", - "pt": "Cor: vermelho", - "eo": "Koloro: ruĝa" - } - }, - { - "if": "colour=black", - "then": { - "en": "Colour: black", - "de": "Farbe: schwarz", - "fr": "Couleur : noire", - "nl": "De kleur is zwart", - "hu": "Szín: fekete", - "it": "Colore: nero", - "ru": "ĐĻвĐĩŅ‚: Ņ‡Ņ‘Ņ€ĐŊŅ‹Đš", - "zh_Hans": "éĸœč‰˛īŧšéģ‘", - "zh_Hant": "顏色īŧšéģ‘色", - "nb_NO": "Farge: svart", - "pt_BR": "Cor: preto", - "fi": "Väri: musta", - "pl": "Kolor: czarny", - "pt": "Cor: preto", - "eo": "Koloro: nigra" - } - }, - { - "if": "colour=blue", - "then": { - "en": "Colour: blue", - "de": "Farbe: blau", - "fr": "Couleur : bleu", - "nl": "De kleur is blauw", - "hu": "Szín: kÊk", - "it": "Colore: blu", - "ru": "ĐĻвĐĩŅ‚: ŅĐ¸ĐŊиК", - "zh_Hans": "éĸœč‰˛īŧšč“", - "zh_Hant": "顏色īŧšč—č‰˛", - "nb_NO": "Farge: blÃĨ", - "pt_BR": "Cor: azul", - "fi": "Väri: sininen", - "pl": "Kolor: niebieski", - "pt": "Cor: azul", - "eo": "Koloro: blua" - } - }, - { - "if": "colour=yellow", - "then": { - "en": "Colour: yellow", - "de": "Farbe: gelb", - "fr": "Couleur : jaune", - "nl": "De kleur is geel", - "hu": "Szín: sÃĄrga", - "it": "Colore: giallo", - "ru": "ĐĻвĐĩŅ‚: ĐļĐĩĐģŅ‚Ņ‹Đš", - "zh_Hans": "éĸœč‰˛īŧšéģ„", - "zh_Hant": "顏色īŧšéģƒč‰˛", - "nb_NO": "Farge: gul", - "pt_BR": "Cor: amarelo", - "fi": "Väri: keltainen", - "pl": "Kolor: ÅŧÃŗłty", - "pt": "Cor: amarelo", - "eo": "Koloro: flava" - } - } - ], - "id": "bench-colour" - }, - { - "question": { - "en": "When was this bench last surveyed?", - "nl": "Wanneer is deze laatste bank laatst gesurveyed?", - "fr": "Quand ce banc a-t-il ÊtÊ contrôlÊ pour la dernière fois ?", - "it": "Quando è stata verificata l’ultima volta questa panchina?", - "zh_Hans": "上æŦĄå¯ščŋ™ä¸Ēé•ŋæ¤…åŽžåœ°č°ƒæŸĨ是äģ€äšˆæ—ļ候īŧŸ", - "de": "Wann wurde diese Bank zuletzt ÃŧberprÃŧft?", - "ru": "КоĐŗĐ´Đ° ĐŋĐžŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐģи ŅŅ‚Ņƒ ŅĐēĐ°ĐŧĐĩĐšĐēŅƒ?", - "zh_Hant": "上一æŦĄæŽĸå¯Ÿé•ˇæ¤…æ˜¯äģ€éēŧ時候īŧŸ", - "pt_BR": "Quando esta bancada foi pesquisada pela Ãēltima vez?", - "pl": "Kiedy ostatnio badano tę ławkę?", - "pt": "Quando esta bancada foi pesquisada pela Ãēltima vez?" - }, - "render": { - "en": "This bench was last surveyed on {survey:date}", - "nl": "Deze bank is laatst gesurveyd op {survey:date}", - "fr": "Ce banc a ÊtÊ contrôlÊ pour la dernière fois le {survey:date}", - "it": "Questa panchina è stata controllata l’ultima volta in data {survey:date}", - "zh_Hans": "čŋ™ä¸Ēé•ŋ椅äēŽ {survey:date}最后一æŦĄåŽžåœ°č°ƒæŸĨ", - "de": "Diese Bank wurde zuletzt ÃŧberprÃŧft am {survey:date}", - "ru": "ПоŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐŊиĐĩ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ĐŋŅ€ĐžĐ˛ĐžĐ´Đ¸ĐģĐžŅŅŒ {survey:date}", - "zh_Hant": "é€™å€‹é•ˇæ¤…æœ€åžŒæ˜¯åœ¨ {survey:date} æŽĸæŸĨįš„", - "pt_BR": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}", - "pl": "Ławka ta była ostatnio badana w dniu {survey:date}", - "pt": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}" - }, - "freeform": { - "key": "survey:date", - "type": "date" - }, - "mappings": [ - { - "if": "survey:date:={_now:date}", - "then": "Surveyed today!" - } - ], - "id": "bench-survey:date" - } - ], - "icon": { + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "circle:#FE6F32;./assets/layers/bench/bench.svg" - }, - "iconSize": { + }, + "iconSize": { "render": "35,35,center" - }, - "color": { - "render": "#00f" - }, - "presets": [ - { - "tags": [ - "amenity=bench" - ], - "title": { - "en": "bench", - "de": "sitzbank", - "fr": "banc", - "nl": "zitbank", - "es": "banco", - "it": "panchina", - "ru": "cĐēĐ°ĐŧĐĩĐšĐēĐ°", - "id": "bangku", - "zh_Hans": "é•ŋ椅", - "nb_NO": "benk", - "zh_Hant": "é•ˇæ¤…", - "pt_BR": "banco", - "fi": "penkki", - "pl": "Ławka", - "pt": "banco" - }, - "presiceInput": { - "preferredBackground": "photo" - } - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity=bench", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "circle:#FE6F32;./assets/layers/bench/bench.svg" - }, - "iconSize": { - "render": "35,35,center" - }, - "location": [ - "point" - ] - } - ] + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/bench_at_pt/bench_at_pt.json b/assets/layers/bench_at_pt/bench_at_pt.json index 692ee8a3c..681aff3ad 100644 --- a/assets/layers/bench_at_pt/bench_at_pt.json +++ b/assets/layers/bench_at_pt/bench_at_pt.json @@ -1,174 +1,174 @@ { - "id": "bench_at_pt", - "name": { - "en": "Benches at public transport stops", - "de": "Sitzbänke bei Haltestellen", - "fr": "Bancs des arrÃĒts de transport en commun", - "nl": "Zitbanken aan bushaltes", - "es": "Bancos en una parada de transporte pÃēblico", - "hu": "Padok megÃĄllÃŗkban", - "it": "Panchine alle fermate del trasporto pubblico", - "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐ°Ņ… ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°", - "zh_Hans": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅", - "nb_NO": "Benker", - "zh_Hant": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…", - "pt_BR": "Bancos em pontos de transporte pÃēblico", - "pl": "Ławki na przystankach komunikacji miejskiej", - "pt": "Bancos em pontos de transporte pÃēblico" + "id": "bench_at_pt", + "name": { + "en": "Benches at public transport stops", + "de": "Sitzbänke bei Haltestellen", + "fr": "Bancs des arrÃĒts de transport en commun", + "nl": "Zitbanken aan bushaltes", + "es": "Bancos en una parada de transporte pÃēblico", + "hu": "Padok megÃĄllÃŗkban", + "it": "Panchine alle fermate del trasporto pubblico", + "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐ°Ņ… ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°", + "zh_Hans": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅", + "nb_NO": "Benker", + "zh_Hant": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…", + "pt_BR": "Bancos em pontos de transporte pÃēblico", + "pl": "Ławki na przystankach komunikacji miejskiej", + "pt": "Bancos em pontos de transporte pÃēblico" + }, + "minzoom": 14, + "source": { + "osmTags": { + "or": [ + "bench=yes", + "bench=stand_up_bench" + ] + } + }, + "title": { + "render": { + "en": "Bench", + "de": "Sitzbank", + "fr": "Banc", + "nl": "Zitbank", + "es": "Banco", + "hu": "Pad", + "it": "Panchina", + "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°", + "id": "Bangku", + "zh_Hans": "é•ŋ椅", + "nb_NO": "Benk", + "zh_Hant": "é•ˇæ¤…", + "pt_BR": "Banco", + "fi": "Penkki", + "pl": "Ławka", + "pt": "Banco" }, - "minzoom": 14, - "source": { - "osmTags": { - "or": [ - "bench=yes", - "bench=stand_up_bench" - ] - } - }, - "title": { - "render": { - "en": "Bench", - "de": "Sitzbank", - "fr": "Banc", - "nl": "Zitbank", - "es": "Banco", - "hu": "Pad", - "it": "Panchina", - "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°", - "id": "Bangku", - "zh_Hans": "é•ŋ椅", - "nb_NO": "Benk", - "zh_Hant": "é•ˇæ¤…", - "pt_BR": "Banco", - "fi": "Penkki", - "pl": "Ławka", - "pt": "Banco" + "mappings": [ + { + "if": { + "or": [ + "public_transport=platform", + "railway=platform", + "highway=bus_stop" + ] }, - "mappings": [ - { - "if": { - "or": [ - "public_transport=platform", - "railway=platform", - "highway=bus_stop" - ] - }, - "then": { - "en": "Bench at public transport stop", - "de": "Sitzbank bei Haltestelle", - "fr": "Banc d'un arrÃĒt de transport en commun", - "nl": "Zitbank aan een bushalte", - "hu": "Pad megÃĄllÃŗban", - "it": "Panchina alla fermata del trasporto pubblico", - "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐĩ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°", - "zh_Hans": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅", - "zh_Hant": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…", - "pt_BR": "Banco em ponto de transporte pÃēblico", - "pl": "Ławka na przystanku komunikacji miejskiej", - "pt": "Banco em ponto de transporte pÃēblico" - } - }, - { - "if": { - "and": [ - "amenity=shelter" - ] - }, - "then": { - "en": "Bench in shelter", - "de": "Sitzbank in Unterstand", - "fr": "Banc dans un abri", - "nl": "Zitbank in een schuilhokje", - "hu": "Pad fedett helyen", - "it": "Panchina in un riparo", - "zh_Hans": "在åē‡æŠ¤æ‰€įš„é•ŋ椅", - "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° в ŅƒĐēŅ€Ņ‹Ņ‚ии", - "zh_Hant": "æļŧäē­å…§įš„é•ˇæ¤…", - "pt_BR": "Banco em abrigo", - "pt": "Banco em abrigo" - } - } - ] - }, - "tagRenderings": [ - "images", - { - "render": { - "en": "{name}", - "de": "{name}", - "fr": "{name}", - "nl": "{name}", - "hu": "{name}", - "it": "{name}", - "ru": "{name}", - "id": "{name}", - "zh_Hans": "{name}", - "zh_Hant": "{name}", - "pt_BR": "{name}", - "fi": "{name}", - "pl": "{name}", - "pt": "{name}", - "eo": "{name}" - }, - "freeform": { - "key": "name" - }, - "id": "bench_at_pt-name" - }, - { - "render": { - "en": "Stand up bench", - "de": "Stehbank", - "fr": "Banc assis debout", - "nl": "Leunbank", - "it": "Panca in piedi", - "zh_Hans": "įĢ™įĢ‹é•ŋå‡ŗ", - "ru": "ВŅŅ‚Đ°ĐŊŅŒŅ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ", - "zh_Hant": "įĢ™įĢ‹é•ˇæ¤…" - }, - "freeform": { - "key": "bench", - "addExtraTags": [] - }, - "condition": { - "and": [ - "bench=stand_up_bench" - ] - }, - "id": "bench_at_pt-bench" + "then": { + "en": "Bench at public transport stop", + "de": "Sitzbank bei Haltestelle", + "fr": "Banc d'un arrÃĒt de transport en commun", + "nl": "Zitbank aan een bushalte", + "hu": "Pad megÃĄllÃŗban", + "it": "Panchina alla fermata del trasporto pubblico", + "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐĩ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°", + "zh_Hans": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅", + "zh_Hant": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…", + "pt_BR": "Banco em ponto de transporte pÃēblico", + "pl": "Ławka na przystanku komunikacji miejskiej", + "pt": "Banco em ponto de transporte pÃēblico" } - ], - "icon": { - "render": "./assets/themes/benches/bench_public_transport.svg" - }, - "width": { - "render": "8" - }, - "iconSize": { - "render": "35,35,center" - }, - "color": { - "render": "#00f" - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/benches/bench_public_transport.svg" - }, - "iconSize": { - "render": "35,35,center" - }, - "location": [ - "point" - ] + }, + { + "if": { + "and": [ + "amenity=shelter" + ] }, - { - "color": { - "render": "#00f" - }, - "width": { - "render": "8" - } + "then": { + "en": "Bench in shelter", + "de": "Sitzbank in Unterstand", + "fr": "Banc dans un abri", + "nl": "Zitbank in een schuilhokje", + "hu": "Pad fedett helyen", + "it": "Panchina in un riparo", + "zh_Hans": "在åē‡æŠ¤æ‰€įš„é•ŋ椅", + "ru": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° в ŅƒĐēŅ€Ņ‹Ņ‚ии", + "zh_Hant": "æļŧäē­å…§įš„é•ˇæ¤…", + "pt_BR": "Banco em abrigo", + "pt": "Banco em abrigo" } + } ] + }, + "tagRenderings": [ + "images", + { + "render": { + "en": "{name}", + "de": "{name}", + "fr": "{name}", + "nl": "{name}", + "hu": "{name}", + "it": "{name}", + "ru": "{name}", + "id": "{name}", + "zh_Hans": "{name}", + "zh_Hant": "{name}", + "pt_BR": "{name}", + "fi": "{name}", + "pl": "{name}", + "pt": "{name}", + "eo": "{name}" + }, + "freeform": { + "key": "name" + }, + "id": "bench_at_pt-name" + }, + { + "id": "bench_at_pt-bench_type", + "question": { + "en": "What kind of bench is this?", + "nl": "Wat voor soort bank is dit?" + }, + "mappings": [ + { + "if": "bench=yes", + "then": { + "en": "There is a normal, sit-down bench here" + } + }, + { + "if": "bench=stand_up_bench", + "then": { + "en": "Stand up bench", + "de": "Stehbank", + "fr": "Banc assis debout", + "nl": "Leunbank", + "it": "Panca in piedi", + "zh_Hans": "įĢ™įĢ‹é•ŋå‡ŗ", + "ru": "ВŅŅ‚Đ°ĐŊŅŒŅ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ", + "zh_Hant": "įĢ™įĢ‹é•ˇæ¤…" + } + }, + { + "if": "bench=no", + "then": { + "en": "There is no bench here" + } + } + ] + } + ], + "mapRendering": [ + { + "icon": { + "render": "./assets/themes/benches/bench_public_transport.svg" + }, + "iconSize": { + "render": "35,35,center" + }, + "location": [ + "point" + ] + }, + { + "color": { + "render": "#00f" + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/bicycle_library/bicycle_library.json b/assets/layers/bicycle_library/bicycle_library.json index a1465e55c..a4c78a05a 100644 --- a/assets/layers/bicycle_library/bicycle_library.json +++ b/assets/layers/bicycle_library/bicycle_library.json @@ -1,324 +1,299 @@ { - "id": "bicycle_library", - "name": { - "en": "Bicycle library", - "nl": "Fietsbibliotheek", - "fr": "VÊlothèque", - "it": "Bici in prestito", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", - "zh_Hant": "å–ŽčģŠåœ–書館", - "pt_BR": "Biblioteca de bicicleta", - "de": "Fahrradbibliothek", - "pt": "Biblioteca de bicicleta" + "id": "bicycle_library", + "name": { + "en": "Bicycle library", + "nl": "Fietsbibliotheek", + "fr": "VÊlothèque", + "it": "Bici in prestito", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", + "zh_Hant": "å–ŽčģŠåœ–書館", + "pt_BR": "Biblioteca de bicicleta", + "de": "Fahrradbibliothek", + "pt": "Biblioteca de bicicleta" + }, + "minzoom": 8, + "source": { + "osmTags": "amenity=bicycle_library" + }, + "title": { + "render": { + "en": "Bicycle library", + "nl": "Fietsbibliotheek", + "fr": "VÊlothèque", + "it": "Bici in prestito", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", + "zh_Hant": "å–ŽčģŠåœ–書館", + "pt_BR": "Biblioteca de bicicleta", + "de": "Fahrradbibliothek", + "pt": "Biblioteca de bicicleta" }, - "minzoom": 8, - "source": { - "osmTags": "amenity=bicycle_library" - }, - "title": { - "render": { - "en": "Bicycle library", - "nl": "Fietsbibliotheek", - "fr": "VÊlothèque", - "it": "Bici in prestito", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", - "zh_Hant": "å–ŽčģŠåœ–書館", - "pt_BR": "Biblioteca de bicicleta", - "de": "Fahrradbibliothek", - "pt": "Biblioteca de bicicleta" - }, - "mappings": [ - { - "if": "name~*", - "then": "{name}" - } - ] - }, - "titleIcons": [ - { - "condition": { - "or": [ - "service:bicycle:pump=yes", - "service:bicycle:pump=separate" - ] - }, - "render": "" - }, - "defaults" - ], - "description": { - "en": "A facility where bicycles can be lent for longer period of times", - "nl": "Een plaats waar men voor langere tijd een fiets kan lenen", - "fr": "Un lieu oÚ des vÊlos peuvent ÃĒtre empruntÊs pour un temps plus long", - "hu": "LÊtesítmÊny, ahonnan kerÊkpÃĄr kÃļlcsÃļnÃļzhető hosszabb időre", - "it": "Una struttura dove le biciclette possono essere prestate per periodi di tempo piÚ lunghi", - "de": "Eine Einrichtung, in der Fahrräder fÃŧr längere Zeit geliehen werden kÃļnnen", - "ru": "ĐŖŅ‡Ņ€ĐĩĐļĐ´ĐĩĐŊиĐĩ, ĐŗĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ ĐŧĐžĐļĐĩŅ‚ ĐąŅ‹Ņ‚ŅŒ Đ°Ņ€ĐĩĐŊдОваĐŊ ĐŊĐ° йОĐģĐĩĐĩ Đ´ĐģиŅ‚ĐĩĐģŅŒĐŊŅ‹Đš ŅŅ€ĐžĐē", - "zh_Hant": "čƒŊå¤ é•ˇæœŸį§Ÿį”¨å–ŽčģŠįš„設æ–Ŋ", - "pt_BR": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos", - "pl": "Obiekt, w ktÃŗrym rowery moÅŧna wypoÅŧyczyć na dłuÅŧszy okres", - "pt": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos" - }, - "tagRenderings": [ - "images", - { - "question": { - "en": "What is the name of this bicycle library?", - "nl": "Wat is de naam van deze fietsbieb?", - "fr": "Quel est le nom de cette vÊlothèque ?", - "it": "Qual è il nome di questo “bici in prestito”?", - "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°?", - "nb_NO": "Hva heter dette sykkelbiblioteket?", - "zh_Hant": "這個喎čģŠåœ–書館įš„名į¨ąæ˜¯īŧŸ", - "pt_BR": "Qual o nome desta biblioteca de bicicleta?", - "de": "Wie lautet der Name dieser Fahrradbibliothek?", - "pt": "Qual o nome desta biblioteca de bicicleta?" - }, - "render": { - "en": "This bicycle library is called {name}", - "nl": "Deze fietsbieb heet {name}", - "fr": "Cette vÊlothèque s'appelle {name}", - "it": "Il “bici in prestito” è chiamato {name}", - "ru": "Đ­Ņ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ° ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}", - "nb_NO": "Dette sykkelbiblioteket heter {name}", - "zh_Hant": "這個喎čģŠåœ–書館åĢ做 {name}", - "pt_BR": "Esta biblioteca de bicicleta Ê chamada de {name}", - "de": "Diese Fahrradbibliothek heißt {name}", - "pt": "Esta biblioteca de bicicleta Ê chamada de {name}" - }, - "freeform": { - "key": "name" - }, - "id": "bicycle_library-name" - }, - "website", - "phone", - "email", - "opening_hours", - { - "question": { - "en": "How much does lending a bicycle cost?", - "nl": "Hoeveel kost het huren van een fiets?", - "fr": "Combien coÃģte l'emprunt d'un vÊlo ?", - "hu": "Mennyibe kerÃŧl egy kerÊkpÃĄr kÃļlcsÃļnzÊse?", - "it": "Quanto costa il prestito di una bicicletta?", - "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?", - "de": "Wie viel kostet das Ausleihen eines Fahrrads?", - "nb_NO": "Hvor mye koster det ÃĨ leie en sykkel?", - "zh_Hant": "į§Ÿį”¨å–ŽčģŠįš„č˛ģį”¨å¤šå°‘īŧŸ", - "pt_BR": "Quanto custa um emprÊstimo de bicicleta?", - "pt": "Quanto custa um emprÊstimo de bicicleta?" - }, - "render": { - "en": "Lending a bicycle costs {charge}", - "nl": "Een fiets huren kost {charge}", - "fr": "Emprunter un vÊlo coÃģte {charge}", - "hu": "Egy kerÊkpÃĄr kÃļlcsÃļnzÊse {charge}", - "it": "Il prestito di una bicicletta costa {charge}", - "ru": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ Đ°Ņ€ĐĩĐŊĐ´Ņ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° {charge}", - "de": "Das Ausleihen eines Fahrrads kostet {charge}", - "nb_NO": "Sykkelleie koster {charge}", - "zh_Hant": "į§Ÿå€Ÿå–ŽčģŠéœ€čĻ {charge}", - "pt_BR": "Custos de emprÊstimo de bicicleta {charge}", - "pt": "Custos de emprÊstimo de bicicleta {charge}" - }, - "freeform": { - "key": "charge", - "addExtraTags": [ - "fee=yes" - ] - }, - "mappings": [ - { - "if": { - "and": [ - "fee=no", - "charge=" - ] - }, - "then": { - "en": "Lending a bicycle is free", - "nl": "Een fiets huren is gratis", - "fr": "L'emprunt de vÊlo est gratuit", - "hu": "A kerÊkpÃĄrkÃļlcsÃļnzÊs ingyenes", - "it": "Il prestito di una bicicletta è gratuito", - "de": "Das Ausleihen eines Fahrrads ist kostenlos", - "ru": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐĩĐŊ", - "nb_NO": "Det er gratis ÃĨ leie en sykkel", - "zh_Hant": "į§Ÿå€Ÿå–ŽčģŠå…č˛ģ", - "pt_BR": "Emprestar uma bicicleta Ê grÃĄtis", - "pt": "Emprestar uma bicicleta Ê grÃĄtis" - } - }, - { - "if": { - "and": [ - "fee=yes", - "charge=â‚Ŧ20warranty + â‚Ŧ20/year" - ] - }, - "then": { - "en": "Lending a bicycle costs â‚Ŧ20/year and â‚Ŧ20 warranty", - "nl": "Een fiets huren kost â‚Ŧ20/jaar en â‚Ŧ20 waarborg", - "fr": "Emprunter un vÊlo coÃģte 20 â‚Ŧ/an et 20 â‚Ŧ de garantie", - "it": "Il prestito di una bicicletta costa 20 â‚Ŧ/anno piÚ 20 â‚Ŧ di garanzia", - "de": "Das Ausleihen eines Fahrrads kostet 20â‚Ŧ pro Jahr und 20â‚Ŧ GebÃŧhr", - "zh_Hant": "į§Ÿå€Ÿå–ŽčģŠåƒšéŒĸ â‚Ŧ20/year 與 â‚Ŧ20 äŋč­‰é‡‘", - "ru": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° ŅŅ‚ОиŅ‚ â‚Ŧ20/ĐŗОд и â‚Ŧ20 СаĐģĐžĐŗ", - "pt_BR": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia", - "pt": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia" - } - } - ], - "id": "bicycle_library-charge" - }, - { - "id": "bicycle-library-target-group", - "question": { - "en": "Who can lend bicycles here?", - "nl": "Voor wie worden hier fietsen aangeboden?", - "fr": "Qui peut emprunter des vÊlos ici ?", - "hu": "Ki kÃļlcsÃļnÃļzhet itt kerÊkpÃĄrt?", - "it": "Chi puÃ˛ prendere in prestito le biciclette qua?", - "zh_Hans": "č°å¯äģĨäģŽčŋ™é‡Œå€Ÿč‡Ē行čŊĻīŧŸ", - "de": "Wer kann hier Fahrräder ausleihen?", - "ru": "КŅ‚Đž СдĐĩŅŅŒ ĐŧĐžĐļĐĩŅ‚ Đ°Ņ€ĐĩĐŊдОваŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´?", - "zh_Hant": "čĒ°å¯äģĨ在這čŖĄį§Ÿå–ŽčģŠīŧŸ", - "pt_BR": "Quem pode emprestar bicicletas aqui?", - "pt": "Quem pode emprestar bicicletas aqui?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "bicycle_library:for=child", - "then": { - "nl": "Aanbod voor kinderen", - "en": "Bikes for children available", - "fr": "VÊlos pour enfants disponibles", - "hu": "", - "it": "Sono disponibili biciclette per bambini", - "de": "Fahrräder fÃŧr Kinder verfÃŧgbar", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ Đ´ĐĩŅ‚ŅĐēиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", - "zh_Hant": "提䞛兒įĢĨå–ŽčģŠ", - "pt_BR": "Bicicletas para crianças disponíveis", - "pt": "Bicicletas para crianças disponíveis" - } - }, - { - "if": "bicycle_library:for=adult", - "then": { - "nl": "Aanbod voor volwassenen", - "en": "Bikes for adult available", - "fr": "VÊlos pour adultes disponibles", - "it": "Sono disponibili biciclette per adulti", - "de": "Fahrräder fÃŧr Erwachsene verfÃŧgbar", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…", - "zh_Hant": "有提䞛成äēēå–ŽčģŠ", - "pt_BR": "Bicicletas para adulto disponíveis", - "pt": "Bicicletas para adulto disponíveis" - } - }, - { - "if": "bicycle_library:for=disabled", - "then": { - "nl": "Aanbod voor personen met een handicap", - "en": "Bikes for disabled persons available", - "fr": "VÊlos pour personnes handicapÊes disponibles", - "it": "Sono disponibili biciclette per disabili", - "de": "Fahrräder fÃŧr Behinderte verfÃŧgbar", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ ĐģŅŽĐ´ĐĩĐš Ņ ĐžĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đŧи вОСĐŧĐžĐļĐŊĐžŅŅ‚ŅĐŧи", - "zh_Hant": "æœ‰æäž›čĄŒå‹•ä¸äžŋäēēåŖĢįš„å–ŽčģŠ", - "pt_BR": "Bicicletas para deficientes físicos disponíveis", - "pt": "Bicicletas para deficientes físicos disponíveis" - } - } - ] - }, - "description" - ], - "presets": [ - { - "title": { - "en": "Fietsbibliotheek", - "nl": "Bicycle library", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", - "zh_Hant": "č‡Ē行čģŠåœ–書館 ( Fietsbibliotheek)", - "it": "Bici in prestito", - "fr": "VÊlothèque", - "pt_BR": "Biblioteca de bicicletas", - "de": "Fahrradbibliothek", - "pt": "Biblioteca de bicicletas", - "eo": "Fietsbibliotheek" - }, - "tags": [ - "amenity=bicycle_library" - ], - "description": { - "nl": "Een fietsbieb heeft een collectie fietsen die leden mogen lenen", - "en": "A bicycle library has a collection of bikes which can be lent", - "fr": "Une vÊlothèque a une flotte de vÊlos qui peuvent ÃĒtre empruntÊs", - "it": "Una ciclo-teca o ÂĢbici in prestitoÂģ ha una collezione di bici che possno essere prestate", - "ru": "В вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊОК йийĐģиОŅ‚ĐĩĐēĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ Đ°Ņ€ĐĩĐŊĐ´Ņ‹", - "zh_Hant": "å–ŽčģŠåœ–書館有一大扚喎čģŠäž›äēēį§Ÿå€Ÿ", - "de": "Eine Fahrradbibliothek verfÃŧgt Ãŧber eine Sammlung von Fahrrädern, die ausgeliehen werden kÃļnnen" - } - } - ], - "icon": { - "render": "pin:#22ff55;./assets/layers/bicycle_library/bicycle_library.svg" - }, - "iconOverlays": [ - { - "if": "opening_hours~*", - "then": "isOpen", - "badge": true - }, - { - "if": "service:bicycle:pump=yes", - "then": "circle:#e2783d;./assets/layers/bike_repair_station/pump.svg", - "badge": true - } - ], - "width": { - "render": "1" - }, - "iconSize": { - "render": "50,50,bottom" - }, - "color": { - "render": "#c00" - }, - "wayHandling": 2, - "mapRendering": [ - { - "icon": { - "render": "pin:#22ff55;./assets/layers/bicycle_library/bicycle_library.svg" - }, - "iconBadges": [ - { - "if": "opening_hours~*", - "then": "isOpen" - }, - { - "if": "service:bicycle:pump=yes", - "then": "circle:#e2783d;./assets/layers/bike_repair_station/pump.svg" - } - ], - "iconSize": { - "render": "50,50,bottom" - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#c00" - }, - "width": { - "render": "1" - } - } + "mappings": [ + { + "if": "name~*", + "then": "{name}" + } ] + }, + "titleIcons": [ + { + "condition": { + "or": [ + "service:bicycle:pump=yes", + "service:bicycle:pump=separate" + ] + }, + "render": "" + }, + "defaults" + ], + "description": { + "en": "A facility where bicycles can be lent for longer period of times", + "nl": "Een plaats waar men voor langere tijd een fiets kan lenen", + "fr": "Un lieu oÚ des vÊlos peuvent ÃĒtre empruntÊs pour un temps plus long", + "hu": "LÊtesítmÊny, ahonnan kerÊkpÃĄr kÃļlcsÃļnÃļzhető hosszabb időre", + "it": "Una struttura dove le biciclette possono essere prestate per periodi di tempo piÚ lunghi", + "de": "Eine Einrichtung, in der Fahrräder fÃŧr längere Zeit geliehen werden kÃļnnen", + "ru": "ĐŖŅ‡Ņ€ĐĩĐļĐ´ĐĩĐŊиĐĩ, ĐŗĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ ĐŧĐžĐļĐĩŅ‚ ĐąŅ‹Ņ‚ŅŒ Đ°Ņ€ĐĩĐŊдОваĐŊ ĐŊĐ° йОĐģĐĩĐĩ Đ´ĐģиŅ‚ĐĩĐģŅŒĐŊŅ‹Đš ŅŅ€ĐžĐē", + "zh_Hant": "čƒŊå¤ é•ˇæœŸį§Ÿį”¨å–ŽčģŠįš„設æ–Ŋ", + "pt_BR": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos", + "pl": "Obiekt, w ktÃŗrym rowery moÅŧna wypoÅŧyczyć na dłuÅŧszy okres", + "pt": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos" + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "What is the name of this bicycle library?", + "nl": "Wat is de naam van deze fietsbieb?", + "fr": "Quel est le nom de cette vÊlothèque ?", + "it": "Qual è il nome di questo “bici in prestito”?", + "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°?", + "nb_NO": "Hva heter dette sykkelbiblioteket?", + "zh_Hant": "這個喎čģŠåœ–書館įš„名į¨ąæ˜¯īŧŸ", + "pt_BR": "Qual o nome desta biblioteca de bicicleta?", + "de": "Wie lautet der Name dieser Fahrradbibliothek?", + "pt": "Qual o nome desta biblioteca de bicicleta?" + }, + "render": { + "en": "This bicycle library is called {name}", + "nl": "Deze fietsbieb heet {name}", + "fr": "Cette vÊlothèque s'appelle {name}", + "it": "Il “bici in prestito” è chiamato {name}", + "ru": "Đ­Ņ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ° ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}", + "nb_NO": "Dette sykkelbiblioteket heter {name}", + "zh_Hant": "這個喎čģŠåœ–書館åĢ做 {name}", + "pt_BR": "Esta biblioteca de bicicleta Ê chamada de {name}", + "de": "Diese Fahrradbibliothek heißt {name}", + "pt": "Esta biblioteca de bicicleta Ê chamada de {name}" + }, + "freeform": { + "key": "name" + }, + "id": "bicycle_library-name" + }, + "website", + "phone", + "email", + "opening_hours", + { + "question": { + "en": "How much does lending a bicycle cost?", + "nl": "Hoeveel kost het huren van een fiets?", + "fr": "Combien coÃģte l'emprunt d'un vÊlo ?", + "hu": "Mennyibe kerÃŧl egy kerÊkpÃĄr kÃļlcsÃļnzÊse?", + "it": "Quanto costa il prestito di una bicicletta?", + "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?", + "de": "Wie viel kostet das Ausleihen eines Fahrrads?", + "nb_NO": "Hvor mye koster det ÃĨ leie en sykkel?", + "zh_Hant": "į§Ÿį”¨å–ŽčģŠįš„č˛ģį”¨å¤šå°‘īŧŸ", + "pt_BR": "Quanto custa um emprÊstimo de bicicleta?", + "pt": "Quanto custa um emprÊstimo de bicicleta?" + }, + "render": { + "en": "Lending a bicycle costs {charge}", + "nl": "Een fiets huren kost {charge}", + "fr": "Emprunter un vÊlo coÃģte {charge}", + "hu": "Egy kerÊkpÃĄr kÃļlcsÃļnzÊse {charge}", + "it": "Il prestito di una bicicletta costa {charge}", + "ru": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ Đ°Ņ€ĐĩĐŊĐ´Ņ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° {charge}", + "de": "Das Ausleihen eines Fahrrads kostet {charge}", + "nb_NO": "Sykkelleie koster {charge}", + "zh_Hant": "į§Ÿå€Ÿå–ŽčģŠéœ€čĻ {charge}", + "pt_BR": "Custos de emprÊstimo de bicicleta {charge}", + "pt": "Custos de emprÊstimo de bicicleta {charge}" + }, + "freeform": { + "key": "charge", + "addExtraTags": [ + "fee=yes" + ] + }, + "mappings": [ + { + "if": { + "and": [ + "fee=no", + "charge=" + ] + }, + "then": { + "en": "Lending a bicycle is free", + "nl": "Een fiets huren is gratis", + "fr": "L'emprunt de vÊlo est gratuit", + "hu": "A kerÊkpÃĄrkÃļlcsÃļnzÊs ingyenes", + "it": "Il prestito di una bicicletta è gratuito", + "de": "Das Ausleihen eines Fahrrads ist kostenlos", + "ru": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐĩĐŊ", + "nb_NO": "Det er gratis ÃĨ leie en sykkel", + "zh_Hant": "į§Ÿå€Ÿå–ŽčģŠå…č˛ģ", + "pt_BR": "Emprestar uma bicicleta Ê grÃĄtis", + "pt": "Emprestar uma bicicleta Ê grÃĄtis" + } + }, + { + "if": { + "and": [ + "fee=yes", + "charge=â‚Ŧ20warranty + â‚Ŧ20/year" + ] + }, + "then": { + "en": "Lending a bicycle costs â‚Ŧ20/year and â‚Ŧ20 warranty", + "nl": "Een fiets huren kost â‚Ŧ20/jaar en â‚Ŧ20 waarborg", + "fr": "Emprunter un vÊlo coÃģte 20 â‚Ŧ/an et 20 â‚Ŧ de garantie", + "it": "Il prestito di una bicicletta costa 20 â‚Ŧ/anno piÚ 20 â‚Ŧ di garanzia", + "de": "Das Ausleihen eines Fahrrads kostet 20â‚Ŧ pro Jahr und 20â‚Ŧ GebÃŧhr", + "zh_Hant": "į§Ÿå€Ÿå–ŽčģŠåƒšéŒĸ â‚Ŧ20/year 與 â‚Ŧ20 äŋč­‰é‡‘", + "ru": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° ŅŅ‚ОиŅ‚ â‚Ŧ20/ĐŗОд и â‚Ŧ20 СаĐģĐžĐŗ", + "pt_BR": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia", + "pt": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia" + } + } + ], + "id": "bicycle_library-charge" + }, + { + "id": "bicycle-library-target-group", + "question": { + "en": "Who can lend bicycles here?", + "nl": "Voor wie worden hier fietsen aangeboden?", + "fr": "Qui peut emprunter des vÊlos ici ?", + "hu": "Ki kÃļlcsÃļnÃļzhet itt kerÊkpÃĄrt?", + "it": "Chi puÃ˛ prendere in prestito le biciclette qua?", + "zh_Hans": "č°å¯äģĨäģŽčŋ™é‡Œå€Ÿč‡Ē行čŊĻīŧŸ", + "de": "Wer kann hier Fahrräder ausleihen?", + "ru": "КŅ‚Đž СдĐĩŅŅŒ ĐŧĐžĐļĐĩŅ‚ Đ°Ņ€ĐĩĐŊдОваŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´?", + "zh_Hant": "čĒ°å¯äģĨ在這čŖĄį§Ÿå–ŽčģŠīŧŸ", + "pt_BR": "Quem pode emprestar bicicletas aqui?", + "pt": "Quem pode emprestar bicicletas aqui?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "bicycle_library:for=child", + "then": { + "nl": "Aanbod voor kinderen", + "en": "Bikes for children available", + "fr": "VÊlos pour enfants disponibles", + "hu": "", + "it": "Sono disponibili biciclette per bambini", + "de": "Fahrräder fÃŧr Kinder verfÃŧgbar", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ Đ´ĐĩŅ‚ŅĐēиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", + "zh_Hant": "提䞛兒įĢĨå–ŽčģŠ", + "pt_BR": "Bicicletas para crianças disponíveis", + "pt": "Bicicletas para crianças disponíveis" + } + }, + { + "if": "bicycle_library:for=adult", + "then": { + "nl": "Aanbod voor volwassenen", + "en": "Bikes for adult available", + "fr": "VÊlos pour adultes disponibles", + "it": "Sono disponibili biciclette per adulti", + "de": "Fahrräder fÃŧr Erwachsene verfÃŧgbar", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…", + "zh_Hant": "有提䞛成äēēå–ŽčģŠ", + "pt_BR": "Bicicletas para adulto disponíveis", + "pt": "Bicicletas para adulto disponíveis" + } + }, + { + "if": "bicycle_library:for=disabled", + "then": { + "nl": "Aanbod voor personen met een handicap", + "en": "Bikes for disabled persons available", + "fr": "VÊlos pour personnes handicapÊes disponibles", + "it": "Sono disponibili biciclette per disabili", + "de": "Fahrräder fÃŧr Behinderte verfÃŧgbar", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ ĐģŅŽĐ´ĐĩĐš Ņ ĐžĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đŧи вОСĐŧĐžĐļĐŊĐžŅŅ‚ŅĐŧи", + "zh_Hant": "æœ‰æäž›čĄŒå‹•ä¸äžŋäēēåŖĢįš„å–ŽčģŠ", + "pt_BR": "Bicicletas para deficientes físicos disponíveis", + "pt": "Bicicletas para deficientes físicos disponíveis" + } + } + ] + }, + "description" + ], + "presets": [ + { + "title": { + "en": "Fietsbibliotheek", + "nl": "Bicycle library", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", + "zh_Hant": "č‡Ē行čģŠåœ–書館 ( Fietsbibliotheek)", + "it": "Bici in prestito", + "fr": "VÊlothèque", + "pt_BR": "Biblioteca de bicicletas", + "de": "Fahrradbibliothek", + "pt": "Biblioteca de bicicletas", + "eo": "Fietsbibliotheek" + }, + "tags": [ + "amenity=bicycle_library" + ], + "description": { + "nl": "Een fietsbieb heeft een collectie fietsen die leden mogen lenen", + "en": "A bicycle library has a collection of bikes which can be lent", + "fr": "Une vÊlothèque a une flotte de vÊlos qui peuvent ÃĒtre empruntÊs", + "it": "Una ciclo-teca o ÂĢbici in prestitoÂģ ha una collezione di bici che possno essere prestate", + "ru": "В вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊОК йийĐģиОŅ‚ĐĩĐēĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ Đ°Ņ€ĐĩĐŊĐ´Ņ‹", + "zh_Hant": "å–ŽčģŠåœ–書館有一大扚喎čģŠäž›äēēį§Ÿå€Ÿ", + "de": "Eine Fahrradbibliothek verfÃŧgt Ãŧber eine Sammlung von Fahrrädern, die ausgeliehen werden kÃļnnen" + } + } + ], + "mapRendering": [ + { + "icon": { + "render": "pin:#22ff55;./assets/layers/bicycle_library/bicycle_library.svg" + }, + "iconBadges": [ + { + "if": "opening_hours~*", + "then": "isOpen" + }, + { + "if": "service:bicycle:pump=yes", + "then": "circle:#e2783d;./assets/layers/bike_repair_station/pump.svg" + } + ], + "iconSize": { + "render": "50,50,bottom" + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": { + "render": "#c00" + }, + "width": { + "render": "1" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json b/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json index 8cb34bda5..4fb0991ad 100644 --- a/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json +++ b/assets/layers/bicycle_tube_vending_machine/bicycle_tube_vending_machine.json @@ -1,6 +1,54 @@ { - "id": "bicycle_tube_vending_machine", - "name": { + "id": "bicycle_tube_vending_machine", + "name": { + "en": "Bicycle tube vending machine", + "nl": "Fietsbanden-verkoopsautomaat", + "fr": "Distributeur automatique de chambre à air de vÊlo", + "it": "Distributore automatico di camere d’aria per bici", + "de": "Fahrradschlauch-Automat", + "ru": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов", + "zh_Hant": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ", + "pt_BR": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", + "pt": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" + }, + "title": { + "render": { + "en": "Bicycle tube vending machine", + "nl": "Fietsbanden-verkoopsautomaat", + "fr": "Distributeur automatique de chambre à air de vÊlo", + "it": "Distributore automatico di camere d’aria per bici", + "de": "Fahrradschlauch-Automat", + "ru": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов", + "zh_Hant": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ", + "pt_BR": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", + "pt": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" + }, + "mappings": [ + { + "if": "name~*", + "then": "Bicycle tube vending machine {name}" + } + ] + }, + "titleIcons": [ + { + "render": "", + "condition": "operator=De Fietsambassade Gent" + }, + "defaults" + ], + "source": { + "osmTags": { + "and": [ + "amenity=vending_machine", + "vending~.*bicycle_tube.*" + ] + } + }, + "minzoom": 13, + "presets": [ + { + "title": { "en": "Bicycle tube vending machine", "nl": "Fietsbanden-verkoopsautomaat", "fr": "Distributeur automatique de chambre à air de vÊlo", @@ -10,296 +58,231 @@ "zh_Hant": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ", "pt_BR": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", "pt": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" - }, - "title": { - "render": { - "en": "Bicycle tube vending machine", - "nl": "Fietsbanden-verkoopsautomaat", - "fr": "Distributeur automatique de chambre à air de vÊlo", - "it": "Distributore automatico di camere d’aria per bici", - "de": "Fahrradschlauch-Automat", - "ru": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов", - "zh_Hant": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ", - "pt_BR": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", - "pt": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" - }, - "mappings": [ - { - "if": "name~*", - "then": "Bicycle tube vending machine {name}" - } - ] - }, - "titleIcons": [ + }, + "tags": [ + "amenity=vending_machine", + "vending=bicycle_tube", + "vending:bicycle_tube=yes" + ] + } + ], + "tagRenderings": [ + "images", + { + "question": { + "en": "Is this vending machine still operational?", + "nl": "Is deze verkoopsautomaat nog steeds werkende?", + "fr": "Cette machine est-elle encore opÊrationelle ?", + "it": "Questo distributore automatico funziona ancora?", + "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?", + "de": "Ist dieser Automat noch in Betrieb?", + "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģæœ‰é‹äŊœå—ŽīŧŸ", + "pt_BR": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?", + "pt": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?" + }, + "render": { + "en": "The operational status is {operational_status}", + "nl": "Deze verkoopsautomaat is {operational_status}", + "fr": "L'Êtat opÊrationnel est {operational_status}", + "it": "Lo stato operativo è {operational_status}", + "de": "Der Betriebszustand ist {operational_status}", + "ru": "РайОŅ‡Đ¸Đš ŅŅ‚Đ°Ņ‚ŅƒŅ: {operational_status}", + "zh_Hant": "運äŊœį‹€æ…‹æ˜¯ {operational_status}", + "pt_BR": "O estado operacional Ê: {operational_status}", + "pt": "O estado operacional Ê: {operational_status}" + }, + "freeform": { + "key": "operational_status" + }, + "mappings": [ { - "render": "", - "condition": "operator=De Fietsambassade Gent" + "if": "operational_status=", + "then": { + "en": "This vending machine works", + "nl": "Deze verkoopsautomaat werkt", + "fr": "Le distributeur automatique fonctionne", + "hu": "Az automata mÅąkÃļdik", + "it": "Il distributore automatico funziona", + "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚", + "zh_Hans": "čŋ™ä¸Ē借čŋ˜æœēæ­Ŗ常åˇĨäŊœ", + "de": "Dieser Automat funktioniert", + "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģé‹äŊœ", + "pt_BR": "Esta mÃĄquina de venda automÃĄtica funciona", + "pt": "Esta mÃĄquina de venda automÃĄtica funciona" + } }, - "defaults" - ], - "icon": { + { + "if": "operational_status=broken", + "then": { + "en": "This vending machine is broken", + "nl": "Deze verkoopsautomaat is kapot", + "fr": "Le distributeur automatique est en panne", + "hu": "Az automata elromlott", + "it": "Il distributore automatico è guasto", + "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ ŅĐģĐžĐŧĐ°ĐŊ", + "zh_Hans": "čŋ™ä¸Ē借čŋ˜æœēåˇ˛įģæŸå", + "de": "Dieser Automat ist kaputt", + "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸæ˛’æœ‰é‹äŊœäē†", + "pt_BR": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada", + "pt": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada" + } + }, + { + "if": "operational_status=closed", + "then": { + "en": "This vending machine is closed", + "nl": "Deze verkoopsautomaat is uitgeschakeld", + "fr": "Le distributeur automatique est fermÊ", + "hu": "Az automata zÃĄrva van", + "it": "Il distributore automatico è spento", + "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ СаĐēŅ€Ņ‹Ņ‚", + "zh_Hans": "čŋ™ä¸Ē借čŋ˜æœēčĸĢå…ŗ闭äē†", + "de": "Dieser Automat ist geschlossen", + "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸåˇ˛įļ“關閉äē†", + "pt_BR": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada", + "pt": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada" + } + } + ], + "id": "Still in use?" + }, + { + "question": "How much does a bicycle tube cost?", + "render": "A bicycle tube costs {charge}", + "freeform": { + "key": "charge" + }, + "id": "bicycle_tube_vending_machine-charge" + }, + { + "id": "vending-machine-payment-methods", + "question": "How can one pay at this tube vending machine?", + "mappings": [ + { + "if": "payment:coins=yes", + "ifnot": "payment:coins=no", + "then": "Payment with coins is possible" + }, + { + "if": "payment:notes=yes", + "ifnot": "payment:notes=no", + "then": "Payment with notes is possible" + }, + { + "if": "payment:cards=yes", + "ifnot": "payment:cards=no", + "then": "Payment with cards is possible" + } + ], + "multiAnswer": true + }, + { + "question": "Which brand of tubes are sold here?", + "freeform": { + "key": "brand" + }, + "render": "{brand} tubes are sold here", + "mappings": [ + { + "if": "brand=Continental", + "then": "Continental tubes are sold here" + }, + { + "if": "brand=Schwalbe", + "then": "Schwalbe tubes are sold here" + } + ], + "multiAnswer": true, + "id": "bicycle_tube_vending_machine-brand" + }, + { + "question": "Who maintains this vending machine?", + "render": "This vending machine is maintained by {operator}", + "mappings": [ + { + "if": "operator=Schwalbe", + "then": "Maintained by Schwalbe" + }, + { + "if": "operator=Continental", + "then": "Maintained by Continental" + } + ], + "freeform": { + "key": "operator" + }, + "id": "bicycle_tube_vending_machine-operator" + }, + { + "id": "bicycle_tube_vending_maching-other-items", + "question": "Are other bicycle bicycle accessories sold here?", + "mappings": [ + { + "if": "vending:bicycle_light=yes", + "ifnot": "vending:bicycle_light=no", + "then": "Bicycle lights are sold here" + }, + { + "if": "vending:gloves=yes", + "ifnot": "vending:gloves=no", + "then": "Gloves are sold here" + }, + { + "if": "vending:bicycle_repair_kit=yes", + "ifnot": "vending:bicycle_repair_kit=no", + "then": "Bicycle repair kits are sold here" + }, + { + "if": "vending:bicycle_pump=yes", + "ifnot": "vending:bicycle_pump=no", + "then": "Bicycle pumps are sold here" + }, + { + "if": "vending:bicycle_lock=yes", + "ifnot": "vending:bicycle_lock=no", + "then": "Bicycle locks are sold here" + } + ], + "multiAnswer": true + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] + }, + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "pin:#ffffff;./assets/layers/bicycle_tube_vending_machine/pinIcon.svg" - }, - "iconOverlays": [ + }, + "iconBadges": [ { - "if": { - "or": [ - "operational_status=broken", - "operational_status=closed" - ] - }, - "then": "close:#c33" - } - ], - "iconSize": "50,50,bottom", - "source": { - "osmTags": { - "and": [ - "amenity=vending_machine", - "vending~.*bicycle_tube.*" + "if": { + "or": [ + "operational_status=broken", + "operational_status=closed" ] + }, + "then": "close:#c33" } + ], + "iconSize": "50,50,bottom", + "location": [ + "point", + "centroid" + ] }, - "minzoom": 13, - "wayHandling": 2, - "presets": [ - { - "title": { - "en": "Bicycle tube vending machine", - "nl": "Fietsbanden-verkoopsautomaat", - "fr": "Distributeur automatique de chambre à air de vÊlo", - "it": "Distributore automatico di camere d’aria per bici", - "de": "Fahrradschlauch-Automat", - "ru": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов", - "zh_Hant": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ", - "pt_BR": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", - "pt": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" - }, - "tags": [ - "amenity=vending_machine", - "vending=bicycle_tube", - "vending:bicycle_tube=yes" - ] - } - ], - "color": "#6bc4f7", - "tagRenderings": [ - "images", - { - "question": { - "en": "Is this vending machine still operational?", - "nl": "Is deze verkoopsautomaat nog steeds werkende?", - "fr": "Cette machine est-elle encore opÊrationelle ?", - "it": "Questo distributore automatico funziona ancora?", - "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?", - "de": "Ist dieser Automat noch in Betrieb?", - "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģæœ‰é‹äŊœå—ŽīŧŸ", - "pt_BR": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?", - "pt": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?" - }, - "render": { - "en": "The operational status is {operational_status", - "nl": "Deze verkoopsautomaat is {operational_status}", - "fr": "L'Êtat opÊrationnel est {operational_status}", - "it": "Lo stato operativo è {operational_status}", - "de": "Der Betriebszustand ist {operational_status", - "ru": "РайОŅ‡Đ¸Đš ŅŅ‚Đ°Ņ‚ŅƒŅ: {operational_status", - "zh_Hant": "運äŊœį‹€æ…‹æ˜¯ {operational_status", - "pt_BR": "O estado operacional Ê: {operational_status", - "pt": "O estado operacional Ê: {operational_status" - }, - "freeform": { - "key": "operational_status" - }, - "mappings": [ - { - "if": "operational_status=", - "then": { - "en": "This vending machine works", - "nl": "Deze verkoopsautomaat werkt", - "fr": "Le distributeur automatique fonctionne", - "hu": "Az automata mÅąkÃļdik", - "it": "Il distributore automatico funziona", - "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚", - "zh_Hans": "čŋ™ä¸Ē借čŋ˜æœēæ­Ŗ常åˇĨäŊœ", - "de": "Dieser Automat funktioniert", - "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģé‹äŊœ", - "pt_BR": "Esta mÃĄquina de venda automÃĄtica funciona", - "pt": "Esta mÃĄquina de venda automÃĄtica funciona" - } - }, - { - "if": "operational_status=broken", - "then": { - "en": "This vending machine is broken", - "nl": "Deze verkoopsautomaat is kapot", - "fr": "Le distributeur automatique est en panne", - "hu": "Az automata elromlott", - "it": "Il distributore automatico è guasto", - "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ ŅĐģĐžĐŧĐ°ĐŊ", - "zh_Hans": "čŋ™ä¸Ē借čŋ˜æœēåˇ˛įģæŸå", - "de": "Dieser Automat ist kaputt", - "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸæ˛’æœ‰é‹äŊœäē†", - "pt_BR": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada", - "pt": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada" - } - }, - { - "if": "operational_status=closed", - "then": { - "en": "This vending machine is closed", - "nl": "Deze verkoopsautomaat is uitgeschakeld", - "fr": "Le distributeur automatique est fermÊ", - "hu": "Az automata zÃĄrva van", - "it": "Il distributore automatico è spento", - "ru": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ СаĐēŅ€Ņ‹Ņ‚", - "zh_Hans": "čŋ™ä¸Ē借čŋ˜æœēčĸĢå…ŗ闭äē†", - "de": "Dieser Automat ist geschlossen", - "zh_Hant": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸåˇ˛įļ“關閉äē†", - "pt_BR": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada", - "pt": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada" - } - } - ], - "id": "Still in use?" - }, - { - "question": "How much does a bicycle tube cost?", - "render": "A bicycle tube costs {charge}", - "freeform": { - "key": "charge" - }, - "id": "bicycle_tube_vending_machine-charge" - }, - { - "id": "vending-machine-payment-methods", - "question": "How can one pay at this tube vending machine?", - "mappings": [ - { - "if": "payment:coins=yes", - "ifnot": "payment:coins=no", - "then": "Payment with coins is possible" - }, - { - "if": "payment:notes=yes", - "ifnot": "payment:notes=no", - "then": "Payment with notes is possible" - }, - { - "if": "payment:cards=yes", - "ifnot": "payment:cards=no", - "then": "Payment with cards is possible" - } - ], - "multiAnswer": true - }, - { - "question": "Which brand of tubes are sold here?", - "freeform": { - "key": "brand" - }, - "render": "{brand} tubes are sold here", - "mappings": [ - { - "if": "brand=Continental", - "then": "Continental tubes are sold here" - }, - { - "if": "brand=Schwalbe", - "then": "Schwalbe tubes are sold here" - } - ], - "multiAnswer": true, - "id": "bicycle_tube_vending_machine-brand" - }, - { - "question": "Who maintains this vending machine?", - "render": "This vending machine is maintained by {operator}", - "mappings": [ - { - "if": "operator=Schwalbe", - "then": "Maintained by Schwalbe" - }, - { - "if": "operator=Continental", - "then": "Maintained by Continental" - } - ], - "freeform": { - "key": "operator" - }, - "id": "bicycle_tube_vending_machine-operator" - }, - { - "id": "bicycle_tube_vending_maching-other-items", - "question": "Are other bicycle bicycle accessories sold here?", - "mappings": [ - { - "if": "vending:bicycle_light=yes", - "ifnot": "vending:bicycle_light=no", - "then": "Bicycle lights are sold here" - }, - { - "if": "vending:gloves=yes", - "ifnot": "vending:gloves=no", - "then": "Gloves are sold here" - }, - { - "if": "vending:bicycle_repair_kit=yes", - "ifnot": "vending:bicycle_repair_kit=no", - "then": "Bicycle repair kits are sold here" - }, - { - "if": "vending:bicycle_pump=yes", - "ifnot": "vending:bicycle_pump=no", - "then": "Bicycle pumps are sold here" - }, - { - "if": "vending:bicycle_lock=yes", - "ifnot": "vending:bicycle_lock=no", - "then": "Bicycle locks are sold here" - } - ], - "multiAnswer": true - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "pin:#ffffff;./assets/layers/bicycle_tube_vending_machine/pinIcon.svg" - }, - "iconBadges": [ - { - "if": { - "or": [ - "operational_status=broken", - "operational_status=closed" - ] - }, - "then": "close:#c33" - } - ], - "iconSize": "50,50,bottom", - "location": [ - "point", - "centroid" - ] - }, - { - "color": "#6bc4f7" - } - ] + { + "color": "#6bc4f7" + } + ] } \ No newline at end of file diff --git a/assets/layers/bike_cafe/bike_cafe.json b/assets/layers/bike_cafe/bike_cafe.json index 8c453ebad..62fb4c4f6 100644 --- a/assets/layers/bike_cafe/bike_cafe.json +++ b/assets/layers/bike_cafe/bike_cafe.json @@ -1,391 +1,378 @@ { - "id": "bike_cafe", - "name": { + "id": "bike_cafe", + "name": { + "en": "Bike cafe", + "nl": "FietscafÊ", + "fr": "CafÊ vÊlo", + "gl": "CafÊ de ciclistas", + "de": "Fahrrad-CafÊ", + "it": "Caffè in bici", + "zh_Hans": "č‡Ē行čŊĻå’–å•Ą", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", + "zh_Hant": "å–ŽčģŠå’–å•Ąåģŗ", + "pt_BR": "CafÊ de bicicletas", + "pt": "CafÊ de bicicletas" + }, + "minzoom": 13, + "source": { + "osmTags": { + "and": [ + { + "or": [ + "amenity=pub", + "amenity=bar", + "amenity=cafe", + "amenity=restaurant" + ] + }, + { + "#": "Note the double tilde in 'service:bicycle' which interprets the key as regex too", + "or": [ + "pub=cycling", + "pub=bicycle", + "theme=cycling", + "theme=bicycle", + "service:bicycle:.*~~*" + ] + } + ] + } + }, + "title": { + "render": { + "en": "Bike cafe", + "nl": "FietscafÊ", + "fr": "CafÊ VÊlo", + "gl": "CafÊ de ciclistas", + "de": "Fahrrad-CafÊ", + "it": "Caffè in bici", + "zh_Hans": "č‡Ē行čŊĻå’–å•Ą", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", + "zh_Hant": "å–ŽčģŠå’–å•Ąåģŗ", + "pt_BR": "CafÊ de bicicleta", + "pt": "CafÊ de bicicleta" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Bike cafe {name}", + "nl": "FietscafÊ {name}", + "fr": "CafÊ VÊlo {name}", + "gl": "CafÊ de ciclistas {name}", + "de": "Fahrrad-CafÊ {name}", + "it": "Caffè in bici {name}", + "zh_Hans": "č‡Ē行čŊĻå’–å•Ą {name}", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ {name}", + "zh_Hant": "å–ŽčģŠå’–å•Ąåģŗ{name}", + "pt_BR": "CafÊ de bicicleta {name}", + "pt": "CafÊ de bicicleta {name}" + } + } + ] + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "What is the name of this bike cafe?", + "nl": "Wat is de naam van dit fietscafÊ?", + "fr": "Quel est le nom de ce CafÊ vÊlo ?", + "gl": "Cal Ê o nome deste cafÊ de ciclistas?", + "de": "Wie heißt dieses Fahrrad-CafÊ?", + "it": "Qual è il nome di questo caffè in bici?", + "zh_Hans": "čŋ™ä¸Ēč‡Ē行čŊĻå’–å•Ąįš„名字是äģ€äšˆīŧŸ", + "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đž йаКĐē-ĐēĐ°Ņ„Đĩ?", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗįš„名į¨ąæ˜¯īŧŸ", + "pt_BR": "Qual o nome deste cafÊ de bicicleta?", + "pt": "Qual o nome deste cafÊ de bicicleta?" + }, + "render": { + "en": "This bike cafe is called {name}", + "nl": "Dit fietscafÊ heet {name}", + "fr": "Ce CafÊ vÊlo s'appelle {name}", + "gl": "Este cafÊ de ciclistas chÃĄmase {name}", + "de": "Dieses Fahrrad-CafÊ heißt {name}", + "it": "Questo caffè in bici è chiamato {name}", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•ĄåĢ做 {name}", + "ru": "Đ­Ņ‚Đž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}", + "zh_Hant": "這個喎čģŠå’–å•ĄåģŗåĢ做 {name}", + "pt_BR": "Este cafÊ de bicicleta se chama {name}", + "pt": "Este cafÊ de bicicleta se chama {name}" + }, + "freeform": { + "key": "name" + }, + "id": "bike_cafe-name" + }, + { + "id": "bike_cafe-bike-pump", + "question": { + "en": "Does this bike cafe offer a bike pump for use by anyone?", + "nl": "Biedt dit fietscafÊ een fietspomp aan voor iedereen?", + "fr": "Est-ce que ce CafÊ vÊlo propose une pompe en libre accès ?", + "gl": "Este cafÊ de ciclistas ofrece unha bomba de ar para que calquera persoa poida usala?", + "de": "Bietet dieses Fahrrad-CafÊ eine Fahrradpumpe an, die von jedem benutzt werden kann?", + "it": "Questo caffè in bici offre una pompa per bici che chiunque puÃ˛ utilizzare?", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸ĒäŊŋį”¨č€…提䞛打气į­’吗īŧŸ", + "ru": "ЕŅŅ‚ŅŒ Đģи в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ嗎īŧŸ" + }, + "mappings": [ + { + "if": "service:bicycle:pump=yes", + "then": { + "en": "This bike cafe offers a bike pump for anyone", + "nl": "Dit fietscafÊ biedt een fietspomp aan voor eender wie", + "fr": "Ce CafÊ vÊlo offre une pompe en libre accès", + "gl": "Este cafÊ de ciclistas ofrece unha bomba de ar", + "de": "Dieses Fahrrad-CafÊ bietet eine Fahrradpumpe an, die von jedem benutzt werden kann", + "it": "Questo caffè in bici offre una pompa per bici liberamente utilizzabile", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸Ēäēē提䞛打气į­’", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ", + "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + } + }, + { + "if": "service:bicycle:pump=no", + "then": { + "en": "This bike cafe doesn't offer a bike pump for anyone", + "nl": "Dit fietscafÊ biedt geen fietspomp aan voor iedereen", + "fr": "Ce CafÊ vÊlo n'offre pas de pompe en libre accès", + "gl": "Este cafÊ de ciclistas non ofrece unha bomba de ar", + "de": "Dieses Fahrrad-CafÊ bietet keine Fahrradpumpe an, die von jedem benutzt werden kann", + "it": "Questo caffè in bici non offre una pompa per bici liberamente utilizzabile", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ē每ä¸Ēäēē提䞛打气į­’", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰į‚ē所有äēē提䞛喎čģŠæ‰“æ°Ŗį”Ŧ", + "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + } + } + ] + }, + { + "id": "bike_cafe-repair-tools", + "question": { + "en": "Are there tools here to repair your own bike?", + "nl": "Biedt dit fietscafÊ gereedschap aan om je fiets zelf te herstellen?", + "fr": "Est-ce qu'il y a des outils pour rÊparer soi-mÃĒme son vÊlo ?", + "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?", + "de": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?", + "it": "Ci sono degli strumenti per riparare la propria bicicletta?", + "zh_Hans": "čŋ™é‡Œæœ‰äž›äŊ äŋŽčŊĻį”¨įš„åˇĨå…ˇå—īŧŸ", + "zh_Hant": "這čŖĄæ˜¯åĻ有åˇĨå…ˇäŋŽį†äŊ įš„å–ŽčģŠå—ŽīŧŸ", + "ru": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ваŅˆĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?", + "pt_BR": "HÃĄ ferramentas aqui para consertar sua bicicleta?", + "pt": "HÃĄ ferramentas aqui para consertar a sua prÃŗpria bicicleta?" + }, + "mappings": [ + { + "if": "service:bicycle:diy=yes", + "then": { + "en": "This bike cafe offers tools for DIY repair", + "nl": "Dit fietscafÊ biedt gereedschap aan om je fiets zelf te herstellen", + "fr": "Ce CafÊ vÊlo propose des outils pour rÊparer son vÊlo soi-mÃĒme", + "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta", + "de": "Dieses Fahrrad-CafÊ bietet Werkzeuge fÃŧr die selbständige Reparatur an", + "it": "Questo caffè in bici fornisce degli attrezzi per la riparazione fai-da-te", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ提䞛åˇĨå…ˇčŽ“äŊ äŋŽį†", + "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°", + "pt_BR": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo", + "pt": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo" + } + }, + { + "if": "service:bicycle:diy=no", + "then": { + "en": "This bike cafe doesn't offer tools for DIY repair", + "nl": "Dit fietscafÊ biedt geen gereedschap aan om je fiets zelf te herstellen", + "fr": "Ce CafÊ vÊlo ne propose pas d'outils pour rÊparer son vÊlo soi-mÃĒme", + "gl": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta", + "de": "Dieses Fahrrad-CafÊ bietet keine Werkzeuge fÃŧr die selbständige Reparatur an", + "it": "Questo caffè in bici non fornisce degli attrezzi per la riparazione fai-da-te", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰æäž›åˇĨå…ˇčŽ“äŊ äŋŽį†", + "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ов Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°", + "pt_BR": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo", + "pt": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo" + } + } + ] + }, + { + "id": "bike_cafe-repair-service", + "question": { + "en": "Does this bike cafe repair bikes?", + "nl": "Herstelt dit fietscafÊ fietsen?", + "fr": "Est-ce que ce CafÊ vÊlo rÊpare les vÊlos ?", + "gl": "Este cafÊ de ciclistas arranxa bicicletas?", + "de": "Repariert dieses Fahrrad-CafÊ Fahrräder?", + "it": "Questo caffè in bici ripara le bici?", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąt提䞛äŋŽčŊĻæœåŠĄå—īŧŸ", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ是åĻčƒŊäŋŽį†å–ŽčģŠīŧŸ", + "ru": "ЕŅŅ‚ŅŒ Đģи ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ?", + "pt_BR": "Este cafÊ de bicicleta conserta bicicletas?", + "pt": "Este cafÊ de bicicleta conserta bicicletas?" + }, + "mappings": [ + { + "if": "service:bicycle:repair=yes", + "then": { + "en": "This bike cafe repairs bikes", + "nl": "Dit fietscafÊ herstelt fietsen", + "fr": "Ce CafÊ vÊlo rÊpare les vÊlos", + "gl": "Este cafÊ de ciclistas arranxa bicicletas", + "de": "Dieses Fahrrad-CafÊ repariert Fahrräder", + "it": "Questo caffè in bici ripara le bici", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąå¯äģĨäŋŽčŊĻ", + "zh_Hant": "這個喎čģŠå’–å•ĄåģŗäŋŽį†å–ŽčģŠ", + "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв", + "pt_BR": "Este cafÊ de bicicleta conserta bicicletas", + "pt": "Este cafÊ de bicicleta conserta bicicletas" + } + }, + { + "if": "service:bicycle:repair=no", + "then": { + "en": "This bike cafe doesn't repair bikes", + "nl": "Dit fietscafÊ herstelt geen fietsen", + "fr": "Ce CafÊ vÊlo ne rÊpare pas les vÊlos", + "gl": "Este cafÊ de ciclistas non arranxa bicicletas", + "de": "Dieses Fahrrad-CafÊ repariert keine Fahrräder", + "it": "Questo caffè in bici non ripara le bici", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸čƒŊäŋŽčŊĻ", + "zh_Hant": "這個喎čģŠå’–å•Ąåģŗä¸Ļ不äŋŽį†å–ŽčģŠ", + "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв", + "pt_BR": "Este cafÊ de bicicleta nÃŖo conserta bicicletas", + "pt": "Este cafÊ de bicicleta nÃŖo conserta bicicletas" + } + } + ] + }, + { + "question": { + "en": "What is the website of {name}?", + "nl": "Wat is de website van {name}?", + "fr": "Quel est le site web de {name} ?", + "gl": "Cal Ê a pÃĄxina web de {name}?", + "de": "Was ist die Webseite von {name}?", + "it": "Qual è il sito web di {name}?", + "ru": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?", + "zh_Hans": "{name}įš„įŊ‘įĢ™æ˜¯äģ€äšˆīŧŸ", + "zh_Hant": "{name} įš„įļ˛įĢ™æ˜¯īŧŸ", + "pt_BR": "Qual o website de {name}?", + "pt": "Qual o website de {name}?" + }, + "render": "{website}", + "freeform": { + "key": "website" + }, + "id": "bike_cafe-website" + }, + { + "question": { + "en": "What is the phone number of {name}?", + "nl": "Wat is het telefoonnummer van {name}?", + "fr": "Quel est le numÊro de tÊlÊphone de {name} ?", + "gl": "Cal Ê o nÃēmero de telÊfono de {name}?", + "de": "Wie lautet die Telefonnummer von {name}?", + "it": "Qual è il numero di telefono di {name}?", + "ru": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?", + "zh_Hans": "{name}įš„į”ĩč¯åˇį æ˜¯äģ€äšˆīŧŸ", + "zh_Hant": "{name} įš„é›ģ話號įĸŧ是īŧŸ", + "pt_BR": "Qual o nÃēmero de telefone de {name}?", + "pt": "Qual Ê o nÃēmero de telefone de {name}?" + }, + "render": "{phone}", + "freeform": { + "key": "phone", + "type": "phone" + }, + "id": "bike_cafe-phone" + }, + { + "question": { + "en": "What is the email address of {name}?", + "nl": "Wat is het email-adres van {name}?", + "fr": "Quelle est l'adresse Êlectronique de {name} ?", + "gl": "Cal Ê o enderezo de correo electrÃŗnico de {name}?", + "de": "Wie lautet die E-Mail-Adresse von {name}?", + "it": "Qual è l’indirizzo email di {name}?", + "ru": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?", + "zh_Hans": "{name}įš„į”ĩ子邎įŽąæ˜¯äģ€äšˆīŧŸ", + "zh_Hant": "{name} įš„é›ģ子éƒĩäģļ地址是īŧŸ", + "pt_BR": "Qual o endereço de email de {name}?", + "pt": "Qual o endereço de email de {name}?" + }, + "render": "{email}", + "freeform": { + "key": "email", + "type": "email" + }, + "id": "bike_cafe-email" + }, + { + "question": { + "en": "When it this bike cafÊ opened?", + "nl": "Wanneer is dit fietscafÊ geopend?", + "fr": "Quand ce CafÊ vÊlo est-t-il ouvert ?", + "it": "Quando è aperto questo caffè in bici?", + "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąäģ€äšˆæ—ļ候åŧ€é—¨čĨ业īŧŸ", + "zh_Hant": "äŊ•æ™‚這個喎čģŠå’–å•Ąåģŗį‡Ÿé‹īŧŸ", + "ru": "КаĐēОв Ņ€ĐĩĐļиĐŧ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐēĐ°Ņ„Đĩ?", + "pt_BR": "Quando este cafÊ de bicicleta abre?", + "de": "Wann ist dieses FahrradcafÊ geÃļffnet?", + "pt": "Quando este cafÊ de bicicleta abre?" + }, + "render": "{opening_hours_table(opening_hours)}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "id": "bike_cafe-opening_hours" + } + ], + "presets": [ + { + "title": { "en": "Bike cafe", "nl": "FietscafÊ", - "fr": "CafÊ vÊlo", + "fr": "CafÊ VÊlo", "gl": "CafÊ de ciclistas", "de": "Fahrrad-CafÊ", "it": "Caffè in bici", "zh_Hans": "č‡Ē行čŊĻå’–å•Ą", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", "zh_Hant": "å–ŽčģŠå’–å•Ąåģŗ", - "pt_BR": "CafÊ de bicicletas", - "pt": "CafÊ de bicicletas" - }, - "minzoom": 13, - "source": { - "osmTags": { - "and": [ - { - "or": [ - "amenity=pub", - "amenity=bar", - "amenity=cafe", - "amenity=restaurant" - ] - }, - { - "#": "Note the double tilde in 'service:bicycle' which interprets the key as regex too", - "or": [ - "pub=cycling", - "pub=bicycle", - "theme=cycling", - "theme=bicycle", - "service:bicycle:.*~~*" - ] - } - ] - } - }, - "title": { - "render": { - "en": "Bike cafe", - "nl": "FietscafÊ", - "fr": "CafÊ VÊlo", - "gl": "CafÊ de ciclistas", - "de": "Fahrrad-CafÊ", - "it": "Caffè in bici", - "zh_Hans": "č‡Ē行čŊĻå’–å•Ą", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", - "zh_Hant": "å–ŽčģŠå’–å•Ąåģŗ", - "pt_BR": "CafÊ de bicicleta", - "pt": "CafÊ de bicicleta" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "en": "Bike cafe {name}", - "nl": "FietscafÊ {name}", - "fr": "CafÊ VÊlo {name}", - "gl": "CafÊ de ciclistas {name}", - "de": "Fahrrad-CafÊ {name}", - "it": "Caffè in bici {name}", - "zh_Hans": "č‡Ē行čŊĻå’–å•Ą {name}", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ {name}", - "zh_Hant": "å–ŽčģŠå’–å•Ąåģŗ{name}", - "pt_BR": "CafÊ de bicicleta {name}", - "pt": "CafÊ de bicicleta {name}" - } - } - ] - }, - "tagRenderings": [ - "images", - { - "question": { - "en": "What is the name of this bike cafe?", - "nl": "Wat is de naam van dit fietscafÊ?", - "fr": "Quel est le nom de ce CafÊ vÊlo ?", - "gl": "Cal Ê o nome deste cafÊ de ciclistas?", - "de": "Wie heißt dieses Fahrrad-CafÊ?", - "it": "Qual è il nome di questo caffè in bici?", - "zh_Hans": "čŋ™ä¸Ēč‡Ē行čŊĻå’–å•Ąįš„名字是äģ€äšˆīŧŸ", - "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đž йаКĐē-ĐēĐ°Ņ„Đĩ?", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗįš„名į¨ąæ˜¯īŧŸ", - "pt_BR": "Qual o nome deste cafÊ de bicicleta?", - "pt": "Qual o nome deste cafÊ de bicicleta?" - }, - "render": { - "en": "This bike cafe is called {name}", - "nl": "Dit fietscafÊ heet {name}", - "fr": "Ce CafÊ vÊlo s'appelle {name}", - "gl": "Este cafÊ de ciclistas chÃĄmase {name}", - "de": "Dieses Fahrrad-CafÊ heißt {name}", - "it": "Questo caffè in bici è chiamato {name}", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•ĄåĢ做 {name}", - "ru": "Đ­Ņ‚Đž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}", - "zh_Hant": "這個喎čģŠå’–å•ĄåģŗåĢ做 {name}", - "pt_BR": "Este cafÊ de bicicleta se chama {name}", - "pt": "Este cafÊ de bicicleta se chama {name}" - }, - "freeform": { - "key": "name" - }, - "id": "bike_cafe-name" - }, - { - "id": "bike_cafe-bike-pump", - "question": { - "en": "Does this bike cafe offer a bike pump for use by anyone?", - "nl": "Biedt dit fietscafÊ een fietspomp aan voor iedereen?", - "fr": "Est-ce que ce CafÊ vÊlo propose une pompe en libre accès ?", - "gl": "Este cafÊ de ciclistas ofrece unha bomba de ar para que calquera persoa poida usala?", - "de": "Bietet dieses Fahrrad-CafÊ eine Fahrradpumpe an, die von jedem benutzt werden kann?", - "it": "Questo caffè in bici offre una pompa per bici che chiunque puÃ˛ utilizzare?", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸ĒäŊŋį”¨č€…提䞛打气į­’吗īŧŸ", - "ru": "ЕŅŅ‚ŅŒ Đģи в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ嗎īŧŸ" - }, - "mappings": [ - { - "if": "service:bicycle:pump=yes", - "then": { - "en": "This bike cafe offers a bike pump for anyone", - "nl": "Dit fietscafÊ biedt een fietspomp aan voor eender wie", - "fr": "Ce CafÊ vÊlo offre une pompe en libre accès", - "gl": "Este cafÊ de ciclistas ofrece unha bomba de ar", - "de": "Dieses Fahrrad-CafÊ bietet eine Fahrradpumpe an, die von jedem benutzt werden kann", - "it": "Questo caffè in bici offre una pompa per bici liberamente utilizzabile", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸Ēäēē提䞛打气į­’", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ", - "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - } - }, - { - "if": "service:bicycle:pump=no", - "then": { - "en": "This bike cafe doesn't offer a bike pump for anyone", - "nl": "Dit fietscafÊ biedt geen fietspomp aan voor iedereen", - "fr": "Ce CafÊ vÊlo n'offre pas de pompe en libre accès", - "gl": "Este cafÊ de ciclistas non ofrece unha bomba de ar", - "de": "Dieses Fahrrad-CafÊ bietet keine Fahrradpumpe an, die von jedem benutzt werden kann", - "it": "Questo caffè in bici non offre una pompa per bici liberamente utilizzabile", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ē每ä¸Ēäēē提䞛打气į­’", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰į‚ē所有äēē提䞛喎čģŠæ‰“æ°Ŗį”Ŧ", - "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - } - } - ] - }, - { - "id": "bike_cafe-repair-tools", - "question": { - "en": "Are there tools here to repair your own bike?", - "nl": "Biedt dit fietscafÊ gereedschap aan om je fiets zelf te herstellen?", - "fr": "Est-ce qu'il y a des outils pour rÊparer soi-mÃĒme son vÊlo ?", - "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?", - "de": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?", - "it": "Ci sono degli strumenti per riparare la propria bicicletta?", - "zh_Hans": "čŋ™é‡Œæœ‰äž›äŊ äŋŽčŊĻį”¨įš„åˇĨå…ˇå—īŧŸ", - "zh_Hant": "這čŖĄæ˜¯åĻ有åˇĨå…ˇäŋŽį†äŊ įš„å–ŽčģŠå—ŽīŧŸ", - "ru": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ваŅˆĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?", - "pt_BR": "HÃĄ ferramentas aqui para consertar sua bicicleta?", - "pt": "HÃĄ ferramentas aqui para consertar a sua prÃŗpria bicicleta?" - }, - "mappings": [ - { - "if": "service:bicycle:diy=yes", - "then": { - "en": "This bike cafe offers tools for DIY repair", - "nl": "Dit fietscafÊ biedt gereedschap aan om je fiets zelf te herstellen", - "fr": "Ce CafÊ vÊlo propose des outils pour rÊparer son vÊlo soi-mÃĒme", - "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta", - "de": "Dieses Fahrrad-CafÊ bietet Werkzeuge fÃŧr die selbständige Reparatur an", - "it": "Questo caffè in bici fornisce degli attrezzi per la riparazione fai-da-te", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ提䞛åˇĨå…ˇčŽ“äŊ äŋŽį†", - "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°", - "pt_BR": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo", - "pt": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo" - } - }, - { - "if": "service:bicycle:diy=no", - "then": { - "en": "This bike cafe doesn't offer tools for DIY repair", - "nl": "Dit fietscafÊ biedt geen gereedschap aan om je fiets zelf te herstellen", - "fr": "Ce CafÊ vÊlo ne propose pas d'outils pour rÊparer son vÊlo soi-mÃĒme", - "gl": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta", - "de": "Dieses Fahrrad-CafÊ bietet keine Werkzeuge fÃŧr die selbständige Reparatur an", - "it": "Questo caffè in bici non fornisce degli attrezzi per la riparazione fai-da-te", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰æäž›åˇĨå…ˇčŽ“äŊ äŋŽį†", - "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ов Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°", - "pt_BR": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo", - "pt": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo" - } - } - ] - }, - { - "id": "bike_cafe-repair-service", - "question": { - "en": "Does this bike cafe repair bikes?", - "nl": "Herstelt dit fietscafÊ fietsen?", - "fr": "Est-ce que ce CafÊ vÊlo rÊpare les vÊlos ?", - "gl": "Este cafÊ de ciclistas arranxa bicicletas?", - "de": "Repariert dieses Fahrrad-CafÊ Fahrräder?", - "it": "Questo caffè in bici ripara le bici?", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąt提䞛äŋŽčŊĻæœåŠĄå—īŧŸ", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗ是åĻčƒŊäŋŽį†å–ŽčģŠīŧŸ", - "ru": "ЕŅŅ‚ŅŒ Đģи ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ?", - "pt_BR": "Este cafÊ de bicicleta conserta bicicletas?", - "pt": "Este cafÊ de bicicleta conserta bicicletas?" - }, - "mappings": [ - { - "if": "service:bicycle:repair=yes", - "then": { - "en": "This bike cafe repairs bikes", - "nl": "Dit fietscafÊ herstelt fietsen", - "fr": "Ce CafÊ vÊlo rÊpare les vÊlos", - "gl": "Este cafÊ de ciclistas arranxa bicicletas", - "de": "Dieses Fahrrad-CafÊ repariert Fahrräder", - "it": "Questo caffè in bici ripara le bici", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąå¯äģĨäŋŽčŊĻ", - "zh_Hant": "這個喎čģŠå’–å•ĄåģŗäŋŽį†å–ŽčģŠ", - "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв", - "pt_BR": "Este cafÊ de bicicleta conserta bicicletas", - "pt": "Este cafÊ de bicicleta conserta bicicletas" - } - }, - { - "if": "service:bicycle:repair=no", - "then": { - "en": "This bike cafe doesn't repair bikes", - "nl": "Dit fietscafÊ herstelt geen fietsen", - "fr": "Ce CafÊ vÊlo ne rÊpare pas les vÊlos", - "gl": "Este cafÊ de ciclistas non arranxa bicicletas", - "de": "Dieses Fahrrad-CafÊ repariert keine Fahrräder", - "it": "Questo caffè in bici non ripara le bici", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸čƒŊäŋŽčŊĻ", - "zh_Hant": "這個喎čģŠå’–å•Ąåģŗä¸Ļ不äŋŽį†å–ŽčģŠ", - "ru": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв", - "pt_BR": "Este cafÊ de bicicleta nÃŖo conserta bicicletas", - "pt": "Este cafÊ de bicicleta nÃŖo conserta bicicletas" - } - } - ] - }, - { - "question": { - "en": "What is the website of {name}?", - "nl": "Wat is de website van {name}?", - "fr": "Quel est le site web de {name} ?", - "gl": "Cal Ê a pÃĄxina web de {name}?", - "de": "Was ist die Webseite von {name}?", - "it": "Qual è il sito web di {name}?", - "ru": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?", - "zh_Hans": "{name}įš„įŊ‘įĢ™æ˜¯äģ€äšˆīŧŸ", - "zh_Hant": "{name} įš„įļ˛įĢ™æ˜¯īŧŸ", - "pt_BR": "Qual o website de {name}?", - "pt": "Qual o website de {name}?" - }, - "render": "{website}", - "freeform": { - "key": "website" - }, - "id": "bike_cafe-website" - }, - { - "question": { - "en": "What is the phone number of {name}?", - "nl": "Wat is het telefoonnummer van {name}?", - "fr": "Quel est le numÊro de tÊlÊphone de {name} ?", - "gl": "Cal Ê o nÃēmero de telÊfono de {name}?", - "de": "Wie lautet die Telefonnummer von {name}?", - "it": "Qual è il numero di telefono di {name}?", - "ru": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?", - "zh_Hans": "{name}įš„į”ĩč¯åˇį æ˜¯äģ€äšˆīŧŸ", - "zh_Hant": "{name} įš„é›ģ話號įĸŧ是īŧŸ", - "pt_BR": "Qual o nÃēmero de telefone de {name}?", - "pt": "Qual Ê o nÃēmero de telefone de {name}?" - }, - "render": "{phone}", - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "bike_cafe-phone" - }, - { - "question": { - "en": "What is the email address of {name}?", - "nl": "Wat is het email-adres van {name}?", - "fr": "Quelle est l'adresse Êlectronique de {name} ?", - "gl": "Cal Ê o enderezo de correo electrÃŗnico de {name}?", - "de": "Wie lautet die E-Mail-Adresse von {name}?", - "it": "Qual è l’indirizzo email di {name}?", - "ru": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?", - "zh_Hans": "{name}įš„į”ĩ子邎įŽąæ˜¯äģ€äšˆīŧŸ", - "zh_Hant": "{name} įš„é›ģ子éƒĩäģļ地址是īŧŸ", - "pt_BR": "Qual o endereço de email de {name}?", - "pt": "Qual o endereço de email de {name}?" - }, - "render": "{email}", - "freeform": { - "key": "email", - "type": "email" - }, - "id": "bike_cafe-email" - }, - { - "question": { - "en": "When it this bike cafÊ opened?", - "nl": "Wanneer is dit fietscafÊ geopend?", - "fr": "Quand ce CafÊ vÊlo est-t-il ouvert ?", - "it": "Quando è aperto questo caffè in bici?", - "zh_Hans": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąäģ€äšˆæ—ļ候åŧ€é—¨čĨ业īŧŸ", - "zh_Hant": "äŊ•æ™‚這個喎čģŠå’–å•Ąåģŗį‡Ÿé‹īŧŸ", - "ru": "КаĐēОв Ņ€ĐĩĐļиĐŧ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐēĐ°Ņ„Đĩ?", - "pt_BR": "Quando este cafÊ de bicicleta abre?", - "de": "Wann ist dieses FahrradcafÊ geÃļffnet?", - "pt": "Quando este cafÊ de bicicleta abre?" - }, - "render": "{opening_hours_table(opening_hours)}", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "id": "bike_cafe-opening_hours" - } - ], - "icon": { + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", + "pt_BR": "CafÊ de bicicleta", + "pt": "CafÊ de bicicleta" + }, + "tags": [ + "amenity=pub", + "pub=cycling" + ] + } + ], + "mapRendering": [ + { + "icon": { "render": "./assets/layers/bike_cafe/bike_cafe.svg" - }, - "width": { - "render": "2" - }, - "iconSize": { + }, + "iconSize": { "render": "50,50,bottom" + }, + "location": [ + "point", + "centroid" + ] }, - "color": { + { + "color": { "render": "#694E2D" - }, - "presets": [ - { - "title": { - "en": "Bike cafe", - "nl": "FietscafÊ", - "fr": "CafÊ VÊlo", - "gl": "CafÊ de ciclistas", - "de": "Fahrrad-CafÊ", - "it": "Caffè in bici", - "zh_Hans": "č‡Ē行čŊĻå’–å•Ą", - "zh_Hant": "å–ŽčģŠå’–å•Ąåģŗ", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", - "pt_BR": "CafÊ de bicicleta", - "pt": "CafÊ de bicicleta" - }, - "tags": [ - "amenity=pub", - "pub=cycling" - ] - } - ], - "wayHandling": 2, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/bike_cafe/bike_cafe.svg" - }, - "iconSize": { - "render": "50,50,bottom" - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#694E2D" - }, - "width": { - "render": "2" - } - } - ] + }, + "width": { + "render": "2" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/bike_cleaning/bike_cleaning.json b/assets/layers/bike_cleaning/bike_cleaning.json index eb70066a4..9c32e7fb6 100644 --- a/assets/layers/bike_cleaning/bike_cleaning.json +++ b/assets/layers/bike_cleaning/bike_cleaning.json @@ -1,6 +1,55 @@ { - "id": "bike_cleaning", - "name": { + "id": "bike_cleaning", + "name": { + "en": "Bike cleaning service", + "nl": "Fietsschoonmaakpunt", + "fr": "Service de nettoyage de vÊlo", + "it": "Servizio lavaggio bici", + "de": "Fahrrad-Reinigungsdienst", + "zh_Hant": "å–ŽčģŠæ¸…į†æœå‹™", + "pt_BR": "Serviço de limpeza de bicicletas", + "pt": "Serviço de limpeza de bicicletas" + }, + "title": { + "render": { + "en": "Bike cleaning service", + "nl": "Fietsschoonmaakpunt", + "fr": "Service de nettoyage de vÊlo", + "it": "Servizio lavaggio bici", + "de": "Fahrrad-Reinigungsdienst", + "zh_Hant": "å–ŽčģŠæ¸…į†æœå‹™", + "pt_BR": "Serviço de limpeza de bicicletas", + "pt": "Serviço de limpeza de bicicletas" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Bike cleaning service {name}", + "nl": "Fietsschoonmaakpunt {name}", + "fr": "Service de nettoyage de vÊlo {name}", + "it": "Servizio lavaggio bici {name}", + "de": "Fahrrad-Reinigungsdienst{name}", + "zh_Hant": "å–ŽčģŠæ¸…į†æœå‹™ {name}", + "pt_BR": "Serviço de limpeza de bicicletas {name}", + "pt": "Serviço de limpeza de bicicletas {name}" + } + } + ] + }, + "source": { + "osmTags": { + "or": [ + "service:bicycle:cleaning=yes", + "service:bicycle:cleaning=diy", + "amenity=bicycle_wash" + ] + } + }, + "minzoom": 13, + "presets": [ + { + "title": { "en": "Bike cleaning service", "nl": "Fietsschoonmaakpunt", "fr": "Service de nettoyage de vÊlo", @@ -9,182 +58,132 @@ "zh_Hant": "å–ŽčģŠæ¸…į†æœå‹™", "pt_BR": "Serviço de limpeza de bicicletas", "pt": "Serviço de limpeza de bicicletas" - }, - "title": { - "render": { - "en": "Bike cleaning service", - "nl": "Fietsschoonmaakpunt", - "fr": "Service de nettoyage de vÊlo", - "it": "Servizio lavaggio bici", - "de": "Fahrrad-Reinigungsdienst", - "zh_Hant": "å–ŽčģŠæ¸…į†æœå‹™", - "pt_BR": "Serviço de limpeza de bicicletas", - "pt": "Serviço de limpeza de bicicletas" + }, + "tags": [ + "amenity=bicycle_wash" + ] + } + ], + "titleIcons": [ + { + "render": "" + } + ], + "tagRenderings": [ + "images", + { + "question": { + "en": "How much does it cost to use the cleaning service?" + }, + "render": { + "en": "Using the cleaning service costs {service:bicycle:cleaning:charge}" + }, + "condition": "amenity!=bike_wash", + "freeform": { + "key": "service:bicycle:cleaning:charge", + "addExtraTags": [ + "service:bicycle:cleaning:fee=yes" + ], + "inline": true + }, + "mappings": [ + { + "if": "service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=", + "then": { + "en": "The cleaning service is free to use" + } }, - "mappings": [ - { - "if": "name~*", - "then": { - "en": "Bike cleaning service {name}", - "nl": "Fietsschoonmaakpunt {name}", - "fr": "Service de nettoyage de vÊlo {name}", - "it": "Servizio lavaggio bici {name}", - "de": "Fahrrad-Reinigungsdienst{name}", - "zh_Hant": "å–ŽčģŠæ¸…į†æœå‹™ {name}", - "pt_BR": "Serviço de limpeza de bicicletas {name}", - "pt": "Serviço de limpeza de bicicletas {name}" - } - } + { + "if": "service:bicycle:cleaning:fee=no", + "then": { + "en": "Free to use" + }, + "hideInAnswer": true + }, + { + "if": "service:bicycle:cleaning:fee=yes", + "then": { + "en": "The cleaning service has a fee, but the amount is not known" + } + } + ], + "id": "bike_cleaning-service:bicycle:cleaning:charge" + }, + { + "question": { + "en": "How much does it cost to use the cleaning service?" + }, + "render": { + "en": "Using the cleaning service costs {charge}" + }, + "condition": "amenity=bike_wash", + "freeform": { + "key": "charge", + "addExtraTags": [ + "fee=yes" ] + }, + "mappings": [ + { + "if": "fee=no&charge=", + "then": { + "en": "Free to use cleaning service" + } + }, + { + "if": "fee=no", + "then": { + "en": "Free to use" + }, + "hideInAnswer": true + }, + { + "if": "fee=yes", + "then": { + "en": "The cleaning service has a fee" + } + } + ], + "id": "bike_cleaning-charge" + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] }, - "icon": { + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/bike_cleaning/bike_cleaning.svg" - }, - "iconSize": "50,50,bottom", - "source": { - "osmTags": { - "or": [ - "service:bicycle:cleaning=yes", - "service:bicycle:cleaning=diy", - "amenity=bicycle_wash" - ] - } - }, - "minzoom": 13, - "wayHandling": 1, - "presets": [ + }, + "iconBadges": [ { - "title": { - "en": "Bike cleaning service", - "nl": "Fietsschoonmaakpunt", - "fr": "Service de nettoyage de vÊlo", - "it": "Servizio lavaggio bici", - "de": "Fahrrad-Reinigungsdienst", - "zh_Hant": "å–ŽčģŠæ¸…į†æœå‹™", - "pt_BR": "Serviço de limpeza de bicicletas", - "pt": "Serviço de limpeza de bicicletas" - }, - "tags": [ - "amenity=bicycle_wash" - ] - } - ], - "color": "#6bc4f7", - "iconOverlays": [ - { - "if": { - "and": [ - "service:bicycle:cleaning~*", - "amenity!=bike_wash" - ] - }, - "then": { - "render": "./assets/layers/bike_cleaning/bike_cleaning_icon.svg", - "roaming": true - } - } - ], - "titleIcons": [ - { - "render": "", - "roaming": true - } - ], - "tagRenderings": [ - "images", - { - "question": "How much does it cost to use the cleaning service?", - "render": "Using the cleaning service costs {charge}", - "condition": "amenity!=bike_wash", - "freeform": { - "key": "service:bicycle:cleaning:charge", - "addExtraTags": [ - "service:bicycle:cleaning:fee=yes" - ] - }, - "mappings": [ - { - "if": "service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=", - "then": "The cleaning service is free to use" - }, - { - "if": "service:bicycle:cleaning:fee=no&", - "then": "Free to use", - "hideInAnswer": true - }, - { - "if": "service:bicycle:cleaning:fee=yes", - "then": "The cleaning service has a fee" - } - ], - "roaming": true, - "id": "bike_cleaning-service:bicycle:cleaning:charge" - }, - { - "question": "How much does it cost to use the cleaning service?", - "render": "Using the cleaning service costs {charge}", - "condition": "amenity=bike_wash", - "freeform": { - "key": "charge", - "addExtraTags": [ - "fee=yes" - ] - }, - "mappings": [ - { - "if": "fee=no&charge=", - "then": "Free to use cleaning service" - }, - { - "if": "fee=no&", - "then": "Free to use", - "hideInAnswer": true - }, - { - "if": "fee=yes", - "then": "The cleaning service has a fee" - } - ], - "roaming": false, - "id": "bike_cleaning-charge" - } - ], - "deletion": { - "softDeletionTags": { + "if": { "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/bike_cleaning/bike_cleaning.svg" - }, - "iconBadges": [ - { - "if": { - "and": [ - "service:bicycle:cleaning~*", - "amenity!=bike_wash" - ] - }, - "then": { - "render": "./assets/layers/bike_cleaning/bike_cleaning_icon.svg", - "roaming": true - } - } - ], - "iconSize": "50,50,bottom", - "location": [ - "point" + "service:bicycle:cleaning~*", + "amenity!=bike_wash" ] + }, + "then": { + "render": "./assets/layers/bike_cleaning/bike_cleaning_icon.svg", + "roaming": true + } } - ] + ], + "iconSize": "50,50,bottom", + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/bike_parking/bike_parking.json b/assets/layers/bike_parking/bike_parking.json index 17130076b..a66a84fa2 100644 --- a/assets/layers/bike_parking/bike_parking.json +++ b/assets/layers/bike_parking/bike_parking.json @@ -1,6 +1,30 @@ { - "id": "bike_parking", - "name": { + "id": "bike_parking", + "name": { + "en": "Bike parking", + "nl": "Fietsparking", + "fr": "Parking à vÊlo", + "gl": "Aparcadoiro de bicicletas", + "de": "Fahrrad-Parkplätze", + "hu": "KerÊkpÃĄros parkolÃŗ", + "it": "Parcheggio bici", + "zh_Hant": "å–ŽčģŠåœčģŠå ´", + "ru": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°", + "pl": "Parking dla rowerÃŗw", + "pt_BR": "Estacionamento de bicicletas", + "pt": "Estacionamento de bicicletas" + }, + "minzoom": 17, + "source": { + "osmTags": { + "and": [ + "amenity=bicycle_parking" + ] + } + }, + "presets": [ + { + "title": { "en": "Bike parking", "nl": "Fietsparking", "fr": "Parking à vÊlo", @@ -13,560 +37,531 @@ "pl": "Parking dla rowerÃŗw", "pt_BR": "Estacionamento de bicicletas", "pt": "Estacionamento de bicicletas" - }, - "minzoom": 17, - "source": { - "osmTags": { - "and": [ - "amenity=bicycle_parking" - ] + }, + "tags": [ + "amenity=bicycle_parking" + ] + } + ], + "title": { + "render": { + "en": "Bike parking", + "nl": "Fietsparking", + "fr": "Parking à vÊlo", + "gl": "Aparcadoiro de bicicletas", + "de": "Fahrrad-Parkplätze", + "hu": "KerÊkpÃĄros parkolÃŗ", + "it": "Parcheggio bici", + "zh_Hant": "å–ŽčģŠåœčģŠå ´", + "ru": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°", + "pl": "Parking dla rowerÃŗw", + "pt_BR": "Estacionamento de bicicletas", + "pt": "Estacionamento de bicicletas" + } + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "What is the type of this bicycle parking?", + "nl": "Van welk type is deze fietsparking?", + "fr": "Quel type de parking à vÊlos est-ce ?", + "gl": "Que tipo de aparcadoiro de bicicletas Ê?", + "de": "Was ist die Art dieses Fahrrad-Parkplatzes?", + "hu": "Milyen típusÃē ez a kerÊkpÃĄros parkolÃŗ?", + "it": "Di che tipo di parcheggio bici si tratta?", + "ru": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°?", + "zh_Hant": "這是é‚Ŗį¨ŽéĄžåž‹įš„å–ŽčģŠåœčģŠå ´īŧŸ", + "pl": "Jaki jest typ tego parkingu dla rowerÃŗw?", + "pt_BR": "Qual o tipo deste estacionamento de bicicletas?", + "pt": "Qual o tipo deste estacionamento de bicicletas?" + }, + "render": { + "en": "This is a bicycle parking of the type: {bicycle_parking}", + "nl": "Dit is een fietsparking van het type: {bicycle_parking}", + "fr": "Ceci est un parking à vÊlo de type {bicycle_parking}", + "gl": "Este Ê un aparcadoiro de bicicletas do tipo: {bicycle_parking}", + "de": "Dies ist ein Fahrrad-Parkplatz der Art: {bicycle_parking}", + "hu": "Ez egy {bicycle_parking} típusÃē kerÊkpÃĄros parkolÃŗ", + "it": "È un parcheggio bici del tipo: {bicycle_parking}", + "zh_Hant": "這個喎čģŠåœčģŠå ´įš„éĄžåž‹æ˜¯īŧš{bicycle_parking}", + "ru": "Đ­Ņ‚Đž вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ° Ņ‚иĐŋĐ° {bicycle_parking}", + "pl": "Jest to parking rowerowy typu: {bicycle_parking}", + "pt_BR": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}", + "pt": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}" + }, + "freeform": { + "key": "bicycle_parking", + "addExtraTags": [ + "fixme=Freeform used on 'bicycle_parking'-tag: possibly a wrong value" + ] + }, + "mappings": [ + { + "if": "bicycle_parking=stands", + "then": { + "en": "Staple racks ", + "nl": "Nietjes ", + "fr": "Arceaux ", + "gl": "De roda (Stands) ", + "de": "FahrradbÃŧgel ", + "hu": "\"U\" ", + "it": "Archetti ", + "zh_Hant": "å–ŽčģŠæžļ " + } + }, + { + "if": "bicycle_parking=wall_loops", + "then": { + "en": "Wheel rack/loops ", + "nl": "Wielrek/lussen ", + "fr": "Pinces-roues ", + "gl": "Aros ", + "de": "Metallgestänge ", + "hu": "Kengyeles ", + "it": "Scolapiatti ", + "zh_Hant": "čģŠčŧĒæžļ/圓圈 " + } + }, + { + "if": "bicycle_parking=handlebar_holder", + "then": { + "en": "Handlebar holder ", + "nl": "Stuurhouder ", + "fr": "Support guidon ", + "gl": "Cadeado para guiador ", + "de": "Halter fÃŧr Fahrradlenker ", + "it": "Blocca manubrio ", + "zh_Hant": "čģŠæŠŠæžļ " + } + }, + { + "if": "bicycle_parking=rack", + "then": { + "en": "Rack ", + "nl": "Rek ", + "fr": "RÃĸtelier ", + "gl": "Cremalleira ", + "de": "Gestell ", + "zh_Hant": "čģŠæžļ", + "it": "Rastrelliera ", + "ru": "ĐĄŅ‚ОКĐēĐ° " + } + }, + { + "if": "bicycle_parking=two_tier", + "then": { + "en": "Two-tiered ", + "nl": "Dubbel (twee verdiepingen) ", + "fr": "SuperposÊ ", + "gl": "Dobre cremalleira ", + "de": "Zweistufig ", + "hu": "KÊtszintÅą ", + "zh_Hant": "å…Šåą¤", + "it": "A due piani ", + "ru": "ДвŅƒŅ…ŅƒŅ€ĐžĐ˛ĐŊĐĩваŅ " + } + }, + { + "if": "bicycle_parking=shed", + "then": { + "en": "Shed ", + "nl": "Schuur ", + "fr": "Abri ", + "gl": "Abeiro ", + "de": "Schuppen ", + "hu": "FÊszer ", + "zh_Hant": "čģŠæŖš ", + "it": "Rimessa ", + "ru": "НавĐĩŅ " + } + }, + { + "if": "bicycle_parking=bollard", + "then": { + "en": "Bollard ", + "nl": "Paal met ring ", + "fr": "Potelet ", + "it": "Colonnina ", + "de": "Poller ", + "zh_Hant": "æŸąå­ " + } + }, + { + "if": "bicycle_parking=floor", + "then": { + "en": "An area on the floor which is marked for bicycle parking", + "nl": "Een oppervlakte die gemarkeerd is om fietsen te parkeren", + "fr": "Zone au sol qui est marquÊe pour le stationnement des vÊlos", + "it": "Una zona del pavimento che è marcata per il parcheggio delle bici", + "de": "Ein Bereich auf dem Boden, der fÃŧr das Abstellen von Fahrrädern gekennzeichnet ist", + "zh_Hant": "æ¨“åą¤į•ļ中標į¤ēį‚ēå–ŽčģŠåœčģŠå ´įš„區域" + } } + ], + "id": "Bicycle parking type" }, - "icon": { + { + "question": { + "en": "What is the relative location of this bicycle parking?", + "nl": "Wat is de relatieve locatie van deze parking??", + "fr": "Quelle est la position relative de ce parking à vÊlo ?", + "it": "Qual è la posizione relativa di questo parcheggio bici?", + "zh_Hant": "這個喎čģŠåœčģŠå ´įš„į›¸å°äŊįŊŽæ˜¯īŧŸ", + "pl": "Jaka jest względna lokalizacja tego parkingu rowerowego?", + "pt_BR": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?", + "de": "Wo befinden sich diese Fahrradabstellplätze?", + "pt": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?" + }, + "mappings": [ + { + "if": "location=underground", + "then": { + "en": "Underground parking", + "nl": "Ondergrondse parking", + "fr": "Parking souterrain", + "it": "Parcheggio sotterraneo", + "ru": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°", + "de": "Tiefgarage", + "zh_Hant": "地下停čģŠå ´", + "pt_BR": "Estacionamento subterrÃĸneo", + "pt": "Estacionamento subterrÃĸneo" + } + }, + { + "if": "location=surface", + "then": { + "en": "Surface level parking", + "nl": "Parking op de begane grond", + "fr": "Parking en surface", + "it": "Parcheggio in superficie", + "ru": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°", + "de": "Ebenerdiges Parken", + "zh_Hant": "地éĸ停čģŠå ´", + "pt_BR": "Estacionamento de superfície", + "pt": "Estacionamento de superfície", + "hu": "Felszíni parkolÃŗ" + } + }, + { + "if": "location=rooftop", + "then": { + "en": "Rooftop parking", + "nl": "Dakparking", + "fr": "Parking sur un toit", + "hu": "TetőparkolÃŗ", + "it": "Parcheggio sul tetto", + "de": "Parkplatz auf dem Dach", + "zh_Hant": "åą‹é ‚åœčģŠå ´", + "pt_BR": "Estacionamento no telhado", + "pt": "Estacionamento no telhado", + "ru": "ПаŅ€ĐēОвĐēĐ° ĐŊĐ° ĐēŅ€Ņ‹ŅˆĐĩ" + } + }, + { + "if": "location=", + "then": { + "en": "Surface level parking", + "nl": "Parking op de begane grond", + "fr": "Parking en surface", + "hu": "Felszíni parkolÃŗ", + "it": "Parcheggio in superficie", + "de": "Ebenerdiges Parken", + "zh_Hant": "地éĸåą¤åœčģŠå ´", + "pt_BR": "Estacionamento ao nível da superfície", + "pt": "Estacionamento ao nível da superfície" + }, + "hideInAnwser": true + }, + { + "if": "location=rooftop", + "then": { + "en": "Rooftop parking", + "nl": "Dakparking", + "fr": "Parking sur un toit", + "hu": "TetőparkolÃŗ", + "it": "Parcheggio sul tetto", + "ru": "ПаŅ€ĐēОвĐēĐ° ĐŊĐ° ĐēŅ€Ņ‹ŅˆĐĩ", + "zh_Hant": "åą‹é ‚åœčģŠå ´", + "pt_BR": "Estacionamento no telhado", + "de": "Parkplatz auf dem Dach", + "pt": "Estacionamento no telhado" + } + } + ], + "id": "Underground?" + }, + { + "question": { + "en": "Is this parking covered? Also select \"covered\" for indoor parkings.", + "nl": "Is deze parking overdekt? Selecteer ook \"overdekt\" voor fietsparkings binnen een gebouw.", + "gl": "Este aparcadoiro estÃĄ cuberto? TamÊn escolle \"cuberto\" para aparcadoiros interiores.", + "de": "Ist dieser Parkplatz Ãŧberdacht? Wählen Sie auch \"Ãŧberdacht\" fÃŧr Innenparkplätze.", + "fr": "Ce parking est-il couvert ? SÊlectionnez aussi \"couvert\" pour les parkings en intÊrieur.", + "hu": "Fedett ez a parkolÃŗ? (BeltÊri parkolÃŗ esetÊn is vÃĄlaszd a \"fedett\" opciÃŗt.)", + "it": "È un parcheggio coperto? Indicare “coperto” per parcheggi all’interno.", + "zh_Hant": "這個停čģŠå ´æ˜¯åĻ有čģŠæŖšīŧŸåĻ‚果是厤內停čģŠå ´äšŸčĢ‹é¸æ“‡\"過č”Ŋ\"。", + "pt_BR": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos.", + "pt": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos." + }, + "condition": { + "and": [ + "bicycle_parking!=shed", + "location!=underground" + ] + }, + "mappings": [ + { + "if": "covered=yes", + "then": { + "en": "This parking is covered (it has a roof)", + "nl": "Deze parking is overdekt (er is een afdak)", + "gl": "Este aparcadoiro estÃĄ cuberto (ten un teito)", + "de": "Dieser Parkplatz ist Ãŧberdacht (er hat ein Dach)", + "fr": "Ce parking est couvert (il a un toit)", + "hu": "A parkolÃŗ fedett", + "it": "È un parcheggio coperto (ha un tetto)", + "zh_Hant": "這個停čģŠå ´æœ‰éŽč”Ŋ (æœ‰åą‹é ‚)", + "ru": "Đ­Ņ‚Đž ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ° (ĐĩŅŅ‚ŅŒ ĐēŅ€Ņ‹ŅˆĐ°/ĐŊавĐĩŅ)", + "pt_BR": "Este estacionamento Ê coberto (tem um telhado)", + "pt": "Este estacionamento Ê coberto (tem um telhado)" + } + }, + { + "if": "covered=no", + "then": { + "en": "This parking is not covered", + "nl": "Deze parking is niet overdekt", + "gl": "Este aparcadoiro non estÃĄ cuberto", + "de": "Dieser Parkplatz ist nicht Ãŧberdacht", + "fr": "Ce parking n'est pas couvert", + "hu": "A parkolÃŗ nem fedett", + "it": "Non è un parcheggio coperto", + "zh_Hant": "這個停čģŠå ´æ˛’有過č”Ŋ", + "ru": "Đ­Ņ‚Đž ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°", + "pt_BR": "Este estacionamento nÃŖo Ê coberto", + "pt": "Este estacionamento nÃŖo Ê coberto" + } + } + ], + "id": "Is covered?" + }, + { + "question": { + "en": "How many bicycles fit in this bicycle parking (including possible cargo bicycles)?", + "fr": "Combien de vÊlos entrent dans ce parking à vÊlos (y compris les Êventuels vÊlos de transport) ?", + "nl": "Hoeveel fietsen kunnen in deze fietsparking (inclusief potentiÃĢel bakfietsen)?", + "gl": "Cantas bicicletas caben neste aparcadoiro de bicicletas (incluídas as posíbeis bicicletas de carga)?", + "de": "Wie viele Fahrräder passen auf diesen Fahrrad-Parkplatz (einschließlich mÃļglicher Lastenfahrräder)?", + "it": "Quante biciclette entrano in questo parcheggio per bici (incluse le eventuali bici da trasporto)?", + "zh_Hant": "這個喎čģŠåœčģŠå ´čƒŊ攞嚞台喎čģŠ (包æ‹ŦčŖįŽąå–ŽčģŠ)īŧŸ" + }, + "render": { + "en": "Place for {capacity} bikes", + "fr": "Place pour {capacity} vÊlos", + "nl": "Plaats voor {capacity} fietsen", + "gl": "Lugar para {capacity} bicicletas", + "de": "Platz fÃŧr {capacity} Fahrräder", + "it": "Posti per {capacity} bici", + "zh_Hant": "{capacity} å–ŽčģŠįš„地斚", + "ru": "МĐĩŅŅ‚Đž Đ´ĐģŅ {capacity} вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°(Ов)", + "pt_BR": "Lugar para {capacity} bicicletas", + "pt": "Lugar para {capacity} bicicletas" + }, + "freeform": { + "key": "capacity", + "type": "nat" + }, + "id": "Capacity" + }, + { + "question": { + "en": "Who can use this bicycle parking?", + "nl": "Wie mag er deze fietsenstalling gebruiken?", + "fr": "Qui peut utiliser ce parking à vÊlo ?", + "it": "Chi puÃ˛ usare questo parcheggio bici?", + "de": "Wer kann diesen Fahrradparplatz nutzen?", + "zh_Hant": "čĒ°å¯äģĨäŊŋį”¨é€™å€‹å–ŽčģŠåœčģŠå ´īŧŸ", + "ru": "КŅ‚Đž ĐŧĐžĐļĐĩŅ‚ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēОК?", + "pt_BR": "Quem pode usar este estacionamento de bicicletas?", + "pt": "Quem pode usar este estacionamento de bicicletas?" + }, + "render": { + "en": "{access}", + "de": "{access}", + "fr": "{access}", + "nl": "{access}", + "it": "{access}", + "ru": "{access}", + "id": "{access}", + "zh_Hant": "{access}", + "fi": "{access}", + "pt_BR": "{access}", + "pt": "{access}", + "eo": "{access}" + }, + "freeform": { + "key": "access", + "addExtraTags": [ + "fixme=Freeform used on 'access'-tag: possibly a wrong value" + ] + }, + "mappings": [ + { + "if": "access=yes", + "then": { + "en": "Publicly accessible", + "nl": "Publiek toegankelijke fietsenstalling", + "fr": "Accessible publiquement", + "it": "Accessibile pubblicamente", + "de": "Öffentlich zugänglich", + "zh_Hant": "å…Ŧ開可į”¨", + "pt_BR": "Acessível ao pÃēblico", + "pt": "Acessível ao pÃēblico" + } + }, + { + "if": "access=customers", + "then": { + "en": "Access is primarily for visitors to a business", + "nl": "Klanten van de zaak of winkel", + "fr": "Accès destinÊ principalement aux visiteurs d'un lieu", + "it": "Accesso destinato principalmente ai visitatori di un’attività", + "zh_Hant": "é€ščĄŒæ€§ä¸ģčĻæ˜¯į‚ēäē†äŧæĨ­įš„饧åŽĸ", + "pt_BR": "Acesso Ê principalmente para visitantes de uma empresa", + "de": "Der Zugang ist in erster Linie fÃŧr Besucher eines Unternehmens bestimmt", + "pt": "Acesso Ê principalmente para visitantes de uma empresa" + } + }, + { + "if": "access=private", + "then": { + "en": "Access is limited to members of a school, company or organisation", + "nl": "Private fietsenstalling van een school, een bedrijf, ...", + "fr": "Accès limitÊ aux membres d'une Êcole, entreprise ou organisation", + "it": "Accesso limitato ai membri di una scuola, una compagnia o un’organizzazione", + "zh_Hant": "é€ščĄŒæ€§åƒ…é™å­¸æ Ąã€å…Ŧ司或įĩ„įš”įš„æˆå“Ą", + "pt_BR": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo", + "de": "Der Zugang ist beschränkt auf Mitglieder einer Schule, eines Unternehmens oder einer Organisation", + "pt": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo" + } + } + ], + "id": "Access" + }, + { + "question": { + "en": "Does this bicycle parking have spots for cargo bikes?", + "nl": "Heeft deze fietsparking plaats voor bakfietsen?", + "gl": "Este aparcadoiro de bicicletas ten espazo para bicicletas de carga?", + "de": "Gibt es auf diesem Fahrrad-Parkplatz Plätze fÃŧr Lastenfahrräder?", + "fr": "Est-ce que ce parking à vÊlo a des emplacements pour des vÊlos cargo ?", + "it": "Questo parcheggio dispone di posti specifici per le bici da trasporto?", + "zh_Hant": "這個喎čģŠåœčģŠå ´æœ‰åœ°æ–šæ”žčŖįŽąįš„å–ŽčģŠå—ŽīŧŸ", + "pt_BR": "O estacionamento de bicicletas tem vagas para bicicletas de carga?", + "pt": "O estacionamento de bicicletas tem vagas para bicicletas de carga?" + }, + "mappings": [ + { + "if": "cargo_bike=yes", + "then": { + "en": "This parking has room for cargo bikes", + "nl": "Deze parking heeft plaats voor bakfietsen", + "gl": "Este aparcadoiro ten espazo para bicicletas de carga.", + "de": "Dieser Parkplatz bietet Platz fÃŧr Lastenfahrräder", + "fr": "Ce parking a de la place pour les vÊlos cargo", + "it": "Questo parcheggio ha posto per bici da trasporto", + "zh_Hant": "這個停čģŠå ´æœ‰åœ°æ–šå¯äģĨ攞čŖįŽąå–ŽčģŠ", + "pt_BR": "Este estacionamento tem vagas para bicicletas de carga", + "pt": "Este estacionamento tem vagas para bicicletas de carga" + } + }, + { + "if": "cargo_bike=designated", + "then": { + "en": "This parking has designated (official) spots for cargo bikes.", + "nl": "Er zijn speciale plaatsen voorzien voor bakfietsen", + "gl": "Este aparcadoiro ten espazos designados (oficiais) para bicicletas de carga.", + "de": "Dieser Parkplatz verfÃŧgt Ãŧber ausgewiesene (offizielle) Plätze fÃŧr Lastenfahrräder.", + "fr": "Ce parking a des emplacements (officiellement) destinÊs aux vÊlos cargo.", + "it": "Questo parcheggio ha posti destinati (ufficialmente) alle bici da trasporto.", + "zh_Hant": "這停čģŠå ´æœ‰č¨­č¨ˆ (厘斚) įŠē間įĩĻčŖįŽąįš„å–ŽčģŠã€‚", + "pt_BR": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga.", + "pt": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga." + } + }, + { + "if": "cargo_bike=no", + "then": { + "en": "You're not allowed to park cargo bikes", + "nl": "Je mag hier geen bakfietsen parkeren", + "gl": "Non estÃĄ permitido aparcar bicicletas de carga", + "de": "Es ist nicht erlaubt, Lastenfahrräder zu parken", + "fr": "Il est interdit de garer des vÊlos cargo", + "it": "Il parcheggio delle bici da trasporto è proibito", + "pt_BR": "VocÃĒ nÃŖo tem permissÃŖo para estacionar bicicletas de carga", + "pt": "NÃŖo tem permissÃŖo para estacionar bicicletas de carga" + } + } + ], + "id": "Cargo bike spaces?" + }, + { + "question": { + "en": "How many cargo bicycles fit in this bicycle parking?", + "nl": "Voor hoeveel bakfietsen heeft deze fietsparking plaats?", + "fr": "Combien de vÊlos de transport entrent dans ce parking à vÊlos ?", + "gl": "Cantas bicicletas de carga caben neste aparcadoiro de bicicletas?", + "de": "Wie viele Lastenfahrräder passen auf diesen Fahrrad-Parkplatz?", + "it": "Quante bici da trasporto entrano in questo parcheggio per bici?", + "pt_BR": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?", + "pt": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?" + }, + "render": { + "en": "This parking fits {capacity:cargo_bike} cargo bikes", + "nl": "Deze parking heeft plaats voor {capacity:cargo_bike} fietsen", + "fr": "Ce parking a de la place pour {capacity:cargo_bike} vÊlos de transport", + "gl": "Neste aparcadoiro caben {capacity:cargo_bike} bicicletas de carga", + "de": "Auf diesen Parkplatz passen {capacity:cargo_bike} Lastenfahrräder", + "it": "Questo parcheggio puÃ˛ contenere {capacity:cargo_bike} bici da trasporto", + "pt_BR": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga", + "pt": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga" + }, + "condition": "cargo_bike~designated|yes", + "freeform": { + "key": "capacity:cargo_bike", + "type": "nat" + }, + "id": "Cargo bike capacity?" + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] + }, + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/bike_parking/parking.svg" + }, + "iconSize": "40,40,bottom", + "location": [ + "point", + "centroid" + ] }, - "iconSize": "40,40,bottom", - "color": "#00f", - "width": "1", - "wayHandling": 2, - "presets": [ - { - "title": { - "en": "Bike parking", - "nl": "Fietsparking", - "fr": "Parking à vÊlo", - "gl": "Aparcadoiro de bicicletas", - "de": "Fahrrad-Parkplätze", - "hu": "KerÊkpÃĄros parkolÃŗ", - "it": "Parcheggio bici", - "zh_Hant": "å–ŽčģŠåœčģŠå ´", - "ru": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°", - "pl": "Parking dla rowerÃŗw", - "pt_BR": "Estacionamento de bicicletas", - "pt": "Estacionamento de bicicletas" - }, - "tags": [ - "amenity=bicycle_parking" - ] - } - ], - "title": { - "render": { - "en": "Bike parking", - "nl": "Fietsparking", - "fr": "Parking à vÊlo", - "gl": "Aparcadoiro de bicicletas", - "de": "Fahrrad-Parkplätze", - "hu": "KerÊkpÃĄros parkolÃŗ", - "it": "Parcheggio bici", - "zh_Hant": "å–ŽčģŠåœčģŠå ´", - "ru": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°", - "pl": "Parking dla rowerÃŗw", - "pt_BR": "Estacionamento de bicicletas", - "pt": "Estacionamento de bicicletas" - } - }, - "tagRenderings": [ - "images", - { - "question": { - "en": "What is the type of this bicycle parking?", - "nl": "Van welk type is deze fietsparking?", - "fr": "Quel type de parking à vÊlos est-ce ?", - "gl": "Que tipo de aparcadoiro de bicicletas Ê?", - "de": "Was ist die Art dieses Fahrrad-Parkplatzes?", - "hu": "Milyen típusÃē ez a kerÊkpÃĄros parkolÃŗ?", - "it": "Di che tipo di parcheggio bici si tratta?", - "ru": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°?", - "zh_Hant": "這是é‚Ŗį¨ŽéĄžåž‹įš„å–ŽčģŠåœčģŠå ´īŧŸ", - "pl": "Jaki jest typ tego parkingu dla rowerÃŗw?", - "pt_BR": "Qual o tipo deste estacionamento de bicicletas?", - "pt": "Qual o tipo deste estacionamento de bicicletas?" - }, - "render": { - "en": "This is a bicycle parking of the type: {bicycle_parking}", - "nl": "Dit is een fietsparking van het type: {bicycle_parking}", - "fr": "Ceci est un parking à vÊlo de type {bicycle_parking}", - "gl": "Este Ê un aparcadoiro de bicicletas do tipo: {bicycle_parking}", - "de": "Dies ist ein Fahrrad-Parkplatz der Art: {bicycle_parking}", - "hu": "Ez egy {bicycle_parking} típusÃē kerÊkpÃĄros parkolÃŗ", - "it": "È un parcheggio bici del tipo: {bicycle_parking}", - "zh_Hant": "這個喎čģŠåœčģŠå ´įš„éĄžåž‹æ˜¯īŧš{bicycle_parking}", - "ru": "Đ­Ņ‚Đž вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ° Ņ‚иĐŋĐ° {bicycle_parking}", - "pl": "Jest to parking rowerowy typu: {bicycle_parking}", - "pt_BR": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}", - "pt": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}" - }, - "freeform": { - "key": "bicycle_parking", - "addExtraTags": [ - "fixme=Freeform used on 'bicycle_parking'-tag: possibly a wrong value" - ] - }, - "mappings": [ - { - "if": "bicycle_parking=stands", - "then": { - "en": "Staple racks ", - "nl": "Nietjes ", - "fr": "Arceaux ", - "gl": "De roda (Stands) ", - "de": "FahrradbÃŧgel ", - "hu": "\"U\" ", - "it": "Archetti ", - "zh_Hant": "å–ŽčģŠæžļ " - } - }, - { - "if": "bicycle_parking=wall_loops", - "then": { - "en": "Wheel rack/loops ", - "nl": "Wielrek/lussen ", - "fr": "Pinces-roues ", - "gl": "Aros ", - "de": "Metallgestänge ", - "hu": "Kengyeles ", - "it": "Scolapiatti ", - "zh_Hant": "čģŠčŧĒæžļ/圓圈 " - } - }, - { - "if": "bicycle_parking=handlebar_holder", - "then": { - "en": "Handlebar holder ", - "nl": "Stuurhouder ", - "fr": "Support guidon ", - "gl": "Cadeado para guiador ", - "de": "Halter fÃŧr Fahrradlenker ", - "it": "Blocca manubrio ", - "zh_Hant": "čģŠæŠŠæžļ " - } - }, - { - "if": "bicycle_parking=rack", - "then": { - "en": "Rack ", - "nl": "Rek ", - "fr": "RÃĸtelier ", - "gl": "Cremalleira ", - "de": "Gestell ", - "zh_Hant": "čģŠæžļ", - "it": "Rastrelliera ", - "ru": "ĐĄŅ‚ОКĐēĐ° " - } - }, - { - "if": "bicycle_parking=two_tier", - "then": { - "en": "Two-tiered ", - "nl": "Dubbel (twee verdiepingen) ", - "fr": "SuperposÊ ", - "gl": "Dobre cremalleira ", - "de": "Zweistufig ", - "hu": "KÊtszintÅą ", - "zh_Hant": "å…Šåą¤", - "it": "A due piani ", - "ru": "ДвŅƒŅ…ŅƒŅ€ĐžĐ˛ĐŊĐĩваŅ " - } - }, - { - "if": "bicycle_parking=shed", - "then": { - "en": "Shed ", - "nl": "Schuur ", - "fr": "Abri ", - "gl": "Abeiro ", - "de": "Schuppen ", - "hu": "FÊszer ", - "zh_Hant": "čģŠæŖš ", - "it": "Rimessa ", - "ru": "НавĐĩŅ " - } - }, - { - "if": "bicycle_parking=bollard", - "then": { - "en": "Bollard ", - "nl": "Paal met ring ", - "fr": "Potelet ", - "it": "Colonnina ", - "de": "Poller ", - "zh_Hant": "æŸąå­ " - } - }, - { - "if": "bicycle_parking=floor", - "then": { - "en": "An area on the floor which is marked for bicycle parking", - "nl": "Een oppervlakte die gemarkeerd is om fietsen te parkeren", - "fr": "Zone au sol qui est marquÊe pour le stationnement des vÊlos", - "it": "Una zona del pavimento che è marcata per il parcheggio delle bici", - "de": "Ein Bereich auf dem Boden, der fÃŧr das Abstellen von Fahrrädern gekennzeichnet ist", - "zh_Hant": "æ¨“åą¤į•ļ中標į¤ēį‚ēå–ŽčģŠåœčģŠå ´įš„區域" - } - } - ], - "id": "Bicycle parking type" - }, - { - "question": { - "en": "What is the relative location of this bicycle parking?", - "nl": "Wat is de relatieve locatie van deze parking??", - "fr": "Quelle est la position relative de ce parking à vÊlo ?", - "it": "Qual è la posizione relativa di questo parcheggio bici?", - "zh_Hant": "這個喎čģŠåœčģŠå ´įš„į›¸å°äŊįŊŽæ˜¯īŧŸ", - "pl": "Jaka jest względna lokalizacja tego parkingu rowerowego?", - "pt_BR": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?", - "de": "Wo befinden sich diese Fahrradabstellplätze?", - "pt": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?" - }, - "mappings": [ - { - "if": "location=underground", - "then": { - "en": "Underground parking", - "nl": "Ondergrondse parking", - "fr": "Parking souterrain", - "it": "Parcheggio sotterraneo", - "ru": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°", - "de": "Tiefgarage", - "zh_Hant": "地下停čģŠå ´", - "pt_BR": "Estacionamento subterrÃĸneo", - "pt": "Estacionamento subterrÃĸneo" - } - }, - { - "if": "location=underground", - "then": { - "en": "Underground parking", - "nl": "Ondergrondse parking", - "fr": "Parking souterrain", - "it": "Parcheggio sotterraneo", - "ru": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°", - "de": "Tiefgarage", - "zh_Hant": "地下停čģŠå ´", - "pt_BR": "Estacionamento subterrÃĸneo", - "pt": "Estacionamento subterrÃĸneo" - } - }, - { - "if": "location=surface", - "then": { - "en": "Surface level parking", - "nl": "Parking op de begane grond", - "fr": "Parking en surface", - "hu": "Felszíni parkolÃŗ", - "it": "Parcheggio in superficie", - "de": "Ebenerdiges Parken", - "zh_Hant": "地éĸ停čģŠå ´", - "pt_BR": "Estacionamento de superfície", - "pt": "Estacionamento de superfície" - } - }, - { - "if": "location=", - "then": { - "en": "Surface level parking", - "nl": "Parking op de begane grond", - "fr": "Parking en surface", - "hu": "Felszíni parkolÃŗ", - "it": "Parcheggio in superficie", - "de": "Ebenerdiges Parken", - "zh_Hant": "地éĸåą¤åœčģŠå ´", - "pt_BR": "Estacionamento ao nível da superfície", - "pt": "Estacionamento ao nível da superfície" - }, - "hideInAnwser": true - }, - { - "if": "location=rooftop", - "then": { - "en": "Rooftop parking", - "nl": "Dakparking", - "fr": "Parking sur un toit", - "hu": "TetőparkolÃŗ", - "it": "Parcheggio sul tetto", - "ru": "ПаŅ€ĐēОвĐēĐ° ĐŊĐ° ĐēŅ€Ņ‹ŅˆĐĩ", - "zh_Hant": "åą‹é ‚åœčģŠå ´", - "pt_BR": "Estacionamento no telhado", - "de": "Parkplatz auf dem Dach", - "pt": "Estacionamento no telhado" - } - } - ], - "id": "Underground?" - }, - { - "question": { - "en": "Is this parking covered? Also select \"covered\" for indoor parkings.", - "nl": "Is deze parking overdekt? Selecteer ook \"overdekt\" voor fietsparkings binnen een gebouw.", - "gl": "Este aparcadoiro estÃĄ cuberto? TamÊn escolle \"cuberto\" para aparcadoiros interiores.", - "de": "Ist dieser Parkplatz Ãŧberdacht? Wählen Sie auch \"Ãŧberdacht\" fÃŧr Innenparkplätze.", - "fr": "Ce parking est-il couvert ? SÊlectionnez aussi \"couvert\" pour les parkings en intÊrieur.", - "hu": "Fedett ez a parkolÃŗ? (BeltÊri parkolÃŗ esetÊn is vÃĄlaszd a \"fedett\" opciÃŗt.)", - "it": "È un parcheggio coperto? Indicare “coperto” per parcheggi all’interno.", - "zh_Hant": "這個停čģŠå ´æ˜¯åĻ有čģŠæŖšīŧŸåĻ‚果是厤內停čģŠå ´äšŸčĢ‹é¸æ“‡\"過č”Ŋ\"。", - "pt_BR": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos.", - "pt": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos." - }, - "condition": { - "and": [ - "bicycle_parking!=shed", - "location!=underground" - ] - }, - "mappings": [ - { - "if": "covered=yes", - "then": { - "en": "This parking is covered (it has a roof)", - "nl": "Deze parking is overdekt (er is een afdak)", - "gl": "Este aparcadoiro estÃĄ cuberto (ten un teito)", - "de": "Dieser Parkplatz ist Ãŧberdacht (er hat ein Dach)", - "fr": "Ce parking est couvert (il a un toit)", - "hu": "A parkolÃŗ fedett", - "it": "È un parcheggio coperto (ha un tetto)", - "zh_Hant": "這個停čģŠå ´æœ‰éŽč”Ŋ (æœ‰åą‹é ‚)", - "ru": "Đ­Ņ‚Đž ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ° (ĐĩŅŅ‚ŅŒ ĐēŅ€Ņ‹ŅˆĐ°/ĐŊавĐĩŅ)", - "pt_BR": "Este estacionamento Ê coberto (tem um telhado)", - "pt": "Este estacionamento Ê coberto (tem um telhado)" - } - }, - { - "if": "covered=no", - "then": { - "en": "This parking is not covered", - "nl": "Deze parking is niet overdekt", - "gl": "Este aparcadoiro non estÃĄ cuberto", - "de": "Dieser Parkplatz ist nicht Ãŧberdacht", - "fr": "Ce parking n'est pas couvert", - "hu": "A parkolÃŗ nem fedett", - "it": "Non è un parcheggio coperto", - "zh_Hant": "這個停čģŠå ´æ˛’有過č”Ŋ", - "ru": "Đ­Ņ‚Đž ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°", - "pt_BR": "Este estacionamento nÃŖo Ê coberto", - "pt": "Este estacionamento nÃŖo Ê coberto" - } - } - ], - "id": "Is covered?" - }, - { - "question": { - "en": "How many bicycles fit in this bicycle parking (including possible cargo bicycles)?", - "fr": "Combien de vÊlos entrent dans ce parking à vÊlos (y compris les Êventuels vÊlos de transport) ?", - "nl": "Hoeveel fietsen kunnen in deze fietsparking (inclusief potentiÃĢel bakfietsen)?", - "gl": "Cantas bicicletas caben neste aparcadoiro de bicicletas (incluídas as posíbeis bicicletas de carga)?", - "de": "Wie viele Fahrräder passen auf diesen Fahrrad-Parkplatz (einschließlich mÃļglicher Lastenfahrräder)?", - "it": "Quante biciclette entrano in questo parcheggio per bici (incluse le eventuali bici da trasporto)?", - "zh_Hant": "這個喎čģŠåœčģŠå ´čƒŊ攞嚞台喎čģŠ (包æ‹ŦčŖįŽąå–ŽčģŠ)īŧŸ" - }, - "render": { - "en": "Place for {capacity} bikes", - "fr": "Place pour {capacity} vÊlos", - "nl": "Plaats voor {capacity} fietsen", - "gl": "Lugar para {capacity} bicicletas", - "de": "Platz fÃŧr {capacity} Fahrräder", - "it": "Posti per {capacity} bici", - "zh_Hant": "{capacity} å–ŽčģŠįš„地斚", - "ru": "МĐĩŅŅ‚Đž Đ´ĐģŅ {capacity} вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°(Ов)", - "pt_BR": "Lugar para {capacity} bicicletas", - "pt": "Lugar para {capacity} bicicletas" - }, - "freeform": { - "key": "capacity", - "type": "nat" - }, - "id": "Capacity" - }, - { - "question": { - "en": "Who can use this bicycle parking?", - "nl": "Wie mag er deze fietsenstalling gebruiken?", - "fr": "Qui peut utiliser ce parking à vÊlo ?", - "it": "Chi puÃ˛ usare questo parcheggio bici?", - "de": "Wer kann diesen Fahrradparplatz nutzen?", - "zh_Hant": "čĒ°å¯äģĨäŊŋį”¨é€™å€‹å–ŽčģŠåœčģŠå ´īŧŸ", - "ru": "КŅ‚Đž ĐŧĐžĐļĐĩŅ‚ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēОК?", - "pt_BR": "Quem pode usar este estacionamento de bicicletas?", - "pt": "Quem pode usar este estacionamento de bicicletas?" - }, - "render": { - "en": "{access}", - "de": "{access}", - "fr": "{access}", - "nl": "{access}", - "it": "{access}", - "ru": "{access}", - "id": "{access}", - "zh_Hant": "{access}", - "fi": "{access}", - "pt_BR": "{access}", - "pt": "{access}", - "eo": "{access}" - }, - "freeform": { - "key": "access", - "addExtraTags": [ - "fixme=Freeform used on 'access'-tag: possibly a wrong value" - ] - }, - "mappings": [ - { - "if": "access=yes", - "then": { - "en": "Publicly accessible", - "nl": "Publiek toegankelijke fietsenstalling", - "fr": "Accessible publiquement", - "it": "Accessibile pubblicamente", - "de": "Öffentlich zugänglich", - "zh_Hant": "å…Ŧ開可į”¨", - "pt_BR": "Acessível ao pÃēblico", - "pt": "Acessível ao pÃēblico" - } - }, - { - "if": "access=customers", - "then": { - "en": "Access is primarily for visitors to a business", - "nl": "Klanten van de zaak of winkel", - "fr": "Accès destinÊ principalement aux visiteurs d'un lieu", - "it": "Accesso destinato principalmente ai visitatori di un’attività", - "zh_Hant": "é€ščĄŒæ€§ä¸ģčĻæ˜¯į‚ēäē†äŧæĨ­įš„饧åŽĸ", - "pt_BR": "Acesso Ê principalmente para visitantes de uma empresa", - "de": "Der Zugang ist in erster Linie fÃŧr Besucher eines Unternehmens bestimmt", - "pt": "Acesso Ê principalmente para visitantes de uma empresa" - } - }, - { - "if": "access=private", - "then": { - "en": "Access is limited to members of a school, company or organisation", - "nl": "Private fietsenstalling van een school, een bedrijf, ...", - "fr": "Accès limitÊ aux membres d'une Êcole, entreprise ou organisation", - "it": "Accesso limitato ai membri di una scuola, una compagnia o un’organizzazione", - "zh_Hant": "é€ščĄŒæ€§åƒ…é™å­¸æ Ąã€å…Ŧ司或įĩ„įš”įš„æˆå“Ą", - "pt_BR": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo", - "de": "Der Zugang ist beschränkt auf Mitglieder einer Schule, eines Unternehmens oder einer Organisation", - "pt": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo" - } - } - ], - "id": "Access" - }, - { - "question": { - "en": "Does this bicycle parking have spots for cargo bikes?", - "nl": "Heeft deze fietsparking plaats voor bakfietsen?", - "gl": "Este aparcadoiro de bicicletas ten espazo para bicicletas de carga?", - "de": "Gibt es auf diesem Fahrrad-Parkplatz Plätze fÃŧr Lastenfahrräder?", - "fr": "Est-ce que ce parking à vÊlo a des emplacements pour des vÊlos cargo ?", - "it": "Questo parcheggio dispone di posti specifici per le bici da trasporto?", - "zh_Hant": "這個喎čģŠåœčģŠå ´æœ‰åœ°æ–šæ”žčŖįŽąįš„å–ŽčģŠå—ŽīŧŸ", - "pt_BR": "O estacionamento de bicicletas tem vagas para bicicletas de carga?", - "pt": "O estacionamento de bicicletas tem vagas para bicicletas de carga?" - }, - "mappings": [ - { - "if": "cargo_bike=yes", - "then": { - "en": "This parking has room for cargo bikes", - "nl": "Deze parking heeft plaats voor bakfietsen", - "gl": "Este aparcadoiro ten espazo para bicicletas de carga.", - "de": "Dieser Parkplatz bietet Platz fÃŧr Lastenfahrräder", - "fr": "Ce parking a de la place pour les vÊlos cargo", - "it": "Questo parcheggio ha posto per bici da trasporto", - "zh_Hant": "這個停čģŠå ´æœ‰åœ°æ–šå¯äģĨ攞čŖįŽąå–ŽčģŠ", - "pt_BR": "Este estacionamento tem vagas para bicicletas de carga", - "pt": "Este estacionamento tem vagas para bicicletas de carga" - } - }, - { - "if": "cargo_bike=designated", - "then": { - "en": "This parking has designated (official) spots for cargo bikes.", - "nl": "Er zijn speciale plaatsen voorzien voor bakfietsen", - "gl": "Este aparcadoiro ten espazos designados (oficiais) para bicicletas de carga.", - "de": "Dieser Parkplatz verfÃŧgt Ãŧber ausgewiesene (offizielle) Plätze fÃŧr Lastenfahrräder.", - "fr": "Ce parking a des emplacements (officiellement) destinÊs aux vÊlos cargo.", - "it": "Questo parcheggio ha posti destinati (ufficialmente) alle bici da trasporto.", - "zh_Hant": "這停čģŠå ´æœ‰č¨­č¨ˆ (厘斚) įŠē間įĩĻčŖįŽąįš„å–ŽčģŠã€‚", - "pt_BR": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga.", - "pt": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga." - } - }, - { - "if": "cargo_bike=no", - "then": { - "en": "You're not allowed to park cargo bikes", - "nl": "Je mag hier geen bakfietsen parkeren", - "gl": "Non estÃĄ permitido aparcar bicicletas de carga", - "de": "Es ist nicht erlaubt, Lastenfahrräder zu parken", - "fr": "Il est interdit de garer des vÊlos cargo", - "it": "Il parcheggio delle bici da trasporto è proibito", - "pt_BR": "VocÃĒ nÃŖo tem permissÃŖo para estacionar bicicletas de carga", - "pt": "NÃŖo tem permissÃŖo para estacionar bicicletas de carga" - } - } - ], - "id": "Cargo bike spaces?" - }, - { - "question": { - "en": "How many cargo bicycles fit in this bicycle parking?", - "nl": "Voor hoeveel bakfietsen heeft deze fietsparking plaats?", - "fr": "Combien de vÊlos de transport entrent dans ce parking à vÊlos ?", - "gl": "Cantas bicicletas de carga caben neste aparcadoiro de bicicletas?", - "de": "Wie viele Lastenfahrräder passen auf diesen Fahrrad-Parkplatz?", - "it": "Quante bici da trasporto entrano in questo parcheggio per bici?", - "pt_BR": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?", - "pt": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?" - }, - "render": { - "en": "This parking fits {capacity:cargo_bike} cargo bikes", - "nl": "Deze parking heeft plaats voor {capacity:cargo_bike} fietsen", - "fr": "Ce parking a de la place pour {capacity:cargo_bike} vÊlos de transport", - "gl": "Neste aparcadoiro caben {capacity:cargo_bike} bicicletas de carga", - "de": "Auf diesen Parkplatz passen {capacity:cargo_bike} Lastenfahrräder", - "it": "Questo parcheggio puÃ˛ contenere {capacity:cargo_bike} bici da trasporto", - "pt_BR": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga", - "pt": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga" - }, - "condition": "cargo_bike~designated|yes", - "freeform": { - "key": "capacity:cargo_bike", - "type": "nat" - }, - "id": "Cargo bike capacity?" - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/bike_parking/parking.svg" - }, - "iconSize": "40,40,bottom", - "location": [ - "point", - "centroid" - ] - }, - { - "color": "#00f", - "width": "1" - } - ] + { + "color": "#00f", + "width": "1" + } + ] } \ No newline at end of file diff --git a/assets/layers/bike_repair_station/bike_repair_station.json b/assets/layers/bike_repair_station/bike_repair_station.json index d9c34b759..0e37ac26a 100644 --- a/assets/layers/bike_repair_station/bike_repair_station.json +++ b/assets/layers/bike_repair_station/bike_repair_station.json @@ -1,834 +1,771 @@ { - "id": "bike_repair_station", - "name": { - "en": "Bike stations (repair, pump or both)", - "nl": "Fietspunten (herstel, pomp of allebei)", - "fr": "Station velo (rÊparation, pompe à vÊlo)", - "gl": "EstaciÃŗn de bicicletas (arranxo, bomba de ar ou ambos)", - "de": "Fahrradstationen (Reparatur, Pumpe oder beides)", - "it": "Stazioni bici (riparazione, gonfiaggio o entrambi)", - "pt_BR": "EstaçÃĩes de bicicletas (reparo, bomba ou ambos)" + "id": "bike_repair_station", + "name": { + "en": "Bike stations (repair, pump or both)", + "nl": "Fietspunten (herstel, pomp of allebei)", + "fr": "Station velo (rÊparation, pompe à vÊlo)", + "gl": "EstaciÃŗn de bicicletas (arranxo, bomba de ar ou ambos)", + "de": "Fahrradstationen (Reparatur, Pumpe oder beides)", + "it": "Stazioni bici (riparazione, gonfiaggio o entrambi)", + "pt_BR": "EstaçÃĩes de bicicletas (reparo, bomba ou ambos)" + }, + "minzoom": 13, + "source": { + "osmTags": { + "and": [ + "amenity=bicycle_repair_station" + ] + } + }, + "title": { + "render": { + "en": "Bike station (pump & repair)", + "nl": "Herstelpunt met pomp", + "fr": "Point station velo avec pompe", + "gl": "EstaciÃŗn de bicicletas (arranxo e bomba de ar)", + "de": "Fahrradstation (Pumpe & Reparatur)", + "it": "Stazione bici (gonfiaggio & riparazione)", + "pt_BR": "EstaçÃŖo de bicicletas (bomba e reparo)" }, - "minzoom": 13, - "source": { - "osmTags": { - "and": [ - "amenity=bicycle_repair_station" - ] + "mappings": [ + { + "if": { + "or": [ + "service:bicycle:pump=no", + "service:bicycle:pump:operational_status=broken" + ] + }, + "then": { + "en": "Bike repair station", + "nl": "Herstelpunt", + "fr": "Point de rÊparation velo", + "gl": "EstaciÃŗn de arranxo de bicicletas", + "de": "Fahrrad-Reparaturstation", + "it": "Stazione riparazione bici", + "pt_BR": "EstaçÃŖo de reparo de bicicletas", + "pt": "EstaçÃŖo de reparo de bicicletas" } - }, - "title": { - "render": { - "en": "Bike station (pump & repair)", - "nl": "Herstelpunt met pomp", - "fr": "Point station velo avec pompe", - "gl": "EstaciÃŗn de bicicletas (arranxo e bomba de ar)", - "de": "Fahrradstation (Pumpe & Reparatur)", - "it": "Stazione bici (gonfiaggio & riparazione)", - "pt_BR": "EstaçÃŖo de bicicletas (bomba e reparo)" + }, + { + "if": { + "and": [ + "service:bicycle:pump=yes", + "service:bicycle:tools=yes" + ] }, - "mappings": [ + "then": { + "en": "Bike repair station", + "nl": "Herstelpunt", + "fr": "Point de rÊparation", + "gl": "EstaciÃŗn de arranxo de bicicletas", + "de": "Fahrrad-Reparaturstation", + "it": "Stazione riparazione bici", + "pt_BR": "EstaçÃŖo de reparo de bicicletas", + "pt": "EstaçÃŖo de reparo de bicicletas" + } + }, + { + "if": { + "and": [ + "service:bicycle:pump:operational_status=broken", { - "if": { - "or": [ - "service:bicycle:pump=no", - "service:bicycle:pump:operational_status=broken" - ] - }, - "then": { - "en": "Bike repair station", - "nl": "Herstelpunt", - "fr": "Point de rÊparation velo", - "gl": "EstaciÃŗn de arranxo de bicicletas", - "de": "Fahrrad-Reparaturstation", - "it": "Stazione riparazione bici", - "pt_BR": "EstaçÃŖo de reparo de bicicletas", - "pt": "EstaçÃŖo de reparo de bicicletas" - } - }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - "service:bicycle:tools=yes" - ] - }, - "then": { - "en": "Bike repair station", - "nl": "Herstelpunt", - "fr": "Point de rÊparation", - "gl": "EstaciÃŗn de arranxo de bicicletas", - "de": "Fahrrad-Reparaturstation", - "it": "Stazione riparazione bici", - "pt_BR": "EstaçÃŖo de reparo de bicicletas", - "pt": "EstaçÃŖo de reparo de bicicletas" - } - }, - { - "if": { - "and": [ - "service:bicycle:pump:operational_status=broken", - { - "or": [ - "service:bicycle:tools=no", - "service:bicycle:tools=" - ] - } - ] - }, - "then": { - "en": "Broken pump", - "nl": "Kapotte fietspomp", - "fr": "Pompe cassÊe", - "gl": "Bomba de ar estragada", - "de": "Kaputte Pumpe", - "it": "Pompa rotta", - "ru": "ĐĄĐģĐžĐŧĐ°ĐŊĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ", - "pt_BR": "Bomba quebrada" - } - }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - "service:bicycle:tools=no", - "name~*" - ] - }, - "then": { - "en": "Bicycle pump {name}", - "nl": "Fietspomp {name}", - "fr": "Pompe de vÊlo {name}", - "gl": "Bomba de ar {name}", - "de": "Fahrradpumpe {name}", - "it": "Pompa per bici {name}", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ {name}", - "pt_BR": "Bomba de bicicleta {name}" - } - }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - "service:bicycle:tools=no" - ] - }, - "then": { - "en": "Bicycle pump", - "nl": "Fietspomp", - "fr": "Pompe de vÊlo", - "gl": "Bomba de ar", - "de": "Fahrradpumpe", - "it": "Pompa per bici", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ", - "pt_BR": "Bomba de bicicleta" - } + "or": [ + "service:bicycle:tools=no", + "service:bicycle:tools=" + ] } - ] + ] + }, + "then": { + "en": "Broken pump", + "nl": "Kapotte fietspomp", + "fr": "Pompe cassÊe", + "gl": "Bomba de ar estragada", + "de": "Kaputte Pumpe", + "it": "Pompa rotta", + "ru": "ĐĄĐģĐžĐŧĐ°ĐŊĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ", + "pt_BR": "Bomba quebrada" + } + }, + { + "if": { + "and": [ + "service:bicycle:pump=yes", + "service:bicycle:tools=no", + "name~*" + ] + }, + "then": { + "en": "Bicycle pump {name}", + "nl": "Fietspomp {name}", + "fr": "Pompe de vÊlo {name}", + "gl": "Bomba de ar {name}", + "de": "Fahrradpumpe {name}", + "it": "Pompa per bici {name}", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ {name}", + "pt_BR": "Bomba de bicicleta {name}" + } + }, + { + "if": { + "and": [ + "service:bicycle:pump=yes", + "service:bicycle:tools=no" + ] + }, + "then": { + "en": "Bicycle pump", + "nl": "Fietspomp", + "fr": "Pompe de vÊlo", + "gl": "Bomba de ar", + "de": "Fahrradpumpe", + "it": "Pompa per bici", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ", + "pt_BR": "Bomba de bicicleta" + } + } + ] + }, + "titleIcons": [ + { + "render": "", + "condition": "operator=De Fietsambassade Gent" }, - "titleIcons": [ + "defaults" + ], + "tagRenderings": [ + "images", + { + "id": "bike_repair_station-available-services", + "question": { + "en": "Which services are available at this bike station?", + "nl": "Welke functies biedt dit fietspunt?", + "fr": "Quels services sont valables à cette station vÊlo ?", + "gl": "Que servizos estÃĄn dispoÃąÃ­beis nesta estaciÃŗn de bicicletas?", + "de": "Welche Einrichtungen stehen an dieser Fahrradstation zur VerfÃŧgung?", + "it": "Quali servizi sono disponibili in questa stazione per bici?", + "pt_BR": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?", + "pt": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?" + }, + "mappings": [ { - "render": "", - "condition": "operator=De Fietsambassade Gent" - }, - "defaults" - ], - "tagRenderings": [ - "images", - { - "id": "bike_repair_station-available-services", - "question": { - "en": "Which services are available at this bike station?", - "nl": "Welke functies biedt dit fietspunt?", - "fr": "Quels services sont valables à cette station vÊlo ?", - "gl": "Que servizos estÃĄn dispoÃąÃ­beis nesta estaciÃŗn de bicicletas?", - "de": "Welche Einrichtungen stehen an dieser Fahrradstation zur VerfÃŧgung?", - "it": "Quali servizi sono disponibili in questa stazione per bici?", - "pt_BR": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?", - "pt": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?" - }, - "mappings": [ - { - "if": { - "and": [ - "service:bicycle:tools=no", - "service:bicycle:pump=yes" - ] - }, - "then": { - "en": "There is only a pump present", - "nl": "Er is enkel een pomp aanwezig", - "fr": "Il y a seulement une pompe", - "gl": "SÃŗ hai unha bomba de ar presente", - "de": "Es ist nur eine Pumpe vorhanden", - "it": "C’è solamente una pompa presente", - "pt_BR": "HÃĄ somente uma bomba presente", - "pt": "HÃĄ somente uma bomba presente" - } - }, - { - "if": { - "and": [ - "service:bicycle:tools=yes", - "service:bicycle:pump=no" - ] - }, - "then": { - "en": "There are only tools (screwdrivers, pliers...) present", - "nl": "Er is enkel gereedschap aanwezig (schroevendraaier, tang...)", - "fr": "Il y a seulement des outils (tournevis, pinces...)", - "gl": "SÃŗ hai ferramentas (desaparafusadores, alicates...) presentes", - "de": "Es sind nur Werkzeuge (Schraubenzieher, Zangen...) vorhanden", - "it": "Ci sono solo degli attrezzi (cacciaviti, pinzeâ€Ļ) presenti", - "pt_BR": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes", - "pt": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes" - } - }, - { - "if": { - "and": [ - "service:bicycle:tools=yes", - "service:bicycle:pump=yes" - ] - }, - "then": { - "en": "There are both tools and a pump present", - "nl": "Er is zowel een pomp als gereedschap aanwezig", - "fr": "Il y a des outils et une pompe", - "gl": "Hai ferramentas e unha bomba de ar presentes", - "de": "Es sind sowohl Werkzeuge als auch eine Pumpe vorhanden", - "it": "Ci sono sia attrezzi che pompa presenti", - "pt_BR": "HÃĄ tanto ferramentas e uma bomba presente", - "pt": "HÃĄ tanto ferramentas e uma bomba presente" - } - } + "if": { + "and": [ + "service:bicycle:tools=no", + "service:bicycle:pump=yes" ] + }, + "then": { + "en": "There is only a pump present", + "nl": "Er is enkel een pomp aanwezig", + "fr": "Il y a seulement une pompe", + "gl": "SÃŗ hai unha bomba de ar presente", + "de": "Es ist nur eine Pumpe vorhanden", + "it": "C’è solamente una pompa presente", + "pt_BR": "HÃĄ somente uma bomba presente", + "pt": "HÃĄ somente uma bomba presente" + } }, { - "question": { - "en": "Who maintains this cycle pump?", - "nl": "Wie beheert deze fietspomp?", - "fr": "Qui maintient cette pompe à vÊlo ?", - "it": "Chi gestisce questa pompa per bici?", - "de": "Wer wartet diese Fahrradpumpe?", - "pt_BR": "Quem faz a manutençÃŖo desta bomba de ciclo?", - "pt": "Quem faz a manutençÃŖo desta bomba de ciclo?" - }, - "render": { - "nl": "Beheer door {operator}", - "en": "Maintained by {operator}", - "fr": "Mantenue par {operator}", - "it": "Manutenuta da {operator}", - "de": "Gewartet von {operator}", - "pt_BR": "Mantida por {operator}", - "pt": "Mantida por {operator}" - }, - "freeform": { - "key": "operator" - }, - "mappings": [ - { - "if": "operator=De Fietsambassade Gent", - "then": "De Fietsambassade Gent", - "hideInAnswer": "_country!=be" - } - ], - "id": "bike_repair_station-operator" - }, - { - "question": { - "en": "What is the email address of the maintainer?", - "nl": "Wat is het email-adres van de beheerder?", - "de": "Wie lautet die E-Mail-Adresse des Betreuers?" - }, - "freeform": { - "key": "email", - "type": "email" - }, - "render": "{email}", - "id": "bike_repair_station-email" - }, - { - "question": { - "en": "What is the phone number of the maintainer?", - "nl": "Wat is het telefoonnummer van de beheerder?", - "de": "Wie lautet die Telefonnummer des Betreibers?" - }, - "freeform": { - "key": "phone", - "type": "phone" - }, - "render": "{phone}", - "id": "bike_repair_station-phone" - }, - { - "question": { - "nl": "Wanneer is dit fietsherstelpunt open?", - "en": "When is this bicycle repair point open?", - "fr": "Quand ce point de rÊparation de vÊlo est-il ouvert ?", - "it": "Quando è aperto questo punto riparazione bici?", - "de": "Wann ist diese Fahrradreparaturstelle geÃļffnet?", - "ru": "КоĐŗĐ´Đ° Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚ ŅŅ‚Đ° Ņ‚ĐžŅ‡ĐēĐ° ОйŅĐģŅƒĐļиваĐŊиŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?" - }, - "render": "{opening_hours_table()}", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "mappings": [ - { - "if": "opening_hours=24/7", - "then": { - "nl": "Dag en nacht open", - "en": "Always open", - "fr": "Ouvert en permanence", - "it": "Sempre aperto", - "de": "Immer geÃļffnet", - "ru": "ВŅĐĩĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đž", - "pt_BR": "Sempre aberto", - "pt": "Sempre aberto" - } - }, - { - "if": "opening_hours=", - "then": { - "nl": "Dag en nacht open", - "en": "Always open", - "fr": "Ouvert en permanence", - "it": "Sempre aperto", - "de": "Immer geÃļffnet", - "pt_BR": "Sempre aberto", - "pt": "Sempre aberto" - }, - "hideInAnswer": true - } - ], - "id": "bike_repair_station-opening_hours" - }, - { - "id": "bike_repair_station-bike-chain-tool", - "question": { - "en": "Does this bike repair station have a special tool to repair your bike chain?", - "nl": "Heeft dit herstelpunt een speciale reparatieset voor je ketting?", - "fr": "Est-ce que cette station vÊlo a un outil specifique pour rÊparer la chaÃŽne du vÊlo ?", - "gl": "Esta estaciÃŗn de arranxo de bicicletas ten unha ferramenta especial para arranxar a cadea da tÃēa bicicleta?", - "de": "VerfÃŧgt diese Fahrrad-Reparaturstation Ãŧber Spezialwerkzeug zur Reparatur von Fahrradketten?", - "it": "Questa stazione di riparazione bici ha un attrezzo speciale per riparare la catena della bici?" - }, - "condition": "service:bicycle:tools=yes", - "mappings": [ - { - "if": "service:bicycle:chain_tool=yes", - "then": { - "en": "There is a chain tool", - "nl": "Er is een reparatieset voor je ketting", - "fr": "Il y a un outil pour rÊparer la chaine", - "gl": "Hai unha ferramenta para a cadea", - "de": "Es gibt ein Kettenwerkzeug", - "it": "È presente un utensile per riparare la catena", - "pt_BR": "HÃĄ uma ferramenta de corrente", - "pt": "HÃĄ uma ferramenta de corrente" - } - }, - { - "if": "service:bicycle:chain_tool=no", - "then": { - "en": "There is no chain tool", - "nl": "Er is geen reparatieset voor je ketting", - "fr": "Il n'y a pas d'outil pour rÊparer la chaine", - "gl": "Non hai unha ferramenta para a cadea", - "de": "Es gibt kein Kettenwerkzeug", - "it": "Non è presente un utensile per riparare la catena", - "pt_BR": "NÃŖo hÃĄ uma ferramenta de corrente", - "pt": "NÃŖo hÃĄ uma ferramenta de corrente" - } - } + "if": { + "and": [ + "service:bicycle:tools=yes", + "service:bicycle:pump=no" ] + }, + "then": { + "en": "There are only tools (screwdrivers, pliers...) present", + "nl": "Er is enkel gereedschap aanwezig (schroevendraaier, tang...)", + "fr": "Il y a seulement des outils (tournevis, pinces...)", + "gl": "SÃŗ hai ferramentas (desaparafusadores, alicates...) presentes", + "de": "Es sind nur Werkzeuge (Schraubenzieher, Zangen...) vorhanden", + "it": "Ci sono solo degli attrezzi (cacciaviti, pinzeâ€Ļ) presenti", + "pt_BR": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes", + "pt": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes" + } }, { - "id": "bike_repair_station-bike-stand", - "question": { - "en": "Does this bike station have a hook to hang your bike on or a stand to raise it?", - "nl": "Heeft dit herstelpunt een haak of standaard om je fiets op te hangen/zetten?", - "fr": "Est-ce que cette station vÊlo à un crochet pour suspendre son vÊlo ou une accroche pour l'ÊlevÊ ?", - "gl": "Esta estaciÃŗn de bicicletas ten un guindastre para pendurar a tÃēa bicicleta ou un soporte para elevala?", - "de": "Hat diese Fahrradstation einen Haken, an dem Sie Ihr Fahrrad aufhängen kÃļnnen, oder einen Ständer, um es anzuheben?", - "it": "Questa stazione bici ha un gancio per tenere sospesa la bici o un supporto per alzarla?" - }, - "condition": "service:bicycle:tools=yes", - "mappings": [ - { - "if": "service:bicycle:stand=yes", - "then": { - "en": "There is a hook or stand", - "nl": "Er is een haak of standaard", - "fr": "Il y a un crochet ou une accroche", - "gl": "Hai un guindastre ou soporte", - "de": "Es gibt einen Haken oder Ständer", - "it": "C’è un gancio o un supporto", - "pt_BR": "HÃĄ um gancho ou um suporte", - "pt": "HÃĄ um gancho ou um suporte" - } - }, - { - "if": "service:bicycle:stand=no", - "then": { - "en": "There is no hook or stand", - "nl": "Er is geen haak of standaard", - "fr": "Il n'y pas de crochet ou d'accroche", - "gl": "Non hai un guindastre ou soporte", - "de": "Es gibt keinen Haken oder Ständer", - "it": "Non c’è nÊ un gancio nÊ un supporto", - "pt_BR": "NÃŖo hÃĄ um gancho ou um suporte", - "pt": "NÃŖo hÃĄ um gancho ou um suporte" - } - } + "if": { + "and": [ + "service:bicycle:tools=yes", + "service:bicycle:pump=yes" ] + }, + "then": { + "en": "There are both tools and a pump present", + "nl": "Er is zowel een pomp als gereedschap aanwezig", + "fr": "Il y a des outils et une pompe", + "gl": "Hai ferramentas e unha bomba de ar presentes", + "de": "Es sind sowohl Werkzeuge als auch eine Pumpe vorhanden", + "it": "Ci sono sia attrezzi che pompa presenti", + "pt_BR": "HÃĄ tanto ferramentas e uma bomba presente", + "pt": "HÃĄ tanto ferramentas e uma bomba presente" + } + } + ] + }, + { + "question": { + "en": "Who maintains this cycle pump?", + "nl": "Wie beheert deze fietspomp?", + "fr": "Qui maintient cette pompe à vÊlo ?", + "it": "Chi gestisce questa pompa per bici?", + "de": "Wer wartet diese Fahrradpumpe?", + "pt_BR": "Quem faz a manutençÃŖo desta bomba de ciclo?", + "pt": "Quem faz a manutençÃŖo desta bomba de ciclo?" + }, + "render": { + "nl": "Beheer door {operator}", + "en": "Maintained by {operator}", + "fr": "Mantenue par {operator}", + "it": "Manutenuta da {operator}", + "de": "Gewartet von {operator}", + "pt_BR": "Mantida por {operator}", + "pt": "Mantida por {operator}" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": "operator=De Fietsambassade Gent", + "then": "De Fietsambassade Gent", + "hideInAnswer": "_country!=be" + } + ], + "id": "bike_repair_station-operator" + }, + { + "question": { + "en": "What is the email address of the maintainer?", + "nl": "Wat is het email-adres van de beheerder?", + "de": "Wie lautet die E-Mail-Adresse des Betreuers?" + }, + "freeform": { + "key": "email", + "type": "email" + }, + "render": "{email}", + "id": "bike_repair_station-email" + }, + { + "question": { + "en": "What is the phone number of the maintainer?", + "nl": "Wat is het telefoonnummer van de beheerder?", + "de": "Wie lautet die Telefonnummer des Betreibers?" + }, + "freeform": { + "key": "phone", + "type": "phone" + }, + "render": "{phone}", + "id": "bike_repair_station-phone" + }, + { + "question": { + "nl": "Wanneer is dit fietsherstelpunt open?", + "en": "When is this bicycle repair point open?", + "fr": "Quand ce point de rÊparation de vÊlo est-il ouvert ?", + "it": "Quando è aperto questo punto riparazione bici?", + "de": "Wann ist diese Fahrradreparaturstelle geÃļffnet?", + "ru": "КоĐŗĐ´Đ° Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚ ŅŅ‚Đ° Ņ‚ĐžŅ‡ĐēĐ° ОйŅĐģŅƒĐļиваĐŊиŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?" + }, + "render": "{opening_hours_table()}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "mappings": [ + { + "if": "opening_hours=24/7", + "then": { + "nl": "Dag en nacht open", + "en": "Always open", + "fr": "Ouvert en permanence", + "it": "Sempre aperto", + "de": "Immer geÃļffnet", + "ru": "ВŅĐĩĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đž", + "pt_BR": "Sempre aberto", + "pt": "Sempre aberto" + } }, { - "question": { - "en": "Is the bike pump still operational?", - "nl": "Werkt de fietspomp nog?", - "fr": "La pompe à vÊlo fonctionne-t-elle toujours ?", - "gl": "Segue a funcionar a bomba de ar?", - "de": "Ist die Fahrradpumpe noch funktionstÃŧchtig?", - "it": "La pompa per bici è sempre funzionante?", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?", - "pl": "Czy pompka rowerowa jest nadal sprawna?" - }, - "condition": "service:bicycle:pump=yes", - "mappings": [ - { - "if": "service:bicycle:pump:operational_status=broken", - "then": { - "en": "The bike pump is broken", - "nl": "De fietspomp is kapot", - "fr": "La pompe à vÊlo est cassÊe", - "gl": "A bomba de ar estÃĄ estragada", - "de": "Die Fahrradpumpe ist kaputt", - "it": "La pompa per bici è guasta", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ ŅĐģĐžĐŧĐ°ĐŊ", - "pl": "Pompka rowerowa jest zepsuta" - } - }, - { - "if": "service:bicycle:pump:operational_status=", - "then": { - "en": "The bike pump is operational", - "nl": "De fietspomp werkt nog", - "fr": "La pompe est opÊrationnelle", - "gl": "A bomba de ar estÃĄ operativa", - "de": "Die Fahrradpumpe ist betriebsbereit", - "it": "La pompa per bici funziona", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚", - "pl": "Pompka rowerowa jest sprawna" - } - } - ], - "id": "Operational status" + "if": "opening_hours=", + "then": { + "nl": "Dag en nacht open", + "en": "Always open", + "fr": "Ouvert en permanence", + "it": "Sempre aperto", + "de": "Immer geÃļffnet", + "pt_BR": "Sempre aberto", + "pt": "Sempre aberto" + }, + "hideInAnswer": true + } + ], + "id": "bike_repair_station-opening_hours" + }, + { + "id": "bike_repair_station-bike-chain-tool", + "question": { + "en": "Does this bike repair station have a special tool to repair your bike chain?", + "nl": "Heeft dit herstelpunt een speciale reparatieset voor je ketting?", + "fr": "Est-ce que cette station vÊlo a un outil specifique pour rÊparer la chaÃŽne du vÊlo ?", + "gl": "Esta estaciÃŗn de arranxo de bicicletas ten unha ferramenta especial para arranxar a cadea da tÃēa bicicleta?", + "de": "VerfÃŧgt diese Fahrrad-Reparaturstation Ãŧber Spezialwerkzeug zur Reparatur von Fahrradketten?", + "it": "Questa stazione di riparazione bici ha un attrezzo speciale per riparare la catena della bici?" + }, + "condition": "service:bicycle:tools=yes", + "mappings": [ + { + "if": "service:bicycle:chain_tool=yes", + "then": { + "en": "There is a chain tool", + "nl": "Er is een reparatieset voor je ketting", + "fr": "Il y a un outil pour rÊparer la chaine", + "gl": "Hai unha ferramenta para a cadea", + "de": "Es gibt ein Kettenwerkzeug", + "it": "È presente un utensile per riparare la catena", + "pt_BR": "HÃĄ uma ferramenta de corrente", + "pt": "HÃĄ uma ferramenta de corrente" + } }, { - "condition": { - "and": [ - "email~*", - "service:bicycle:pump:operational_status=broken" - ] - }, - "render": { - "en": "Report this bicycle pump as broken", - "nl": "Rapporteer deze fietspomp als kapot", - "de": "Melde diese Fahrradpumpe als kaputt" - }, - "id": "Email maintainer" + "if": "service:bicycle:chain_tool=no", + "then": { + "en": "There is no chain tool", + "nl": "Er is geen reparatieset voor je ketting", + "fr": "Il n'y a pas d'outil pour rÊparer la chaine", + "gl": "Non hai unha ferramenta para a cadea", + "de": "Es gibt kein Kettenwerkzeug", + "it": "Non è presente un utensile per riparare la catena", + "pt_BR": "NÃŖo hÃĄ uma ferramenta de corrente", + "pt": "NÃŖo hÃĄ uma ferramenta de corrente" + } + } + ] + }, + { + "id": "bike_repair_station-bike-stand", + "question": { + "en": "Does this bike station have a hook to hang your bike on or a stand to raise it?", + "nl": "Heeft dit herstelpunt een haak of standaard om je fiets op te hangen/zetten?", + "fr": "Est-ce que cette station vÊlo à un crochet pour suspendre son vÊlo ou une accroche pour l'ÊlevÊ ?", + "gl": "Esta estaciÃŗn de bicicletas ten un guindastre para pendurar a tÃēa bicicleta ou un soporte para elevala?", + "de": "Hat diese Fahrradstation einen Haken, an dem Sie Ihr Fahrrad aufhängen kÃļnnen, oder einen Ständer, um es anzuheben?", + "it": "Questa stazione bici ha un gancio per tenere sospesa la bici o un supporto per alzarla?" + }, + "condition": "service:bicycle:tools=yes", + "mappings": [ + { + "if": "service:bicycle:stand=yes", + "then": { + "en": "There is a hook or stand", + "nl": "Er is een haak of standaard", + "fr": "Il y a un crochet ou une accroche", + "gl": "Hai un guindastre ou soporte", + "de": "Es gibt einen Haken oder Ständer", + "it": "C’è un gancio o un supporto", + "pt_BR": "HÃĄ um gancho ou um suporte", + "pt": "HÃĄ um gancho ou um suporte" + } }, { - "question": { - "en": "What valves are supported?", - "nl": "Welke ventielen werken er met de pomp?", - "fr": "Quelles valves sont compatibles ?", - "gl": "Que vÃĄlvulas son compatíbeis?", - "de": "Welche Ventile werden unterstÃŧtzt?", - "it": "Quali valvole sono supportate?", - "pl": "Jakie zawory są obsługiwane?" - }, - "render": { - "en": "This pump supports the following valves: {valves}", - "nl": "Deze pomp werkt met de volgende ventielen: {valves}", - "fr": "Cette pompe est compatible avec les valves suivantes : {valves}", - "gl": "Esta bomba de ar admite as seguintes vÃĄlvulas: {valves}", - "de": "Diese Pumpe unterstÃŧtzt die folgenden Ventile: {valves}", - "it": "Questa pompa è compatibile con le seguenti valvole: {valves}", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŊĐ°ŅĐžŅ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ ŅĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đĩ ĐēĐģĐ°ĐŋĐ°ĐŊŅ‹: {valves}", - "pl": "Ta pompka obsługuje następujące zawory: {valves}" - }, - "freeform": { - "#addExtraTags": [ - "fixme=Freeform 'valves'-tag used: possibly a wrong value" - ], - "key": "valves" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "valves=sclaverand", - "then": { - "en": "Sclaverand (also known as Presta)", - "nl": "Sclaverand (ook gekend als Presta)", - "fr": "Sclaverand (aussi appelÊ Presta)", - "gl": "Sclaverand (tamÊn coÃąecido como Presta)", - "de": "Sklaverand (auch bekannt als Presta)", - "it": "Sclaverand (detta anche Presta)", - "ru": "КĐģĐ°ĐŋĐ°ĐŊ Presta (Ņ‚Đ°ĐēĐļĐĩ иСвĐĩŅŅ‚ĐŊŅ‹Đš ĐēĐ°Đē Ņ„Ņ€Đ°ĐŊŅ†ŅƒĐˇŅĐēиК ĐēĐģĐ°ĐŋĐ°ĐŊ)" - } - }, - { - "if": "valves=dunlop", - "then": { - "en": "Dunlop", - "nl": "Dunlop", - "fr": "Dunlop", - "gl": "Dunlop", - "de": "Dunlop", - "it": "Dunlop", - "ru": "КĐģĐ°ĐŋĐ°ĐŊ Dunlop" - } - }, - { - "if": "valves=schrader", - "then": { - "en": "Schrader (cars)", - "nl": "Schrader (auto's)", - "fr": "Schrader (les valves de voitures)", - "gl": "Schrader (para automÃŗbiles)", - "de": "Schrader (Autos)", - "it": "Schrader (valvola delle auto)" - } - } - ], - "id": "bike_repair_station-valves" + "if": "service:bicycle:stand=no", + "then": { + "en": "There is no hook or stand", + "nl": "Er is geen haak of standaard", + "fr": "Il n'y pas de crochet ou d'accroche", + "gl": "Non hai un guindastre ou soporte", + "de": "Es gibt keinen Haken oder Ständer", + "it": "Non c’è nÊ un gancio nÊ un supporto", + "pt_BR": "NÃŖo hÃĄ um gancho ou um suporte", + "pt": "NÃŖo hÃĄ um gancho ou um suporte" + } + } + ] + }, + { + "question": { + "en": "Is the bike pump still operational?", + "nl": "Werkt de fietspomp nog?", + "fr": "La pompe à vÊlo fonctionne-t-elle toujours ?", + "gl": "Segue a funcionar a bomba de ar?", + "de": "Ist die Fahrradpumpe noch funktionstÃŧchtig?", + "it": "La pompa per bici è sempre funzionante?", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?", + "pl": "Czy pompka rowerowa jest nadal sprawna?" + }, + "condition": "service:bicycle:pump=yes", + "mappings": [ + { + "if": "service:bicycle:pump:operational_status=broken", + "then": { + "en": "The bike pump is broken", + "nl": "De fietspomp is kapot", + "fr": "La pompe à vÊlo est cassÊe", + "gl": "A bomba de ar estÃĄ estragada", + "de": "Die Fahrradpumpe ist kaputt", + "it": "La pompa per bici è guasta", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ ŅĐģĐžĐŧĐ°ĐŊ", + "pl": "Pompka rowerowa jest zepsuta" + } }, { - "id": "bike_repair_station-electrical_pump", - "question": { - "en": "Is this an electric bike pump?", - "nl": "Is dit een electrische fietspomp?", - "fr": "Est-ce que cette pompe est Êlectrique ?", - "gl": "Esta Ê unha bomba de ar elÊctrica?", - "de": "Ist dies eine elektrische Fahrradpumpe?", - "it": "Questa pompa per bici è elettrica?", - "ru": "Đ­Ņ‚Đž ŅĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ?", - "pl": "Czy jest to elektryczna pompka do roweru?" - }, - "condition": "service:bicycle:pump=yes", - "mappings": [ - { - "if": "manual=yes", - "then": { - "en": "Manual pump", - "nl": "Manuele pomp", - "fr": "Pompe manuelle", - "gl": "Bomba de ar manual", - "de": "Manuelle Pumpe", - "it": "Pompa manuale", - "ru": "Đ ŅƒŅ‡ĐŊОК ĐŊĐ°ŅĐžŅ", - "pl": "Pompa ręczna", - "pt_BR": "Bomba manual", - "pt": "Bomba manual" - } - }, - { - "if": "manual=no", - "then": { - "en": "Electrical pump", - "nl": "Electrische pomp", - "fr": "Pompe Êlectrique", - "gl": "Bomba de ar elÊctrica", - "de": "Elektrische Pumpe", - "it": "Pompa elettrica", - "ru": "Đ­ĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК ĐŊĐ°ŅĐžŅ", - "pl": "Pompka elektryczna", - "pt_BR": "Bomba elÊtrica", - "pt": "Bomba elÊtrica" - } - } - ] + "if": "service:bicycle:pump:operational_status=", + "then": { + "en": "The bike pump is operational", + "nl": "De fietspomp werkt nog", + "fr": "La pompe est opÊrationnelle", + "gl": "A bomba de ar estÃĄ operativa", + "de": "Die Fahrradpumpe ist betriebsbereit", + "it": "La pompa per bici funziona", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚", + "pl": "Pompka rowerowa jest sprawna" + } + } + ], + "id": "Operational status" + }, + { + "condition": { + "and": [ + "email~*", + "service:bicycle:pump:operational_status=broken" + ] + }, + "render": { + "en": "Report this bicycle pump as broken", + "nl": "Rapporteer deze fietspomp als kapot", + "de": "Melde diese Fahrradpumpe als kaputt" + }, + "id": "Email maintainer" + }, + { + "question": { + "en": "What valves are supported?", + "nl": "Welke ventielen werken er met de pomp?", + "fr": "Quelles valves sont compatibles ?", + "gl": "Que vÃĄlvulas son compatíbeis?", + "de": "Welche Ventile werden unterstÃŧtzt?", + "it": "Quali valvole sono supportate?", + "pl": "Jakie zawory są obsługiwane?" + }, + "render": { + "en": "This pump supports the following valves: {valves}", + "nl": "Deze pomp werkt met de volgende ventielen: {valves}", + "fr": "Cette pompe est compatible avec les valves suivantes : {valves}", + "gl": "Esta bomba de ar admite as seguintes vÃĄlvulas: {valves}", + "de": "Diese Pumpe unterstÃŧtzt die folgenden Ventile: {valves}", + "it": "Questa pompa è compatibile con le seguenti valvole: {valves}", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŊĐ°ŅĐžŅ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ ŅĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đĩ ĐēĐģĐ°ĐŋĐ°ĐŊŅ‹: {valves}", + "pl": "Ta pompka obsługuje następujące zawory: {valves}" + }, + "freeform": { + "#addExtraTags": [ + "fixme=Freeform 'valves'-tag used: possibly a wrong value" + ], + "key": "valves" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "valves=sclaverand", + "then": { + "en": "Sclaverand (also known as Presta)", + "nl": "Sclaverand (ook gekend als Presta)", + "fr": "Sclaverand (aussi appelÊ Presta)", + "gl": "Sclaverand (tamÊn coÃąecido como Presta)", + "de": "Sklaverand (auch bekannt als Presta)", + "it": "Sclaverand (detta anche Presta)", + "ru": "КĐģĐ°ĐŋĐ°ĐŊ Presta (Ņ‚Đ°ĐēĐļĐĩ иСвĐĩŅŅ‚ĐŊŅ‹Đš ĐēĐ°Đē Ņ„Ņ€Đ°ĐŊŅ†ŅƒĐˇŅĐēиК ĐēĐģĐ°ĐŋĐ°ĐŊ)" + } }, { - "id": "bike_repair_station-manometer", - "question": { - "en": "Does the pump have a pressure indicator or manometer?", - "nl": "Heeft deze pomp een luchtdrukmeter?", - "fr": "Est-ce que la pompe à un manomètre integrÊ ?", - "gl": "Ten a bomba de ar un indicador de presiÃŗn ou un manÃŗmetro?", - "de": "VerfÃŧgt die Pumpe Ãŧber einen Druckanzeiger oder ein Manometer?", - "it": "Questa pompa ha l’indicatore della pressione o il manometro?", - "pl": "Czy pompka posiada wskaÅēnik ciśnienia lub manometr?" - }, - "condition": "service:bicycle:pump=yes", - "mappings": [ - { - "if": "manometer=yes", - "then": { - "en": "There is a manometer", - "nl": "Er is een luchtdrukmeter", - "fr": "Il y a un manomètre", - "gl": "Hai manÃŗmetro", - "de": "Es gibt ein Manometer", - "it": "C’è un manometro", - "ru": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€", - "pl": "Jest manometr", - "pt_BR": "HÃĄ um manômetro", - "pt": "HÃĄ um manômetro" - } - }, - { - "if": "manometer=no", - "then": { - "en": "There is no manometer", - "nl": "Er is geen luchtdrukmeter", - "fr": "Il n'y a pas de manomètre", - "gl": "Non hai manÃŗmetro", - "de": "Es gibt kein Manometer", - "it": "Non c’è un manometro", - "ru": "НĐĩŅ‚ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€Đ°", - "pl": "Nie ma manometru", - "pt_BR": "NÃŖo hÃĄ um manômetro", - "pt": "NÃŖo hÃĄ um manômetro" - } - }, - { - "if": "manometer=broken", - "then": { - "en": "There is manometer but it is broken", - "nl": "Er is een luchtdrukmeter maar die is momenteel defect", - "fr": "Il y a un manomètre mais il est cassÊ", - "gl": "Hai manÃŗmetro pero estÃĄ estragado", - "de": "Es gibt ein Manometer, aber es ist kaputt", - "it": "C’è un manometro ma è rotto", - "ru": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€, ĐŊĐž ĐžĐŊ ŅĐģĐžĐŧĐ°ĐŊ", - "pl": "Jest manometr, ale jest uszkodzony", - "pt_BR": "HÃĄ um manômetro mas estÃĄ quebrado", - "pt": "HÃĄ um manômetro mas estÃĄ quebrado" - } - } - ] + "if": "valves=dunlop", + "then": { + "en": "Dunlop", + "nl": "Dunlop", + "fr": "Dunlop", + "gl": "Dunlop", + "de": "Dunlop", + "it": "Dunlop", + "ru": "КĐģĐ°ĐŋĐ°ĐŊ Dunlop" + } }, - "level" - ], - "icon": { + { + "if": "valves=schrader", + "then": { + "en": "Schrader (cars)", + "nl": "Schrader (auto's)", + "fr": "Schrader (les valves de voitures)", + "gl": "Schrader (para automÃŗbiles)", + "de": "Schrader (Autos)", + "it": "Schrader (valvola delle auto)" + } + } + ], + "id": "bike_repair_station-valves" + }, + { + "id": "bike_repair_station-electrical_pump", + "question": { + "en": "Is this an electric bike pump?", + "nl": "Is dit een electrische fietspomp?", + "fr": "Est-ce que cette pompe est Êlectrique ?", + "gl": "Esta Ê unha bomba de ar elÊctrica?", + "de": "Ist dies eine elektrische Fahrradpumpe?", + "it": "Questa pompa per bici è elettrica?", + "ru": "Đ­Ņ‚Đž ŅĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ?", + "pl": "Czy jest to elektryczna pompka do roweru?" + }, + "condition": "service:bicycle:pump=yes", + "mappings": [ + { + "if": "manual=yes", + "then": { + "en": "Manual pump", + "nl": "Manuele pomp", + "fr": "Pompe manuelle", + "gl": "Bomba de ar manual", + "de": "Manuelle Pumpe", + "it": "Pompa manuale", + "ru": "Đ ŅƒŅ‡ĐŊОК ĐŊĐ°ŅĐžŅ", + "pl": "Pompa ręczna", + "pt_BR": "Bomba manual", + "pt": "Bomba manual" + } + }, + { + "if": "manual=no", + "then": { + "en": "Electrical pump", + "nl": "Electrische pomp", + "fr": "Pompe Êlectrique", + "gl": "Bomba de ar elÊctrica", + "de": "Elektrische Pumpe", + "it": "Pompa elettrica", + "ru": "Đ­ĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК ĐŊĐ°ŅĐžŅ", + "pl": "Pompka elektryczna", + "pt_BR": "Bomba elÊtrica", + "pt": "Bomba elÊtrica" + } + } + ] + }, + { + "id": "bike_repair_station-manometer", + "question": { + "en": "Does the pump have a pressure indicator or manometer?", + "nl": "Heeft deze pomp een luchtdrukmeter?", + "fr": "Est-ce que la pompe à un manomètre integrÊ ?", + "gl": "Ten a bomba de ar un indicador de presiÃŗn ou un manÃŗmetro?", + "de": "VerfÃŧgt die Pumpe Ãŧber einen Druckanzeiger oder ein Manometer?", + "it": "Questa pompa ha l’indicatore della pressione o il manometro?", + "pl": "Czy pompka posiada wskaÅēnik ciśnienia lub manometr?" + }, + "condition": "service:bicycle:pump=yes", + "mappings": [ + { + "if": "manometer=yes", + "then": { + "en": "There is a manometer", + "nl": "Er is een luchtdrukmeter", + "fr": "Il y a un manomètre", + "gl": "Hai manÃŗmetro", + "de": "Es gibt ein Manometer", + "it": "C’è un manometro", + "ru": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€", + "pl": "Jest manometr", + "pt_BR": "HÃĄ um manômetro", + "pt": "HÃĄ um manômetro" + } + }, + { + "if": "manometer=no", + "then": { + "en": "There is no manometer", + "nl": "Er is geen luchtdrukmeter", + "fr": "Il n'y a pas de manomètre", + "gl": "Non hai manÃŗmetro", + "de": "Es gibt kein Manometer", + "it": "Non c’è un manometro", + "ru": "НĐĩŅ‚ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€Đ°", + "pl": "Nie ma manometru", + "pt_BR": "NÃŖo hÃĄ um manômetro", + "pt": "NÃŖo hÃĄ um manômetro" + } + }, + { + "if": "manometer=broken", + "then": { + "en": "There is manometer but it is broken", + "nl": "Er is een luchtdrukmeter maar die is momenteel defect", + "fr": "Il y a un manomètre mais il est cassÊ", + "gl": "Hai manÃŗmetro pero estÃĄ estragado", + "de": "Es gibt ein Manometer, aber es ist kaputt", + "it": "C’è un manometro ma è rotto", + "ru": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€, ĐŊĐž ĐžĐŊ ŅĐģĐžĐŧĐ°ĐŊ", + "pl": "Jest manometr, ale jest uszkodzony", + "pt_BR": "HÃĄ um manômetro mas estÃĄ quebrado", + "pt": "HÃĄ um manômetro mas estÃĄ quebrado" + } + } + ] + }, + "level" + ], + "presets": [ + { + "title": { + "en": "Bike pump", + "nl": "Fietspomp", + "fr": "Pompe à vÊlo", + "gl": "Bomba de ar", + "de": "Fahrradpumpe", + "it": "Pompa per bici", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ", + "fi": "PyÃļräpumppu", + "pl": "Pompka do roweru", + "pt_BR": "Bomba de bicicleta" + }, + "tags": [ + "amenity=bicycle_repair_station", + "service:bicycle:tools=no", + "service:bicycle:pump=yes" + ], + "description": { + "en": "A device to inflate your tires on a fixed location in the public space.

Examples of bicycle pumps

", + "nl": "Een apparaat waar je je fietsbanden kan oppompen, beschikbaar in de publieke ruimte. De fietspomp in je kelder telt dus niet.

Voorbeelden

Examples of bicycle pumps

", + "it": "Un dispositivo per gonfiare le proprie gomme in un luogo fisso pubblicamente accessibile.

Esempi di pompe per biciclette

", + "fr": "Un dispositif pour gonfler vos pneus sur un emplacement fixe dans l'espace public.

Exemples de pompes à vÊlo

", + "de": "Ein Gerät zum Aufpumpen von Reifen an einem festen Standort im Ãļffentlichen Raum.

Beispiele fÃŧr Fahrradpumpen

", + "pl": "Urządzenie do pompowania opon w stałym miejscu w przestrzeni publicznej.

Przykłady pompek rowerowych

", + "pt_BR": "Um dispositivo para encher seus pneus em um local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

", + "pt": "Um aparelho para encher os seus pneus num local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

" + } + }, + { + "title": { + "en": "Bike repair station and pump", + "nl": "Herstelpunt en pomp", + "fr": "Point de rÊparation vÊlo avec pompe", + "gl": "EstaciÃŗn de arranxo de bicicletas con bomba de ar", + "de": "Fahrrad-Reparaturstation und Pumpe", + "it": "Stazione di riparazione bici e pompa", + "pl": "Stacja naprawy rowerÃŗw i pompka" + }, + "tags": [ + "amenity=bicycle_repair_station", + "service:bicycle:tools=yes", + "service:bicycle:pump=yes" + ], + "description": { + "en": "A device with tools to repair your bike combined with a pump at a fixed location. The tools are often secured with chains against theft.

Example

", + "nl": "Een apparaat met zowel gereedschap om je fiets te herstellen, met een pomp. Deze zijn op een vastgemaakt op een plaats in de publieke ruimte, bv. aan een paal.

Voorbeeld

", + "fr": "Un dispositif avec des outils pour rÊparer votre vÊlo combinÊ à une pompe a un emplacement fixe. Les outils sont souvent attachÊs par une chaÃŽne pour empÃĒcher le vol.

Exemple

", + "it": "Un dispositivo con attrezzi per riparare la tua bici e una pompa in un luogo fisso. Gli attrezzi sono spesso attaccati ad una catena per prevenire il furto.

Esempio

", + "de": "Ein Gerät mit Werkzeugen zur Reparatur von Fahrrädern kombiniert mit einer Pumpe an einem festen Standort. Die Werkzeuge sind oft mit Ketten gegen Diebstahl gesichert.

Beispiel

" + } + }, + { + "title": { + "en": "Bike repair station without pump", + "nl": "Herstelpunt zonder pomp", + "fr": "Point de rÊparation vÊlo sans pompe", + "gl": "EstaciÃŗn de arranxo de bicicletas sin bomba de ar", + "de": "Fahrrad-Reparaturstation ohne Pumpe", + "it": "Stazione di riparazione bici senza pompa" + }, + "tags": [ + "amenity=bicycle_repair_station", + "service:bicycle:tools=yes", + "service:bicycle:pump=no" + ] + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] + }, + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/bike_repair_station/repair_station.svg", "mappings": [ - { - "if": { - "and": [ - "service:bicycle:pump=no", - "service:bicycle:pump:operational_status=broken" - ] - }, - "then": "./assets/layers/bike_repair_station/repair_station.svg" + { + "if": { + "and": [ + "service:bicycle:pump=no", + "service:bicycle:pump:operational_status=broken" + ] }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - "service:bicycle:tools=yes" - ] - }, - "then": "./assets/layers/bike_repair_station/repair_station_pump.svg" + "then": "./assets/layers/bike_repair_station/repair_station.svg" + }, + { + "if": { + "and": [ + "service:bicycle:pump=yes", + "service:bicycle:tools=yes" + ] }, - { - "if": { - "and": [ - "service:bicycle:pump:operational_status=broken", - "service:bicycle:tools=no" - ] - }, - "then": "./assets/layers/bike_repair_station/broken_pump_2.svg" + "then": "./assets/layers/bike_repair_station/repair_station_pump.svg" + }, + { + "if": { + "and": [ + "service:bicycle:pump:operational_status=broken", + "service:bicycle:tools=no" + ] }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - { - "or": [ - "service:bicycle:tools=no", - "service:bicycle:tools=" - ] - } - ] - }, - "then": "./assets/layers/bike_repair_station/pump.svg" - } - ] - }, - "iconOverlays": [ - { - "if": "operator=De Fietsambassade Gent", - "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg", - "badge": true - } - ], - "iconSize": { - "render": "50,50,bottom" - }, - "color": { - "render": "#00f" - }, - "width": { - "render": "1" - }, - "wayHandling": 2, - "presets": [ - { - "title": { - "en": "Bike pump", - "nl": "Fietspomp", - "fr": "Pompe à vÊlo", - "gl": "Bomba de ar", - "de": "Fahrradpumpe", - "it": "Pompa per bici", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ", - "fi": "PyÃļräpumppu", - "pl": "Pompka do roweru", - "pt_BR": "Bomba de bicicleta" - }, - "tags": [ - "amenity=bicycle_repair_station", - "service:bicycle:tools=no", - "service:bicycle:pump=yes" - ], - "description": { - "en": "A device to inflate your tires on a fixed location in the public space.

Examples of bicycle pumps

", - "nl": "Een apparaat waar je je fietsbanden kan oppompen, beschikbaar in de publieke ruimte. De fietspomp in je kelder telt dus niet.

Voorbeelden

Examples of bicycle pumps

", - "it": "Un dispositivo per gonfiare le proprie gomme in un luogo fisso pubblicamente accessibile.

Esempi di pompe per biciclette

", - "fr": "Un dispositif pour gonfler vos pneus sur un emplacement fixe dans l'espace public.

Exemples de pompes à vÊlo

", - "de": "Ein Gerät zum Aufpumpen von Reifen an einem festen Standort im Ãļffentlichen Raum.

Beispiele fÃŧr Fahrradpumpen

", - "pl": "Urządzenie do pompowania opon w stałym miejscu w przestrzeni publicznej.

Przykłady pompek rowerowych

", - "pt_BR": "Um dispositivo para encher seus pneus em um local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

", - "pt": "Um aparelho para encher os seus pneus num local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

" - } - }, - { - "title": { - "en": "Bike repair station and pump", - "nl": "Herstelpunt en pomp", - "fr": "Point de rÊparation vÊlo avec pompe", - "gl": "EstaciÃŗn de arranxo de bicicletas con bomba de ar", - "de": "Fahrrad-Reparaturstation und Pumpe", - "it": "Stazione di riparazione bici e pompa", - "pl": "Stacja naprawy rowerÃŗw i pompka" - }, - "tags": [ - "amenity=bicycle_repair_station", - "service:bicycle:tools=yes", - "service:bicycle:pump=yes" - ], - "description": { - "en": "A device with tools to repair your bike combined with a pump at a fixed location. The tools are often secured with chains against theft.

Example

", - "nl": "Een apparaat met zowel gereedschap om je fiets te herstellen, met een pomp. Deze zijn op een vastgemaakt op een plaats in de publieke ruimte, bv. aan een paal.

Voorbeeld

", - "fr": "Un dispositif avec des outils pour rÊparer votre vÊlo combinÊ à une pompe a un emplacement fixe. Les outils sont souvent attachÊs par une chaÃŽne pour empÃĒcher le vol.

Exemple

", - "it": "Un dispositivo con attrezzi per riparare la tua bici e una pompa in un luogo fisso. Gli attrezzi sono spesso attaccati ad una catena per prevenire il furto.

Esempio

", - "de": "Ein Gerät mit Werkzeugen zur Reparatur von Fahrrädern kombiniert mit einer Pumpe an einem festen Standort. Die Werkzeuge sind oft mit Ketten gegen Diebstahl gesichert.

Beispiel

" - } - }, - { - "title": { - "en": "Bike repair station without pump", - "nl": "Herstelpunt zonder pomp", - "fr": "Point de rÊparation vÊlo sans pompe", - "gl": "EstaciÃŗn de arranxo de bicicletas sin bomba de ar", - "de": "Fahrrad-Reparaturstation ohne Pumpe", - "it": "Stazione di riparazione bici senza pompa" - }, - "tags": [ - "amenity=bicycle_repair_station", - "service:bicycle:tools=yes", - "service:bicycle:pump=no" - ] - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/bike_repair_station/repair_station.svg", - "mappings": [ - { - "if": { - "and": [ - "service:bicycle:pump=no", - "service:bicycle:pump:operational_status=broken" - ] - }, - "then": "./assets/layers/bike_repair_station/repair_station.svg" - }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - "service:bicycle:tools=yes" - ] - }, - "then": "./assets/layers/bike_repair_station/repair_station_pump.svg" - }, - { - "if": { - "and": [ - "service:bicycle:pump:operational_status=broken", - "service:bicycle:tools=no" - ] - }, - "then": "./assets/layers/bike_repair_station/broken_pump_2.svg" - }, - { - "if": { - "and": [ - "service:bicycle:pump=yes", - { - "or": [ - "service:bicycle:tools=no", - "service:bicycle:tools=" - ] - } - ] - }, - "then": "./assets/layers/bike_repair_station/pump.svg" - } - ] - }, - "iconBadges": [ + "then": "./assets/layers/bike_repair_station/broken_pump_2.svg" + }, + { + "if": { + "and": [ + "service:bicycle:pump=yes", { - "if": "operator=De Fietsambassade Gent", - "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg" + "or": [ + "service:bicycle:tools=no", + "service:bicycle:tools=" + ] } - ], - "iconSize": { - "render": "50,50,bottom" + ] }, - "location": [ - "point", - "centroid" - ] - }, + "then": "./assets/layers/bike_repair_station/pump.svg" + } + ] + }, + "iconBadges": [ { - "color": { - "render": "#00f" - }, - "width": { - "render": "1" - } + "if": "operator=De Fietsambassade Gent", + "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg" } - ] + ], + "iconSize": { + "render": "50,50,bottom" + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": { + "render": "#00f" + }, + "width": { + "render": "1" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/bike_shop/bike_shop.json b/assets/layers/bike_shop/bike_shop.json index 991843e5f..2f4bf3e0e 100644 --- a/assets/layers/bike_shop/bike_shop.json +++ b/assets/layers/bike_shop/bike_shop.json @@ -1,808 +1,737 @@ { - "id": "bike_shop", - "name": { + "id": "bike_shop", + "name": { + "en": "Bike repair/shop", + "nl": "Fietszaak", + "fr": "Magasin ou rÊparateur de vÊlo", + "gl": "Tenda/arranxo de bicicletas", + "de": "Fahrradwerkstatt/geschäft", + "it": "Venditore/riparatore bici", + "ru": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ", + "pt_BR": "Reparo/loja de bicicletas", + "pt": "Reparo/loja de bicicletas" + }, + "minzoom": 13, + "source": { + "osmTags": { + "#": "We select all bicycle shops, sport shops (but we try to weed out non-bicycle related shops), and any shop with a bicycle related tag", + "or": [ + "shop=bicycle", + { + "#": "A bicycle rental with a network is something such as villo, bluebike, ... We don't want them", + "and": [ + "amenity=bicycle_rental", + "network=" + ] + }, + { + "#": "if sport is defined and is not bicycle, it is not matched; if bicycle retail/repair is marked as 'no', it is not shown to too.", + "##": "There will be a few false-positives with this. They will get filtered out by people marking both 'not selling bikes' and 'not repairing bikes'. Furthermore, the OSMers will add a sports-subcategory on it", + "and": [ + "shop=sports", + "service:bicycle:retail!=no", + "service:bicycle:repair!=no", + { + "or": [ + "sport=bicycle", + "sport=cycling", + "sport=" + ] + } + ] + } + ] + } + }, + "title": { + "render": { + "en": "Bike repair/shop", + "nl": "Fietszaak", + "fr": "Magasin ou rÊparateur de vÊlo", + "gl": "Tenda/arranxo de bicicletas", + "de": "Fahrradwerkstatt/geschäft", + "it": "Venditore/riparatore bici", + "ru": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ", + "pt_BR": "Reparo/loja de bicicletas", + "pt": "Reparo/loja de bicicletas" + }, + "mappings": [ + { + "if": { + "and": [ + "shop=sports" + ] + }, + "then": { + "en": "Sport gear shop {name}", + "nl": "Sportwinkel {name}", + "fr": "Magasin de sport {name}", + "it": "Negozio di articoli sportivi {name}", + "ru": "МаĐŗаСиĐŊ ŅĐŋĐžŅ€Ņ‚ивĐŊĐžĐŗĐž иĐŊвĐĩĐŊŅ‚Đ°Ņ€Ņ {name}", + "de": "Sportartikelgeschäft {name}", + "pt_BR": "Loja de equipamentos esportivos {name}", + "pt": "Loja de equipamentos desportivos {name}" + } + }, + { + "if": { + "and": [ + "shop!~.*bicycle.*", + "shop~*" + ] + }, + "then": "Other shop" + }, + { + "if": { + "and": [ + { + "or": [ + "service:bicycle:rental=yes", + "amenity=bicycle_rental" + ] + } + ] + }, + "then": { + "nl": "Fietsverhuur {name}", + "en": "Bicycle rental {name}", + "fr": "Location de vÊlo {name}", + "it": "Noleggio di biciclette {name}", + "ru": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}", + "de": "Fahrradverleih{name}", + "pt_BR": "Aluguel de bicicletas {name}", + "pt": "Aluguel de bicicletas {name}" + } + }, + { + "if": { + "and": [ + "service:bicycle:retail!~yes", + "service:bicycle:repair=yes" + ] + }, + "then": { + "en": "Bike repair {name}", + "nl": "Fietsenmaker {name}", + "fr": "RÊparateur de vÊlo {name}", + "gl": "Arranxo de bicicletas {name}", + "de": "Fahrradwerkstatt {name}", + "it": "Riparazione biciclette {name", + "ru": "Đ ĐĩĐŧĐžĐŊŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}", + "pt_BR": "Reparo de bicicletas {name}", + "pt": "Reparo de bicicletas {name}" + } + }, + { + "if": { + "and": [ + "service:bicycle:repair!~yes" + ] + }, + "then": { + "en": "Bike shop {name}", + "nl": "Fietswinkel {name}", + "fr": "Magasin de vÊlo {name}", + "gl": "Tenda de bicicletas {name}", + "de": "Fahrradgeschäft {name}", + "it": "Negozio di biciclette {name}", + "ru": "МаĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}", + "pt_BR": "Loja de bicicletas {name}", + "pt": "Loja de bicicletas {name}" + } + }, + { + "if": "name~*", + "then": { + "en": "Bike repair/shop {name}", + "nl": "Fietszaak {name}", + "fr": "Magasin ou rÊparateur de vÊlo {name}", + "gl": "Tenda/arranxo de bicicletas {name}", + "de": "Fahrradwerkstatt/geschäft {name}", + "it": "Venditore/riparatore bici {name}", + "pt_BR": "Loja/reparo de bicicletas {name}", + "pt": "Loja/reparo de bicicletas {name}" + } + } + ] + }, + "titleIcons": [ + { + "render": "", + "condition": "operator=De Fietsambassade Gent" + }, + { + "condition": { + "or": [ + "service:bicycle:pump=yes", + "service:bicycle:pump=separate" + ] + }, + "render": "" + }, + { + "condition": "service:bicycle:diy=yes", + "render": "" + }, + { + "condition": "service:bicycle:cleaning=yes", + "render": "" + }, + "defaults" + ], + "description": { + "en": "A shop specifically selling bicycles or related items", + "nl": "Een winkel die hoofdzakelijk fietsen en fietstoebehoren verkoopt", + "fr": "Un magasin vendant spÊcifiquement des vÊlos ou des objets en lien", + "it": "Un negozio che vende specificatamente biciclette o articoli similari", + "ru": "МаĐŗаСиĐŊ, ŅĐŋĐĩŅ†Đ¸Đ°ĐģиСиŅ€ŅƒŅŽŅ‰Đ¸ĐšŅŅ ĐŊĐ° ĐŋŅ€ĐžĐ´Đ°ĐļĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв иĐģи ŅĐžĐŋŅƒŅ‚ŅŅ‚вŅƒŅŽŅ‰Đ¸Ņ… Ņ‚ОваŅ€ĐžĐ˛", + "pt_BR": "Uma loja que vende especificamente bicicletas ou itens relacionados", + "de": "Ein Geschäft, das speziell Fahrräder oder verwandte Artikel verkauft", + "pt": "Uma loja que vende especificamente bicicletas ou itens relacionados" + }, + "tagRenderings": [ + "images", + { + "id": "bike_shop-is-bicycle_shop", + "condition": { + "and": [ + "shop~*", + "shop!~bicycle", + "shop!~sports" + ] + }, + "render": { + "en": "This shop is specialized in selling {shop} and does bicycle related activities", + "nl": "Deze winkel verkoopt {shop} en heeft fiets-gerelateerde activiteiten.", + "fr": "Ce magasin est spÊcialisÊ dans la vente de {shop} et a des activitÊs liÊes au vÊlo", + "it": "Questo negozio è specializzato nella vendita di {shop} ed effettua attività relative alle biciclette", + "pt_BR": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas", + "de": "Dieses Geschäft ist auf den Verkauf von {shop} spezialisiert und im Bereich Fahrrad tätig", + "pt": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas" + } + }, + { + "question": { + "en": "What is the name of this bicycle shop?", + "nl": "Wat is de naam van deze fietszaak?", + "fr": "Quel est le nom du magasin de vÊlos ?", + "gl": "Cal Ê o nome desta tenda de bicicletas?", + "de": "Wie heißt dieser Fahrradladen?", + "it": "Qual è il nome di questo negozio di biciclette?", + "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?", + "pt_BR": "Qual o nome desta loja de bicicletas?", + "pt": "Qual o nome desta loja de bicicletas?" + }, + "render": { + "en": "This bicycle shop is called {name}", + "nl": "Deze fietszaak heet {name}", + "fr": "Ce magasin s'appelle {name}", + "gl": "Esta tenda de bicicletas chÃĄmase {name}", + "de": "Dieses Fahrradgeschäft heißt {name}", + "it": "Questo negozio di biciclette è chiamato {name}", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}", + "pt_BR": "Esta loja de bicicletas se chama {name}", + "pt": "Esta loja de bicicletas se chama {name}" + }, + "freeform": { + "key": "name" + }, + "id": "bike_shop-name" + }, + { + "question": { + "en": "What is the website of {name}?", + "nl": "Wat is de website van {name}?", + "fr": "Quel est le site web de {name} ?", + "gl": "Cal Ê a pÃĄxina web de {name}?", + "it": "Qual è il sito web di {name}?", + "ru": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?", + "id": "URL {name} apa?", + "de": "Was ist die Webseite von {name}?", + "pt_BR": "Qual o website de {name}?", + "pt": "Qual o website de {name}?" + }, + "render": "{website}", + "freeform": { + "key": "website", + "type": "url" + }, + "id": "bike_shop-website" + }, + { + "question": { + "en": "What is the phone number of {name}?", + "nl": "Wat is het telefoonnummer van {name}?", + "fr": "Quel est le numÊro de tÊlÊphone de {name} ?", + "gl": "Cal Ê o nÃēmero de telÊfono de {name}?", + "it": "Qual è il numero di telefono di {name}?", + "ru": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?", + "de": "Wie lautet die Telefonnummer von {name}?", + "pt_BR": "Qual o nÃēmero de telefone de {name}?", + "pt": "Qual Ê o nÃēmero de telefone de {name}?" + }, + "render": "{phone}", + "freeform": { + "key": "phone", + "type": "phone" + }, + "id": "bike_shop-phone" + }, + { + "question": { + "en": "What is the email address of {name}?", + "nl": "Wat is het email-adres van {name}?", + "fr": "Quelle est l'adresse Êlectronique de {name} ?", + "gl": "Cal Ê o enderezo de correo electrÃŗnico de {name}?", + "it": "Qual è l’indirizzo email di {name}?", + "ru": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?", + "de": "Wie lautet die E-Mail-Adresse von {name}?", + "pt_BR": "Qual o endereço de email de {name}?", + "pt": "Qual o endereço de email de {name}?" + }, + "render": "{email}", + "freeform": { + "key": "email", + "type": "email" + }, + "id": "bike_shop-email" + }, + { + "render": "{opening_hours_table(opening_hours)}", + "question": "When is this shop opened?", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "id": "bike_shop-opening_hours" + }, + "description", + { + "render": "Enkel voor {access}", + "freeform": { + "key": "access" + }, + "id": "bike_shop-access" + }, + { + "id": "bike_repair_sells-bikes", + "question": { + "en": "Does this shop sell bikes?", + "nl": "Verkoopt deze fietszaak fietsen?", + "fr": "Est-ce que ce magasin vend des vÊlos ?", + "gl": "Esta tenda vende bicicletas?", + "de": "Verkauft dieser Laden Fahrräder?", + "it": "Questo negozio vende bici?", + "ru": "ПŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Đģи вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?", + "pt_BR": "Esta loja vende bicicletas?", + "pt": "Esta loja vende bicicletas?" + }, + "mappings": [ + { + "if": "service:bicycle:retail=yes", + "then": { + "en": "This shop sells bikes", + "nl": "Deze winkel verkoopt fietsen", + "fr": "Ce magasin vend des vÊlos", + "gl": "Esta tenda vende bicicletas", + "de": "Dieses Geschäft verkauft Fahrräder", + "it": "Questo negozio vende bici", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", + "pt_BR": "Esta loja vende bicicletas", + "pt": "Esta loja vende bicicletas" + } + }, + { + "if": "service:bicycle:retail=no", + "then": { + "en": "This shop doesn't sell bikes", + "nl": "Deze winkel verkoopt geen fietsen", + "fr": "Ce magasin ne vend pas de vÊlo", + "gl": "Esta tenda non vende bicicletas", + "de": "Dieses Geschäft verkauft keine Fahrräder", + "it": "Questo negozio non vende bici", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", + "pt_BR": "Esta loja nÃŖo vende bicicletas", + "pt": "Esta loja nÃŖo vende bicicletas" + } + } + ] + }, + { + "id": "bike_repair_repairs-bikes", + "question": { + "en": "Does this shop repair bikes?", + "nl": "Herstelt deze winkel fietsen?", + "fr": "Est-ce que ce magasin rÊpare des vÊlos ?", + "gl": "Esta tenda arranxa bicicletas?", + "de": "Repariert dieses Geschäft Fahrräder?", + "it": "Questo negozio ripara bici?", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?", + "pt_BR": "Esta loja conserta bicicletas?", + "pt": "Esta loja conserta bicicletas?" + }, + "mappings": [ + { + "if": "service:bicycle:repair=yes", + "then": { + "en": "This shop repairs bikes", + "nl": "Deze winkel herstelt fietsen", + "fr": "Ce magasin rÊpare des vÊlos", + "gl": "Esta tenda arranxa bicicletas", + "de": "Dieses Geschäft repariert Fahrräder", + "it": "Questo negozio ripara bici", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", + "pt_BR": "Esta loja conserta bicicletas", + "pt": "Esta loja conserta bicicletas" + } + }, + { + "if": "service:bicycle:repair=no", + "then": { + "en": "This shop doesn't repair bikes", + "nl": "Deze winkel herstelt geen fietsen", + "fr": "Ce magasin ne rÊpare pas les vÊlos", + "gl": "Esta tenda non arranxa bicicletas", + "de": "Dieses Geschäft repariert keine Fahrräder", + "it": "Questo negozio non ripara bici", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", + "pt_BR": "Esta loja nÃŖo conserta bicicletas", + "pt": "Esta loja nÃŖo conserta bicicletas" + } + }, + { + "if": "service:bicycle:repair=only_sold", + "then": { + "en": "This shop only repairs bikes bought here", + "nl": "Deze winkel herstelt enkel fietsen die hier werden gekocht", + "fr": "Ce magasin ne rÊpare seulement les vÊlos achetÊs là-bas", + "gl": "Esta tenda sÃŗ arranxa bicicletas mercadas aquí", + "de": "Dieses Geschäft repariert nur hier gekaufte Fahrräder", + "it": "Questo negozio ripara solo le bici che sono state acquistate qua", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ Ņ‚ĐžĐģŅŒĐēĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹, ĐēŅƒĐŋĐģĐĩĐŊĐŊŅ‹Đĩ СдĐĩŅŅŒ", + "pt_BR": "Esta loja conserta bicicletas compradas aqui", + "pt": "Esta loja conserta bicicletas compradas aqui" + } + }, + { + "if": "service:bicycle:repair=brand", + "then": { + "en": "This shop only repairs bikes of a certain brand", + "nl": "Deze winkel herstelt enkel fietsen van een bepaald merk", + "fr": "Ce magasin ne rÊpare seulement des marques spÊcifiques", + "gl": "Esta tenda sÃŗ arranxa bicicletas dunha certa marca", + "de": "Dieses Geschäft repariert nur Fahrräder einer bestimmten Marke", + "it": "Questo negozio ripara solo le biciclette di una certa marca", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ОйŅĐģŅƒĐļиваŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐąŅ€ĐĩĐŊĐ´Đ°", + "pt_BR": "Esta loja conserta bicicletas de uma certa marca", + "pt": "Esta loja conserta bicicletas de uma certa marca" + } + } + ] + }, + { + "id": "bike_repair_rents-bikes", + "question": { + "en": "Does this shop rent out bikes?", + "nl": "Verhuurt deze winkel fietsen?", + "fr": "Est-ce ce magasin loue des vÊlos ?", + "gl": "Esta tenda aluga bicicletas?", + "de": "Vermietet dieser Laden Fahrräder?", + "it": "Questo negozio noleggia le bici?", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ?", + "pt_BR": "Esta loja aluga bicicletas?", + "pt": "Esta loja aluga bicicletas?" + }, + "mappings": [ + { + "if": "service:bicycle:rental=yes", + "then": { + "en": "This shop rents out bikes", + "nl": "Deze winkel verhuurt fietsen", + "fr": "Ce magasin loue des vÊlos", + "gl": "Esta tenda aluga bicicletas", + "de": "Dieses Geschäft vermietet Fahrräder", + "it": "Questo negozio noleggia le bici", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ", + "pt_BR": "Esta loja aluga bicicletas", + "pt": "Esta loja aluga bicicletas" + } + }, + { + "if": "service:bicycle:rental=no", + "then": { + "en": "This shop doesn't rent out bikes", + "nl": "Deze winkel verhuurt geen fietsen", + "fr": "Ce magasin ne loue pas de vÊlos", + "gl": "Esta tenda non aluga bicicletas", + "de": "Dieses Geschäft vermietet keine Fahrräder", + "it": "Questo negozio non noleggia le bici", + "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐŊĐ°ĐŋŅ€ĐžĐēĐ°Ņ‚", + "pt_BR": "Esta loja nÃŖo aluga bicicletas", + "pt": "Esta loja nÃŖo aluga bicicletas" + } + } + ] + }, + { + "id": "bike_repair_second-hand-bikes", + "question": { + "en": "Does this shop sell second-hand bikes?", + "nl": "Verkoopt deze winkel tweedehands fietsen?", + "fr": "Est-ce ce magasin vend des vÊlos d'occasion ?", + "gl": "Esta tenda vende bicicletas de segunda man?", + "de": "Verkauft dieses Geschäft gebrauchte Fahrräder?", + "it": "Questo negozio vende bici usate?", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" + }, + "mappings": [ + { + "if": "service:bicycle:second_hand=yes", + "then": { + "en": "This shop sells second-hand bikes", + "nl": "Deze winkel verkoopt tweedehands fietsen", + "fr": "Ce magasin vend des vÊlos d'occasion", + "gl": "Esta tenda vende bicicletas de segunda man", + "de": "Dieses Geschäft verkauft gebrauchte Fahrräder", + "it": "Questo negozio vende bici usate", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + } + }, + { + "if": "service:bicycle:second_hand=no", + "then": { + "en": "This shop doesn't sell second-hand bikes", + "nl": "Deze winkel verkoopt geen tweedehands fietsen", + "fr": "Ce magasin ne vend pas de vÊlos d'occasion", + "gl": "Esta tenda non vende bicicletas de segunda man", + "de": "Dieses Geschäft verkauft keine gebrauchten Fahrräder", + "it": "Questo negozio non vende bici usate", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + } + }, + { + "if": "service:bicycle:second_hand=only", + "then": { + "en": "This shop only sells second-hand bikes", + "nl": "Deze winkel verkoopt enkel tweedehands fietsen", + "fr": "Ce magasin vend seulement des vÊlos d'occasion", + "gl": "Esta tenda sÃŗ vende bicicletas de segunda man", + "de": "Dieses Geschäft verkauft nur gebrauchte Fahrräder", + "it": "Questo negozio vende solamente bici usate", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Ņ‚ĐžĐģŅŒĐēĐž ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + } + } + ] + }, + { + "id": "bike_repair_bike-pump-service", + "question": { + "en": "Does this shop offer a bike pump for use by anyone?", + "nl": "Biedt deze winkel een fietspomp aan voor iedereen?", + "fr": "Est-ce que ce magasin offre une pompe en accès libre ?", + "gl": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa?", + "de": "Bietet dieses Geschäft eine Fahrradpumpe zur Benutzung fÃŧr alle an?", + "it": "Questo negozio offre l’uso a chiunque di una pompa per bici?", + "ru": "ПŅ€ĐĩĐ´ĐģĐ°ĐŗĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?" + }, + "mappings": [ + { + "if": "service:bicycle:pump=yes", + "then": { + "en": "This shop offers a bike pump for anyone", + "nl": "Deze winkel biedt een fietspomp aan voor iedereen", + "fr": "Ce magasin offre une pompe en acces libre", + "gl": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa", + "de": "Dieses Geschäft bietet eine Fahrradpumpe fÃŧr alle an", + "it": "Questo negozio offre l’uso pubblico di una pompa per bici", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + } + }, + { + "if": "service:bicycle:pump=no", + "then": { + "en": "This shop doesn't offer a bike pump for anyone", + "nl": "Deze winkel biedt geen fietspomp aan voor eender wie", + "fr": "Ce magasin n'offre pas de pompe en libre accès", + "gl": "Esta tenda non ofrece unha bomba de ar para uso de calquera persoa", + "de": "Dieses Geschäft bietet fÃŧr niemanden eine Fahrradpumpe an", + "it": "Questo negozio non offre l’uso pubblico di una pompa per bici", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + } + }, + { + "if": "service:bicycle:pump=separate", + "then": { + "en": "There is bicycle pump, it is shown as a separate point ", + "nl": "Er is een fietspomp, deze is apart aangeduid", + "fr": "Il y a une pompe à vÊlo, c'est indiquÊ comme un point sÊparÊ ", + "it": "C’è una pompa per bici, è mostrata come punto separato ", + "de": "Es gibt eine Fahrradpumpe, sie wird als separater Punkt angezeigt " + } + } + ] + }, + { + "id": "bike_repair_tools-service", + "question": { + "en": "Are there tools here to repair your own bike?", + "nl": "Biedt deze winkel gereedschap aan om je fiets zelf te herstellen?", + "fr": "Est-ce qu'il y a des outils pour rÊparer son vÊlo dans ce magasin ?", + "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?", + "de": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?", + "it": "Sono presenti degli attrezzi per riparare la propria bici?", + "ru": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐžĐąŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?" + }, + "mappings": [ + { + "if": "service:bicycle:diy=yes", + "then": { + "en": "This shop offers tools for DIY repair", + "nl": "Deze winkel biedt gereedschap aan om je fiets zelf te herstellen", + "fr": "Ce magasin offre des outils pour rÊparer son vÊlo soi-mÃĒme", + "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta", + "de": "Dieses Geschäft bietet Werkzeuge fÃŧr die Heimwerkerreparatur an", + "it": "Questo negozio offre degli attrezzi per la riparazione fai-da-te" + } + }, + { + "if": "service:bicycle:diy=no", + "then": { + "en": "This shop doesn't offer tools for DIY repair", + "nl": "Deze winkel biedt geen gereedschap aan om je fiets zelf te herstellen", + "fr": "Ce magasin n'offre pas des outils pour rÊparer son vÊlo soi-mÃĒme", + "gl": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta", + "de": "Dieses Geschäft bietet keine Werkzeuge fÃŧr Heimwerkerreparaturen an", + "it": "Questo negozio non offre degli attrezzi per la riparazione fai-da-te" + } + }, + { + "if": "service:bicycle:diy=only_sold", + "then": { + "en": "Tools for DIY repair are only available if you bought/hire the bike in the shop", + "nl": "Het gereedschap aan om je fiets zelf te herstellen is enkel voor als je de fiets er kocht of huurt", + "fr": "Des outils d'auto-rÊparation sont disponibles uniquement si vous avez achetÊ ou louÊ le vÊlo dans ce magasin", + "it": "Gli attrezzi per la riparazione fai-da-te sono disponibili solamente se hai acquistato/noleggiato la bici nel negozio", + "de": "Werkzeuge fÃŧr die Selbstreparatur sind nur verfÃŧgbar, wenn Sie das Fahrrad im Laden gekauft/gemietet haben", + "ru": "ИĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹ Ņ‚ĐžĐģŅŒĐēĐž ĐŋŅ€Đ¸ ĐŋĐžĐēŅƒĐŋĐēĐĩ/Đ°Ņ€ĐĩĐŊĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° в ĐŧĐ°ĐŗаСиĐŊĐĩ" + } + } + ] + }, + { + "id": "bike_repair_bike-wash", + "question": { + "en": "Are bicycles washed here?", + "nl": "Biedt deze winkel een fietsschoonmaak aan?", + "fr": "Lave-t-on les vÊlos ici ?", + "it": "Vengono lavate le bici qua?", + "ru": "ЗдĐĩŅŅŒ ĐŧĐžŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?", + "de": "Werden hier Fahrräder gewaschen?" + }, + "mappings": [ + { + "if": "service:bicycle:cleaning=yes", + "then": { + "en": "This shop cleans bicycles", + "nl": "Deze winkel biedt fietsschoonmaak aan", + "fr": "Ce magasin lave les vÊlos", + "it": "Questo negozio lava le biciclette", + "de": "Dieses Geschäft reinigt Fahrräder", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐžĐēаСŅ‹Đ˛Đ°ŅŽŅ‚ŅŅ ŅƒŅĐģŅƒĐŗи ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" + } + }, + { + "if": "service:bicycle:cleaning=diy", + "then": { + "en": "This shop has an installation where one can clean bicycles themselves", + "nl": "Deze winkel biedt een installatie aan om zelf je fiets schoon te maken", + "fr": "Ce magasin a une installation pour laver soi mÃĒme des vÊlos", + "it": "Questo negozio ha una struttura dove è possibile pulire la propria bici", + "de": "Dieser Laden hat eine Anlage, in der man Fahrräder selbst reinigen kann" + } + }, + { + "if": "service:bicycle:cleaning=no", + "then": { + "en": "This shop doesn't offer bicycle cleaning", + "nl": "Deze winkel biedt geen fietsschoonmaak aan", + "fr": "Ce magasin ne fait pas le nettoyage de vÊlo", + "it": "Questo negozio non offre la pulizia della bicicletta", + "de": "Dieser Laden bietet keine Fahrradreinigung an", + "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" + } + } + ] + }, + "bike_cleaning.bike_cleaning-service:bicycle:cleaning:charge" + ], + "presets": [ + { + "title": { "en": "Bike repair/shop", "nl": "Fietszaak", - "fr": "Magasin ou rÊparateur de vÊlo", + "fr": "Magasin et rÊparateur de vÊlo", "gl": "Tenda/arranxo de bicicletas", "de": "Fahrradwerkstatt/geschäft", - "it": "Venditore/riparatore bici", - "ru": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ", - "pt_BR": "Reparo/loja de bicicletas", - "pt": "Reparo/loja de bicicletas" - }, - "minzoom": 13, - "source": { - "osmTags": { - "#": "We select all bicycle shops, sport shops (but we try to weed out non-bicycle related shops), and any shop with a bicycle related tag", - "or": [ - "shop=bicycle", - { - "#": "A bicycle rental with a network is something such as villo, bluebike, ... We don't want them", - "and": [ - "amenity=bicycle_rental", - "network=" - ] - }, - { - "#": "if sport is defined and is not bicycle, it is not matched; if bicycle retail/repair is marked as 'no', it is not shown to too.", - "##": "There will be a few false-positives with this. They will get filtered out by people marking both 'not selling bikes' and 'not repairing bikes'. Furthermore, the OSMers will add a sports-subcategory on it", - "and": [ - "shop=sports", - "service:bicycle:retail!=no", - "service:bicycle:repair!=no", - { - "or": [ - "sport=bicycle", - "sport=cycling", - "sport=" - ] - } - ] - } - ] - } - }, - "title": { - "render": { - "en": "Bike repair/shop", - "nl": "Fietszaak", - "fr": "Magasin ou rÊparateur de vÊlo", - "gl": "Tenda/arranxo de bicicletas", - "de": "Fahrradwerkstatt/geschäft", - "it": "Venditore/riparatore bici", - "ru": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ", - "pt_BR": "Reparo/loja de bicicletas", - "pt": "Reparo/loja de bicicletas" - }, - "mappings": [ - { - "if": { - "and": [ - "shop=sports" - ] - }, - "then": { - "en": "Sport gear shop {name}", - "nl": "Sportwinkel {name}", - "fr": "Magasin de sport {name}", - "it": "Negozio di articoli sportivi {name}", - "ru": "МаĐŗаСиĐŊ ŅĐŋĐžŅ€Ņ‚ивĐŊĐžĐŗĐž иĐŊвĐĩĐŊŅ‚Đ°Ņ€Ņ {name}", - "de": "Sportartikelgeschäft {name}", - "pt_BR": "Loja de equipamentos esportivos {name}", - "pt": "Loja de equipamentos desportivos {name}" - } - }, - { - "if": { - "and": [ - "shop!~.*bicycle.*", - "shop~*" - ] - }, - "then": "Other shop" - }, - { - "if": { - "and": [ - { - "or": [ - "service:bicycle:rental=yes", - "amenity=bicycle_rental" - ] - } - ] - }, - "then": { - "nl": "Fietsverhuur {name}", - "en": "Bicycle rental {name}", - "fr": "Location de vÊlo {name}", - "it": "Noleggio di biciclette {name}", - "ru": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}", - "de": "Fahrradverleih{name}", - "pt_BR": "Aluguel de bicicletas {name}", - "pt": "Aluguel de bicicletas {name}" - } - }, - { - "if": { - "and": [ - "service:bicycle:retail!~yes", - "service:bicycle:repair=yes" - ] - }, - "then": { - "en": "Bike repair {name}", - "nl": "Fietsenmaker {name}", - "fr": "RÊparateur de vÊlo {name}", - "gl": "Arranxo de bicicletas {name}", - "de": "Fahrradwerkstatt {name}", - "it": "Riparazione biciclette {name", - "ru": "Đ ĐĩĐŧĐžĐŊŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}", - "pt_BR": "Reparo de bicicletas {name}", - "pt": "Reparo de bicicletas {name}" - } - }, - { - "if": { - "and": [ - "service:bicycle:repair!~yes" - ] - }, - "then": { - "en": "Bike shop {name}", - "nl": "Fietswinkel {name}", - "fr": "Magasin de vÊlo {name}", - "gl": "Tenda de bicicletas {name}", - "de": "Fahrradgeschäft {name}", - "it": "Negozio di biciclette {name}", - "ru": "МаĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}", - "pt_BR": "Loja de bicicletas {name}", - "pt": "Loja de bicicletas {name}" - } - }, - { - "if": "name~*", - "then": { - "en": "Bike repair/shop {name}", - "nl": "Fietszaak {name}", - "fr": "Magasin ou rÊparateur de vÊlo {name}", - "gl": "Tenda/arranxo de bicicletas {name}", - "de": "Fahrradwerkstatt/geschäft {name}", - "it": "Venditore/riparatore bici {name}", - "pt_BR": "Loja/reparo de bicicletas {name}", - "pt": "Loja/reparo de bicicletas {name}" - } - } - ] - }, - "titleIcons": [ - { - "render": "", - "condition": "operator=De Fietsambassade Gent" - }, - { - "condition": { - "or": [ - "service:bicycle:pump=yes", - "service:bicycle:pump=separate" - ] - }, - "render": "" - }, - { - "condition": "service:bicycle:diy=yes", - "render": "" - }, - { - "condition": "service:bicycle:cleaning=yes", - "render": "" - }, - "defaults" - ], - "description": { - "en": "A shop specifically selling bicycles or related items", - "nl": "Een winkel die hoofdzakelijk fietsen en fietstoebehoren verkoopt", - "fr": "Un magasin vendant spÊcifiquement des vÊlos ou des objets en lien", - "it": "Un negozio che vende specificatamente biciclette o articoli similari", - "ru": "МаĐŗаСиĐŊ, ŅĐŋĐĩŅ†Đ¸Đ°ĐģиСиŅ€ŅƒŅŽŅ‰Đ¸ĐšŅŅ ĐŊĐ° ĐŋŅ€ĐžĐ´Đ°ĐļĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв иĐģи ŅĐžĐŋŅƒŅ‚ŅŅ‚вŅƒŅŽŅ‰Đ¸Ņ… Ņ‚ОваŅ€ĐžĐ˛", - "pt_BR": "Uma loja que vende especificamente bicicletas ou itens relacionados", - "de": "Ein Geschäft, das speziell Fahrräder oder verwandte Artikel verkauft", - "pt": "Uma loja que vende especificamente bicicletas ou itens relacionados" - }, - "tagRenderings": [ - "images", - { - "id": "bike_shop-is-bicycle_shop", - "condition": { - "and": [ - "shop~*", - "shop!~bicycle", - "shop!~sports" - ] - }, - "render": { - "en": "This shop is specialized in selling {shop} and does bicycle related activities", - "nl": "Deze winkel verkoopt {shop} en heeft fiets-gerelateerde activiteiten.", - "fr": "Ce magasin est spÊcialisÊ dans la vente de {shop} et a des activitÊs liÊes au vÊlo", - "it": "Questo negozio è specializzato nella vendita di {shop} ed effettua attività relative alle biciclette", - "pt_BR": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas", - "de": "Dieses Geschäft ist auf den Verkauf von {shop} spezialisiert und im Bereich Fahrrad tätig", - "pt": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas" - } - }, - { - "question": { - "en": "What is the name of this bicycle shop?", - "nl": "Wat is de naam van deze fietszaak?", - "fr": "Quel est le nom du magasin de vÊlos ?", - "gl": "Cal Ê o nome desta tenda de bicicletas?", - "de": "Wie heißt dieser Fahrradladen?", - "it": "Qual è il nome di questo negozio di biciclette?", - "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?", - "pt_BR": "Qual o nome desta loja de bicicletas?", - "pt": "Qual o nome desta loja de bicicletas?" - }, - "render": { - "en": "This bicycle shop is called {name}", - "nl": "Deze fietszaak heet {name}", - "fr": "Ce magasin s'appelle {name}", - "gl": "Esta tenda de bicicletas chÃĄmase {name}", - "de": "Dieses Fahrradgeschäft heißt {name}", - "it": "Questo negozio di biciclette è chiamato {name}", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}", - "pt_BR": "Esta loja de bicicletas se chama {nome}", - "pt": "Esta loja de bicicletas se chama {nome}" - }, - "freeform": { - "key": "name" - }, - "id": "bike_shop-name" - }, - { - "question": { - "en": "What is the website of {name}?", - "nl": "Wat is de website van {name}?", - "fr": "Quel est le site web de {name} ?", - "gl": "Cal Ê a pÃĄxina web de {name}?", - "it": "Qual è il sito web di {name}?", - "ru": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?", - "id": "URL {name} apa?", - "de": "Was ist die Webseite von {name}?", - "pt_BR": "Qual o website de {name}?", - "pt": "Qual o website de {name}?" - }, - "render": "{website}", - "freeform": { - "key": "website", - "type": "url" - }, - "id": "bike_shop-website" - }, - { - "question": { - "en": "What is the phone number of {name}?", - "nl": "Wat is het telefoonnummer van {name}?", - "fr": "Quel est le numÊro de tÊlÊphone de {name} ?", - "gl": "Cal Ê o nÃēmero de telÊfono de {name}?", - "it": "Qual è il numero di telefono di {name}?", - "ru": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?", - "de": "Wie lautet die Telefonnummer von {name}?", - "pt_BR": "Qual o nÃēmero de telefone de {name}?", - "pt": "Qual Ê o nÃēmero de telefone de {name}?" - }, - "render": "{phone}", - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "bike_shop-phone" - }, - { - "question": { - "en": "What is the email address of {name}?", - "nl": "Wat is het email-adres van {name}?", - "fr": "Quelle est l'adresse Êlectronique de {name} ?", - "gl": "Cal Ê o enderezo de correo electrÃŗnico de {name}?", - "it": "Qual è l’indirizzo email di {name}?", - "ru": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?", - "de": "Wie lautet die E-Mail-Adresse von {name}?", - "pt_BR": "Qual o endereço de email de {name}?", - "pt": "Qual o endereço de email de {name}?" - }, - "render": "{email}", - "freeform": { - "key": "email", - "type": "email" - }, - "id": "bike_shop-email" - }, - { - "render": "{opening_hours_table(opening_hours)}", - "question": "When is this shop opened?", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "id": "bike_shop-opening_hours" - }, - "description", - { - "render": "Enkel voor {access}", - "freeform": { - "key": "access" - }, - "id": "bike_shop-access" - }, - { - "id": "bike_repair_sells-bikes", - "question": { - "en": "Does this shop sell bikes?", - "nl": "Verkoopt deze fietszaak fietsen?", - "fr": "Est-ce que ce magasin vend des vÊlos ?", - "gl": "Esta tenda vende bicicletas?", - "de": "Verkauft dieser Laden Fahrräder?", - "it": "Questo negozio vende bici?", - "ru": "ПŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Đģи вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?", - "pt_BR": "Esta loja vende bicicletas?", - "pt": "Esta loja vende bicicletas?" - }, - "mappings": [ - { - "if": "service:bicycle:retail=yes", - "then": { - "en": "This shop sells bikes", - "nl": "Deze winkel verkoopt fietsen", - "fr": "Ce magasin vend des vÊlos", - "gl": "Esta tenda vende bicicletas", - "de": "Dieses Geschäft verkauft Fahrräder", - "it": "Questo negozio vende bici", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", - "pt_BR": "Esta loja vende bicicletas", - "pt": "Esta loja vende bicicletas" - } - }, - { - "if": "service:bicycle:retail=no", - "then": { - "en": "This shop doesn't sell bikes", - "nl": "Deze winkel verkoopt geen fietsen", - "fr": "Ce magasin ne vend pas de vÊlo", - "gl": "Esta tenda non vende bicicletas", - "de": "Dieses Geschäft verkauft keine Fahrräder", - "it": "Questo negozio non vende bici", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", - "pt_BR": "Esta loja nÃŖo vende bicicletas", - "pt": "Esta loja nÃŖo vende bicicletas" - } - } - ] - }, - { - "id": "bike_repair_repairs-bikes", - "question": { - "en": "Does this shop repair bikes?", - "nl": "Herstelt deze winkel fietsen?", - "fr": "Est-ce que ce magasin rÊpare des vÊlos ?", - "gl": "Esta tenda arranxa bicicletas?", - "de": "Repariert dieses Geschäft Fahrräder?", - "it": "Questo negozio ripara bici?", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?", - "pt_BR": "Esta loja conserta bicicletas?", - "pt": "Esta loja conserta bicicletas?" - }, - "mappings": [ - { - "if": "service:bicycle:repair=yes", - "then": { - "en": "This shop repairs bikes", - "nl": "Deze winkel herstelt fietsen", - "fr": "Ce magasin rÊpare des vÊlos", - "gl": "Esta tenda arranxa bicicletas", - "de": "Dieses Geschäft repariert Fahrräder", - "it": "Questo negozio ripara bici", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", - "pt_BR": "Esta loja conserta bicicletas", - "pt": "Esta loja conserta bicicletas" - } - }, - { - "if": "service:bicycle:repair=no", - "then": { - "en": "This shop doesn't repair bikes", - "nl": "Deze winkel herstelt geen fietsen", - "fr": "Ce magasin ne rÊpare pas les vÊlos", - "gl": "Esta tenda non arranxa bicicletas", - "de": "Dieses Geschäft repariert keine Fahrräder", - "it": "Questo negozio non ripara bici", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹", - "pt_BR": "Esta loja nÃŖo conserta bicicletas", - "pt": "Esta loja nÃŖo conserta bicicletas" - } - }, - { - "if": "service:bicycle:repair=only_sold", - "then": { - "en": "This shop only repairs bikes bought here", - "nl": "Deze winkel herstelt enkel fietsen die hier werden gekocht", - "fr": "Ce magasin ne rÊpare seulement les vÊlos achetÊs là-bas", - "gl": "Esta tenda sÃŗ arranxa bicicletas mercadas aquí", - "de": "Dieses Geschäft repariert nur hier gekaufte Fahrräder", - "it": "Questo negozio ripara solo le bici che sono state acquistate qua", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ Ņ‚ĐžĐģŅŒĐēĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹, ĐēŅƒĐŋĐģĐĩĐŊĐŊŅ‹Đĩ СдĐĩŅŅŒ", - "pt_BR": "Esta loja conserta bicicletas compradas aqui", - "pt": "Esta loja conserta bicicletas compradas aqui" - } - }, - { - "if": "service:bicycle:repair=brand", - "then": { - "en": "This shop only repairs bikes of a certain brand", - "nl": "Deze winkel herstelt enkel fietsen van een bepaald merk", - "fr": "Ce magasin ne rÊpare seulement des marques spÊcifiques", - "gl": "Esta tenda sÃŗ arranxa bicicletas dunha certa marca", - "de": "Dieses Geschäft repariert nur Fahrräder einer bestimmten Marke", - "it": "Questo negozio ripara solo le biciclette di una certa marca", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ОйŅĐģŅƒĐļиваŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐąŅ€ĐĩĐŊĐ´Đ°", - "pt_BR": "Esta loja conserta bicicletas de uma certa marca", - "pt": "Esta loja conserta bicicletas de uma certa marca" - } - } - ] - }, - { - "id": "bike_repair_rents-bikes", - "question": { - "en": "Does this shop rent out bikes?", - "nl": "Verhuurt deze winkel fietsen?", - "fr": "Est-ce ce magasin loue des vÊlos ?", - "gl": "Esta tenda aluga bicicletas?", - "de": "Vermietet dieser Laden Fahrräder?", - "it": "Questo negozio noleggia le bici?", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ?", - "pt_BR": "Esta loja aluga bicicletas?", - "pt": "Esta loja aluga bicicletas?" - }, - "mappings": [ - { - "if": "service:bicycle:rental=yes", - "then": { - "en": "This shop rents out bikes", - "nl": "Deze winkel verhuurt fietsen", - "fr": "Ce magasin loue des vÊlos", - "gl": "Esta tenda aluga bicicletas", - "de": "Dieses Geschäft vermietet Fahrräder", - "it": "Questo negozio noleggia le bici", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ", - "pt_BR": "Esta loja aluga bicicletas", - "pt": "Esta loja aluga bicicletas" - } - }, - { - "if": "service:bicycle:rental=no", - "then": { - "en": "This shop doesn't rent out bikes", - "nl": "Deze winkel verhuurt geen fietsen", - "fr": "Ce magasin ne loue pas de vÊlos", - "gl": "Esta tenda non aluga bicicletas", - "de": "Dieses Geschäft vermietet keine Fahrräder", - "it": "Questo negozio non noleggia le bici", - "ru": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐŊĐ°ĐŋŅ€ĐžĐēĐ°Ņ‚", - "pt_BR": "Esta loja nÃŖo aluga bicicletas", - "pt": "Esta loja nÃŖo aluga bicicletas" - } - } - ] - }, - { - "id": "bike_repair_second-hand-bikes", - "question": { - "en": "Does this shop sell second-hand bikes?", - "nl": "Verkoopt deze winkel tweedehands fietsen?", - "fr": "Est-ce ce magasin vend des vÊlos d'occasion ?", - "gl": "Esta tenda vende bicicletas de segunda man?", - "de": "Verkauft dieses Geschäft gebrauchte Fahrräder?", - "it": "Questo negozio vende bici usate?", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" - }, - "mappings": [ - { - "if": "service:bicycle:second_hand=yes", - "then": { - "en": "This shop sells second-hand bikes", - "nl": "Deze winkel verkoopt tweedehands fietsen", - "fr": "Ce magasin vend des vÊlos d'occasion", - "gl": "Esta tenda vende bicicletas de segunda man", - "de": "Dieses Geschäft verkauft gebrauchte Fahrräder", - "it": "Questo negozio vende bici usate", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - } - }, - { - "if": "service:bicycle:second_hand=no", - "then": { - "en": "This shop doesn't sell second-hand bikes", - "nl": "Deze winkel verkoopt geen tweedehands fietsen", - "fr": "Ce magasin ne vend pas de vÊlos d'occasion", - "gl": "Esta tenda non vende bicicletas de segunda man", - "de": "Dieses Geschäft verkauft keine gebrauchten Fahrräder", - "it": "Questo negozio non vende bici usate", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - } - }, - { - "if": "service:bicycle:second_hand=only", - "then": { - "en": "This shop only sells second-hand bikes", - "nl": "Deze winkel verkoopt enkel tweedehands fietsen", - "fr": "Ce magasin vend seulement des vÊlos d'occasion", - "gl": "Esta tenda sÃŗ vende bicicletas de segunda man", - "de": "Dieses Geschäft verkauft nur gebrauchte Fahrräder", - "it": "Questo negozio vende solamente bici usate", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Ņ‚ĐžĐģŅŒĐēĐž ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - } - } - ] - }, - { - "id": "bike_repair_bike-pump-service", - "question": { - "en": "Does this shop offer a bike pump for use by anyone?", - "nl": "Biedt deze winkel een fietspomp aan voor iedereen?", - "fr": "Est-ce que ce magasin offre une pompe en accès libre ?", - "gl": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa?", - "de": "Bietet dieses Geschäft eine Fahrradpumpe zur Benutzung fÃŧr alle an?", - "it": "Questo negozio offre l’uso a chiunque di una pompa per bici?", - "ru": "ПŅ€ĐĩĐ´ĐģĐ°ĐŗĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?" - }, - "mappings": [ - { - "if": "service:bicycle:pump=yes", - "then": { - "en": "This shop offers a bike pump for anyone", - "nl": "Deze winkel biedt een fietspomp aan voor iedereen", - "fr": "Ce magasin offre une pompe en acces libre", - "gl": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa", - "de": "Dieses Geschäft bietet eine Fahrradpumpe fÃŧr alle an", - "it": "Questo negozio offre l’uso pubblico di una pompa per bici", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - } - }, - { - "if": "service:bicycle:pump=no", - "then": { - "en": "This shop doesn't offer a bike pump for anyone", - "nl": "Deze winkel biedt geen fietspomp aan voor eender wie", - "fr": "Ce magasin n'offre pas de pompe en libre accès", - "gl": "Esta tenda non ofrece unha bomba de ar para uso de calquera persoa", - "de": "Dieses Geschäft bietet fÃŧr niemanden eine Fahrradpumpe an", - "it": "Questo negozio non offre l’uso pubblico di una pompa per bici", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - } - }, - { - "if": "service:bicycle:pump=separate", - "then": { - "en": "There is bicycle pump, it is shown as a separate point ", - "nl": "Er is een fietspomp, deze is apart aangeduid", - "fr": "Il y a une pompe à vÊlo, c'est indiquÊ comme un point sÊparÊ ", - "it": "C’è una pompa per bici, è mostrata come punto separato ", - "de": "Es gibt eine Fahrradpumpe, sie wird als separater Punkt angezeigt " - } - } - ] - }, - { - "id": "bike_repair_tools-service", - "question": { - "en": "Are there tools here to repair your own bike?", - "nl": "Biedt deze winkel gereedschap aan om je fiets zelf te herstellen?", - "fr": "Est-ce qu'il y a des outils pour rÊparer son vÊlo dans ce magasin ?", - "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?", - "de": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?", - "it": "Sono presenti degli attrezzi per riparare la propria bici?", - "ru": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐžĐąŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?" - }, - "mappings": [ - { - "if": "service:bicycle:diy=yes", - "then": { - "en": "This shop offers tools for DIY repair", - "nl": "Deze winkel biedt gereedschap aan om je fiets zelf te herstellen", - "fr": "Ce magasin offre des outils pour rÊparer son vÊlo soi-mÃĒme", - "gl": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta", - "de": "Dieses Geschäft bietet Werkzeuge fÃŧr die Heimwerkerreparatur an", - "it": "Questo negozio offre degli attrezzi per la riparazione fai-da-te" - } - }, - { - "if": "service:bicycle:diy=no", - "then": { - "en": "This shop doesn't offer tools for DIY repair", - "nl": "Deze winkel biedt geen gereedschap aan om je fiets zelf te herstellen", - "fr": "Ce magasin n'offre pas des outils pour rÊparer son vÊlo soi-mÃĒme", - "gl": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta", - "de": "Dieses Geschäft bietet keine Werkzeuge fÃŧr Heimwerkerreparaturen an", - "it": "Questo negozio non offre degli attrezzi per la riparazione fai-da-te" - } - }, - { - "if": "service:bicycle:diy=only_sold", - "then": { - "en": "Tools for DIY repair are only available if you bought/hire the bike in the shop", - "nl": "Het gereedschap aan om je fiets zelf te herstellen is enkel voor als je de fiets er kocht of huurt", - "fr": "Des outils d'auto-rÊparation sont disponibles uniquement si vous avez achetÊ ou louÊ le vÊlo dans ce magasin", - "it": "Gli attrezzi per la riparazione fai-da-te sono disponibili solamente se hai acquistato/noleggiato la bici nel negozio", - "de": "Werkzeuge fÃŧr die Selbstreparatur sind nur verfÃŧgbar, wenn Sie das Fahrrad im Laden gekauft/gemietet haben", - "ru": "ИĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹ Ņ‚ĐžĐģŅŒĐēĐž ĐŋŅ€Đ¸ ĐŋĐžĐēŅƒĐŋĐēĐĩ/Đ°Ņ€ĐĩĐŊĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° в ĐŧĐ°ĐŗаСиĐŊĐĩ" - } - } - ] - }, - { - "id": "bike_repair_bike-wash", - "question": { - "en": "Are bicycles washed here?", - "nl": "Biedt deze winkel een fietsschoonmaak aan?", - "fr": "Lave-t-on les vÊlos ici ?", - "it": "Vengono lavate le bici qua?", - "ru": "ЗдĐĩŅŅŒ ĐŧĐžŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?", - "de": "Werden hier Fahrräder gewaschen?" - }, - "mappings": [ - { - "if": "service:bicycle:cleaning=yes", - "then": { - "en": "This shop cleans bicycles", - "nl": "Deze winkel biedt fietsschoonmaak aan", - "fr": "Ce magasin lave les vÊlos", - "it": "Questo negozio lava le biciclette", - "de": "Dieses Geschäft reinigt Fahrräder", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐžĐēаСŅ‹Đ˛Đ°ŅŽŅ‚ŅŅ ŅƒŅĐģŅƒĐŗи ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" - } - }, - { - "if": "service:bicycle:cleaning=diy", - "then": { - "en": "This shop has an installation where one can clean bicycles themselves", - "nl": "Deze winkel biedt een installatie aan om zelf je fiets schoon te maken", - "fr": "Ce magasin a une installation pour laver soi mÃĒme des vÊlos", - "it": "Questo negozio ha una struttura dove è possibile pulire la propria bici", - "de": "Dieser Laden hat eine Anlage, in der man Fahrräder selbst reinigen kann" - } - }, - { - "if": "service:bicycle:cleaning=no", - "then": { - "en": "This shop doesn't offer bicycle cleaning", - "nl": "Deze winkel biedt geen fietsschoonmaak aan", - "fr": "Ce magasin ne fait pas le nettoyage de vÊlo", - "it": "Questo negozio non offre la pulizia della bicicletta", - "de": "Dieser Laden bietet keine Fahrradreinigung an", - "ru": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" - } - } - ] - }, - { - "question": "How much does it cost to use the cleaning service?", - "render": "Using the cleaning service costs {charge}", - "freeform": { - "key": "service:bicycle:cleaning:charge", - "addExtraTags": [ - "service:bicycle:cleaning:fee=yes" - ] - }, - "mappings": [ - { - "if": "service:bicycle:cleaning:fee=no&service:bicycle:cleaning:charge=", - "then": "The cleaning service is free to use" - }, - { - "if": "service:bicycle:cleaning:fee=no&", - "then": "Free to use", - "hideInAnswer": true - }, - { - "if": "service:bicycle:cleaning:fee=yes", - "then": "The cleaning service has a fee" - } - ], - "id": "bike_cleaning-service:bicycle:cleaning:charge" - } - ], - "presets": [ - { - "title": { - "en": "Bike repair/shop", - "nl": "Fietszaak", - "fr": "Magasin et rÊparateur de vÊlo", - "gl": "Tenda/arranxo de bicicletas", - "de": "Fahrradwerkstatt/geschäft", - "it": "Negozio/riparatore di bici", - "ru": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ" - }, - "tags": [ - "shop=bicycle" - ] - } - ], - "icon": { + "it": "Negozio/riparatore di bici", + "ru": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ" + }, + "tags": [ + "shop=bicycle" + ] + } + ], + "mapRendering": [ + { + "icon": { "render": "./assets/layers/bike_shop/repair_shop.svg", "mappings": [ - { - "if": "operator=De Fietsambassade Gent", - "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg" - }, - { - "if": "service:bicycle:retail=yes", - "then": "./assets/layers/bike_shop/shop.svg" - } + { + "if": "operator=De Fietsambassade Gent", + "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg" + }, + { + "if": "service:bicycle:retail=yes", + "then": "./assets/layers/bike_shop/shop.svg" + } ] - }, - "iconOverlays": [ + }, + "iconBadges": [ { - "if": "opening_hours~*", - "then": "isOpen", - "badge": true + "if": "opening_hours~*", + "then": "isOpen" }, { - "if": "service:bicycle:pump=yes", - "then": "circle:#e2783d;./assets/layers/bike_repair_station/pump.svg", - "badge": true + "if": "service:bicycle:pump=yes", + "then": "circle:#e2783d;./assets/layers/bike_repair_station/pump.svg" }, { - "if": { - "and": [ - "service:bicycle:cleaning~*" - ] - }, - "then": { - "render": "./assets/layers/bike_cleaning/bike_cleaning_icon.svg" - }, - "badge": true - } - ], - "width": { - "render": "1" - }, - "iconSize": { - "render": "50,50,bottom" - }, - "color": { - "render": "#c00" - }, - "wayHandling": 2, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/bike_shop/repair_shop.svg", - "mappings": [ - { - "if": "operator=De Fietsambassade Gent", - "then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg" - }, - { - "if": "service:bicycle:retail=yes", - "then": "./assets/layers/bike_shop/shop.svg" - } - ] - }, - "iconBadges": [ - { - "if": "opening_hours~*", - "then": "isOpen" - }, - { - "if": "service:bicycle:pump=yes", - "then": "circle:#e2783d;./assets/layers/bike_repair_station/pump.svg" - }, - { - "if": { - "and": [ - "service:bicycle:cleaning~*" - ] - }, - "then": { - "render": "./assets/layers/bike_cleaning/bike_cleaning_icon.svg" - } - } - ], - "iconSize": { - "render": "50,50,bottom" - }, - "location": [ - "point", - "centroid" + "if": { + "and": [ + "service:bicycle:cleaning~*" ] - }, - { - "color": { - "render": "#c00" - }, - "width": { - "render": "1" - } + }, + "then": { + "render": "./assets/layers/bike_cleaning/bike_cleaning_icon.svg" + } } - ] + ], + "iconSize": { + "render": "50,50,bottom" + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": { + "render": "#c00" + }, + "width": { + "render": "1" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/bike_themed_object/bike_themed_object.json b/assets/layers/bike_themed_object/bike_themed_object.json index 0a7e4322b..cc704319e 100644 --- a/assets/layers/bike_themed_object/bike_themed_object.json +++ b/assets/layers/bike_themed_object/bike_themed_object.json @@ -1,95 +1,82 @@ { - "id": "bike_themed_object", - "name": { - "en": "Bike related object", - "nl": "Fietsgerelateerd object", - "fr": "Objet cycliste", - "de": "Mit Fahrrad zusammenhängendes Objekt", - "it": "Oggetto relativo alle bici" + "id": "bike_themed_object", + "name": { + "en": "Bike related object", + "nl": "Fietsgerelateerd object", + "fr": "Objet cycliste", + "de": "Mit Fahrrad zusammenhängendes Objekt", + "it": "Oggetto relativo alle bici" + }, + "minzoom": 13, + "source": { + "osmTags": { + "or": [ + "theme=bicycle", + "theme=cycling", + "sport=cycling", + "association=cycling", + "association=bicycle", + "ngo=cycling", + "ngo=bicycle", + "club=bicycle", + "club=cycling" + ] + } + }, + "title": { + "render": { + "en": "Bike related object", + "nl": "Fietsgerelateerd object", + "fr": "Objet cycliste", + "de": "Mit Fahrrad zusammenhängendes Objekt", + "it": "Oggetto relativo alle bici" }, - "minzoom": 13, - "source": { - "osmTags": { - "or": [ - "theme=bicycle", - "theme=cycling", - "sport=cycling", - "association=cycling", - "association=bicycle", - "ngo=cycling", - "ngo=bicycle", - "club=bicycle", - "club=cycling" - ] - } - }, - "title": { - "render": { - "en": "Bike related object", - "nl": "Fietsgerelateerd object", - "fr": "Objet cycliste", - "de": "Mit Fahrrad zusammenhängendes Objekt", - "it": "Oggetto relativo alle bici" - }, - "mappings": [ - { - "if": "name~*", - "then": "{name}" - }, - { - "if": "leisure=track", - "then": { - "nl": "Wielerpiste", - "en": "Cycle track", - "fr": "Piste cyclable", - "it": "Pista ciclabile", - "de": "Radweg" - } - } - ] - }, - "tagRenderings": [ - "images", - "description", - "website", - "email", - "phone", - "opening_hours" - ], - "icon": { - "render": "./assets/layers/bike_themed_object/other_services.svg" - }, - "width": { - "render": "2" - }, - "iconSize": { - "render": "50,50,bottom" - }, - "color": { - "render": "#AB76D5" - }, - "presets": [], - "wayHandling": 2, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/bike_themed_object/other_services.svg" - }, - "iconSize": { - "render": "50,50,bottom" - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#AB76D5" - }, - "width": { - "render": "2" - } + "mappings": [ + { + "if": "name~*", + "then": "{name}" + }, + { + "if": "leisure=track", + "then": { + "nl": "Wielerpiste", + "en": "Cycle track", + "fr": "Piste cyclable", + "it": "Pista ciclabile", + "de": "Radweg" } + } ] + }, + "tagRenderings": [ + "images", + "description", + "website", + "email", + "phone", + "opening_hours" + ], + "presets": [], + "mapRendering": [ + { + "icon": { + "render": "./assets/layers/bike_themed_object/other_services.svg" + }, + "iconSize": { + "render": "50,50,bottom" + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": { + "render": "#AB76D5" + }, + "width": { + "render": "2" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/binocular/binocular.json b/assets/layers/binocular/binocular.json index 6bbb7ca6a..2ad39b353 100644 --- a/assets/layers/binocular/binocular.json +++ b/assets/layers/binocular/binocular.json @@ -1,152 +1,140 @@ { - "id": "binocular", - "name": { - "en": "Binoculars", - "nl": "Verrekijkers", + "id": "binocular", + "name": { + "en": "Binoculars", + "nl": "Verrekijkers", + "de": "Ferngläser", + "ru": "БиĐŊĐžĐēĐģŅŒ" + }, + "minzoom": 0, + "title": { + "render": { + "en": "Binoculars", + "nl": "Verrekijker", + "de": "Ferngläser", + "ru": "БиĐŊĐžĐēĐģŅŒ" + } + }, + "description": { + "en": "Binoculas", + "nl": "Verrekijkers", + "de": "Fernglas", + "ru": "БиĐŊĐžĐēĐģи" + }, + "tagRenderings": [ + "images", + { + "mappings": [ + { + "if": { + "and": [ + "fee=no", + "charge=" + ] + }, + "then": { + "en": "Free to use", + "nl": "Gratis te gebruiken", + "de": "Kostenlose Nutzung" + } + } + ], + "freeform": { + "key": "charge", + "addExtraTags": [ + "fee=yes" + ] + }, + "render": { + "en": "Using these binoculars costs {charge}", + "nl": "Deze verrekijker gebruiken kost {charge}", + "de": "Die Benutzung dieses Fernglases kostet {charge}" + }, + "question": { + "en": "How much does one have to pay to use these binoculars?", + "nl": "Hoeveel moet men betalen om deze verrekijker te gebruiken?", + "de": "Wie viel muss man fÃŧr die Nutzung dieser Ferngläser bezahlen?" + }, + "id": "binocular-charge" + }, + { + "question": { + "en": "When looking through this binocular, in what direction does one look?", + "nl": "Welke richting kijkt men uit als men door deze verrekijker kijkt?", + "de": "In welche Richtung blickt man, wenn man durch dieses Fernglas schaut?" + }, + "render": { + "en": "Looks towards {direction}°", + "nl": "Kijkt richting {direction}°", + "de": "Blick in Richtung {direction}°" + }, + "freeform": { + "key": "direction", + "type": "direction" + }, + "id": "binocular-direction" + } + ], + "presets": [ + { + "tags": [ + "amenity=binoculars" + ], + "title": { + "en": "binoculars", + "nl": "verrekijker", "de": "Ferngläser", - "ru": "БиĐŊĐžĐēĐģŅŒ" + "ru": "йиĐŊĐžĐēĐģŅŒ" + }, + "description": { + "en": "A telescope or pair of binoculars mounted on a pole, available to the public to look around. ", + "nl": "Een telescoop of verrekijker die op een vaste plaats gemonteerd staat waar iedereen door mag kijken. ", + "de": "Ein fest installiertes Teleskop oder Fernglas, fÃŧr die Ãļffentliche Nutzung. " + }, + "preciseInput": { + "preferredBackground": "photo" + } + } + ], + "source": { + "osmTags": { + "and": [ + "amenity=binoculars" + ] + } + }, + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] }, - "minzoom": 0, - "title": { - "render": { - "en": "Binoculars", - "nl": "Verrekijker", - "de": "Ferngläser", - "ru": "БиĐŊĐžĐēĐģŅŒ" - } - }, - "description": { - "en": "Binoculas", - "nl": "Verrekijkers", - "de": "Fernglas", - "ru": "БиĐŊĐžĐēĐģи" - }, - "tagRenderings": [ - "images", - { - "mappings": [ - { - "if": { - "and": [ - "fee=no", - "charge=" - ] - }, - "then": { - "en": "Free to use", - "nl": "Gratis te gebruiken", - "de": "Kostenlose Nutzung" - } - } - ], - "freeform": { - "key": "charge", - "addExtraTags": [ - "fee=yes" - ] - }, - "render": { - "en": "Using these binoculars costs {charge}", - "nl": "Deze verrekijker gebruiken kost {charge}", - "de": "Die Benutzung dieses Fernglases kostet {charge}" - }, - "question": { - "en": "How much does one have to pay to use these binoculars?", - "nl": "Hoeveel moet men betalen om deze verrekijker te gebruiken?", - "de": "Wie viel muss man fÃŧr die Nutzung dieser Ferngläser bezahlen?" - }, - "id": "binocular-charge" - }, - { - "question": { - "en": "When looking through this binocular, in what direction does one look?", - "nl": "Welke richting kijkt men uit als men door deze verrekijker kijkt?", - "de": "In welche Richtung blickt man, wenn man durch dieses Fernglas schaut?" - }, - "render": { - "en": "Looks towards {direction}°", - "nl": "Kijkt richting {direction}°", - "de": "Blick in Richtung {direction}°" - }, - "freeform": { - "key": "direction", - "type": "direction" - }, - "id": "binocular-direction" - } - ], - "icon": { + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "circle:white;./assets/layers/binocular/telescope.svg" - }, - "width": { - "render": "8" - }, - "iconSize": { + }, + "iconSize": { "render": "40,40,center" + }, + "location": [ + "point" + ] }, - "color": { + { + "color": { "render": "#00f" - }, - "presets": [ - { - "tags": [ - "amenity=binoculars" - ], - "title": { - "en": "binoculars", - "nl": "verrekijker", - "de": "Ferngläser", - "ru": "йиĐŊĐžĐēĐģŅŒ" - }, - "description": { - "en": "A telescope or pair of binoculars mounted on a pole, available to the public to look around. ", - "nl": "Een telescoop of verrekijker die op een vaste plaats gemonteerd staat waar iedereen door mag kijken. ", - "de": "Ein fest installiertes Teleskop oder Fernglas, fÃŧr die Ãļffentliche Nutzung. " - }, - "preciseInput": { - "preferredBackground": "photo" - } - } - ], - "source": { - "osmTags": { - "and": [ - "amenity=binoculars" - ] - } - }, - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "circle:white;./assets/layers/binocular/telescope.svg" - }, - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point" - ] - }, - { - "color": { - "render": "#00f" - }, - "width": { - "render": "8" - } - } - ] + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/binocular/telescope.svg b/assets/layers/binocular/telescope.svg index 2fea44f0e..b33456606 100644 --- a/assets/layers/binocular/telescope.svg +++ b/assets/layers/binocular/telescope.svg @@ -1,8 +1,8 @@ - + - - diff --git a/assets/layers/birdhide/birdhide.json b/assets/layers/birdhide/birdhide.json index c09c7e958..b0d0bbb85 100644 --- a/assets/layers/birdhide/birdhide.json +++ b/assets/layers/birdhide/birdhide.json @@ -1,337 +1,315 @@ { - "id": "birdhide", - "name": { - "nl": "Vogelkijkhutten" + "id": "birdhide", + "name": { + "nl": "Vogelkijkhutten" + }, + "minzoom": 14, + "source": { + "osmTags": { + "and": [ + "leisure=bird_hide" + ] + } + }, + "title": { + "render": { + "nl": "Vogelkijkplaats" }, - "minzoom": 14, - "source": { - "osmTags": { + "mappings": [ + { + "if": { + "and": [ + "name~((V|v)ogel.*).*" + ] + }, + "then": { + "nl": "{name}" + } + }, + { + "if": { + "and": [ + "name~*", + { + "or": [ + "building!~no", + "shelter=yes" + ] + } + ] + }, + "then": { + "nl": "Vogelkijkhut {name}" + } + }, + { + "if": { + "and": [ + "name~*" + ] + }, + "then": { + "nl": "Vogelkijkwand {name}" + } + } + ] + }, + "description": { + "nl": "Een vogelkijkhut" + }, + "tagRenderings": [ + "images", + { + "id": "bird-hide-shelter-or-wall", + "question": { + "nl": "Is dit een kijkwand of kijkhut?" + }, + "mappings": [ + { + "if": { "and": [ - "leisure=bird_hide" + "shelter=no", + "building=", + "amenity=" ] + }, + "then": { + "nl": "Vogelkijkwand" + } + }, + { + "if": { + "and": [ + "amenity=shelter", + "building=yes", + "shelter=yes" + ] + }, + "then": { + "nl": "Vogelkijkhut" + } + }, + { + "if": { + "and": [ + "building=tower", + "bird_hide=tower" + ] + }, + "then": { + "nl": "Vogelkijktoren" + } + }, + { + "if": { + "or": [ + "amenity=shelter", + "building=yes", + "shelter=yes" + ] + }, + "then": { + "nl": "Vogelkijkhut" + }, + "hideInAnswer": true } + ] }, - "title": { + { + "id": "bird-hide-wheelchair", + "question": { + "nl": "Is deze vogelkijkplaats rolstoeltoegankelijk?" + }, + "mappings": [ + { + "if": { + "and": [ + "wheelchair=designated" + ] + }, + "then": { + "nl": "Er zijn speciale voorzieningen voor rolstoelen" + } + }, + { + "if": { + "and": [ + "wheelchair=yes" + ] + }, + "then": { + "nl": "Een rolstoel raakt er vlot" + } + }, + { + "if": { + "and": [ + "wheelchair=limited" + ] + }, + "then": { + "nl": "Je kan er raken met een rolstoel, maar het is niet makkelijk" + } + }, + { + "if": { + "and": [ + "wheelchair=no" + ] + }, + "then": { + "nl": "Niet rolstoeltoegankelijk" + } + } + ] + }, + { + "render": { + "nl": "Beheer door {operator}" + }, + "freeform": { + "key": "operator" + }, + "question": { + "nl": "Wie beheert deze vogelkijkplaats?" + }, + "mappings": [ + { + "if": "operator=Natuurpunt", + "then": { + "nl": "Beheer door Natuurpunt" + } + }, + { + "if": "operator=Agentschap Natuur en Bos", + "then": { + "nl": "Beheer door het Agentschap Natuur en Bos " + } + } + ], + "id": "birdhide-operator" + } + ], + "size": { + "freeform": { + "addExtraTags": [] + }, + "render": { + "nl": "40,40,center" + }, + "mappings": [] + }, + "stroke": { + "render": { + "nl": "3" + } + }, + "presets": [ + { + "tags": [ + "leisure=bird_hide", + "building=yes", + "shelter=yes", + "amenity=shelter" + ], + "title": { + "nl": "vogelkijkhut" + }, + "description": { + "nl": "Een overdekte hut waarbinnen er warm en droog naar vogels gekeken kan worden" + } + }, + { + "tags": [ + "leisure=bird_hide", + "building=no", + "shelter=no" + ], + "title": { + "nl": "vogelkijkwand" + }, + "description": { + "nl": "Een vogelkijkwand waarachter men kan staan om vogels te kijken" + } + } + ], + "filter": [ + { + "id": "wheelchair", + "options": [ + { + "question": { + "nl": "Rolstoeltoegankelijk", + "en": "Wheelchair accessible", + "de": "Zugänglich fÃŧr Rollstuhlfahrer" + }, + "osmTags": { + "or": [ + "wheelchair=yes", + "wheelchair=designated", + "wheelchair=permissive" + ] + } + } + ] + }, + { + "id": "shelter", + "options": [ + { + "question": { + "nl": "Enkel overdekte kijkhutten" + }, + "osmTags": { + "and": [ + { + "or": [ + "shelter=yes", + "building~*" + ] + }, + "covered!=no" + ] + } + } + ] + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] + } + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": { - "nl": "Vogelkijkplaats" + "nl": "./assets/layers/birdhide/birdhide.svg" }, "mappings": [ - { - "if": { - "and": [ - "name~((V|v)ogel.*).*" - ] - }, - "then": { - "nl": "{name}" - } - }, - { - "if": { - "and": [ - "name~*", - { - "or": [ - "building!~no", - "shelter=yes" - ] - } - ] - }, - "then": { - "nl": "Vogelkijkhut {name}" - } - }, - { - "if": { - "and": [ - "name~*" - ] - }, - "then": { - "nl": "Vogelkijkwand {name}" - } - } - ] - }, - "description": { - "nl": "Een vogelkijkhut" - }, - "tagRenderings": [ - "images", - { - "id": "bird-hide-shelter-or-wall", - "question": { - "nl": "Is dit een kijkwand of kijkhut?" - }, - "mappings": [ - { - "if": { - "and": [ - "shelter=no", - "building=", - "amenity=" - ] - }, - "then": { - "nl": "Vogelkijkwand" - } - }, - { - "if": { - "and": [ - "amenity=shelter", - "building=yes", - "shelter=yes" - ] - }, - "then": { - "nl": "Vogelkijkhut" - } - }, - { - "if": { - "and": [ - "building=tower", - "bird_hide=tower" - ] - }, - "then": { - "nl": "Vogelkijktoren" - } - }, - { - "if": { - "or": [ - "amenity=shelter", - "building=yes", - "shelter=yes" - ] - }, - "then": { - "nl": "Vogelkijkhut" - }, - "hideInAnswer": true - } - ] - }, - { - "id": "bird-hide-wheelchair", - "question": { - "nl": "Is deze vogelkijkplaats rolstoeltoegankelijk?" - }, - "mappings": [ - { - "if": { - "and": [ - "wheelchair=designated" - ] - }, - "then": { - "nl": "Er zijn speciale voorzieningen voor rolstoelen" - } - }, - { - "if": { - "and": [ - "wheelchair=yes" - ] - }, - "then": { - "nl": "Een rolstoel raakt er vlot" - } - }, - { - "if": { - "and": [ - "wheelchair=limited" - ] - }, - "then": { - "nl": "Je kan er raken met een rolstoel, maar het is niet makkelijk" - } - }, - { - "if": { - "and": [ - "wheelchair=no" - ] - }, - "then": { - "nl": "Niet rolstoeltoegankelijk" - } - } - ] - }, - { - "render": { - "nl": "Beheer door {operator}" - }, - "freeform": { - "key": "operator" - }, - "question": { - "nl": "Wie beheert deze vogelkijkplaats?" - }, - "mappings": [ - { - "if": "operator=Natuurpunt", - "then": { - "nl": "Beheer door Natuurpunt" - } - }, - { - "if": "operator=Agentschap Natuur en Bos", - "then": { - "nl": "Beheer door het Agentschap Natuur en Bos " - } - } - ], - "id": "birdhide-operator" - } - ], - "icon": { - "render": { - "nl": "./assets/layers/birdhide/birdhide.svg" - }, - "mappings": [ - { - "if": { - "or": [ - "building=yes", - "shelter=yes", - "amenity=shelter" - ] - }, - "then": "./assets/layers/birdhide/birdshelter.svg" - } - ] - }, - "size": { - "freeform": { - "addExtraTags": [] - }, - "render": { - "nl": "40,40,center" - }, - "mappings": [] - }, - "color": { - "render": { - "nl": "#94bb28" - } - }, - "stroke": { - "render": { - "nl": "3" - } - }, - "presets": [ - { - "tags": [ - "leisure=bird_hide", + { + "if": { + "or": [ "building=yes", "shelter=yes", "amenity=shelter" - ], - "title": { - "nl": "vogelkijkhut" + ] }, - "description": { - "nl": "Een overdekte hut waarbinnen er warm en droog naar vogels gekeken kan worden" - } - }, - { - "tags": [ - "leisure=bird_hide", - "building=no", - "shelter=no" - ], - "title": { - "nl": "vogelkijkwand" - }, - "description": { - "nl": "Een vogelkijkwand waarachter men kan staan om vogels te kijken" - } - } - ], - "wayHandling": 1, - "filter": [ - { - "id": "wheelchair", - "options": [ - { - "question": { - "nl": "Rolstoeltoegankelijk", - "en": "Wheelchair accessible", - "de": "Zugänglich fÃŧr Rollstuhlfahrer" - }, - "osmTags": { - "or": [ - "wheelchair=yes", - "wheelchair=designated", - "wheelchair=permissive" - ] - } - } - ] - }, - { - "id": "shelter", - "options": [ - { - "question": { - "nl": "Enkel overdekte kijkhutten" - }, - "osmTags": { - "and": [ - { - "or": [ - "shelter=yes", - "building~*" - ] - }, - "covered!=no" - ] - } - } - ] - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - } - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": { - "nl": "./assets/layers/birdhide/birdhide.svg" - }, - "mappings": [ - { - "if": { - "or": [ - "building=yes", - "shelter=yes", - "amenity=shelter" - ] - }, - "then": "./assets/layers/birdhide/birdshelter.svg" - } - ] - }, - "location": [ - "point" - ] - } - ] + "then": "./assets/layers/birdhide/birdshelter.svg" + } + ] + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/cafe_pub/cafe_pub.json b/assets/layers/cafe_pub/cafe_pub.json index dbd65532a..9b6ab97a3 100644 --- a/assets/layers/cafe_pub/cafe_pub.json +++ b/assets/layers/cafe_pub/cafe_pub.json @@ -1,236 +1,214 @@ { - "id": "cafe_pub", - "name": { - "nl": "CafÊs", - "en": "CafÊs and pubs", - "de": "CafÊs und Kneipen" + "id": "cafe_pub", + "name": { + "nl": "CafÊs", + "en": "CafÊs and pubs", + "de": "CafÊs und Kneipen" + }, + "source": { + "osmTags": { + "or": [ + "amenity=bar", + "amenity=pub", + "amenity=cafe", + "amenity=biergarten" + ] + } + }, + "presets": [ + { + "tags": [ + "amenity=pub" + ], + "title": { + "en": "pub", + "nl": "bruin cafe of kroeg", + "de": "Kneipe", + "ru": "ĐŋĐ°Đą" + }, + "description": { + "nl": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk " + }, + "preciseInput": { + "preferredBackground": "map" + } }, - "source": { - "osmTags": { - "or": [ - "amenity=bar", - "amenity=pub", - "amenity=cafe", - "amenity=biergarten" - ] + { + "tags": [ + "amenity=bar" + ], + "title": { + "en": "bar", + "nl": "bar", + "de": "Bar", + "ru": "йаŅ€" + }, + "description": { + "nl": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=cafe" + ], + "title": { + "en": "cafe", + "nl": "cafe", + "de": "CafÊ", + "ru": "ĐēĐ°Ņ„Đĩ" + }, + "description": { + "nl": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen." + }, + "preciseInput": { + "preferredBackground": "map" + } + } + ], + "title": { + "render": { + "nl": "CafÊ" + }, + "mappings": [ + { + "if": { + "and": [ + "name~*" + ] + }, + "then": { + "nl": "{name}", + "en": "{name}", + "de": "{name}", + "ru": "{name}" } + } + ] + }, + "tagRenderings": [ + "images", + { + "question": { + "nl": "Wat is de naam van dit cafÊ?", + "en": "What is the name of this pub?", + "de": "Wie heißt diese Kneipe?" + }, + "render": { + "nl": "De naam van dit cafÊ is {name}", + "en": "This pub is named {name}", + "de": "Diese Kneipe heißt {name}" + }, + "freeform": { + "key": "name" + }, + "id": "Name" }, - "wayHandling": 1, - "icon": { + { + "question": { + "en": "What kind of cafe is this", + "nl": "Welk soort cafÊ is dit?", + "de": "Was ist das fÃŧr ein CafÊ" + }, + "mappings": [ + { + "if": "amenity=pub", + "then": { + "nl": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk " + } + }, + { + "if": "amenity=bar", + "then": { + "nl": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek" + } + }, + { + "if": "amenity=cafe", + "then": { + "nl": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen." + } + }, + { + "if": "amenity=restaurant", + "then": { + "nl": "Dit is een restaurant waar men een maaltijd geserveerd krijgt" + } + }, + { + "if": "amenity=biergarten", + "then": { + "nl": "Een open ruimte waar bier geserveerd wordt. Typisch in Duitsland" + }, + "hideInAnswer": "_country!=de" + } + ], + "id": "Classification" + }, + "opening_hours", + "website", + "email", + "phone", + "payment-options", + "wheelchair-access", + "service:electricity", + "dog-access" + ], + "filter": [ + { + "id": "opened-now", + "options": [ + { + "question": { + "en": "Opened now", + "nl": "Nu geopened", + "de": "Jetzt geÃļffnet" + }, + "osmTags": "_isOpen=yes" + } + ] + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "amenity=", + "disused:amenity:={amenity}" + ] + } + }, + "allowMove": true, + "mapRendering": [ + { + "icon": { "render": "circle:white;./assets/layers/cafe_pub/pub.svg", "mappings": [ - { - "if": "amenity=cafe", - "then": "circle:white;./assets/layers/cafe_pub/cafe.svg" - } + { + "if": "amenity=cafe", + "then": "circle:white;./assets/layers/cafe_pub/cafe.svg" + } ] - }, - "iconOverlays": [ + }, + "iconBadges": [ { - "if": "opening_hours~*", - "then": "isOpen" + "if": "opening_hours~*", + "then": "isOpen" } - ], - "label": { + ], + "label": { "mappings": [ - { - "if": "name~*", - "then": "
{name}
" - } + { + "if": "name~*", + "then": "
{name}
" + } ] - }, - "presets": [ - { - "tags": [ - "amenity=pub" - ], - "title": { - "en": "pub", - "nl": "bruin cafe of kroeg", - "de": "Kneipe", - "ru": "ĐŋĐ°Đą" - }, - "description": { - "nl": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk " - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=bar" - ], - "title": { - "en": "bar", - "nl": "bar", - "de": "Bar", - "ru": "йаŅ€" - }, - "description": { - "nl": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=cafe" - ], - "title": { - "en": "cafe", - "nl": "cafe", - "de": "CafÊ", - "ru": "ĐēĐ°Ņ„Đĩ" - }, - "description": { - "nl": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen." - }, - "preciseInput": { - "preferredBackground": "map" - } - } - ], - "title": { - "render": { - "nl": "CafÊ" - }, - "mappings": [ - { - "if": { - "and": [ - "name~*" - ] - }, - "then": { - "nl": "{name}", - "en": "{name}", - "de": "{name}", - "ru": "{name}" - } - } - ] - }, - "tagRenderings": [ - "images", - { - "question": { - "nl": "Wat is de naam van dit cafÊ?", - "en": "What is the name of this pub?", - "de": "Wie heißt diese Kneipe?" - }, - "render": { - "nl": "De naam van dit cafÊ is {name}", - "en": "This pub is named {name}", - "de": "Diese Kneipe heißt {name}" - }, - "freeform": { - "key": "name" - }, - "id": "Name" - }, - { - "question": { - "en": "What kind of cafe is this", - "nl": "Welk soort cafÊ is dit?", - "de": "Was ist das fÃŧr ein CafÊ" - }, - "mappings": [ - { - "if": "amenity=pub", - "then": { - "nl": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk " - } - }, - { - "if": "amenity=bar", - "then": { - "nl": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek" - } - }, - { - "if": "amenity=cafe", - "then": { - "nl": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen." - } - }, - { - "if": "amenity=restaurant", - "then": { - "nl": "Dit is een restaurant waar men een maaltijd geserveerd krijgt" - } - }, - { - "if": "amenity=biergarten", - "then": { - "nl": "Een open ruimte waar bier geserveerd wordt. Typisch in Duitsland" - }, - "hideInAnswer": "_country!=de" - } - ], - "id": "Classification" - }, - "opening_hours", - "website", - "email", - "phone", - "payment-options", - "wheelchair-access", - "dog-access" - ], - "filter": [ - { - "id": "opened-now", - "options": [ - { - "question": { - "en": "Opened now", - "nl": "Nu geopened", - "de": "Jetzt geÃļffnet" - }, - "osmTags": "_isOpen=yes" - } - ] - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "amenity=", - "disused:amenity:={amenity}" - ] - } - }, - "allowMove": true, - "mapRendering": [ - { - "icon": { - "render": "circle:white;./assets/layers/cafe_pub/pub.svg", - "mappings": [ - { - "if": "amenity=cafe", - "then": "circle:white;./assets/layers/cafe_pub/cafe.svg" - } - ] - }, - "iconBadges": [ - { - "if": "opening_hours~*", - "then": "isOpen" - } - ], - "label": { - "mappings": [ - { - "if": "name~*", - "then": "
{name}
" - } - ] - }, - "location": [ - "point" - ] - } - ] + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/charging_station/README.md b/assets/layers/charging_station/README.md index bc88af2d7..4c57a9c15 100644 --- a/assets/layers/charging_station/README.md +++ b/assets/layers/charging_station/README.md @@ -9,12 +9,15 @@ If you want to add a missing socket type, then: - Add all the properties in 'types.csv' - Add an icon. (Note: icons are way better as pictures as they are perceived more abstractly) -- Update license_info.json with the copyright info of the new icon. Note that we strive to have Creative-commons icons only (though there are exceptions) +- Update license_info.json with the copyright info of the new icon. Note that we strive to have Creative-commons icons + only (though there are exceptions) -AT this point, most of the work should be done; feel free to send a PR. If you would like to test it locally first (which is recommended) and have a working dev environment, then run: +AT this point, most of the work should be done; feel free to send a PR. If you would like to test it locally first ( +which is recommended) and have a working dev environment, then run: - Run 'ts-node csvToJson.ts' which will generate a new charging_station.json based on the protojson -- Run`npm run query:licenses` to get an interactive program to add the license of your artwork, followed by `npm run generate:licenses` +- Run`npm run query:licenses` to get an interactive program to add the license of your artwork, followed + by `npm run generate:licenses` - Run `npm run generate:layeroverview` to generate the layer files - Run `npm run start` to run the instance @@ -30,6 +33,6 @@ The columns in the CSV file are: - countryWhiteList: Only show this plug type in these countries - countryBlackList: Don't show this plug type in these countries. NOt compatibel with the whiteList - commonVoltages, commonCurrents, commonOutputs: common values for these tags -- associatedVehicleTypes and neverAssociatedWith: these work in tandem to hide options. - If every associated vehicle type is `no`, then the option is hidden - If at least one `neverAssociatedVehicleType` is `yes` and none of the associated types is yes, then the option is hidden too +- associatedVehicleTypes and neverAssociatedWith: these work in tandem to hide options. If every associated vehicle type + is `no`, then the option is hidden If at least one `neverAssociatedVehicleType` is `yes` and none of the associated + types is yes, then the option is hidden too diff --git a/assets/layers/charging_station/bosch-3pin.svg b/assets/layers/charging_station/bosch-3pin.svg index 266bc34f4..515136803 100644 --- a/assets/layers/charging_station/bosch-3pin.svg +++ b/assets/layers/charging_station/bosch-3pin.svg @@ -2,111 +2,110 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="46.74284mm" + height="36.190933mm" + viewBox="0 0 46.74284 36.190933" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="bosch-3pin.svg"> + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/assets/layers/charging_station/bosch-5pin.svg b/assets/layers/charging_station/bosch-5pin.svg index aa8168629..1a2962422 100644 --- a/assets/layers/charging_station/bosch-5pin.svg +++ b/assets/layers/charging_station/bosch-5pin.svg @@ -2,127 +2,126 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="46.74284mm" + height="36.190933mm" + viewBox="0 0 46.74284 36.190933" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="bosch-5pin.svg"> + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json index 53b3f8c48..b96c4ae41 100644 --- a/assets/layers/charging_station/charging_station.json +++ b/assets/layers/charging_station/charging_station.json @@ -1,2307 +1,3882 @@ { - "id": "charging_station", - "name": { - "en": "Charging stations", - "nl": "Oplaadpunten" + "id": "charging_station", + "name": { + "en": "Charging stations", + "nl": "Oplaadpunten" + }, + "minzoom": 10, + "source": { + "osmTags": { + "or": [ + "amenity=charging_station", + "disused:amenity=charging_station", + "planned:amenity=charging_station", + "construction:amenity=charging_station" + ] + } + }, + "title": { + "render": { + "en": "Charging station", + "nl": "Oplaadpunten" + } + }, + "description": { + "en": "A charging station", + "nl": "Oplaadpunten" + }, + "tagRenderings": [ + "images", + { + "id": "Type", + "#": "Allowed vehicle types", + "question": { + "en": "Which vehicles are allowed to charge here?", + "nl": "Welke voertuigen kunnen hier opgeladen worden?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "bicycle=yes", + "ifnot": "bicycle=no", + "then": { + "en": "Bcycles can be charged here", + "nl": "Fietsen kunnen hier opgeladen worden" + } + }, + { + "if": "motorcar=yes", + "ifnot": "motorcar=no", + "then": { + "en": "Cars can be charged here", + "nl": "Elektrische auto's kunnen hier opgeladen worden" + } + }, + { + "if": "scooter=yes", + "ifnot": "scooter=no", + "then": { + "en": "Scooters can be charged here", + "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden" + } + }, + { + "if": "hgv=yes", + "ifnot": "hgv=no", + "then": { + "en": "Heavy good vehicles (such as trucks) can be charged here", + "nl": "Vrachtwagens kunnen hier opgeladen worden" + } + }, + { + "if": "bus=yes", + "ifnot": "bus=no", + "then": { + "en": "Buses can be charged here", + "nl": "Bussen kunnen hier opgeladen worden" + } + } + ] }, - "minzoom": 10, - "source": { - "osmTags": { + { + "id": "access", + "question": { + "en": "Who is allowed to use this charging station?", + "nl": "Wie mag er dit oplaadpunt gebruiken?" + }, + "render": { + "en": "Access is {access}", + "nl": "Toegang voor {access}" + }, + "freeform": { + "key": "access", + "addExtraTags": [ + "fixme=Freeform field used for access - doublecheck the value" + ] + }, + "mappings": [ + { + "if": "access=yes", + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + } + }, + { + "if": { "or": [ - "amenity=charging_station", - "disused:amenity=charging_station", - "planned:amenity=charging_station", - "construction:amenity=charging_station" + "access=permissive", + "access=public" ] + }, + "then": { + "en": "Anyone can use this charging station (payment might be needed)", + "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, + "hideInAnswer": true + }, + { + "if": "access=customers", + "then": { + "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", + "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel" + } + }, + { + "if": "access=private", + "then": { + "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", + "nl": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... " + } } + ] }, - "title": { - "render": { - "en": "Charging station", - "nl": "Oplaadpunten" - } + { + "id": "capacity", + "render": { + "en": "{capacity} vehicles can be charged here at the same time", + "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden" + }, + "question": { + "en": "How much vehicles can be charged here at the same time?", + "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?" + }, + "freeform": { + "key": "capacity", + "type": "pnat" + } }, - "description": { - "en": "A charging station", - "nl": "Oplaadpunten" - }, - "tagRenderings": [ - "images", + { + "id": "Available_charging_stations (generated)", + "question": { + "en": "Which charging connections are available here?", + "nl": "Welke aansluitingen zijn hier beschikbaar?" + }, + "multiAnswer": true, + "mappings": [ { - "id": "Type", - "#": "Allowed vehicle types", - "question": { - "en": "Which vehicles are allowed to charge here?", - "nl": "Welke voertuigen kunnen hier opgeladen worden?", - "de": "Welche Fahrzeuge dÃŧrfen hier geladen werden?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "bicycle=yes", - "ifnot": "bicycle=no", - "then": { - "en": "Bcycles can be charged here", - "nl": "Fietsen kunnen hier opgeladen worden", - "de": "Fahrräder kÃļnnen hier geladen werden" - } - }, - { - "if": "motorcar=yes", - "ifnot": "motorcar=no", - "then": { - "en": "Cars can be charged here", - "nl": "Elektrische auto's kunnen hier opgeladen worden", - "de": "Autos kÃļnnen hier geladen werden" - } - }, - { - "if": "scooter=yes", - "ifnot": "scooter=no", - "then": { - "en": "Scooters can be charged here", - "nl": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden", - "de": " Roller kÃļnnen hier geladen werden" - } - }, - { - "if": "hgv=yes", - "ifnot": "hgv=no", - "then": { - "en": "Heavy good vehicles (such as trucks) can be charged here", - "nl": "Vrachtwagens kunnen hier opgeladen worden", - "de": "Lastkraftwagen (LKW) kÃļnnen hier geladen werden" - } - }, - { - "if": "bus=yes", - "ifnot": "bus=no", - "then": { - "en": "Buses can be charged here", - "nl": "Bussen kunnen hier opgeladen worden", - "de": "Busse kÃļnnen hier geladen werden" - } - } + "if": "socket:schuko=1", + "ifnot": "socket:schuko=", + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "hideInAnswer": { + "or": [ + "_country!=be", + "_country!=fr", + "_country!=ma", + "_country!=tn", + "_country!=pl", + "_country!=cs", + "_country!=sk", + "_country!=mo" ] + } }, { - "id": "access", - "question": { - "en": "Who is allowed to use this charging station?", - "nl": "Wie mag er dit oplaadpunt gebruiken?", - "de": "Wer darf diese Ladestation benutzen?" - }, - "render": { - "en": "Access is {access}", - "nl": "Toegang voor {access}", - "de": "Zugang ist {access}" - }, - "freeform": { - "key": "access", - "addExtraTags": [ - "fixme=Freeform field used for access - doublecheck the value" - ] - }, - "mappings": [ - { - "if": "access=yes", - "then": { - "en": "Anyone can use this charging station (payment might be needed)", - "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - } - }, - { - "if": { - "or": [ - "access=permissive", - "access=public" - ] - }, - "then": { - "en": "Anyone can use this charging station (payment might be needed)", - "nl": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - }, - "hideInAnswer": true - }, - { - "if": "access=customers", - "then": { - "en": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests", - "nl": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel" - } - }, - { - "if": "access=private", - "then": { - "en": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)", - "nl": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... " - } - } - ] - }, - { - "id": "capacity", - "render": { - "en": "{capacity} vehicles can be charged here at the same time", - "nl": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden", - "de": "{capacity} Fahrzeuge kÃļnnen hier gleichzeitig geladen werden" - }, - "question": { - "en": "How much vehicles can be charged here at the same time?", - "nl": "Hoeveel voertuigen kunnen hier opgeladen worden?", - "de": "Wie viele Fahrzeuge kÃļnnen hier gleichzeitig geladen werden?" - }, - "freeform": { - "key": "capacity", - "type": "pnat" - } - }, - { - "id": "Available_charging_stations (generated)", - "question": { - "en": "Which charging connections are available here?", - "nl": "Welke aansluitingen zijn hier beschikbaar?", - "de": "Welche Ladestationen gibt es hier?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "socket:schuko=1", - "ifnot": "socket:schuko=", - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "hideInAnswer": { - "or": [ - "_country!=be", - "_country!=fr", - "_country!=ma", - "_country!=tn", - "_country!=pl", - "_country!=cs", - "_country!=sk", - "_country!=mo" - ] - } - }, - { - "if": { - "and": [ - "socket:schuko~*", - "socket:schuko!=1" - ] - }, - "then": { - "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", - "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:typee=1", - "ifnot": "socket:typee=", - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" - } - }, - { - "if": { - "and": [ - "socket:typee~*", - "socket:typee!=1" - ] - }, - "then": { - "en": "
European wall plug with ground pin (CEE7/4 type E)
", - "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:chademo=1", - "ifnot": "socket:chademo=", - "then": { - "en": "
Chademo
", - "nl": "
Chademo
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:chademo~*", - "socket:chademo!=1" - ] - }, - "then": { - "en": "
Chademo
", - "nl": "
Chademo
", - "de": "
Chademo
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1_cable=1", - "ifnot": "socket:type1_cable=", - "then": { - "en": "
Type 1 with cable (J1772)
", - "nl": "
Type 1 met kabel (J1772)
", - "de": "
Typ 1 mit Kabel (J1772)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=1" - ] - }, - "then": { - "en": "
Type 1 with cable (J1772)
", - "nl": "
Type 1 met kabel (J1772)
", - "de": "
Typ 1 mit Kabel (J1772)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1=1", - "ifnot": "socket:type1=", - "then": { - "en": "
Type 1 without cable (J1772)
", - "nl": "
Type 1 zonder kabel (J1772)
", - "de": "
Typ 1 ohne Kabel (J1772)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1~*", - "socket:type1!=1" - ] - }, - "then": { - "en": "
Type 1 without cable (J1772)
", - "nl": "
Type 1 zonder kabel (J1772)
", - "de": "
Typ 1 ohne Kabel (J1772)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type1_combo=1", - "ifnot": "socket:type1_combo=", - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
", - "de": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=1" - ] - }, - "then": { - "en": "
Type 1 CCS (aka Type 1 Combo)
", - "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
", - "de": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_supercharger=1", - "ifnot": "socket:tesla_supercharger=", - "then": { - "en": "
Tesla Supercharger
", - "nl": "
Tesla Supercharger
", - "de": "
Tesla Supercharger
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger
", - "nl": "
Tesla Supercharger
", - "de": "
Tesla Supercharger
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2=1", - "ifnot": "socket:type2=", - "then": { - "en": "
Type 2 (mennekes)
", - "nl": "
Type 2 (mennekes)
", - "de": "
Typ 2 (Mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2~*", - "socket:type2!=1" - ] - }, - "then": { - "en": "
Type 2 (mennekes)
", - "nl": "
Type 2 (mennekes)
", - "de": "
Typ 2 (Mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2_combo=1", - "ifnot": "socket:type2_combo=", - "then": { - "en": "
Type 2 CCS (mennekes)
", - "nl": "
Type 2 CCS (mennekes)
", - "de": "
Typ 2 CCS (Mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=1" - ] - }, - "then": { - "en": "
Type 2 CCS (mennekes)
", - "nl": "
Type 2 CCS (mennekes)
", - "de": "
Typ 2 CCS (Mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:type2_cable=1", - "ifnot": "socket:type2_cable=", - "then": { - "en": "
Type 2 with cable (mennekes)
", - "nl": "
Type 2 met kabel (J1772)
", - "de": "
Typ 2 mit Kabel (Mennekes)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=1" - ] - }, - "then": { - "en": "
Type 2 with cable (mennekes)
", - "nl": "
Type 2 met kabel (J1772)
", - "de": "
Typ 2 mit Kabel (Mennekes)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_supercharger_ccs=1", - "ifnot": "socket:tesla_supercharger_ccs=", - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", - "de": "
Tesla Supercharger CCS (Typ 2 CSS)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger CCS (a branded type2_css)
", - "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", - "de": "
Tesla Supercharger CCS (Typ 2 CSS)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_destination=1", - "ifnot": "socket:tesla_destination=", - "then": { - "en": "
Tesla Supercharger (destination)
", - "nl": "
Tesla Supercharger (destination)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - }, - { - "or": [ - "_country!=us" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=1" - ] - }, - "then": { - "en": "
Tesla Supercharger (destination)
", - "nl": "
Tesla Supercharger (destination)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:tesla_destination=1", - "ifnot": "socket:tesla_destination=", - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "car=no", - "motorcar=no", - "hgv=no", - "bus=no" - ] - }, - { - "and": [ - { - "or": [ - "bicycle=yes", - "scooter=yes" - ] - }, - "car!=yes", - "motorcar!=yes", - "hgv!=yes", - "bus!=yes" - ] - }, - { - "or": [ - "_country=us" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=1" - ] - }, - "then": { - "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", - "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "hideInAnswer": true - }, - { - "if": "socket:USB-A=1", - "ifnot": "socket:USB-A=", - "then": { - "en": "
USB to charge phones and small electronics
", - "nl": "
USB om GSMs en kleine electronica op te laden
", - "de": "
USB zum Laden von Smartphones oder Elektrokleingeräten
" - } - }, - { - "if": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=1" - ] - }, - "then": { - "en": "
USB to charge phones and small electronics
", - "nl": "
USB om GSMs en kleine electronica op te laden
", - "de": "
USB zum Laden von Smartphones und Elektrokleingeräten
" - }, - "hideInAnswer": true - }, - { - "if": "socket:bosch_3pin=1", - "ifnot": "socket:bosch_3pin=", - "then": { - "en": "
Bosch Active Connect with 3 pins and cable
", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "bicycle=no" - ] - }, - { - "and": [ - { - "or": [ - "car=yes", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - }, - "bicycle!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=1" - ] - }, - "then": { - "en": "
Bosch Active Connect with 3 pins and cable
", - "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "hideInAnswer": true - }, - { - "if": "socket:bosch_5pin=1", - "ifnot": "socket:bosch_5pin=", - "then": { - "en": "
Bosch Active Connect with 5 pins and cable
", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
", - "de": "
Bosch Active Connect mit 5 Pins und Kabel
" - }, - "hideInAnswer": { - "or": [ - { - "and": [ - "bicycle=no" - ] - }, - { - "and": [ - { - "or": [ - "car=yes", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - }, - "bicycle!=yes" - ] - } - ] - } - }, - { - "if": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=1" - ] - }, - "then": { - "en": "
Bosch Active Connect with 5 pins and cable
", - "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
", - "de": "
Bosch Active Connect mit 5 Pins und Kabel
" - }, - "hideInAnswer": true - } - ] - }, - { - "id": "plugs-0", - "question": { - "en": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", - "nl": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here", - "nl": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "freeform": { - "key": "socket:schuko", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:schuko~*", - "socket:schuko!=0" - ] - } - }, - { - "id": "plugs-1", - "question": { - "en": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", - "nl": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here", - "nl": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "freeform": { - "key": "socket:typee", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:typee~*", - "socket:typee!=0" - ] - } - }, - { - "id": "plugs-2", - "question": { - "en": "How much plugs of type
Chademo
are available here?", - "nl": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:chademo} plugs of type
Chademo
available here", - "nl": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" - }, - "freeform": { - "key": "socket:chademo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:chademo~*", - "socket:chademo!=0" - ] - } - }, - { - "id": "plugs-3", - "question": { - "en": "How much plugs of type
Type 1 with cable (J1772)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here", - "nl": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" - }, - "freeform": { - "key": "socket:type1_cable", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1_cable~*", - "socket:type1_cable!=0" - ] - } - }, - { - "id": "plugs-4", - "question": { - "en": "How much plugs of type
Type 1 without cable (J1772)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here", - "nl": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" - }, - "freeform": { - "key": "socket:type1", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1~*", - "socket:type1!=0" - ] - } - }, - { - "id": "plugs-5", - "question": { - "en": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", - "nl": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here", - "nl": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "freeform": { - "key": "socket:type1_combo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type1_combo~*", - "socket:type1_combo!=0" - ] - } - }, - { - "id": "plugs-6", - "question": { - "en": "How much plugs of type
Tesla Supercharger
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here", - "nl": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" - }, - "freeform": { - "key": "socket:tesla_supercharger", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_supercharger~*", - "socket:tesla_supercharger!=0" - ] - } - }, - { - "id": "plugs-7", - "question": { - "en": "How much plugs of type
Type 2 (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here", - "nl": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" - }, - "freeform": { - "key": "socket:type2", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2~*", - "socket:type2!=0" - ] - } - }, - { - "id": "plugs-8", - "question": { - "en": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here", - "nl": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" - }, - "freeform": { - "key": "socket:type2_combo", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2_combo~*", - "socket:type2_combo!=0" - ] - } - }, - { - "id": "plugs-9", - "question": { - "en": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", - "nl": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here", - "nl": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" - }, - "freeform": { - "key": "socket:type2_cable", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:type2_cable~*", - "socket:type2_cable!=0" - ] - } - }, - { - "id": "plugs-10", - "question": { - "en": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here", - "nl": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "freeform": { - "key": "socket:tesla_supercharger_ccs", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_supercharger_ccs~*", - "socket:tesla_supercharger_ccs!=0" - ] - } - }, - { - "id": "plugs-11", - "question": { - "en": "How much plugs of type
Tesla Supercharger (destination)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here", - "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" - }, - "freeform": { - "key": "socket:tesla_destination", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "plugs-12", - "question": { - "en": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", - "nl": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here", - "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "freeform": { - "key": "socket:tesla_destination", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:tesla_destination~*", - "socket:tesla_destination!=0" - ] - } - }, - { - "id": "plugs-13", - "question": { - "en": "How much plugs of type
USB to charge phones and small electronics
are available here?", - "nl": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here", - "nl": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" - }, - "freeform": { - "key": "socket:USB-A", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:USB-A~*", - "socket:USB-A!=0" - ] - } - }, - { - "id": "plugs-14", - "question": { - "en": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", - "nl": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here", - "nl": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "freeform": { - "key": "socket:bosch_3pin", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:bosch_3pin~*", - "socket:bosch_3pin!=0" - ] - } - }, - { - "id": "plugs-15", - "question": { - "en": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", - "nl": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?" - }, - "render": { - "en": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here", - "nl": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "freeform": { - "key": "socket:bosch_5pin", - "type": "pnat" - }, - "condition": { - "and": [ - "socket:bosch_5pin~*", - "socket:bosch_5pin!=0" - ] - } - }, - { - "id": "OH", - "render": "{opening_hours_table(opening_hours)}", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "question": { - "en": "When is this charging station opened?", - "nl": "Wanneer is dit oplaadpunt beschikbaar??", - "de": "Wann ist diese Ladestation geÃļffnet?", - "it": "Quali sono gli orari di apertura di questa stazione di ricarica?", - "ja": "こぎ充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗはいつã‚Ēãƒŧプãƒŗしぞすか?", - "nb_NO": "NÃĨr ÃĨpnet denne ladestasjonen?", - "ru": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚ ŅŅ‚Đ° СаŅ€ŅĐ´ĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ?", - "zh_Hant": "äŊ•æ™‚是充é›ģįĢ™é–‹æ”žäŊŋį”¨įš„時間īŧŸ" - }, - "mappings": [ - { - "if": "opening_hours=24/7", - "then": { - "en": "24/7 opened (including holidays)", - "nl": "24/7 open - ook tijdens vakanties", - "de": "durchgehend geÃļffnet (auch an Feiertagen)" - } - } - ] - }, - { - "id": "fee", - "question": { - "en": "Does one have to pay to use this charging station?", - "nl": "Moet men betalen om dit oplaadpunt te gebruiken?" - }, - "mappings": [ - { - "if": { - "and": [ - "fee=no" - ] - }, - "then": { - "nl": "Gratis te gebruiken", - "en": "Free to use" - }, - "hideInAnswer": true - }, - { - "if": { - "and": [ - "fee=no", - "fee:conditional=", - "charge=", - "authentication:none=yes" - ] - }, - "then": { - "nl": "Gratis te gebruiken (zonder aan te melden)", - "en": "Free to use (without authenticating)" - } - }, - { - "if": { - "and": [ - "fee=no", - "fee:conditional=", - "charge=", - "authentication:none=no" - ] - }, - "then": { - "nl": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht", - "en": "Free to use, but one has to authenticate" - } - }, - { - "if": { - "and": [ - "fee=yes", - "fee:conditional=no @ customers" - ] - }, - "then": { - "nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/cafÊ/ziekenhuis/...", - "en": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" - } - }, - { - "if": { - "and": [ - "fee=yes", - "fee:conditional=" - ] - }, - "then": { - "nl": "Betalend", - "en": "Paid use" - } - } - ] - }, - { - "id": "charge", - "question": { - "en": "How much does one have to pay to use this charging station?", - "nl": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?" - }, - "render": { - "en": "Using this charging station costs {charge}", - "nl": "Dit oplaadpunt gebruiken kost {charge}" - }, - "freeform": { - "key": "charge" - }, - "condition": "fee=yes" - }, - { - "id": "payment-options", - "builtin": "payment-options", - "override": { - "condition": { - "or": [ - "fee=yes", - "charge~*" - ] - }, - "mappings+": [ - { - "if": "payment:app=yes", - "ifnot": "payment:app=no", - "then": { - "en": "Payment is done using a dedicated app", - "nl": "Betalen via een app van het netwerk", - "de": "Bezahlung mit einer speziellen App" - } - }, - { - "if": "payment:membership_card=yes", - "ifnot": "payment:membership_card=no", - "then": { - "en": "Payment is done using a membership card", - "nl": "Betalen via een lidkaart van het netwerk", - "de": "Bezahlung mit einer Mitgliedskarte" - } - } - ] - } - }, - { - "id": "Authentication", - "#": "In some cases, charging is free but one has to be authenticated. We only ask for authentication if fee is no (or unset). By default one sees the questions for either the payment options or the authentication options, but normally not both", - "question": { - "en": "What kind of authentication is available at the charging station?", - "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?", - "de": "Welche Authentifizierung ist an der Ladestation mÃļglich?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "authentication:membership_card=yes", - "ifnot": "authentication:membership_card=no", - "then": { - "en": "Authentication by a membership card", - "nl": "Aanmelden met een lidkaart is mogelijk", - "de": "Authentifizierung durch eine Mitgliedskarte" - } - }, - { - "if": "authentication:app=yes", - "ifnot": "authentication:app=no", - "then": { - "en": "Authentication by an app", - "nl": "Aanmelden via een applicatie is mogelijk", - "de": "Authentifizierung durch eine App" - } - }, - { - "if": "authentication:phone_call=yes", - "ifnot": "authentication:phone_call=no", - "then": { - "en": "Authentication via phone call is available", - "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk", - "de": "Authentifizierung per Anruf ist mÃļglich" - } - }, - { - "if": "authentication:short_message=yes", - "ifnot": "authentication:short_message=no", - "then": { - "en": "Authentication via SMS is available", - "nl": "Aanmelden via SMS is mogelijk", - "de": "Authentifizierung per Anruf ist mÃļglich" - } - }, - { - "if": "authentication:nfc=yes", - "ifnot": "authentication:nfc=no", - "then": { - "en": "Authentication via NFC is available", - "nl": "Aanmelden via NFC is mogelijk", - "de": "Authentifizierung Ãŧber NFC ist mÃļglich" - } - }, - { - "if": "authentication:money_card=yes", - "ifnot": "authentication:money_card=no", - "then": { - "en": "Authentication via Money Card is available", - "nl": "Aanmelden met Money Card is mogelijk", - "de": "Authentifizierung Ãŧber Geldkarte ist mÃļglich" - } - }, - { - "if": "authentication:debit_card=yes", - "ifnot": "authentication:debit_card=no", - "then": { - "en": "Authentication via debit card is available", - "nl": "Aanmelden met een betaalkaart is mogelijk", - "de": "Authentifizierung per Debitkarte ist mÃļglich" - } - }, - { - "if": "authentication:none=yes", - "ifnot": "authentication:none=no", - "then": { - "en": "Charging here is (also) possible without authentication", - "nl": "Hier opladen is (ook) mogelijk zonder aan te melden", - "de": "Das Aufladen ist hier (auch) ohne Authentifizierung mÃļglich" - } - } - ], - "condition": { - "or": [ - "fee=no", - "fee=" - ] - } - }, - { - "id": "Auth phone", - "render": { - "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", - "nl": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}", - "de": "Authentifizierung durch Anruf oder SMS an {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?", - "de": "Wie lautet die Telefonnummer fÃŧr den Authentifizierungsanruf oder die SMS?" - }, - "freeform": { - "key": "authentication:phone_call:number", - "type": "phone" - }, - "condition": { - "or": [ - "authentication:phone_call=yes", - "authentication:short_message=yes" - ] - } - }, - { - "id": "maxstay", - "question": { - "en": "What is the maximum amount of time one is allowed to stay here?", - "nl": "Hoelang mag een voertuig hier blijven staan?", - "de": "Was ist die HÃļchstdauer des Aufenthalts hier?" - }, - "freeform": { - "key": "maxstay" - }, - "render": { - "en": "One can stay at most {canonical(maxstay)}", - "nl": "De maximale parkeertijd hier is {canonical(maxstay)}", - "de": "Die maximale Parkzeit beträgt {canonical(maxstay)}" - }, - "mappings": [ - { - "if": "maxstay=unlimited", - "then": { - "en": "No timelimit on leaving your vehicle here", - "nl": "Geen maximum parkeertijd", - "de": "Keine HÃļchstparkdauer" - } - } - ], - "condition": { - "or": [ - "maxstay~*", - "motorcar=yes", - "hgv=yes", - "bus=yes" - ] - } - }, - { - "id": "Network", - "render": { - "en": "Part of the network {network}", - "nl": "Maakt deel uit van het {network}-netwerk", - "de": "Teil des Netzwerks {network}", - "it": "{network}", - "ja": "{network}", - "nb_NO": "{network}", - "ru": "{network}", - "zh_Hant": "{network}" - }, - "question": { - "en": "Is this charging station part of a network?", - "nl": "Is dit oplaadpunt deel van een groter netwerk?", - "de": "Ist diese Ladestation Teil eines Netzwerks?", - "it": "A quale rete appartiene questa stazione di ricarica?", - "ja": "こぎ充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļチェãƒŧãƒŗはおこですか?", - "ru": "К ĐēĐ°ĐēОК ŅĐĩŅ‚и ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ?", - "zh_Hant": "充é›ģįĢ™æ‰€åąŦįš„įļ˛čˇ¯æ˜¯īŧŸ" - }, - "freeform": { - "key": "network" - }, - "mappings": [ - { - "if": "no:network=yes", - "then": { - "en": "Not part of a bigger network", - "nl": "Maakt geen deel uit van een groter netwerk", - "de": "Nicht Teil eines grÃļßeren Netzwerks" - } - }, - { - "if": "network=none", - "then": { - "en": "Not part of a bigger network", - "nl": "Maakt geen deel uit van een groter netwerk", - "de": "Nicht Teil eines grÃļßeren Netzwerks" - }, - "hideInAnswer": true - }, - { - "if": "network=AeroVironment", - "then": "AeroVironment" - }, - { - "if": "network=Blink", - "then": "Blink" - }, - { - "if": "network=eVgo", - "then": "eVgo" - } - ] - }, - { - "id": "Operator", - "question": { - "en": "Who is the operator of this charging station?", - "nl": "Wie beheert dit oplaadpunt?", - "de": "Wer ist der Betreiber dieser Ladestation?" - }, - "render": { - "en": "This charging station is operated by {operator}", - "nl": "Wordt beheerd door {operator}", - "de": "Diese Ladestation wird betrieben von {operator}" - }, - "freeform": { - "key": "operator" - }, - "mappings": [ - { - "if": { - "and": [ - "network:={operator}" - ] - }, - "then": { - "en": "Actually, {operator} is the network", - "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt", - "de": "Eigentlich ist {operator} das Netzwerk" - }, - "hideInAnswer": "operator=" - } - ] - }, - { - "id": "phone", - "question": { - "en": "What number can one call if there is a problem with this charging station?", - "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?", - "de": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?" - }, - "render": { - "en": "In case of problems, call {phone}", - "nl": "Bij problemen, bel naar {phone}", - "de": "Bei Problemen, anrufen unter {phone}" - }, - "freeform": { - "key": "phone", - "type": "phone" - } - }, - { - "id": "email", - "question": { - "en": "What is the email address of the operator?", - "nl": "Wat is het email-adres van de operator?", - "de": "Wie ist die Email-Adresse des Betreibers?" - }, - "render": { - "en": "In case of problems, send an email to {email}", - "nl": "Bij problemen, email naar {email}", - "de": "Bei Problemen senden Sie eine E-Mail an {email}" - }, - "freeform": { - "key": "email", - "type": "email" - } - }, - { - "id": "website", - "question": { - "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": "Wie ist die Webseite des Betreibers?" - }, - "render": { - "en": "More info on {website}", - "nl": "Meer informatie op {website}", - "de": "Weitere Informationen auf {website}" - }, - "freeform": { - "key": "website", - "type": "url" - } - }, - "level", - { - "id": "ref", - "question": { - "en": "What is the reference number of this charging station?", - "nl": "Wat is het referentienummer van dit oplaadstation?", - "de": "Wie lautet die Kennung dieser Ladestation?" - }, - "render": { - "en": "Reference number is {ref}", - "nl": "Het referentienummer van dit oplaadpunt is {ref}", - "de": "Die Kennziffer ist {ref}" - }, - "freeform": { - "key": "ref" - }, - "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", - "condition": "network!=" - }, - { - "id": "Operational status", - "question": { - "en": "Is this charging point in use?", - "nl": "Is dit oplaadpunt operationeel?", - "de": "Ist dieser Ladepunkt in Betrieb?" - }, - "mappings": [ - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=", - "disused:amenity=", - "operational_status=", - "amenity=charging_station" - ] - }, - "then": { - "en": "This charging station works", - "nl": "Dit oplaadpunt werkt", - "de": "Diese Ladestation funktioniert" - } - }, - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=", - "disused:amenity=", - "operational_status=broken", - "amenity=charging_station" - ] - }, - "then": { - "en": "This charging station is broken", - "nl": "Dit oplaadpunt is kapot", - "de": "Diese Ladestation ist kaputt" - } - }, - { - "if": { - "and": [ - "planned:amenity=charging_station", - "construction:amenity=", - "disused:amenity=", - "operational_status=", - "amenity=" - ] - }, - "then": { - "en": "A charging station is planned here", - "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden", - "de": "Hier ist eine Ladestation geplant" - } - }, - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=charging_station", - "disused:amenity=", - "operational_status=", - "amenity=" - ] - }, - "then": { - "en": "A charging station is constructed here", - "nl": "Hier wordt op dit moment een oplaadpunt gebouwd", - "de": "Hier wird eine Ladestation gebaut" - } - }, - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=", - "disused:amenity=charging_station", - "operational_status=", - "amenity=" - ] - }, - "then": { - "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", - "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig", - "de": "Diese Ladestation wurde dauerhaft deaktiviert und wird nicht mehr benutzt, ist aber noch sichtbar" - } - } - ] - }, - { - "id": "Parking:fee", - "question": { - "en": "Does one have to pay a parking fee while charging?", - "nl": "Moet men parkeergeld betalen tijdens het opladen?", - "de": "Muss man beim Laden eine ParkgebÃŧhr bezahlen?" - }, - "mappings": [ - { - "if": "parking:fee=no", - "then": { - "en": "No additional parking cost while charging", - "nl": "Geen extra parkeerkost tijdens het opladen", - "de": "Keine zusätzlichen ParkgebÃŧhren beim Laden" - } - }, - { - "if": "parking:fee=yes", - "then": { - "en": "An additional parking fee should be paid while charging", - "nl": "Tijdens het opladen moet er parkeergeld betaald worden", - "de": "Beim Laden ist eine zusätzliche ParkgebÃŧhr zu entrichten" - } - } - ], - "condition": { - "or": [ - "motor_vehicle=yes", - "hgv=yes", - "bus=yes", - "bicycle=no", - "bicycle=" - ] - } - } - ], - "presets": [ - { - "tags": [ - "amenity=charging_station", - "motorcar=no", - "bicycle=yes", - "socket:typee=1" - ], - "title": { - "en": "charging station with a normal european wall plug (meant to charge electrical bikes)", - "nl": "laadpunt met gewone stekker(s) (bedoeld om electrische fietsen op te laden)", - "de": "Ladestation", - "ru": "ЗаŅ€ŅĐ´ĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=charging_station", - "motorcar=no", - "bicycle=yes" - ], - "title": { - "en": "charging station for e-bikes", - "nl": "oplaadpunt voor elektrische fietsen" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=charging_station", - "motorcar=yes", - "bicycle=no" - ], - "title": { - "en": "charging station for cars", - "nl": "oplaadstation voor elektrische auto's" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "tags": [ - "amenity=charging_station" - ], - "title": { - "en": "charging station", - "nl": "oplaadstation" - }, - "preciseInput": { - "preferredBackground": "map" - } - } - ], - "wayHandling": 1, - "filter": [ - { - "id": "vehicle-type", - "options": [ - { - "question": { - "en": "All vehicle types", - "nl": "Alle voertuigen", - "de": "Alle Fahrzeugtypen" - } - }, - { - "question": { - "en": "Charging station for bicycles", - "nl": "Oplaadpunten voor fietsen", - "de": "Ladestation fÃŧr Fahrräder" - }, - "osmTags": "bicycle=yes" - }, - { - "question": { - "en": "Charging station for cars", - "nl": "Oplaadpunten voor auto's", - "de": "Ladestation fÃŧr Autos" - }, - "osmTags": { - "or": [ - "car=yes", - "motorcar=yes" - ] - } - } - ] - }, - { - "id": "working", - "options": [ - { - "question": { - "en": "Only working charging stations", - "nl": "Enkel werkende oplaadpunten", - "de": "Nur funktionierende Ladestationen" - }, - "osmTags": { - "and": [ - "operational_status!=broken", - "amenity=charging_station" - ] - } - } - ] - }, - { - "id": "connection_type", - "options": [ - { - "question": { - "en": "All connectors", - "nl": "Alle types", - "de": "Alle AnschlÃŧsse" - } - }, - { - "question": { - "en": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector", - "nl": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "osmTags": "socket:schuko~*" - }, - { - "question": { - "en": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector", - "nl": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "osmTags": "socket:typee~*" - }, - { - "question": { - "en": "Has a
Chademo
connector", - "nl": "Heeft een
Chademo
", - "de": "Hat einen
Chademo
Stecker" - }, - "osmTags": "socket:chademo~*" - }, - { - "question": { - "en": "Has a
Type 1 with cable (J1772)
connector", - "nl": "Heeft een
Type 1 met kabel (J1772)
" - }, - "osmTags": "socket:type1_cable~*" - }, - { - "question": { - "en": "Has a
Type 1 without cable (J1772)
connector", - "nl": "Heeft een
Type 1 zonder kabel (J1772)
" - }, - "osmTags": "socket:type1~*" - }, - { - "question": { - "en": "Has a
Type 1 CCS (aka Type 1 Combo)
connector", - "nl": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "osmTags": "socket:type1_combo~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger
connector", - "nl": "Heeft een
Tesla Supercharger
", - "de": "Hat einen
Tesla Supercharger
Stecker" - }, - "osmTags": "socket:tesla_supercharger~*" - }, - { - "question": { - "en": "Has a
Type 2 (mennekes)
connector", - "nl": "Heeft een
Type 2 (mennekes)
" - }, - "osmTags": "socket:type2~*" - }, - { - "question": { - "en": "Has a
Type 2 CCS (mennekes)
connector", - "nl": "Heeft een
Type 2 CCS (mennekes)
" - }, - "osmTags": "socket:type2_combo~*" - }, - { - "question": { - "en": "Has a
Type 2 with cable (mennekes)
connector", - "nl": "Heeft een
Type 2 met kabel (J1772)
" - }, - "osmTags": "socket:type2_cable~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector", - "nl": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "osmTags": "socket:tesla_supercharger_ccs~*" - }, - { - "question": { - "en": "Has a
Tesla Supercharger (destination)
connector", - "nl": "Heeft een
Tesla Supercharger (destination)
" - }, - "osmTags": "socket:tesla_destination~*" - }, - { - "question": { - "en": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector", - "nl": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "osmTags": "socket:tesla_destination~*" - }, - { - "question": { - "en": "Has a
USB to charge phones and small electronics
connector", - "nl": "Heeft een
USB om GSMs en kleine electronica op te laden
" - }, - "osmTags": "socket:USB-A~*" - }, - { - "question": { - "en": "Has a
Bosch Active Connect with 3 pins and cable
connector", - "nl": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "osmTags": "socket:bosch_3pin~*" - }, - { - "question": { - "en": "Has a
Bosch Active Connect with 5 pins and cable
connector", - "nl": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "osmTags": "socket:bosch_5pin~*" - } - ] - } - ], - "units": [ - { - "appliesToKey": [ - "maxstay" - ], - "applicableUnits": [ - { - "canonicalDenomination": "minutes", - "canonicalDenominationSingular": "minute", - "alternativeDenomination": [ - "m", - "min", - "mins", - "minuten", - "mns" - ], - "human": { - "en": " minutes", - "nl": " minuten", - "de": " Minuten", - "ru": " ĐŧиĐŊŅƒŅ‚" - }, - "humanSingular": { - "en": " minute", - "nl": " minuut", - "de": " Minute", - "ru": " ĐŧиĐŊŅƒŅ‚Đ°" - } - }, - { - "canonicalDenomination": "hours", - "canonicalDenominationSingular": "hour", - "alternativeDenomination": [ - "h", - "hrs", - "hours", - "u", - "uur", - "uren" - ], - "human": { - "en": " hours", - "nl": " uren", - "de": " Stunden", - "ru": " Ņ‡Đ°ŅĐžĐ˛" - }, - "humanSingular": { - "en": " hour", - "nl": " uur", - "de": " Stunde", - "ru": " Ņ‡Đ°Ņ" - } - }, - { - "canonicalDenomination": "days", - "canonicalDenominationSingular": "day", - "alternativeDenomination": [ - "dys", - "dagen", - "dag" - ], - "human": { - "en": " days", - "nl": " day", - "de": " Tage", - "ru": " Đ´ĐŊĐĩĐš" - }, - "humanSingular": { - "en": " day", - "nl": " dag", - "de": " Tag", - "ru": " Đ´ĐĩĐŊŅŒ" - } - } - ] - }, - { - "appliesToKey": [ - "socket:schuko:voltage", - "socket:typee:voltage", - "socket:chademo:voltage", - "socket:type1_cable:voltage", - "socket:type1:voltage", - "socket:type1_combo:voltage", - "socket:tesla_supercharger:voltage", - "socket:type2:voltage", - "socket:type2_combo:voltage", - "socket:type2_cable:voltage", - "socket:tesla_supercharger_ccs:voltage", - "socket:tesla_destination:voltage", - "socket:tesla_destination:voltage", - "socket:USB-A:voltage", - "socket:bosch_3pin:voltage", - "socket:bosch_5pin:voltage" - ], - "applicableUnits": [ - { - "canonicalDenomination": "V", - "alternativeDenomination": [ - "v", - "volt", - "voltage", - "V", - "Volt" - ], - "human": { - "en": "Volts", - "nl": "volt", - "de": "Volt", - "ru": "ВоĐģŅŒŅ‚" - } - } - ], - "eraseInvalidValues": true - }, - { - "appliesToKey": [ - "socket:schuko:current", - "socket:typee:current", - "socket:chademo:current", - "socket:type1_cable:current", - "socket:type1:current", - "socket:type1_combo:current", - "socket:tesla_supercharger:current", - "socket:type2:current", - "socket:type2_combo:current", - "socket:type2_cable:current", - "socket:tesla_supercharger_ccs:current", - "socket:tesla_destination:current", - "socket:tesla_destination:current", - "socket:USB-A:current", - "socket:bosch_3pin:current", - "socket:bosch_5pin:current" - ], - "applicableUnits": [ - { - "canonicalDenomination": "A", - "alternativeDenomination": [ - "a", - "amp", - "amperage", - "A" - ], - "human": { - "en": "A", - "nl": "A" - } - } - ], - "eraseInvalidValues": true - }, - { - "appliesToKey": [ - "socket:schuko:output", - "socket:typee:output", - "socket:chademo:output", - "socket:type1_cable:output", - "socket:type1:output", - "socket:type1_combo:output", - "socket:tesla_supercharger:output", - "socket:type2:output", - "socket:type2_combo:output", - "socket:type2_cable:output", - "socket:tesla_supercharger_ccs:output", - "socket:tesla_destination:output", - "socket:tesla_destination:output", - "socket:USB-A:output", - "socket:bosch_3pin:output", - "socket:bosch_5pin:output" - ], - "applicableUnits": [ - { - "canonicalDenomination": "kW", - "alternativeDenomination": [ - "kilowatt" - ], - "human": { - "en": "kilowatt", - "nl": "kilowatt", - "de": "Kilowatt", - "ru": "ĐēиĐģОваŅ‚Ņ‚" - } - }, - { - "canonicalDenomination": "mW", - "alternativeDenomination": [ - "megawatt" - ], - "human": { - "en": "megawatt", - "nl": "megawatt", - "de": "Megawatt", - "ru": "ĐŧĐĩĐŗаваŅ‚Ņ‚" - } - } - ], - "eraseInvalidValues": true - } - ], - "allowMove": { - "enableRelocation": false, - "enableImproveAccuracy": true - }, - "deletion": { - "softDeletionTags": { + "if": { "and": [ - "amenity=", - "disused:amenity=charging_station" + "socket:schuko~*", + "socket:schuko!=1" ] + }, + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "hideInAnswer": true }, - "neededChangesets": 10 - }, - "mapRendering": [ { - "location": [ - "point", - "centroid" - ], - "icon": { - "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", - "mappings": [ - { - "if": "bicycle=yes", - "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" - }, - { - "if": { - "or": [ - "car=yes", - "motorcar=yes" - ] - }, - "then": "pin:#fff;./assets/themes/charging_stations/car.svg" - } + "if": "socket:typee=1", + "ifnot": "socket:typee=", + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" + } + }, + { + "if": { + "and": [ + "socket:typee~*", + "socket:typee!=1" + ] + }, + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:chademo=1", + "ifnot": "socket:chademo=", + "then": { + "en": "
Chademo
", + "nl": "
Chademo
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" ] - }, - "iconBadges": [ - { - "if": { - "or": [ - "disused:amenity=charging_station", - "operational_status=broken" - ] - }, - "then": "cross:#c22;" - }, - { - "if": { - "or": [ - "proposed:amenity=charging_station", - "planned:amenity=charging_station" - ] - }, - "then": "./assets/layers/charging_station/under_construction.svg" - }, - { - "if": { - "and": [ - "bicycle=yes", - { - "or": [ - "motorcar=yes", - "car=yes" - ] - } - ] - }, - "then": "circle:#fff;./assets/themes/charging_stations/car.svg" - } - ], - "iconSize": { - "render": "50,50,bottom" - } + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:chademo~*", + "socket:chademo!=1" + ] + }, + "then": { + "en": "
Chademo
", + "nl": "
Chademo
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1_cable=1", + "ifnot": "socket:type1_cable=", + "then": { + "en": "
Type 1 with cable (J1772)
", + "nl": "
Type 1 met kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=1" + ] + }, + "then": { + "en": "
Type 1 with cable (J1772)
", + "nl": "
Type 1 met kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1=1", + "ifnot": "socket:type1=", + "then": { + "en": "
Type 1 without cable (J1772)
", + "nl": "
Type 1 zonder kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1~*", + "socket:type1!=1" + ] + }, + "then": { + "en": "
Type 1 without cable (J1772)
", + "nl": "
Type 1 zonder kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type1_combo=1", + "ifnot": "socket:type1_combo=", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=1" + ] + }, + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_supercharger=1", + "ifnot": "socket:tesla_supercharger=", + "then": { + "en": "
Tesla Supercharger
", + "nl": "
Tesla Supercharger
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger
", + "nl": "
Tesla Supercharger
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2=1", + "ifnot": "socket:type2=", + "then": { + "en": "
Type 2 (mennekes)
", + "nl": "
Type 2 (mennekes)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2~*", + "socket:type2!=1" + ] + }, + "then": { + "en": "
Type 2 (mennekes)
", + "nl": "
Type 2 (mennekes)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2_combo=1", + "ifnot": "socket:type2_combo=", + "then": { + "en": "
Type 2 CCS (mennekes)
", + "nl": "
Type 2 CCS (mennekes)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=1" + ] + }, + "then": { + "en": "
Type 2 CCS (mennekes)
", + "nl": "
Type 2 CCS (mennekes)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:type2_cable=1", + "ifnot": "socket:type2_cable=", + "then": { + "en": "
Type 2 with cable (mennekes)
", + "nl": "
Type 2 met kabel (J1772)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=1" + ] + }, + "then": { + "en": "
Type 2 with cable (mennekes)
", + "nl": "
Type 2 met kabel (J1772)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_supercharger_ccs=1", + "ifnot": "socket:tesla_supercharger_ccs=", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_destination=1", + "ifnot": "socket:tesla_destination=", + "then": { + "en": "
Tesla Supercharger (destination)
", + "nl": "
Tesla Supercharger (destination)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + }, + { + "or": [ + "_country!=us" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=1" + ] + }, + "then": { + "en": "
Tesla Supercharger (destination)
", + "nl": "
Tesla Supercharger (destination)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:tesla_destination=1", + "ifnot": "socket:tesla_destination=", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "car=no", + "motorcar=no", + "hgv=no", + "bus=no" + ] + }, + { + "and": [ + { + "or": [ + "bicycle=yes", + "scooter=yes" + ] + }, + "car!=yes", + "motorcar!=yes", + "hgv!=yes", + "bus!=yes" + ] + }, + { + "or": [ + "_country=us" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=1" + ] + }, + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "hideInAnswer": true + }, + { + "if": "socket:USB-A=1", + "ifnot": "socket:USB-A=", + "then": { + "en": "
USB to charge phones and small electronics
", + "nl": "
USB om GSMs en kleine electronica op te laden
" + } + }, + { + "if": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=1" + ] + }, + "then": { + "en": "
USB to charge phones and small electronics
", + "nl": "
USB om GSMs en kleine electronica op te laden
" + }, + "hideInAnswer": true + }, + { + "if": "socket:bosch_3pin=1", + "ifnot": "socket:bosch_3pin=", + "then": { + "en": "
Bosch Active Connect with 3 pins and cable
", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "bicycle=no" + ] + }, + { + "and": [ + { + "or": [ + "car=yes", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + }, + "bicycle!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=1" + ] + }, + "then": { + "en": "
Bosch Active Connect with 3 pins and cable
", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "hideInAnswer": true + }, + { + "if": "socket:bosch_5pin=1", + "ifnot": "socket:bosch_5pin=", + "then": { + "en": "
Bosch Active Connect with 5 pins and cable
", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "hideInAnswer": { + "or": [ + { + "and": [ + "bicycle=no" + ] + }, + { + "and": [ + { + "or": [ + "car=yes", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + }, + "bicycle!=yes" + ] + } + ] + } + }, + { + "if": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=1" + ] + }, + "then": { + "en": "
Bosch Active Connect with 5 pins and cable
", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "hideInAnswer": true } - ] + ] + }, + { + "id": "plugs-0", + "question": { + "en": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", + "nl": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here", + "nl": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "freeform": { + "key": "socket:schuko", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:schuko~*", + "socket:schuko!=0" + ] + } + }, + { + "id": "plugs-1", + "question": { + "en": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", + "nl": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here", + "nl": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "freeform": { + "key": "socket:typee", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:typee~*", + "socket:typee!=0" + ] + } + }, + { + "id": "plugs-2", + "question": { + "en": "How much plugs of type
Chademo
are available here?", + "nl": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:chademo} plugs of type
Chademo
available here", + "nl": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" + }, + "freeform": { + "key": "socket:chademo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:chademo~*", + "socket:chademo!=0" + ] + } + }, + { + "id": "plugs-3", + "question": { + "en": "How much plugs of type
Type 1 with cable (J1772)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here", + "nl": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" + }, + "freeform": { + "key": "socket:type1_cable", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=0" + ] + } + }, + { + "id": "plugs-4", + "question": { + "en": "How much plugs of type
Type 1 without cable (J1772)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here", + "nl": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" + }, + "freeform": { + "key": "socket:type1", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1~*", + "socket:type1!=0" + ] + } + }, + { + "id": "plugs-5", + "question": { + "en": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", + "nl": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here", + "nl": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "freeform": { + "key": "socket:type1_combo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=0" + ] + } + }, + { + "id": "plugs-6", + "question": { + "en": "How much plugs of type
Tesla Supercharger
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here", + "nl": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" + }, + "freeform": { + "key": "socket:tesla_supercharger", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=0" + ] + } + }, + { + "id": "plugs-7", + "question": { + "en": "How much plugs of type
Type 2 (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here", + "nl": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" + }, + "freeform": { + "key": "socket:type2", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2~*", + "socket:type2!=0" + ] + } + }, + { + "id": "plugs-8", + "question": { + "en": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here", + "nl": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" + }, + "freeform": { + "key": "socket:type2_combo", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=0" + ] + } + }, + { + "id": "plugs-9", + "question": { + "en": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", + "nl": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here", + "nl": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" + }, + "freeform": { + "key": "socket:type2_cable", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=0" + ] + } + }, + { + "id": "plugs-10", + "question": { + "en": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here", + "nl": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "freeform": { + "key": "socket:tesla_supercharger_ccs", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=0" + ] + } + }, + { + "id": "plugs-11", + "question": { + "en": "How much plugs of type
Tesla Supercharger (destination)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here", + "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" + }, + "freeform": { + "key": "socket:tesla_destination", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "plugs-12", + "question": { + "en": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", + "nl": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here", + "nl": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "freeform": { + "key": "socket:tesla_destination", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "plugs-13", + "question": { + "en": "How much plugs of type
USB to charge phones and small electronics
are available here?", + "nl": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here", + "nl": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" + }, + "freeform": { + "key": "socket:USB-A", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=0" + ] + } + }, + { + "id": "plugs-14", + "question": { + "en": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", + "nl": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here", + "nl": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "freeform": { + "key": "socket:bosch_3pin", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=0" + ] + } + }, + { + "id": "plugs-15", + "question": { + "en": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", + "nl": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?" + }, + "render": { + "en": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here", + "nl": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "freeform": { + "key": "socket:bosch_5pin", + "type": "pnat" + }, + "condition": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=0" + ] + } + }, + { + "id": "voltage-0", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", + "nl": "Welke spanning levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "render": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs {socket:schuko:voltage} volt", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van {socket:schuko:voltage} volt" + }, + "freeform": { + "key": "socket:schuko:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:schuko:voltage=230 V", + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs 230 volt", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van 230 volt" + } + } + ], + "condition": { + "and": [ + "socket:schuko~*", + "socket:schuko!=0" + ] + } + }, + { + "id": "current-0", + "group": "technical", + "question": { + "en": "What current do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", + "nl": "Welke stroom levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?" + }, + "render": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:current}A", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal {socket:schuko:current}A" + }, + "freeform": { + "key": "socket:schuko:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:schuko:current=16 A", + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 16 A", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal 16 A" + } + } + ], + "condition": { + "and": [ + "socket:schuko~*", + "socket:schuko!=0" + ] + } + }, + { + "id": "power-output-0", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?" + }, + "render": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:output}", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal {socket:schuko:output}" + }, + "freeform": { + "key": "socket:schuko:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:schuko:output=3.6 kw", + "then": { + "en": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 3.6 kw", + "nl": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal 3.6 kw" + } + } + ], + "condition": { + "and": [ + "socket:schuko~*", + "socket:schuko!=0" + ] + } + }, + { + "id": "voltage-1", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", + "nl": "Welke spanning levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "render": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs {socket:typee:voltage} volt", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van {socket:typee:voltage} volt" + }, + "freeform": { + "key": "socket:typee:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:typee:voltage=230 V", + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs 230 volt", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van 230 volt" + } + } + ], + "condition": { + "and": [ + "socket:typee~*", + "socket:typee!=0" + ] + } + }, + { + "id": "current-1", + "group": "technical", + "question": { + "en": "What current do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", + "nl": "Welke stroom levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?" + }, + "render": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:current}A", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal {socket:typee:current}A" + }, + "freeform": { + "key": "socket:typee:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:typee:current=16 A", + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 16 A", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal 16 A" + } + } + ], + "condition": { + "and": [ + "socket:typee~*", + "socket:typee!=0" + ] + } + }, + { + "id": "power-output-1", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
European wall plug with ground pin (CEE7/4 type E)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?" + }, + "render": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:output}", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal {socket:typee:output}" + }, + "freeform": { + "key": "socket:typee:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:typee:output=3 kw", + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 3 kw", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 3 kw" + } + }, + { + "if": "socket:socket:typee:output=22 kw", + "then": { + "en": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 22 kw", + "nl": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 22 kw" + } + } + ], + "condition": { + "and": [ + "socket:typee~*", + "socket:typee!=0" + ] + } + }, + { + "id": "voltage-2", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Chademo
offer?", + "nl": "Welke spanning levert de stekker van type
Chademo
" + }, + "render": { + "en": "
Chademo
outputs {socket:chademo:voltage} volt", + "nl": "
Chademo
heeft een spanning van {socket:chademo:voltage} volt" + }, + "freeform": { + "key": "socket:chademo:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:chademo:voltage=500 V", + "then": { + "en": "
Chademo
outputs 500 volt", + "nl": "
Chademo
heeft een spanning van 500 volt" + } + } + ], + "condition": { + "and": [ + "socket:chademo~*", + "socket:chademo!=0" + ] + } + }, + { + "id": "current-2", + "group": "technical", + "question": { + "en": "What current do the plugs with
Chademo
offer?", + "nl": "Welke stroom levert de stekker van type
Chademo
?" + }, + "render": { + "en": "
Chademo
outputs at most {socket:chademo:current}A", + "nl": "
Chademo
levert een stroom van maximaal {socket:chademo:current}A" + }, + "freeform": { + "key": "socket:chademo:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:chademo:current=120 A", + "then": { + "en": "
Chademo
outputs at most 120 A", + "nl": "
Chademo
levert een stroom van maximaal 120 A" + } + } + ], + "condition": { + "and": [ + "socket:chademo~*", + "socket:chademo!=0" + ] + } + }, + { + "id": "power-output-2", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Chademo
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Chademo
?" + }, + "render": { + "en": "
Chademo
outputs at most {socket:chademo:output}", + "nl": "
Chademo
levert een vermogen van maximaal {socket:chademo:output}" + }, + "freeform": { + "key": "socket:chademo:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:chademo:output=50 kw", + "then": { + "en": "
Chademo
outputs at most 50 kw", + "nl": "
Chademo
levert een vermogen van maximaal 50 kw" + } + } + ], + "condition": { + "and": [ + "socket:chademo~*", + "socket:chademo!=0" + ] + } + }, + { + "id": "voltage-3", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Type 1 with cable (J1772)
offer?", + "nl": "Welke spanning levert de stekker van type
Type 1 met kabel (J1772)
" + }, + "render": { + "en": "
Type 1 with cable (J1772)
outputs {socket:type1_cable:voltage} volt", + "nl": "
Type 1 met kabel (J1772)
heeft een spanning van {socket:type1_cable:voltage} volt" + }, + "freeform": { + "key": "socket:type1_cable:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1_cable:voltage=200 V", + "then": { + "en": "
Type 1 with cable (J1772)
outputs 200 volt", + "nl": "
Type 1 met kabel (J1772)
heeft een spanning van 200 volt" + } + }, + { + "if": "socket:socket:type1_cable:voltage=240 V", + "then": { + "en": "
Type 1 with cable (J1772)
outputs 240 volt", + "nl": "
Type 1 met kabel (J1772)
heeft een spanning van 240 volt" + } + } + ], + "condition": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=0" + ] + } + }, + { + "id": "current-3", + "group": "technical", + "question": { + "en": "What current do the plugs with
Type 1 with cable (J1772)
offer?", + "nl": "Welke stroom levert de stekker van type
Type 1 met kabel (J1772)
?" + }, + "render": { + "en": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:current}A", + "nl": "
Type 1 met kabel (J1772)
levert een stroom van maximaal {socket:type1_cable:current}A" + }, + "freeform": { + "key": "socket:type1_cable:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1_cable:current=32 A", + "then": { + "en": "
Type 1 with cable (J1772)
outputs at most 32 A", + "nl": "
Type 1 met kabel (J1772)
levert een stroom van maximaal 32 A" + } + } + ], + "condition": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=0" + ] + } + }, + { + "id": "power-output-3", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Type 1 with cable (J1772)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Type 1 met kabel (J1772)
?" + }, + "render": { + "en": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:output}", + "nl": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal {socket:type1_cable:output}" + }, + "freeform": { + "key": "socket:type1_cable:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1_cable:output=3.7 kw", + "then": { + "en": "
Type 1 with cable (J1772)
outputs at most 3.7 kw", + "nl": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 3.7 kw" + } + }, + { + "if": "socket:socket:type1_cable:output=7 kw", + "then": { + "en": "
Type 1 with cable (J1772)
outputs at most 7 kw", + "nl": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 7 kw" + } + } + ], + "condition": { + "and": [ + "socket:type1_cable~*", + "socket:type1_cable!=0" + ] + } + }, + { + "id": "voltage-4", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Type 1 without cable (J1772)
offer?", + "nl": "Welke spanning levert de stekker van type
Type 1 zonder kabel (J1772)
" + }, + "render": { + "en": "
Type 1 without cable (J1772)
outputs {socket:type1:voltage} volt", + "nl": "
Type 1 zonder kabel (J1772)
heeft een spanning van {socket:type1:voltage} volt" + }, + "freeform": { + "key": "socket:type1:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1:voltage=200 V", + "then": { + "en": "
Type 1 without cable (J1772)
outputs 200 volt", + "nl": "
Type 1 zonder kabel (J1772)
heeft een spanning van 200 volt" + } + }, + { + "if": "socket:socket:type1:voltage=240 V", + "then": { + "en": "
Type 1 without cable (J1772)
outputs 240 volt", + "nl": "
Type 1 zonder kabel (J1772)
heeft een spanning van 240 volt" + } + } + ], + "condition": { + "and": [ + "socket:type1~*", + "socket:type1!=0" + ] + } + }, + { + "id": "current-4", + "group": "technical", + "question": { + "en": "What current do the plugs with
Type 1 without cable (J1772)
offer?", + "nl": "Welke stroom levert de stekker van type
Type 1 zonder kabel (J1772)
?" + }, + "render": { + "en": "
Type 1 without cable (J1772)
outputs at most {socket:type1:current}A", + "nl": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal {socket:type1:current}A" + }, + "freeform": { + "key": "socket:type1:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1:current=32 A", + "then": { + "en": "
Type 1 without cable (J1772)
outputs at most 32 A", + "nl": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal 32 A" + } + } + ], + "condition": { + "and": [ + "socket:type1~*", + "socket:type1!=0" + ] + } + }, + { + "id": "power-output-4", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Type 1 without cable (J1772)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Type 1 zonder kabel (J1772)
?" + }, + "render": { + "en": "
Type 1 without cable (J1772)
outputs at most {socket:type1:output}", + "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal {socket:type1:output}" + }, + "freeform": { + "key": "socket:type1:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1:output=3.7 kw", + "then": { + "en": "
Type 1 without cable (J1772)
outputs at most 3.7 kw", + "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 3.7 kw" + } + }, + { + "if": "socket:socket:type1:output=6.6 kw", + "then": { + "en": "
Type 1 without cable (J1772)
outputs at most 6.6 kw", + "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 6.6 kw" + } + }, + { + "if": "socket:socket:type1:output=7 kw", + "then": { + "en": "
Type 1 without cable (J1772)
outputs at most 7 kw", + "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7 kw" + } + }, + { + "if": "socket:socket:type1:output=7.2 kw", + "then": { + "en": "
Type 1 without cable (J1772)
outputs at most 7.2 kw", + "nl": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7.2 kw" + } + } + ], + "condition": { + "and": [ + "socket:type1~*", + "socket:type1!=0" + ] + } + }, + { + "id": "voltage-5", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", + "nl": "Welke spanning levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "render": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs {socket:type1_combo:voltage} volt", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van {socket:type1_combo:voltage} volt" + }, + "freeform": { + "key": "socket:type1_combo:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1_combo:voltage=400 V", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs 400 volt", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 400 volt" + } + }, + { + "if": "socket:socket:type1_combo:voltage=1000 V", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs 1000 volt", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 1000 volt" + } + } + ], + "condition": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=0" + ] + } + }, + { + "id": "current-5", + "group": "technical", + "question": { + "en": "What current do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", + "nl": "Welke stroom levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?" + }, + "render": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:current}A", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal {socket:type1_combo:current}A" + }, + "freeform": { + "key": "socket:type1_combo:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1_combo:current=50 A", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 A", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 50 A" + } + }, + { + "if": "socket:socket:type1_combo:current=125 A", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 125 A", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 125 A" + } + } + ], + "condition": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=0" + ] + } + }, + { + "id": "power-output-5", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Type 1 CCS (aka Type 1 Combo)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?" + }, + "render": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:output}", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal {socket:type1_combo:output}" + }, + "freeform": { + "key": "socket:type1_combo:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type1_combo:output=50 kw", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 kw", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 50 kw" + } + }, + { + "if": "socket:socket:type1_combo:output=62.5 kw", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 62.5 kw", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 62.5 kw" + } + }, + { + "if": "socket:socket:type1_combo:output=150 kw", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 150 kw", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 150 kw" + } + }, + { + "if": "socket:socket:type1_combo:output=350 kw", + "then": { + "en": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 350 kw", + "nl": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 350 kw" + } + } + ], + "condition": { + "and": [ + "socket:type1_combo~*", + "socket:type1_combo!=0" + ] + } + }, + { + "id": "voltage-6", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Tesla Supercharger
offer?", + "nl": "Welke spanning levert de stekker van type
Tesla Supercharger
" + }, + "render": { + "en": "
Tesla Supercharger
outputs {socket:tesla_supercharger:voltage} volt", + "nl": "
Tesla Supercharger
heeft een spanning van {socket:tesla_supercharger:voltage} volt" + }, + "freeform": { + "key": "socket:tesla_supercharger:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_supercharger:voltage=480 V", + "then": { + "en": "
Tesla Supercharger
outputs 480 volt", + "nl": "
Tesla Supercharger
heeft een spanning van 480 volt" + } + } + ], + "condition": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=0" + ] + } + }, + { + "id": "current-6", + "group": "technical", + "question": { + "en": "What current do the plugs with
Tesla Supercharger
offer?", + "nl": "Welke stroom levert de stekker van type
Tesla Supercharger
?" + }, + "render": { + "en": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:current}A", + "nl": "
Tesla Supercharger
levert een stroom van maximaal {socket:tesla_supercharger:current}A" + }, + "freeform": { + "key": "socket:tesla_supercharger:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_supercharger:current=125 A", + "then": { + "en": "
Tesla Supercharger
outputs at most 125 A", + "nl": "
Tesla Supercharger
levert een stroom van maximaal 125 A" + } + }, + { + "if": "socket:socket:tesla_supercharger:current=350 A", + "then": { + "en": "
Tesla Supercharger
outputs at most 350 A", + "nl": "
Tesla Supercharger
levert een stroom van maximaal 350 A" + } + } + ], + "condition": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=0" + ] + } + }, + { + "id": "power-output-6", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Tesla Supercharger
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger
?" + }, + "render": { + "en": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:output}", + "nl": "
Tesla Supercharger
levert een vermogen van maximaal {socket:tesla_supercharger:output}" + }, + "freeform": { + "key": "socket:tesla_supercharger:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_supercharger:output=120 kw", + "then": { + "en": "
Tesla Supercharger
outputs at most 120 kw", + "nl": "
Tesla Supercharger
levert een vermogen van maximaal 120 kw" + } + }, + { + "if": "socket:socket:tesla_supercharger:output=150 kw", + "then": { + "en": "
Tesla Supercharger
outputs at most 150 kw", + "nl": "
Tesla Supercharger
levert een vermogen van maximaal 150 kw" + } + }, + { + "if": "socket:socket:tesla_supercharger:output=250 kw", + "then": { + "en": "
Tesla Supercharger
outputs at most 250 kw", + "nl": "
Tesla Supercharger
levert een vermogen van maximaal 250 kw" + } + } + ], + "condition": { + "and": [ + "socket:tesla_supercharger~*", + "socket:tesla_supercharger!=0" + ] + } + }, + { + "id": "voltage-7", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Type 2 (mennekes)
offer?", + "nl": "Welke spanning levert de stekker van type
Type 2 (mennekes)
" + }, + "render": { + "en": "
Type 2 (mennekes)
outputs {socket:type2:voltage} volt", + "nl": "
Type 2 (mennekes)
heeft een spanning van {socket:type2:voltage} volt" + }, + "freeform": { + "key": "socket:type2:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2:voltage=230 V", + "then": { + "en": "
Type 2 (mennekes)
outputs 230 volt", + "nl": "
Type 2 (mennekes)
heeft een spanning van 230 volt" + } + }, + { + "if": "socket:socket:type2:voltage=400 V", + "then": { + "en": "
Type 2 (mennekes)
outputs 400 volt", + "nl": "
Type 2 (mennekes)
heeft een spanning van 400 volt" + } + } + ], + "condition": { + "and": [ + "socket:type2~*", + "socket:type2!=0" + ] + } + }, + { + "id": "current-7", + "group": "technical", + "question": { + "en": "What current do the plugs with
Type 2 (mennekes)
offer?", + "nl": "Welke stroom levert de stekker van type
Type 2 (mennekes)
?" + }, + "render": { + "en": "
Type 2 (mennekes)
outputs at most {socket:type2:current}A", + "nl": "
Type 2 (mennekes)
levert een stroom van maximaal {socket:type2:current}A" + }, + "freeform": { + "key": "socket:type2:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2:current=16 A", + "then": { + "en": "
Type 2 (mennekes)
outputs at most 16 A", + "nl": "
Type 2 (mennekes)
levert een stroom van maximaal 16 A" + } + }, + { + "if": "socket:socket:type2:current=32 A", + "then": { + "en": "
Type 2 (mennekes)
outputs at most 32 A", + "nl": "
Type 2 (mennekes)
levert een stroom van maximaal 32 A" + } + } + ], + "condition": { + "and": [ + "socket:type2~*", + "socket:type2!=0" + ] + } + }, + { + "id": "power-output-7", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Type 2 (mennekes)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Type 2 (mennekes)
?" + }, + "render": { + "en": "
Type 2 (mennekes)
outputs at most {socket:type2:output}", + "nl": "
Type 2 (mennekes)
levert een vermogen van maximaal {socket:type2:output}" + }, + "freeform": { + "key": "socket:type2:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2:output=11 kw", + "then": { + "en": "
Type 2 (mennekes)
outputs at most 11 kw", + "nl": "
Type 2 (mennekes)
levert een vermogen van maximaal 11 kw" + } + }, + { + "if": "socket:socket:type2:output=22 kw", + "then": { + "en": "
Type 2 (mennekes)
outputs at most 22 kw", + "nl": "
Type 2 (mennekes)
levert een vermogen van maximaal 22 kw" + } + } + ], + "condition": { + "and": [ + "socket:type2~*", + "socket:type2!=0" + ] + } + }, + { + "id": "voltage-8", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Type 2 CCS (mennekes)
offer?", + "nl": "Welke spanning levert de stekker van type
Type 2 CCS (mennekes)
" + }, + "render": { + "en": "
Type 2 CCS (mennekes)
outputs {socket:type2_combo:voltage} volt", + "nl": "
Type 2 CCS (mennekes)
heeft een spanning van {socket:type2_combo:voltage} volt" + }, + "freeform": { + "key": "socket:type2_combo:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2_combo:voltage=500 V", + "then": { + "en": "
Type 2 CCS (mennekes)
outputs 500 volt", + "nl": "
Type 2 CCS (mennekes)
heeft een spanning van 500 volt" + } + }, + { + "if": "socket:socket:type2_combo:voltage=920 V", + "then": { + "en": "
Type 2 CCS (mennekes)
outputs 920 volt", + "nl": "
Type 2 CCS (mennekes)
heeft een spanning van 920 volt" + } + } + ], + "condition": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=0" + ] + } + }, + { + "id": "current-8", + "group": "technical", + "question": { + "en": "What current do the plugs with
Type 2 CCS (mennekes)
offer?", + "nl": "Welke stroom levert de stekker van type
Type 2 CCS (mennekes)
?" + }, + "render": { + "en": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:current}A", + "nl": "
Type 2 CCS (mennekes)
levert een stroom van maximaal {socket:type2_combo:current}A" + }, + "freeform": { + "key": "socket:type2_combo:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2_combo:current=125 A", + "then": { + "en": "
Type 2 CCS (mennekes)
outputs at most 125 A", + "nl": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 125 A" + } + }, + { + "if": "socket:socket:type2_combo:current=350 A", + "then": { + "en": "
Type 2 CCS (mennekes)
outputs at most 350 A", + "nl": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 350 A" + } + } + ], + "condition": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=0" + ] + } + }, + { + "id": "power-output-8", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Type 2 CCS (mennekes)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Type 2 CCS (mennekes)
?" + }, + "render": { + "en": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:output}", + "nl": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal {socket:type2_combo:output}" + }, + "freeform": { + "key": "socket:type2_combo:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2_combo:output=50 kw", + "then": { + "en": "
Type 2 CCS (mennekes)
outputs at most 50 kw", + "nl": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal 50 kw" + } + } + ], + "condition": { + "and": [ + "socket:type2_combo~*", + "socket:type2_combo!=0" + ] + } + }, + { + "id": "voltage-9", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Type 2 with cable (mennekes)
offer?", + "nl": "Welke spanning levert de stekker van type
Type 2 met kabel (J1772)
" + }, + "render": { + "en": "
Type 2 with cable (mennekes)
outputs {socket:type2_cable:voltage} volt", + "nl": "
Type 2 met kabel (J1772)
heeft een spanning van {socket:type2_cable:voltage} volt" + }, + "freeform": { + "key": "socket:type2_cable:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2_cable:voltage=230 V", + "then": { + "en": "
Type 2 with cable (mennekes)
outputs 230 volt", + "nl": "
Type 2 met kabel (J1772)
heeft een spanning van 230 volt" + } + }, + { + "if": "socket:socket:type2_cable:voltage=400 V", + "then": { + "en": "
Type 2 with cable (mennekes)
outputs 400 volt", + "nl": "
Type 2 met kabel (J1772)
heeft een spanning van 400 volt" + } + } + ], + "condition": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=0" + ] + } + }, + { + "id": "current-9", + "group": "technical", + "question": { + "en": "What current do the plugs with
Type 2 with cable (mennekes)
offer?", + "nl": "Welke stroom levert de stekker van type
Type 2 met kabel (J1772)
?" + }, + "render": { + "en": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:current}A", + "nl": "
Type 2 met kabel (J1772)
levert een stroom van maximaal {socket:type2_cable:current}A" + }, + "freeform": { + "key": "socket:type2_cable:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2_cable:current=16 A", + "then": { + "en": "
Type 2 with cable (mennekes)
outputs at most 16 A", + "nl": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 16 A" + } + }, + { + "if": "socket:socket:type2_cable:current=32 A", + "then": { + "en": "
Type 2 with cable (mennekes)
outputs at most 32 A", + "nl": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 32 A" + } + } + ], + "condition": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=0" + ] + } + }, + { + "id": "power-output-9", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Type 2 with cable (mennekes)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Type 2 met kabel (J1772)
?" + }, + "render": { + "en": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:output}", + "nl": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal {socket:type2_cable:output}" + }, + "freeform": { + "key": "socket:type2_cable:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:type2_cable:output=11 kw", + "then": { + "en": "
Type 2 with cable (mennekes)
outputs at most 11 kw", + "nl": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 11 kw" + } + }, + { + "if": "socket:socket:type2_cable:output=22 kw", + "then": { + "en": "
Type 2 with cable (mennekes)
outputs at most 22 kw", + "nl": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 22 kw" + } + } + ], + "condition": { + "and": [ + "socket:type2_cable~*", + "socket:type2_cable!=0" + ] + } + }, + { + "id": "voltage-10", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", + "nl": "Welke spanning levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "render": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs {socket:tesla_supercharger_ccs:voltage} volt", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van {socket:tesla_supercharger_ccs:voltage} volt" + }, + "freeform": { + "key": "socket:tesla_supercharger_ccs:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_supercharger_ccs:voltage=500 V", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs 500 volt", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 500 volt" + } + }, + { + "if": "socket:socket:tesla_supercharger_ccs:voltage=920 V", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs 920 volt", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 920 volt" + } + } + ], + "condition": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=0" + ] + } + }, + { + "id": "current-10", + "group": "technical", + "question": { + "en": "What current do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", + "nl": "Welke stroom levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?" + }, + "render": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:current}A", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal {socket:tesla_supercharger_ccs:current}A" + }, + "freeform": { + "key": "socket:tesla_supercharger_ccs:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_supercharger_ccs:current=125 A", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 125 A", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 125 A" + } + }, + { + "if": "socket:socket:tesla_supercharger_ccs:current=350 A", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 350 A", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 350 A" + } + } + ], + "condition": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=0" + ] + } + }, + { + "id": "power-output-10", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Tesla Supercharger CCS (a branded type2_css)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?" + }, + "render": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:output}", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal {socket:tesla_supercharger_ccs:output}" + }, + "freeform": { + "key": "socket:tesla_supercharger_ccs:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_supercharger_ccs:output=50 kw", + "then": { + "en": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 50 kw", + "nl": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal 50 kw" + } + } + ], + "condition": { + "and": [ + "socket:tesla_supercharger_ccs~*", + "socket:tesla_supercharger_ccs!=0" + ] + } + }, + { + "id": "voltage-11", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Tesla Supercharger (destination)
offer?", + "nl": "Welke spanning levert de stekker van type
Tesla Supercharger (destination)
" + }, + "render": { + "en": "
Tesla Supercharger (destination)
outputs {socket:tesla_destination:voltage} volt", + "nl": "
Tesla Supercharger (destination)
heeft een spanning van {socket:tesla_destination:voltage} volt" + }, + "freeform": { + "key": "socket:tesla_destination:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_destination:voltage=480 V", + "then": { + "en": "
Tesla Supercharger (destination)
outputs 480 volt", + "nl": "
Tesla Supercharger (destination)
heeft een spanning van 480 volt" + } + } + ], + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "current-11", + "group": "technical", + "question": { + "en": "What current do the plugs with
Tesla Supercharger (destination)
offer?", + "nl": "Welke stroom levert de stekker van type
Tesla Supercharger (destination)
?" + }, + "render": { + "en": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:current}A", + "nl": "
Tesla Supercharger (destination)
levert een stroom van maximaal {socket:tesla_destination:current}A" + }, + "freeform": { + "key": "socket:tesla_destination:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_destination:current=125 A", + "then": { + "en": "
Tesla Supercharger (destination)
outputs at most 125 A", + "nl": "
Tesla Supercharger (destination)
levert een stroom van maximaal 125 A" + } + }, + { + "if": "socket:socket:tesla_destination:current=350 A", + "then": { + "en": "
Tesla Supercharger (destination)
outputs at most 350 A", + "nl": "
Tesla Supercharger (destination)
levert een stroom van maximaal 350 A" + } + } + ], + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "power-output-11", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Tesla Supercharger (destination)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger (destination)
?" + }, + "render": { + "en": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:output}", + "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal {socket:tesla_destination:output}" + }, + "freeform": { + "key": "socket:tesla_destination:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_destination:output=120 kw", + "then": { + "en": "
Tesla Supercharger (destination)
outputs at most 120 kw", + "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 120 kw" + } + }, + { + "if": "socket:socket:tesla_destination:output=150 kw", + "then": { + "en": "
Tesla Supercharger (destination)
outputs at most 150 kw", + "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 150 kw" + } + }, + { + "if": "socket:socket:tesla_destination:output=250 kw", + "then": { + "en": "
Tesla Supercharger (destination)
outputs at most 250 kw", + "nl": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 250 kw" + } + } + ], + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "voltage-12", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", + "nl": "Welke spanning levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "render": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs {socket:tesla_destination:voltage} volt", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van {socket:tesla_destination:voltage} volt" + }, + "freeform": { + "key": "socket:tesla_destination:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_destination:voltage=230 V", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 230 volt", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 230 volt" + } + }, + { + "if": "socket:socket:tesla_destination:voltage=400 V", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 400 volt", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 400 volt" + } + } + ], + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "current-12", + "group": "technical", + "question": { + "en": "What current do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", + "nl": "Welke stroom levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?" + }, + "render": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:current}A", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal {socket:tesla_destination:current}A" + }, + "freeform": { + "key": "socket:tesla_destination:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_destination:current=16 A", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 16 A", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 16 A" + } + }, + { + "if": "socket:socket:tesla_destination:current=32 A", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 32 A", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 32 A" + } + } + ], + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "power-output-12", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?" + }, + "render": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:output}", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal {socket:tesla_destination:output}" + }, + "freeform": { + "key": "socket:tesla_destination:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:tesla_destination:output=11 kw", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 11 kw", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 11 kw" + } + }, + { + "if": "socket:socket:tesla_destination:output=22 kw", + "then": { + "en": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 22 kw", + "nl": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 22 kw" + } + } + ], + "condition": { + "and": [ + "socket:tesla_destination~*", + "socket:tesla_destination!=0" + ] + } + }, + { + "id": "voltage-13", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
USB to charge phones and small electronics
offer?", + "nl": "Welke spanning levert de stekker van type
USB om GSMs en kleine electronica op te laden
" + }, + "render": { + "en": "
USB to charge phones and small electronics
outputs {socket:USB-A:voltage} volt", + "nl": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van {socket:USB-A:voltage} volt" + }, + "freeform": { + "key": "socket:USB-A:voltage", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:USB-A:voltage=5 V", + "then": { + "en": "
USB to charge phones and small electronics
outputs 5 volt", + "nl": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van 5 volt" + } + } + ], + "condition": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=0" + ] + } + }, + { + "id": "current-13", + "group": "technical", + "question": { + "en": "What current do the plugs with
USB to charge phones and small electronics
offer?", + "nl": "Welke stroom levert de stekker van type
USB om GSMs en kleine electronica op te laden
?" + }, + "render": { + "en": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:current}A", + "nl": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal {socket:USB-A:current}A" + }, + "freeform": { + "key": "socket:USB-A:current", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:USB-A:current=1 A", + "then": { + "en": "
USB to charge phones and small electronics
outputs at most 1 A", + "nl": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 1 A" + } + }, + { + "if": "socket:socket:USB-A:current=2 A", + "then": { + "en": "
USB to charge phones and small electronics
outputs at most 2 A", + "nl": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 2 A" + } + } + ], + "condition": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=0" + ] + } + }, + { + "id": "power-output-13", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
USB to charge phones and small electronics
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
USB om GSMs en kleine electronica op te laden
?" + }, + "render": { + "en": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:output}", + "nl": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal {socket:USB-A:output}" + }, + "freeform": { + "key": "socket:USB-A:output", + "type": "pfloat" + }, + "mappings": [ + { + "if": "socket:socket:USB-A:output=5w", + "then": { + "en": "
USB to charge phones and small electronics
outputs at most 5w", + "nl": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 5w" + } + }, + { + "if": "socket:socket:USB-A:output=10w", + "then": { + "en": "
USB to charge phones and small electronics
outputs at most 10w", + "nl": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 10w" + } + } + ], + "condition": { + "and": [ + "socket:USB-A~*", + "socket:USB-A!=0" + ] + } + }, + { + "id": "voltage-14", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", + "nl": "Welke spanning levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "render": { + "en": "
Bosch Active Connect with 3 pins and cable
outputs {socket:bosch_3pin:voltage} volt", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
heeft een spanning van {socket:bosch_3pin:voltage} volt" + }, + "freeform": { + "key": "socket:bosch_3pin:voltage", + "type": "pfloat" + }, + "mappings": [], + "condition": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=0" + ] + } + }, + { + "id": "current-14", + "group": "technical", + "question": { + "en": "What current do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", + "nl": "Welke stroom levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?" + }, + "render": { + "en": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:current}A", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_3pin:current}A" + }, + "freeform": { + "key": "socket:bosch_3pin:current", + "type": "pfloat" + }, + "mappings": [], + "condition": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=0" + ] + } + }, + { + "id": "power-output-14", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Bosch Active Connect with 3 pins and cable
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?" + }, + "render": { + "en": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:output}", + "nl": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_3pin:output}" + }, + "freeform": { + "key": "socket:bosch_3pin:output", + "type": "pfloat" + }, + "mappings": [], + "condition": { + "and": [ + "socket:bosch_3pin~*", + "socket:bosch_3pin!=0" + ] + } + }, + { + "id": "voltage-15", + "group": "technical", + "question": { + "en": "What voltage do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", + "nl": "Welke spanning levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "render": { + "en": "
Bosch Active Connect with 5 pins and cable
outputs {socket:bosch_5pin:voltage} volt", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
heeft een spanning van {socket:bosch_5pin:voltage} volt" + }, + "freeform": { + "key": "socket:bosch_5pin:voltage", + "type": "pfloat" + }, + "mappings": [], + "condition": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=0" + ] + } + }, + { + "id": "current-15", + "group": "technical", + "question": { + "en": "What current do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", + "nl": "Welke stroom levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?" + }, + "render": { + "en": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:current}A", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_5pin:current}A" + }, + "freeform": { + "key": "socket:bosch_5pin:current", + "type": "pfloat" + }, + "mappings": [], + "condition": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=0" + ] + } + }, + { + "id": "power-output-15", + "group": "technical", + "question": { + "en": "What power output does a single plug of type
Bosch Active Connect with 5 pins and cable
offer?", + "nl": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?" + }, + "render": { + "en": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:output}", + "nl": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_5pin:output}" + }, + "freeform": { + "key": "socket:bosch_5pin:output", + "type": "pfloat" + }, + "mappings": [], + "condition": { + "and": [ + "socket:bosch_5pin~*", + "socket:bosch_5pin!=0" + ] + } + }, + { + "id": "OH", + "render": "{opening_hours_table(opening_hours)}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "question": { + "en": "When is this charging station opened?", + "nl": "Wanneer is dit oplaadpunt beschikbaar??" + }, + "mappings": [ + { + "if": "opening_hours=24/7", + "then": { + "en": "24/7 opened (including holidays)", + "nl": "24/7 open - ook tijdens vakanties" + } + } + ] + }, + { + "id": "fee", + "question": { + "en": "Does one have to pay to use this charging station?", + "nl": "Moet men betalen om dit oplaadpunt te gebruiken?" + }, + "mappings": [ + { + "if": { + "and": [ + "fee=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken", + "en": "Free to use" + }, + "hideInAnswer": true + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=yes" + ] + }, + "then": { + "nl": "Gratis te gebruiken (zonder aan te melden)", + "en": "Free to use (without authenticating)" + } + }, + { + "if": { + "and": [ + "fee=no", + "fee:conditional=", + "charge=", + "authentication:none=no" + ] + }, + "then": { + "nl": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht", + "en": "Free to use, but one has to authenticate" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=no @ customers" + ] + }, + "then": { + "nl": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/cafÊ/ziekenhuis/...", + "en": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" + } + }, + { + "if": { + "and": [ + "fee=yes", + "fee:conditional=" + ] + }, + "then": { + "nl": "Betalend", + "en": "Paid use" + } + } + ] + }, + { + "id": "charge", + "question": { + "en": "How much does one have to pay to use this charging station?", + "nl": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?" + }, + "render": { + "en": "Using this charging station costs {charge}", + "nl": "Dit oplaadpunt gebruiken kost {charge}" + }, + "freeform": { + "key": "charge" + }, + "condition": "fee=yes" + }, + { + "id": "payment-options", + "builtin": "payment-options", + "override": { + "condition": { + "or": [ + "fee=yes", + "charge~*" + ] + }, + "mappings+": [ + { + "if": "payment:app=yes", + "ifnot": "payment:app=no", + "then": { + "en": "Payment is done using a dedicated app", + "nl": "Betalen via een app van het netwerk" + } + }, + { + "if": "payment:membership_card=yes", + "ifnot": "payment:membership_card=no", + "then": { + "en": "Payment is done using a membership card", + "nl": "Betalen via een lidkaart van het netwerk" + } + } + ] + } + }, + { + "id": "Authentication", + "#": "In some cases, charging is free but one has to be authenticated. We only ask for authentication if fee is no (or unset). By default one sees the questions for either the payment options or the authentication options, but normally not both", + "question": { + "en": "What kind of authentication is available at the charging station?", + "nl": "Hoe kan men zich aanmelden aan dit oplaadstation?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "authentication:membership_card=yes", + "ifnot": "authentication:membership_card=no", + "then": { + "en": "Authentication by a membership card", + "nl": "Aanmelden met een lidkaart is mogelijk" + } + }, + { + "if": "authentication:app=yes", + "ifnot": "authentication:app=no", + "then": { + "en": "Authentication by an app", + "nl": "Aanmelden via een applicatie is mogelijk" + } + }, + { + "if": "authentication:phone_call=yes", + "ifnot": "authentication:phone_call=no", + "then": { + "en": "Authentication via phone call is available", + "nl": "Aanmelden door te bellen naar een telefoonnummer is mogelijk" + } + }, + { + "if": "authentication:short_message=yes", + "ifnot": "authentication:short_message=no", + "then": { + "en": "Authentication via SMS is available", + "nl": "Aanmelden via SMS is mogelijk" + } + }, + { + "if": "authentication:nfc=yes", + "ifnot": "authentication:nfc=no", + "then": { + "en": "Authentication via NFC is available", + "nl": "Aanmelden via NFC is mogelijk" + } + }, + { + "if": "authentication:money_card=yes", + "ifnot": "authentication:money_card=no", + "then": { + "en": "Authentication via Money Card is available", + "nl": "Aanmelden met Money Card is mogelijk" + } + }, + { + "if": "authentication:debit_card=yes", + "ifnot": "authentication:debit_card=no", + "then": { + "en": "Authentication via debit card is available", + "nl": "Aanmelden met een betaalkaart is mogelijk" + } + }, + { + "if": "authentication:none=yes", + "ifnot": "authentication:none=no", + "then": { + "en": "Charging here is (also) possible without authentication", + "nl": "Hier opladen is (ook) mogelijk zonder aan te melden" + } + } + ], + "condition": { + "or": [ + "fee=no", + "fee=" + ] + } + }, + { + "id": "Auth phone", + "render": { + "en": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}", + "nl": "Aanmelden door te bellen of te SMS'en naar {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?" + }, + "freeform": { + "key": "authentication:phone_call:number", + "type": "phone" + }, + "condition": { + "or": [ + "authentication:phone_call=yes", + "authentication:short_message=yes" + ] + } + }, + { + "id": "maxstay", + "question": { + "en": "What is the maximum amount of time one is allowed to stay here?", + "nl": "Hoelang mag een voertuig hier blijven staan?" + }, + "freeform": { + "key": "maxstay" + }, + "render": { + "en": "One can stay at most {canonical(maxstay)}", + "nl": "De maximale parkeertijd hier is {canonical(maxstay)}" + }, + "mappings": [ + { + "if": "maxstay=unlimited", + "then": { + "en": "No timelimit on leaving your vehicle here", + "nl": "Geen maximum parkeertijd" + } + } + ], + "condition": { + "or": [ + "maxstay~*", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] + } + }, + { + "id": "Network", + "render": { + "en": "Part of the network {network}", + "nl": "Maakt deel uit van het {network}-netwerk" + }, + "question": { + "en": "Is this charging station part of a network?", + "nl": "Is dit oplaadpunt deel van een groter netwerk?" + }, + "freeform": { + "key": "network" + }, + "mappings": [ + { + "if": "no:network=yes", + "then": { + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk" + } + }, + { + "if": "network=none", + "then": { + "en": "Not part of a bigger network", + "nl": "Maakt geen deel uit van een groter netwerk" + }, + "hideInAnswer": true + }, + { + "if": "network=AeroVironment", + "then": "AeroVironment" + }, + { + "if": "network=Blink", + "then": "Blink" + }, + { + "if": "network=eVgo", + "then": "eVgo" + } + ] + }, + { + "id": "Operator", + "question": { + "en": "Who is the operator of this charging station?", + "nl": "Wie beheert dit oplaadpunt?" + }, + "render": { + "en": "This charging station is operated by {operator}", + "nl": "Wordt beheerd door {operator}" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": { + "and": [ + "network:={operator}" + ] + }, + "then": { + "en": "Actually, {operator} is the network", + "nl": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt" + }, + "addExtraTags": [ + "operator=" + ], + "hideInAnswer": "operator=" + } + ] + }, + { + "id": "phone", + "question": { + "en": "What number can one call if there is a problem with this charging station?", + "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?" + }, + "render": { + "en": "In case of problems, call {phone}", + "nl": "Bij problemen, bel naar {phone}" + }, + "freeform": { + "key": "phone", + "type": "phone" + } + }, + { + "id": "email", + "question": { + "en": "What is the email address of the operator?", + "nl": "Wat is het email-adres van de operator?" + }, + "render": { + "en": "In case of problems, send an email to {email}", + "nl": "Bij problemen, email naar {email}" + }, + "freeform": { + "key": "email", + "type": "email" + } + }, + { + "id": "website", + "question": { + "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?" + }, + "render": { + "en": "More info on {website}", + "nl": "Meer informatie op {website}" + }, + "freeform": { + "key": "website", + "type": "url" + } + }, + "level", + { + "id": "ref", + "question": { + "en": "What is the reference number of this charging station?", + "nl": "Wat is het referentienummer van dit oplaadstation?" + }, + "render": { + "en": "Reference number is {ref}", + "nl": "Het referentienummer van dit oplaadpunt is {ref}" + }, + "freeform": { + "key": "ref" + }, + "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", + "condition": "network!=" + }, + { + "id": "Operational status", + "question": { + "en": "Is this charging point in use?", + "nl": "Is dit oplaadpunt operationeel?" + }, + "mappings": [ + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=charging_station" + ] + }, + "then": { + "en": "This charging station works", + "nl": "Dit oplaadpunt werkt" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=broken", + "amenity=charging_station" + ] + }, + "then": { + "en": "This charging station is broken", + "nl": "Dit oplaadpunt is kapot" + } + }, + { + "if": { + "and": [ + "planned:amenity=charging_station", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=" + ] + }, + "then": { + "en": "A charging station is planned here", + "nl": "Hier zal binnenkort een oplaadpunt gebouwd worden" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=charging_station", + "disused:amenity=", + "operational_status=", + "amenity=" + ] + }, + "then": { + "en": "A charging station is constructed here", + "nl": "Hier wordt op dit moment een oplaadpunt gebouwd" + } + }, + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=charging_station", + "operational_status=", + "amenity=" + ] + }, + "then": { + "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", + "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig" + } + } + ] + }, + { + "id": "Parking:fee", + "question": { + "en": "Does one have to pay a parking fee while charging?", + "nl": "Moet men parkeergeld betalen tijdens het opladen?" + }, + "mappings": [ + { + "if": "parking:fee=no", + "then": { + "en": "No additional parking cost while charging", + "nl": "Geen extra parkeerkost tijdens het opladen" + } + }, + { + "if": "parking:fee=yes", + "then": { + "en": "An additional parking fee should be paid while charging", + "nl": "Tijdens het opladen moet er parkeergeld betaald worden" + } + } + ], + "condition": { + "or": [ + "motor_vehicle=yes", + "hgv=yes", + "bus=yes", + "bicycle=no", + "bicycle=" + ] + } + }, + { + "id": "questions" + }, + { + "id": "questions", + "group": "technical", + "render": { + "en": "

Technical questions

The questions below are very technical. Feel free to ignore them
{questions}", + "nl": "

Technische vragen

De vragen hieronder zijn erg technisch - sla deze over indien je hier geen tijd voor hebt
{questions}" + }, + "freeform": { + "key": "questions", + "helperArgs": { + "showAllQuestions": true + } + } + } + ], + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": { + "render": "pin:#fff;./assets/themes/charging_stations/plug.svg", + "mappings": [ + { + "if": "bicycle=yes", + "then": "pin:#fff;./assets/themes/charging_stations/bicycle.svg" + }, + { + "if": { + "or": [ + "car=yes", + "motorcar=yes" + ] + }, + "then": "pin:#fff;./assets/themes/charging_stations/car.svg" + } + ] + }, + "iconBadges": [ + { + "if": { + "or": [ + "disused:amenity=charging_station", + "operational_status=broken" + ] + }, + "then": "cross:#c22;" + }, + { + "if": { + "or": [ + "proposed:amenity=charging_station", + "planned:amenity=charging_station" + ] + }, + "then": "./assets/layers/charging_station/under_construction.svg" + }, + { + "if": { + "and": [ + "bicycle=yes", + { + "or": [ + "motorcar=yes", + "car=yes" + ] + } + ] + }, + "then": "circle:#fff;./assets/themes/charging_stations/car.svg" + } + ], + "iconSize": { + "render": "50,50,bottom" + } + } + ], + "presets": [ + { + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes", + "socket:typee=1" + ], + "title": { + "en": "charging station with a normal european wall plug (meant to charge electrical bikes)", + "nl": "laadpunt met gewone stekker(s) (bedoeld om electrische fietsen op te laden)" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=no", + "bicycle=yes" + ], + "title": { + "en": "charging station for e-bikes", + "nl": "oplaadpunt voor elektrische fietsen" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station", + "motorcar=yes", + "bicycle=no" + ], + "title": { + "en": "charging station for cars", + "nl": "oplaadstation voor elektrische auto's" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "tags": [ + "amenity=charging_station" + ], + "title": { + "en": "charging station", + "nl": "oplaadstation" + }, + "preciseInput": { + "preferredBackground": "map" + } + } + ], + "filter": [ + { + "id": "vehicle-type", + "options": [ + { + "question": { + "en": "All vehicle types", + "nl": "Alle voertuigen" + } + }, + { + "question": { + "en": "Charging station for bicycles", + "nl": "Oplaadpunten voor fietsen" + }, + "osmTags": "bicycle=yes" + }, + { + "question": { + "en": "Charging station for cars", + "nl": "Oplaadpunten voor auto's" + }, + "osmTags": { + "or": [ + "car=yes", + "motorcar=yes" + ] + } + } + ] + }, + { + "id": "working", + "options": [ + { + "question": { + "en": "Only working charging stations", + "nl": "Enkel werkende oplaadpunten" + }, + "osmTags": { + "and": [ + "operational_status!=broken", + "amenity=charging_station" + ] + } + } + ] + }, + { + "id": "connection_type", + "options": [ + { + "question": { + "en": "All connectors", + "nl": "Alle types" + } + }, + { + "question": { + "en": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector", + "nl": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "osmTags": "socket:schuko~*" + }, + { + "question": { + "en": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector", + "nl": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "osmTags": "socket:typee~*" + }, + { + "question": { + "en": "Has a
Chademo
connector", + "nl": "Heeft een
Chademo
" + }, + "osmTags": "socket:chademo~*" + }, + { + "question": { + "en": "Has a
Type 1 with cable (J1772)
connector", + "nl": "Heeft een
Type 1 met kabel (J1772)
" + }, + "osmTags": "socket:type1_cable~*" + }, + { + "question": { + "en": "Has a
Type 1 without cable (J1772)
connector", + "nl": "Heeft een
Type 1 zonder kabel (J1772)
" + }, + "osmTags": "socket:type1~*" + }, + { + "question": { + "en": "Has a
Type 1 CCS (aka Type 1 Combo)
connector", + "nl": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "osmTags": "socket:type1_combo~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger
connector", + "nl": "Heeft een
Tesla Supercharger
" + }, + "osmTags": "socket:tesla_supercharger~*" + }, + { + "question": { + "en": "Has a
Type 2 (mennekes)
connector", + "nl": "Heeft een
Type 2 (mennekes)
" + }, + "osmTags": "socket:type2~*" + }, + { + "question": { + "en": "Has a
Type 2 CCS (mennekes)
connector", + "nl": "Heeft een
Type 2 CCS (mennekes)
" + }, + "osmTags": "socket:type2_combo~*" + }, + { + "question": { + "en": "Has a
Type 2 with cable (mennekes)
connector", + "nl": "Heeft een
Type 2 met kabel (J1772)
" + }, + "osmTags": "socket:type2_cable~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector", + "nl": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "osmTags": "socket:tesla_supercharger_ccs~*" + }, + { + "question": { + "en": "Has a
Tesla Supercharger (destination)
connector", + "nl": "Heeft een
Tesla Supercharger (destination)
" + }, + "osmTags": "socket:tesla_destination~*" + }, + { + "question": { + "en": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector", + "nl": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "osmTags": "socket:tesla_destination~*" + }, + { + "question": { + "en": "Has a
USB to charge phones and small electronics
connector", + "nl": "Heeft een
USB om GSMs en kleine electronica op te laden
" + }, + "osmTags": "socket:USB-A~*" + }, + { + "question": { + "en": "Has a
Bosch Active Connect with 3 pins and cable
connector", + "nl": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "osmTags": "socket:bosch_3pin~*" + }, + { + "question": { + "en": "Has a
Bosch Active Connect with 5 pins and cable
connector", + "nl": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "osmTags": "socket:bosch_5pin~*" + } + ] + } + ], + "units": [ + { + "appliesToKey": [ + "maxstay" + ], + "applicableUnits": [ + { + "canonicalDenomination": "minutes", + "canonicalDenominationSingular": "minute", + "alternativeDenomination": [ + "m", + "min", + "mins", + "minuten", + "mns" + ], + "human": { + "en": " minutes", + "nl": " minuten" + }, + "humanSingular": { + "en": " minute", + "nl": " minuut" + } + }, + { + "canonicalDenomination": "hours", + "canonicalDenominationSingular": "hour", + "alternativeDenomination": [ + "h", + "hrs", + "hours", + "u", + "uur", + "uren" + ], + "human": { + "en": " hours", + "nl": " uren" + }, + "humanSingular": { + "en": " hour", + "nl": " uur" + } + }, + { + "canonicalDenomination": "days", + "canonicalDenominationSingular": "day", + "alternativeDenomination": [ + "dys", + "dagen", + "dag" + ], + "human": { + "en": " days", + "nl": " day" + }, + "humanSingular": { + "en": " day", + "nl": " dag" + } + } + ] + }, + { + "appliesToKey": [ + "socket:schuko:voltage", + "socket:typee:voltage", + "socket:chademo:voltage", + "socket:type1_cable:voltage", + "socket:type1:voltage", + "socket:type1_combo:voltage", + "socket:tesla_supercharger:voltage", + "socket:type2:voltage", + "socket:type2_combo:voltage", + "socket:type2_cable:voltage", + "socket:tesla_supercharger_ccs:voltage", + "socket:tesla_destination:voltage", + "socket:tesla_destination:voltage", + "socket:USB-A:voltage", + "socket:bosch_3pin:voltage", + "socket:bosch_5pin:voltage" + ], + "applicableUnits": [ + { + "canonicalDenomination": "V", + "alternativeDenomination": [ + "v", + "volt", + "voltage", + "V", + "Volt" + ], + "human": { + "en": "Volts", + "nl": "volt" + } + } + ], + "eraseInvalidValues": true + }, + { + "appliesToKey": [ + "socket:schuko:current", + "socket:typee:current", + "socket:chademo:current", + "socket:type1_cable:current", + "socket:type1:current", + "socket:type1_combo:current", + "socket:tesla_supercharger:current", + "socket:type2:current", + "socket:type2_combo:current", + "socket:type2_cable:current", + "socket:tesla_supercharger_ccs:current", + "socket:tesla_destination:current", + "socket:tesla_destination:current", + "socket:USB-A:current", + "socket:bosch_3pin:current", + "socket:bosch_5pin:current" + ], + "applicableUnits": [ + { + "canonicalDenomination": "A", + "alternativeDenomination": [ + "a", + "amp", + "amperage", + "A" + ], + "human": { + "en": "A", + "nl": "A" + } + } + ], + "eraseInvalidValues": true + }, + { + "appliesToKey": [ + "socket:schuko:output", + "socket:typee:output", + "socket:chademo:output", + "socket:type1_cable:output", + "socket:type1:output", + "socket:type1_combo:output", + "socket:tesla_supercharger:output", + "socket:type2:output", + "socket:type2_combo:output", + "socket:type2_cable:output", + "socket:tesla_supercharger_ccs:output", + "socket:tesla_destination:output", + "socket:tesla_destination:output", + "socket:USB-A:output", + "socket:bosch_3pin:output", + "socket:bosch_5pin:output" + ], + "applicableUnits": [ + { + "canonicalDenomination": "kW", + "alternativeDenomination": [ + "kilowatt" + ], + "human": { + "en": "kilowatt", + "nl": "kilowatt" + } + }, + { + "canonicalDenomination": "mW", + "alternativeDenomination": [ + "megawatt" + ], + "human": { + "en": "megawatt", + "nl": "megawatt" + } + } + ], + "eraseInvalidValues": true + } + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuracy": true + }, + "deletion": { + "softDeletionTags": { + "and": [ + "amenity=", + "disused:amenity=charging_station" + ] + }, + "neededChangesets": 10 + } } \ No newline at end of file diff --git a/assets/layers/charging_station/charging_station.protojson b/assets/layers/charging_station/charging_station.protojson index 3d0465068..985f38312 100644 --- a/assets/layers/charging_station/charging_station.protojson +++ b/assets/layers/charging_station/charging_station.protojson @@ -413,7 +413,12 @@ } ], "condition": { - "or": ["maxstay~*","motorcar=yes","hgv=yes","bus=yes"] + "or": [ + "maxstay~*", + "motorcar=yes", + "hgv=yes", + "bus=yes" + ] } }, { @@ -497,7 +502,8 @@ "nl": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?" }, "render": { - "en": "In case of problems, call {phone}", "nl": "Bij problemen, bel naar {phone}" + "en": "In case of problems, call {phone}", + "nl": "Bij problemen, bel naar {phone}" }, "freeform": { "key": "phone", @@ -548,8 +554,8 @@ "freeform": { "key": "ref" }, - "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", - "condition":"network!=" + "#": "Only asked if part of a bigger network. Small operators typically don't have a reference number", + "condition": "network!=" }, { "id": "Operational status", @@ -558,6 +564,21 @@ "nl": "Is dit oplaadpunt operationeel?" }, "mappings": [ + { + "if": { + "and": [ + "planned:amenity=", + "construction:amenity=", + "disused:amenity=", + "operational_status=", + "amenity=charging_station" + ] + }, + "then": { + "en": "This charging station works", + "nl": "Dit oplaadpunt werkt" + } + }, { "if": { "and": [ @@ -589,7 +610,7 @@ } }, { - "if":{ + "if": { "and": [ "planned:amenity=", "construction:amenity=charging_station", @@ -617,21 +638,6 @@ "en": "This charging station has beed permanently disabled and is not in use anymore but is still visible", "nl": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig" } - }, - { - "if": { - "and": [ - "planned:amenity=", - "construction:amenity=", - "disused:amenity=", - "operational_status=", - "amenity=charging_station" - ] - }, - "then": { - "en": "This charging station works", - "nl": "Dit oplaadpunt werkt" - } } ] }, @@ -666,6 +672,17 @@ "bicycle=" ] } + }, + { + "id": "questions" + }, + { + "id": "questions", + "group": "technical", + "render": { + "en": "

Technical questions

The questions below are very technical. Feel free to ignore them
{questions}", + "nl": "

Technische vragen

De vragen hieronder zijn erg technisch - sla deze over indien je hier geen tijd voor hebt
{questions}" + } } ], "mapRendering": [ @@ -788,7 +805,6 @@ } } ], - "wayHandling": 1, "filter": [ { "id": "vehicle-type", diff --git a/assets/layers/charging_station/csvToJson.ts b/assets/layers/charging_station/csvToJson.ts index 4b2490b90..2d4bfe552 100644 --- a/assets/layers/charging_station/csvToJson.ts +++ b/assets/layers/charging_station/csvToJson.ts @@ -115,7 +115,6 @@ function run(file, protojson) { } - overview_question_answers.push(json) // We add a second time for any amount to trigger a visualisation; but this is not an answer option @@ -152,6 +151,7 @@ function run(file, protojson) { technicalQuestions.push({ "id": "voltage-" + i, + group: "technical", question: { en: `What voltage do the plugs with ${descrWithImage_en} offer?`, nl: `Welke spanning levert de stekker van type ${descrWithImage_nl}` @@ -181,6 +181,7 @@ function run(file, protojson) { technicalQuestions.push({ "id": "current-" + i, + group:"technical", question: { en: `What current do the plugs with ${descrWithImage_en} offer?`, nl: `Welke stroom levert de stekker van type ${descrWithImage_nl}?`, @@ -210,6 +211,7 @@ function run(file, protojson) { technicalQuestions.push({ "id": "power-output-" + i, + group:"technical", question: { en: `What power output does a single plug of type ${descrWithImage_en} offer?`, nl: `Welk vermogen levert een enkele stekker van type ${descrWithImage_nl}?`, @@ -255,6 +257,7 @@ function run(file, protojson) { "mappings": overview_question_answers } questions.unshift(toggles) + questions.push(...technicalQuestions) const stringified = questions.map(q => JSON.stringify(q, null, " ")) let protoString = readFileSync(protojson, "utf8") diff --git a/assets/layers/charging_station/usb_port.svg b/assets/layers/charging_station/usb_port.svg index f813f20f0..f48417a79 100644 --- a/assets/layers/charging_station/usb_port.svg +++ b/assets/layers/charging_station/usb_port.svg @@ -1,74 +1,82 @@ image/svg+xml + + + + + + + + \ No newline at end of file + inkscape:connector-curvature="0" /> + \ No newline at end of file diff --git a/assets/layers/cluster_style/cluster_style.json b/assets/layers/cluster_style/cluster_style.json index caaa33559..081cbb5d3 100644 --- a/assets/layers/cluster_style/cluster_style.json +++ b/assets/layers/cluster_style/cluster_style.json @@ -1,78 +1,49 @@ { - "id": "cluster_style", - "description": "The style for the clustering in all themes. Enable `debug=true` to peak into clustered tiles", - "source": { - "osmTags": "tileId~*" - }, - "title": "Clustered data", - "tagRenderings": [ - "all_tags" - ], - "color": { - "render": "#3c3", - "mappings": [ - { - "if": "showCount>200", - "then": "#f33" - }, - { - "if": "showCount>100", - "then": "#c93" - }, - { - "if": "showCount>50", - "then": "#cc3" - } - ] - }, - "width": { - "render": "1" - }, - "label": { + "id": "cluster_style", + "description": "The style for the clustering in all themes. Enable `debug=true` to peak into clustered tiles", + "source": { + "osmTags": "tileId~*" + }, + "title": "Clustered data", + "tagRenderings": [ + "all_tags" + ], + "mapRendering": [ + { + "label": { "render": "
{showCount}
", "mappings": [ - { - "if": "showCount>1000", - "then": "
{kilocount}K
" - } + { + "if": "showCount>1000", + "then": "
{kilocount}K
" + } ] + }, + "location": [ + "point" + ] }, - "mapRendering": [ - { - "label": { - "render": "
{showCount}
", - "mappings": [ - { - "if": "showCount>1000", - "then": "
{kilocount}K
" - } - ] - }, - "location": [ - "point" - ] - }, - { - "color": { - "render": "#3c3", - "mappings": [ - { - "if": "showCount>200", - "then": "#f33" - }, - { - "if": "showCount>100", - "then": "#c93" - }, - { - "if": "showCount>50", - "then": "#cc3" - } - ] - }, - "width": { - "render": "1" - } - } - ] + { + "color": { + "render": "#3c3", + "mappings": [ + { + "if": "showCount>200", + "then": "#f33" + }, + { + "if": "showCount>100", + "then": "#c93" + }, + { + "if": "showCount>50", + "then": "#cc3" + } + ] + }, + "width": { + "render": "1" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/conflation/conflation.json b/assets/layers/conflation/conflation.json index 743e47cd6..75220077e 100644 --- a/assets/layers/conflation/conflation.json +++ b/assets/layers/conflation/conflation.json @@ -1,45 +1,45 @@ { - "id": "conflation", - "description": "This is a special meta_layer which render geometry-changes for inspection", - "minzoom": 1, - "source": { - "osmTags": { - "or": [ - "move=yes", - "newpoint=yes" - ] - } + "id": "conflation", + "description": "If the import-button is set to conflate two ways, a preview is shown. This layer defines how this preview is rendered. This layer cannot be included in a theme.", + "minzoom": 1, + "source": { + "osmTags": { + "or": [ + "move=yes", + "newpoint=yes" + ] + } + }, + "name": "Conflation", + "title": "Conflation", + "mapRendering": [ + { + "location": "point", + "icon": "addSmall:#000", + "iconSize": "10,10,center" }, - "name": "Conflation", - "title": "Conflation", - "mapRendering": [ - { - "location": "point", - "icon": "addSmall:#000", - "iconSize": "10,10,center" - }, - { - "location": "end", - "icon": "circle:#0f0", - "iconSize": "10,10,center" - }, - { - "location": "start", - "icon": "square:#f00", - "iconSize": "10,10,center" - }, - { - "width": "3", - "color": "#00f", - "dasharray": { - "render": "", - "mappings": [ - { - "if": "resulting-geometry=yes", - "then": "6 6" - } - ] - } - } - ] + { + "location": "end", + "icon": "circle:#0f0", + "iconSize": "10,10,center" + }, + { + "location": "start", + "icon": "square:#f00", + "iconSize": "10,10,center" + }, + { + "width": "3", + "color": "#00f", + "dasharray": { + "render": "", + "mappings": [ + { + "if": "resulting-geometry=yes", + "then": "6 6" + } + ] + } + } + ] } \ No newline at end of file diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json index ca4b7c18c..984545be6 100644 --- a/assets/layers/crossings/crossings.json +++ b/assets/layers/crossings/crossings.json @@ -1,393 +1,380 @@ { - "id": "crossings", - "name": { - "en": "Crossings", - "nl": "Oversteekplaatsen", - "de": "Kreuzungen" + "id": "crossings", + "name": { + "en": "Crossings", + "nl": "Oversteekplaatsen", + "de": "Kreuzungen" + }, + "description": { + "en": "Crossings for pedestrians and cyclists", + "nl": "Oversteekplaatsen voor voetgangers en fietsers", + "de": "Übergänge fÃŧr Fußgänger und Radfahrer" + }, + "source": { + "osmTags": { + "or": [ + "highway=traffic_signals", + "highway=crossing" + ] + } + }, + "minzoom": 17, + "title": { + "render": { + "en": "Crossing", + "nl": "Oversteekplaats", + "de": "Kreuzung" }, - "description": { - "en": "Crossings for pedestrians and cyclists", - "nl": "Oversteekplaatsen voor voetgangers en fietsers", - "de": "Übergänge fÃŧr Fußgänger und Radfahrer" - }, - "source": { - "osmTags": { - "or": [ - "highway=traffic_signals", - "highway=crossing" - ] + "mappings": [ + { + "if": "highway=traffic_signals", + "then": { + "en": "Traffic signal", + "nl": "Verkeerslicht", + "ru": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€", + "de": "Ampel" } + }, + { + "if": "crossing=traffic_signals", + "then": { + "en": "Crossing with traffic signals", + "nl": "Oversteektplaats met verkeerslichten", + "de": "Kreuzung mit Ampeln" + } + } + ] + }, + "presets": [ + { + "title": { + "en": "Crossing", + "nl": "Oversteekplaats", + "de": "Kreuzung" + }, + "tags": [ + "highway=crossing" + ], + "description": { + "en": "Crossing for pedestrians and/or cyclists", + "nl": "Oversteekplaats voor voetgangers en/of fietsers", + "de": "Kreuzung fÃŧr Fußgänger und/oder Radfahrer" + }, + "preciseInput": { + "preferredBackground": [ + "photo" + ], + "snapToLayer": "cycleways_and_roads", + "maxSnapDistance": 25 + } }, - "minzoom": 17, - "title": { - "render": { - "en": "Crossing", - "nl": "Oversteekplaats", - "de": "Kreuzung" + { + "title": { + "en": "Traffic signal", + "nl": "Verkeerslicht", + "ru": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€", + "de": "Ampel" + }, + "tags": [ + "highway=traffic_signals" + ], + "description": { + "en": "Traffic signal on a road", + "nl": "Verkeerslicht op een weg", + "de": "Ampel an einer Straße" + }, + "preciseInput": { + "preferredBackground": [ + "photo" + ], + "snapToLayer": "cycleways_and_roads", + "maxSnapDistance": 25 + } + } + ], + "tagRenderings": [ + { + "id": "crossing-type", + "question": { + "en": "What kind of crossing is this?", + "nl": "Wat voor oversteekplaats is dit?", + "de": "Was ist das fÃŧr eine Kreuzung?" + }, + "condition": "highway=crossing", + "mappings": [ + { + "if": "crossing=uncontrolled", + "then": { + "en": "Crossing, without traffic lights", + "nl": "Oversteekplaats, zonder verkeerslichten", + "de": "Kreuzungen ohne Ampeln" + } }, - "mappings": [ - { - "if": "highway=traffic_signals", - "then": { - "en": "Traffic signal", - "nl": "Verkeerslicht", - "ru": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€", - "de": "Ampel" - } - }, - { - "if": "crossing=traffic_signals", - "then": { - "en": "Crossing with traffic signals", - "nl": "Oversteektplaats met verkeerslichten", - "de": "Kreuzung mit Ampeln" - } - } - ] + { + "if": "crossing=traffic_signals", + "then": { + "en": "Crossing with traffic signals", + "nl": "Oversteekplaats met verkeerslichten", + "de": "Kreuzungen mit Ampeln" + } + }, + { + "if": "crossing=zebra", + "then": { + "en": "Zebra crossing", + "nl": "Zebrapad", + "de": "Zebrastreifen" + }, + "hideInAnswer": true + } + ] }, - "icon": { + { + "id": "crossing-is-zebra", + "question": { + "en": "Is this is a zebra crossing?", + "nl": "Is dit een zebrapad?", + "de": "Ist das ein Zebrastreifen?" + }, + "condition": "crossing=uncontrolled", + "mappings": [ + { + "if": "crossing_ref=zebra", + "then": { + "en": "This is a zebra crossing", + "nl": "Dit is een zebrapad", + "de": "Dies ist ein Zebrastreifen" + } + }, + { + "if": "crossing_ref=", + "then": { + "en": "This is not a zebra crossing", + "nl": "Dit is geen zebrapad", + "de": "Dies ist kein Zebrastreifen" + } + } + ] + }, + { + "id": "crossing-bicycle-allowed", + "question": { + "en": "Is this crossing also for bicycles?", + "nl": "Is deze oversteekplaats ook voor fietsers", + "de": "KÃļnnen Radfahrer diese Kreuzung nutzen?" + }, + "condition": "highway=crossing", + "mappings": [ + { + "if": "bicycle=yes", + "then": { + "en": "A cyclist can use this crossing", + "nl": "Een fietser kan deze oversteekplaats gebruiken", + "de": "Radfahrer kÃļnnen diese Kreuzung nutzen" + } + }, + { + "if": "bicycle=no", + "then": { + "en": "A cyclist can not use this crossing", + "nl": "Een fietser kan deze oversteekplaats niet gebruiken", + "de": "Radfahrer kÃļnnen diese Kreuzung nicht nutzen" + } + } + ] + }, + { + "id": "crossing-has-island", + "question": { + "en": "Does this crossing have an island in the middle?", + "nl": "Heeft deze oversteekplaats een verkeerseiland in het midden?", + "de": "Gibt es an diesem Übergang eine Verkehrsinsel?" + }, + "condition": "highway=crossing", + "mappings": [ + { + "if": "crossing:island=yes", + "then": { + "en": "This crossing has an island in the middle", + "nl": "Deze oversteekplaats heeft een verkeerseiland in het midden", + "de": "Der Übergang hat eine Verkehrsinsel" + } + }, + { + "if": "crossing:island=no", + "then": { + "en": "This crossing does not have an island in the middle", + "nl": "Deze oversteekplaats heeft geen verkeerseiland in het midden", + "de": "Diese Ampel hat eine Taste, um ein grÃŧnes Signal anzufordern" + } + } + ] + }, + { + "id": "crossing-tactile", + "question": { + "en": "Does this crossing have tactile paving?", + "nl": "Heeft deze oversteekplaats een geleidelijn?", + "de": "Gibt es an dieser Kreuzung ein Blindenleitsystem?" + }, + "condition": "highway=crossing", + "mappings": [ + { + "if": "tactile_paving=yes", + "then": { + "en": "This crossing has tactile paving", + "nl": "Deze oversteekplaats heeft een geleidelijn", + "de": "An dieser Kreuzung gibt es ein Blindenleitsystem" + } + }, + { + "if": "tactile_paving=no", + "then": { + "en": "This crossing does not have tactile paving", + "nl": "Deze oversteekplaats heeft geen geleidelijn", + "de": "Diese Kreuzung hat kein Blindenleitsystem" + } + }, + { + "if": "tactile_paving=incorrect", + "then": { + "en": "This crossing has tactile paving, but is not correct", + "nl": "Deze oversteekplaats heeft een geleidelijn, die incorrect is.", + "de": "Diese Kreuzung hat taktile Pflasterung, ist aber nicht korrekt" + }, + "hideInAnswer": true + } + ] + }, + { + "id": "crossing-button", + "question": { + "en": "Does this traffic light have a button to request green light?", + "nl": "Heeft dit verkeerslicht een knop voor groen licht?", + "de": "Hat diese Ampel eine Taste, um ein grÃŧnes Signal anzufordern?" + }, + "condition": { + "or": [ + "highway=traffic_signals", + "crossing=traffic_signals" + ] + }, + "mappings": [ + { + "if": "button_operated=yes", + "then": { + "en": "This traffic light has a button to request green light", + "nl": "Dit verkeerslicht heeft een knop voor groen licht", + "de": "Diese Ampel hat eine Taste, um ein grÃŧnes Signal anzufordern" + } + }, + { + "if": "button_operated=no", + "then": { + "en": "This traffic light does not have a button to request green light", + "nl": "Dit verkeerlicht heeft geen knop voor groen licht", + "de": "Diese Ampel hat keine Taste, um ein grÃŧnes Signal anzufordern." + } + } + ] + }, + { + "id": "crossing-right-turn-through-red", + "question": { + "en": "Can a cyclist turn right when the light is red?", + "nl": "Mag een fietser rechtsaf slaan als het licht rood is?", + "de": "Kann ein Radfahrer bei roter Ampel rechts abbiegen?" + }, + "condition": "highway=traffic_signals", + "mappings": [ + { + "if": "red_turn:right:bicycle=yes", + "then": { + "en": "A cyclist can turn right if the light is red ", + "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is ", + "de": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " + }, + "hideInAnswer": "_country!=be" + }, + { + "if": "red_turn:right:bicycle=yes", + "then": { + "en": "A cyclist can turn right if the light is red", + "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel rechts abbiegen" + }, + "hideInAnswer": "_country=be" + }, + { + "if": "red_turn:right:bicycle=no", + "then": { + "en": "A cyclist can not turn right if the light is red", + "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel nicht rechts abbiegen" + } + } + ] + }, + { + "id": "crossing-continue-through-red", + "question": { + "en": "Can a cyclist go straight on when the light is red?", + "nl": "Mag een fietser rechtdoor gaan als het licht rood is?", + "de": "Kann ein Radfahrer bei roter Ampel geradeaus fahren?" + }, + "condition": "highway=traffic_signals", + "mappings": [ + { + "if": "red_turn:straight:bicycle=yes", + "then": { + "en": "A cyclist can go straight on if the light is red ", + "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is ", + "de": "Ein Radfahrer kann bei roter Ampel geradeaus fahren " + }, + "hideInAnswer": "_country!=be" + }, + { + "if": "red_turn:straight:bicycle=yes", + "then": { + "en": "A cyclist can go straight on if the light is red", + "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel geradeaus fahren" + }, + "hideInAnswer": "_country=be" + }, + { + "if": "red_turn:straight:bicycle=no", + "then": { + "en": "A cyclist can not go straight on if the light is red", + "nl": "Een fietser mag niet rechtdoor gaan als het licht rood is", + "de": "Ein Radfahrer kann bei roter Ampel nicht geradeaus fahren" + } + } + ] + } + ], + "mapRendering": [ + { + "icon": { "render": "./assets/layers/crossings/pedestrian_crossing.svg", "mappings": [ - { - "if": { - "or": [ - "highway=traffic_signals", - "crossing=traffic_signals" - ] - }, - "then": "./assets/layers/crossings/traffic_lights.svg" - } + { + "if": { + "or": [ + "highway=traffic_signals", + "crossing=traffic_signals" + ] + }, + "then": "./assets/layers/crossings/traffic_lights.svg" + } ] + }, + "location": [ + "point" + ] }, - "width": "5", - "presets": [ - { - "title": { - "en": "Crossing", - "nl": "Oversteekplaats", - "de": "Kreuzung" - }, - "tags": [ - "highway=crossing" - ], - "description": { - "en": "Crossing for pedestrians and/or cyclists", - "nl": "Oversteekplaats voor voetgangers en/of fietsers", - "de": "Kreuzung fÃŧr Fußgänger und/oder Radfahrer" - }, - "preciseInput": { - "preferredBackground": [ - "photo" - ], - "snapToLayer": "cycleways_and_roads", - "maxSnapDistance": 25 - } - }, - { - "title": { - "en": "Traffic signal", - "nl": "Verkeerslicht", - "ru": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€", - "de": "Ampel" - }, - "tags": [ - "highway=traffic_signals" - ], - "description": { - "en": "Traffic signal on a road", - "nl": "Verkeerslicht op een weg", - "de": "Ampel an einer Straße" - }, - "preciseInput": { - "preferredBackground": [ - "photo" - ], - "snapToLayer": "cycleways_and_roads", - "maxSnapDistance": 25 - } - } - ], - "tagRenderings": [ - { - "id": "crossing-type", - "question": { - "en": "What kind of crossing is this?", - "nl": "Wat voor oversteekplaats is dit?", - "de": "Was ist das fÃŧr eine Kreuzung?" - }, - "condition": "highway=crossing", - "mappings": [ - { - "if": "crossing=uncontrolled", - "then": { - "en": "Crossing, without traffic lights", - "nl": "Oversteekplaats, zonder verkeerslichten", - "de": "Kreuzungen ohne Ampeln" - } - }, - { - "if": "crossing=traffic_signals", - "then": { - "en": "Crossing with traffic signals", - "nl": "Oversteekplaats met verkeerslichten", - "de": "Kreuzungen mit Ampeln" - } - }, - { - "if": "crossing=zebra", - "then": { - "en": "Zebra crossing", - "nl": "Zebrapad", - "de": "Zebrastreifen" - }, - "hideInAnswer": true - } - ] - }, - { - "id": "crossing-is-zebra", - "question": { - "en": "Is this is a zebra crossing?", - "nl": "Is dit een zebrapad?", - "de": "Ist das ein Zebrastreifen?" - }, - "condition": "crossing=uncontrolled", - "mappings": [ - { - "if": "crossing_ref=zebra", - "then": { - "en": "This is a zebra crossing", - "nl": "Dit is een zebrapad", - "de": "Dies ist ein Zebrastreifen" - } - }, - { - "if": "crossing_ref=", - "then": { - "en": "This is not a zebra crossing", - "nl": "Dit is geen zebrapad", - "de": "Dies ist kein Zebrastreifen" - } - } - ] - }, - { - "id": "crossing-bicycle-allowed", - "question": { - "en": "Is this crossing also for bicycles?", - "nl": "Is deze oversteekplaats ook voor fietsers", - "de": "KÃļnnen Radfahrer diese Kreuzung nutzen?" - }, - "condition": "highway=crossing", - "mappings": [ - { - "if": "bicycle=yes", - "then": { - "en": "A cyclist can use this crossing", - "nl": "Een fietser kan deze oversteekplaats gebruiken", - "de": "Radfahrer kÃļnnen diese Kreuzung nutzen" - } - }, - { - "if": "bicycle=no", - "then": { - "en": "A cyclist can not use this crossing", - "nl": "Een fietser kan deze oversteekplaats niet gebruiken", - "de": "Radfahrer kÃļnnen diese Kreuzung nicht nutzen" - } - } - ] - }, - { - "id": "crossing-has-island", - "question": { - "en": "Does this crossing have an island in the middle?", - "nl": "Heeft deze oversteekplaats een verkeerseiland in het midden?", - "de": "Gibt es an diesem Übergang eine Verkehrsinsel?" - }, - "condition": "highway=crossing", - "mappings": [ - { - "if": "crossing:island=yes", - "then": { - "en": "This crossing has an island in the middle", - "nl": "Deze oversteekplaats heeft een verkeerseiland in het midden", - "de": "Der Übergang hat eine Verkehrsinsel" - } - }, - { - "if": "crossing:island=no", - "then": { - "en": "This crossing does not have an island in the middle", - "nl": "Deze oversteekplaats heeft geen verkeerseiland in het midden", - "de": "Diese Ampel hat eine Taste, um ein grÃŧnes Signal anzufordern" - } - } - ] - }, - { - "id": "crossing-tactile", - "question": { - "en": "Does this crossing have tactile paving?", - "nl": "Heeft deze oversteekplaats een geleidelijn?", - "de": "Gibt es an dieser Kreuzung ein Blindenleitsystem?" - }, - "condition": "highway=crossing", - "mappings": [ - { - "if": "tactile_paving=yes", - "then": { - "en": "This crossing has tactile paving", - "nl": "Deze oversteekplaats heeft een geleidelijn", - "de": "An dieser Kreuzung gibt es ein Blindenleitsystem" - } - }, - { - "if": "tactile_paving=no", - "then": { - "en": "This crossing does not have tactile paving", - "nl": "Deze oversteekplaats heeft geen geleidelijn", - "de": "Diese Kreuzung hat kein Blindenleitsystem" - } - }, - { - "if": "tactile_paving=incorrect", - "then": { - "en": "This crossing has tactile paving, but is not correct", - "nl": "Deze oversteekplaats heeft een geleidelijn, die incorrect is." - }, - "hideInAnswer": true - } - ] - }, - { - "id": "crossing-button", - "question": { - "en": "Does this traffic light have a button to request green light?", - "nl": "Heeft dit verkeerslicht een knop voor groen licht?", - "de": "Hat diese Ampel eine Taste, um ein grÃŧnes Signal anzufordern?" - }, - "condition": { - "or": [ - "highway=traffic_signals", - "crossing=traffic_signals" - ] - }, - "mappings": [ - { - "if": "button_operated=yes", - "then": { - "en": "This traffic light has a button to request green light", - "nl": "Dit verkeerslicht heeft een knop voor groen licht" - } - }, - { - "if": "button_operated=no", - "then": { - "en": "This traffic light does not have a button to request green light", - "nl": "Dit verkeerlicht heeft geen knop voor groen licht", - "de": "Diese Ampel hat keine Taste, um ein grÃŧnes Signal anzufordern." - } - } - ] - }, - { - "id": "crossing-right-turn-through-red", - "question": { - "en": "Can a cyclist turn right when the light is red?", - "nl": "Mag een fietser rechtsaf slaan als het licht rood is?", - "de": "Kann ein Radfahrer bei roter Ampel rechts abbiegen?" - }, - "condition": "highway=traffic_signals", - "mappings": [ - { - "if": "red_turn:right:bicycle=yes", - "then": { - "en": "A cyclist can turn right if the light is red ", - "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is ", - "de": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " - }, - "hideInAnswer": "_country!=be" - }, - { - "if": "red_turn:right:bicycle=yes", - "then": { - "en": "A cyclist can turn right if the light is red", - "nl": "Een fietser mag wel rechtsaf slaan als het licht rood is", - "de": "Ein Radfahrer kann bei roter Ampel rechts abbiegen" - }, - "hideInAnswer": "_country=be" - }, - { - "if": "red_turn:right:bicycle=no", - "then": { - "en": "A cyclist can not turn right if the light is red", - "nl": "Een fietser mag niet rechtsaf slaan als het licht rood is", - "de": "Ein Radfahrer kann bei roter Ampel nicht rechts abbiegen" - } - } - ] - }, - { - "id": "crossing-continue-through-red", - "question": { - "en": "Can a cyclist go straight on when the light is red?", - "nl": "Mag een fietser rechtdoor gaan als het licht rood is?", - "de": "Kann ein Radfahrer bei roter Ampel geradeaus fahren?" - }, - "condition": "highway=traffic_signals", - "mappings": [ - { - "if": "red_turn:straight:bicycle=yes", - "then": { - "en": "A cyclist can go straight on if the light is red ", - "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is ", - "de": "Ein Radfahrer kann bei roter Ampel geradeaus fahren " - }, - "hideInAnswer": "_country!=be" - }, - { - "if": "red_turn:straight:bicycle=yes", - "then": { - "en": "A cyclist can go straight on if the light is red", - "nl": "Een fietser mag wel rechtdoor gaan als het licht rood is", - "de": "Ein Radfahrer kann bei roter Ampel geradeaus fahren" - }, - "hideInAnswer": "_country=be" - }, - { - "if": "red_turn:straight:bicycle=no", - "then": { - "en": "A cyclist can not go straight on if the light is red", - "nl": "Een fietser mag niet rechtdoor gaan als het licht rood is", - "de": "Ein Radfahrer kann bei roter Ampel nicht geradeaus fahren" - } - } - ] - } - ], - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/crossings/pedestrian_crossing.svg", - "mappings": [ - { - "if": { - "or": [ - "highway=traffic_signals", - "crossing=traffic_signals" - ] - }, - "then": "./assets/layers/crossings/traffic_lights.svg" - } - ] - }, - "location": [ - "point" - ] - }, - { - "width": "5" - } - ] + { + "width": "5" + } + ] } \ No newline at end of file diff --git a/assets/layers/cycleways_and_roads/cycleways_and_roads.json b/assets/layers/cycleways_and_roads/cycleways_and_roads.json index f5f64d797..82287015b 100644 --- a/assets/layers/cycleways_and_roads/cycleways_and_roads.json +++ b/assets/layers/cycleways_and_roads/cycleways_and_roads.json @@ -1,1362 +1,1334 @@ { - "id": "cycleways_and_roads", - "name": { - "en": "Cycleways and roads", - "nl": "Fietspaden, straten en wegen", - "de": "Radwege und Straßen" - }, - "minzoom": 16, - "source": { - "osmTags": { - "or": [ - "highway=cycleway", - "cycleway=lane", - "cycleway=shared_lane", - "cycleway=track", - "cyclestreet=yes", - "highway=residential", - "highway=tertiary", - "highway=unclassified", - "highway=primary", - "highway=secondary", - { - "and": [ - "highway=path", - "bicycle=designated" - ] - } - ] + "id": "cycleways_and_roads", + "name": { + "en": "Cycleways and roads", + "nl": "Fietspaden, straten en wegen", + "de": "Radwege und Straßen" + }, + "minzoom": 16, + "source": { + "osmTags": { + "or": [ + "highway=cycleway", + "cycleway=lane", + "cycleway=shared_lane", + "cycleway=track", + "cyclestreet=yes", + "highway=residential", + "highway=tertiary", + "highway=unclassified", + "highway=primary", + "highway=secondary", + { + "and": [ + "highway=path", + "bicycle=designated" + ] } + ] + } + }, + "title": { + "render": { + "en": "Cycleways", + "nl": "Fietspaden", + "de": "Radwege", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đĩ Đ´ĐžŅ€ĐžĐļĐēи" }, - "title": { - "render": { - "en": "Cycleways", - "nl": "Fietspaden", - "de": "Radwege", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đĩ Đ´ĐžŅ€ĐžĐļĐēи" + "mappings": [ + { + "if": { + "or": [ + "highway=cycleway", + "highway=path" + ] }, - "mappings": [ - { - "if": { - "or": [ - "highway=cycleway", - "highway=path" - ] - }, - "then": { - "nl": "Fietsweg", - "en": "Cycleway", - "de": "Radweg", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ Đ´ĐžŅ€ĐžĐļĐēĐ°" - } - }, - { - "if": "cycleway=shared_lane", - "then": { - "nl": "Fietssuggestiestrook", - "en": "Shared lane" - } - }, - { - "if": "cycleway=lane", - "then": { - "nl": "Fietsstrook", - "en": "Bike lane", - "de": "Fahrradspur" - } - }, - { - "if": "cycleway=track", - "then": { - "en": "Cycleway next to the road", - "nl": "Fietsweg naast de weg", - "de": "Radweg neben der Straße" - } - }, - { - "if": "cyclestreet=yes", - "then": { - "nl": "Fietsstraat", - "en": "Cyclestreet", - "de": "Fahrradstraße" - } - } + "then": { + "nl": "Fietsweg", + "en": "Cycleway", + "de": "Radweg", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ Đ´ĐžŅ€ĐžĐļĐēĐ°" + } + }, + { + "if": "cycleway=shared_lane", + "then": { + "nl": "Fietssuggestiestrook", + "en": "Shared lane", + "de": "Gemeinsame Fahrspur" + } + }, + { + "if": "cycleway=lane", + "then": { + "nl": "Fietsstrook", + "en": "Bike lane", + "de": "Fahrradspur" + } + }, + { + "if": "cycleway=track", + "then": { + "en": "Cycleway next to the road", + "nl": "Fietsweg naast de weg", + "de": "Radweg neben der Straße" + } + }, + { + "if": "cyclestreet=yes", + "then": { + "nl": "Fietsstraat", + "en": "Cyclestreet", + "de": "Fahrradstraße" + } + } + ] + }, + "tagRenderings": [ + { + "question": { + "en": "What kind of cycleway is here?", + "nl": "Wat voor fietspad is hier?", + "de": "Was fÃŧr ein Radweg ist hier?" + }, + "condition": { + "and": [ + "highway!=cycleway", + "highway!=path" ] - }, - "tagRenderings": [ + }, + "mappings": [ { - "question": { - "en": "What kind of cycleway is here?", - "nl": "Wat voor fietspad is hier?", - "de": "Was fÃŧr ein Radweg ist hier?" - }, - "condition": { - "and": [ - "highway!=cycleway", - "highway!=path" - ] - }, - "mappings": [ - { - "if": "cycleway=shared_lane", - "then": { - "en": "There is a shared lane", - "nl": "Er is een fietssuggestiestrook", - "de": "Es gibt eine geteilte Fahrspur" - } - }, - { - "if": "cycleway=lane", - "then": { - "en": "There is a lane next to the road (separated with paint)", - "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)", - "de": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" - } - }, - { - "if": "cycleway=track", - "then": { - "en": "There is a track, but no cycleway drawn separately from this road on the map.", - "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg.", - "de": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." - } - }, - { - "if": "cycleway=separate", - "then": { - "en": "There is a separately drawn cycleway", - "nl": "Er is een apart getekend fietspad.", - "de": "Hier ist ein getrennter Radweg vorhanden" - } - }, - { - "if": "cycleway=no", - "then": { - "en": "There is no cycleway", - "nl": "Er is geen fietspad aanwezig", - "de": "Es gibt keinen Radweg" - }, - "hideInAnswer": "cycleway=opposite" - }, - { - "if": "cycleway=no", - "then": { - "en": "There is no cycleway", - "nl": "Er is geen fietspad aanwezig", - "de": "Es gibt keinen Radweg" - }, - "hideInAnswer": "cycleway!=opposite", - "addExtraTags": [ - "oneway:bicycle=no", - "fixme=Changed from cycleway=opposite" - ] - } - ], - "id": "Cycleway type for a road" + "if": "cycleway=shared_lane", + "then": { + "en": "There is a shared lane", + "nl": "Er is een fietssuggestiestrook", + "de": "Es gibt eine geteilte Fahrspur" + } }, { - "question": { - "en": "Is this street lit?", - "nl": "Is deze weg verlicht?", - "de": "Ist diese Straße beleuchtet?" - }, - "mappings": [ - { - "if": "lit=yes", - "then": { - "en": "This street is lit", - "nl": "Deze weg is verlicht", - "de": "Diese Straße ist beleuchtet" - } - }, - { - "if": "lit=no", - "then": { - "en": "This road is not lit", - "nl": "Deze weg is niet verlicht", - "de": "Diese Straße ist nicht beleuchtet" - } - }, - { - "if": "lit=sunset-sunrise", - "then": { - "en": "This road is lit at night", - "nl": "Deze weg is 's nachts verlicht", - "de": "Diese Straße ist nachts beleuchtet" - }, - "hideInAnswer": true - }, - { - "if": "lit=24/7", - "then": { - "en": "This road is lit 24/7", - "nl": "Deze weg is 24/7 verlicht", - "de": "Diese Straße ist durchgehend beleuchtet" - } - } - ], - "id": "is lit?" + "if": "cycleway=lane", + "then": { + "en": "There is a lane next to the road (separated with paint)", + "nl": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)", + "de": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" + } }, { - "question": { - "en": "Is this a cyclestreet?", - "nl": "Is dit een fietsstraat?", - "de": "Ist das eine Fahrradstraße?" - }, - "condition": { - "and": [ - "highway!=cycleway", - "highway!=path" - ] - }, - "mappings": [ - { - "if": "cyclestreet=yes", - "then": { - "en": "This is a cyclestreet, and a 30km/h zone.", - "nl": "Dit is een fietsstraat, en dus een 30km/h zone", - "de": "Dies ist eine Fahrradstraße in einer 30km/h Zone." - }, - "addExtraTags": [ - "overtaking:motor_vehicle=no", - "maxspeed=30" - ], - "hideInAnswer": "_country!=be" - }, - { - "if": "cyclestreet=yes", - "then": { - "en": "This is a cyclestreet", - "nl": "Dit is een fietsstraat", - "de": "Dies ist eine Fahrradstraße" - }, - "hideInAnswer": "_country=be" - }, - { - "if": "cyclestreet=", - "then": { - "en": "This is not a cyclestreet.", - "nl": "Dit is geen fietsstraat", - "de": "Dies ist keine Fahrradstraße." - }, - "addExtraTags": [ - "overtaking:motor_vehicle=" - ] - } - ], - "id": "Is this a cyclestreet? (For a road)" + "if": "cycleway=track", + "then": { + "en": "There is a track, but no cycleway drawn separately from this road on the map.", + "nl": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg.", + "de": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." + } }, { - "render": { - "en": "The maximum speed on this road is {maxspeed} km/h", - "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u", - "de": "Die HÃļchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h" - }, - "freeform": { - "key": "maxspeed", - "type": "nat" - }, - "condition": { - "and": [ - "highway!=cycleway", - "highway!=path" - ] - }, - "mappings": [ - { - "if": "maxspeed=20", - "then": { - "en": "The maximum speed is 20 km/h", - "nl": "De maximumsnelheid is 20 km/u", - "de": "Die HÃļchstgeschwindigkeit ist 20 km/h" - } - }, - { - "if": "maxspeed=30", - "then": { - "en": "The maximum speed is 30 km/h", - "nl": "De maximumsnelheid is 30 km/u", - "de": "Die HÃļchstgeschwindigkeit ist 30 km/h" - } - }, - { - "if": "maxspeed=50", - "then": { - "en": "The maximum speed is 50 km/h", - "nl": "De maximumsnelheid is 50 km/u", - "de": "Die HÃļchstgeschwindigkeit ist 50 km/h" - } - }, - { - "if": "maxspeed=70", - "then": { - "en": "The maximum speed is 70 km/h", - "nl": "De maximumsnelheid is 70 km/u", - "de": "Die HÃļchstgeschwindigkeit ist 70 km/h" - } - }, - { - "if": "maxspeed=90", - "then": { - "en": "The maximum speed is 90 km/h", - "nl": "De maximumsnelheid is 90 km/u", - "de": "Die HÃļchstgeschwindigkeit ist 90 km/h" - } - } - ], - "question": { - "en": "What is the maximum speed in this street?", - "nl": "Wat is de maximumsnelheid in deze straat?", - "de": "Was ist die HÃļchstgeschwindigkeit auf dieser Straße?" - }, - "id": "Maxspeed (for road)" + "if": "cycleway=separate", + "then": { + "en": "There is a separately drawn cycleway", + "nl": "Er is een apart getekend fietspad.", + "de": "Hier ist ein getrennter Radweg vorhanden" + } }, { - "render": { - "en": "This cyleway is made of {cycleway:surface}", - "nl": "Dit fietspad is gemaakt van {cycleway:surface}", - "de": "Der Radweg ist aus {cycleway:surface}" - }, - "freeform": { - "key": "cycleway:surface" - }, - "condition": { - "or": [ - "cycleway=shared_lane", - "cycleway=lane", - "cycleway=track" - ] - }, - "mappings": [ - { - "if": "cycleway:surface=unpaved", - "then": { - "en": "This cycleway is unpaved", - "nl": "Dit fietspad is onverhard", - "de": "Dieser Radweg hat keinen festen Belag" - }, - "hideInAnswer": true - }, - { - "if": "cycleway:surface=paved", - "then": { - "en": "This cycleway is paved", - "nl": "Dit fietspad is geplaveid", - "de": "Dieser Radweg hat einen festen Belag" - }, - "hideInAnswer": true - }, - { - "if": "cycleway:surface=asphalt", - "then": { - "en": "This cycleway is made of asphalt", - "nl": "Dit fietspad is gemaakt van asfalt", - "de": "Der Radweg ist aus Asphalt" - } - }, - { - "if": "cycleway:surface=paving_stones", - "then": { - "en": "This cycleway is made of smooth paving stones", - "nl": "Dit fietspad is gemaakt van straatstenen", - "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" - } - }, - { - "if": "cycleway:surface=concrete", - "then": { - "en": "This cycleway is made of concrete", - "nl": "Dit fietspad is gemaakt van beton", - "de": "Der Radweg ist aus Beton" - } - }, - { - "if": "cycleway:surface=cobblestone", - "then": { - "en": "This cycleway is made of cobblestone (unhewn or sett)", - "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", - "de": "Dieser Radweg besteht aus Kopfsteinpflaster" - }, - "hideInAnswer": true - }, - { - "if": "cycleway:surface=unhewn_cobblestone", - "then": { - "en": "This cycleway is made of raw, natural cobblestone", - "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", - "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" - } - }, - { - "if": "cycleway:surface=sett", - "then": { - "en": "This cycleway is made of flat, square cobblestone", - "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", - "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" - } - }, - { - "if": "cycleway:surface=wood", - "then": { - "en": "This cycleway is made of wood", - "nl": "Dit fietspad is gemaakt van hout", - "de": "Der Radweg ist aus Holz" - } - }, - { - "if": "cycleway:surface=gravel", - "then": { - "en": "This cycleway is made of gravel", - "nl": "Dit fietspad is gemaakt van grind", - "de": "Der Radweg ist aus Schotter" - } - }, - { - "if": "cycleway:surface=fine_gravel", - "then": { - "en": "This cycleway is made of fine gravel", - "nl": "Dit fietspad is gemaakt van fijn grind", - "de": "Dieser Radweg besteht aus feinem Schotter" - } - }, - { - "if": "cycleway:surface=pebblestone", - "then": { - "en": "This cycleway is made of pebblestone", - "nl": "Dit fietspad is gemaakt van kiezelsteentjes", - "de": "Der Radweg ist aus Kies" - } - }, - { - "if": "cycleway:surface=ground", - "then": { - "en": "This cycleway is made from raw ground", - "nl": "Dit fietspad is gemaakt van aarde", - "de": "Dieser Radweg besteht aus Rohboden" - } - } - ], - "question": { - "en": "What is the surface of the cycleway made from?", - "nl": "Waaruit is het oppervlak van het fietspad van gemaakt?", - "de": "Was ist der Belag dieses Radwegs?" - }, - "id": "Cycleway:surface" + "if": "cycleway=no", + "then": { + "en": "There is no cycleway", + "nl": "Er is geen fietspad aanwezig", + "de": "Es gibt keinen Radweg" + }, + "hideInAnswer": "cycleway=opposite" }, { - "question": { - "en": "What is the smoothness of this cycleway?", - "nl": "Wat is de kwaliteit van dit fietspad?", - "de": "Wie eben ist dieser Radweg?" - }, - "condition": { - "or": [ - "cycleway=shared_lane", - "cycleway=lane", - "cycleway=track" - ] - }, - "mappings": [ - { - "if": "cycleway:smoothness=excellent", - "then": { - "en": "Usable for thin rollers: rollerblade, skateboard", - "nl": "Geschikt voor fijne rollers: rollerblade, skateboard", - "de": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard" - } - }, - { - "if": "cycleway:smoothness=good", - "then": { - "en": "Usable for thin wheels: racing bike", - "nl": "Geschikt voor fijne wielen: racefiets", - "de": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad" - } - }, - { - "if": "cycleway:smoothness=intermediate", - "then": { - "en": "Usable for normal wheels: city bike, wheelchair, scooter", - "nl": "Geschikt voor normale wielen: stadsfiets, rolstoel, scooter", - "de": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter" - } - }, - { - "if": "cycleway:smoothness=bad", - "then": { - "en": "Usable for robust wheels: trekking bike, car, rickshaw", - "nl": "Geschikt voor brede wielen: trekfiets, auto, rickshaw", - "de": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha" - } - }, - { - "if": "cycleway:smoothness=very_bad", - "then": { - "en": "Usable for vehicles with high clearance: light duty off-road vehicle", - "nl": "Geschikt voor voertuigen met hoge banden: lichte terreinwagen", - "de": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" - } - }, - { - "if": "cycleway:smoothness=horrible", - "then": { - "en": "Usable for off-road vehicles: heavy duty off-road vehicle", - "nl": "Geschikt voor terreinwagens: zware terreinwagen", - "de": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen" - } - }, - { - "if": "cycleway:smoothness=very_horrible", - "then": { - "en": "Usable for specialized off-road vehicles: tractor, ATV", - "nl": "Geschikt voor gespecialiseerde terreinwagens: tractor, alleterreinwagen", - "de": "Geeignet fÃŧr Geländefahrzeuge: Traktor, ATV" - } - }, - { - "if": "cycleway:smoothness=impassable", - "then": { - "en": "Impassable / No wheeled vehicle", - "nl": "Niet geschikt voor voertuigen met wielen", - "de": "Unpassierbar / Keine bereiften Fahrzeuge" - } - } - ], - "id": "Cycleway:smoothness" - }, - { - "render": { - "en": "This road is made of {surface}", - "nl": "Deze weg is gemaakt van {surface}", - "de": "Der Radweg ist aus {surface}" - }, - "freeform": { - "key": "surface" - }, - "mappings": [ - { - "if": "surface=unpaved", - "then": { - "en": "This cycleway is unhardened", - "nl": "Dit fietspad is onverhard", - "de": "Dieser Radweg ist nicht befestigt" - }, - "hideInAnswer": true - }, - { - "if": "surface=paved", - "then": { - "en": "This cycleway is paved", - "nl": "Dit fietspad is geplaveid", - "de": "Dieser Radweg hat einen festen Belag" - }, - "hideInAnswer": true - }, - { - "if": "surface=asphalt", - "then": { - "en": "This cycleway is made of asphalt", - "nl": "Dit fietspad is gemaakt van asfalt", - "de": "Der Radweg ist aus Asphalt" - } - }, - { - "if": "surface=paving_stones", - "then": { - "en": "This cycleway is made of smooth paving stones", - "nl": "Dit fietspad is gemaakt van straatstenen", - "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" - } - }, - { - "if": "surface=concrete", - "then": { - "en": "This cycleway is made of concrete", - "nl": "Dit fietspad is gemaakt van beton", - "de": "Der Radweg ist aus Beton" - } - }, - { - "if": "surface=cobblestone", - "then": { - "en": "This cycleway is made of cobblestone (unhewn or sett)", - "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", - "de": "Dieser Radweg besteht aus Kopfsteinpflaster" - }, - "hideInAnswer": true - }, - { - "if": "surface=unhewn_cobblestone", - "then": { - "en": "This cycleway is made of raw, natural cobblestone", - "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", - "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" - } - }, - { - "if": "surface=sett", - "then": { - "en": "This cycleway is made of flat, square cobblestone", - "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", - "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" - } - }, - { - "if": "surface=wood", - "then": { - "en": "This cycleway is made of wood", - "nl": "Dit fietspad is gemaakt van hout", - "de": "Der Radweg ist aus Holz" - } - }, - { - "if": "surface=gravel", - "then": { - "en": "This cycleway is made of gravel", - "nl": "Dit fietspad is gemaakt van grind", - "de": "Der Radweg ist aus Schotter" - } - }, - { - "if": "surface=fine_gravel", - "then": { - "en": "This cycleway is made of fine gravel", - "nl": "Dit fietspad is gemaakt van fijn grind", - "de": "Dieser Radweg besteht aus feinem Schotter" - } - }, - { - "if": "surface=pebblestone", - "then": { - "en": "This cycleway is made of pebblestone", - "nl": "Dit fietspad is gemaakt van kiezelsteentjes", - "de": "Der Radweg ist aus Kies" - } - }, - { - "if": "surface=ground", - "then": { - "en": "This cycleway is made from raw ground", - "nl": "Dit fietspad is gemaakt van aarde", - "de": "Dieser Radweg besteht aus Rohboden" - } - } - ], - "question": { - "en": "What is the surface of the street made from?", - "nl": "Waaruit is het oppervlak van de straat gemaakt?", - "de": "Was ist der Belag dieser Straße?" - }, - "id": "Surface of the road" - }, - { - "question": { - "en": "What is the smoothness of this street?", - "nl": "Wat is de kwaliteit van deze straat?", - "de": "Wie eben ist diese Straße?" - }, - "condition": { - "or": [ - "cycleway=no", - "highway=cycleway" - ] - }, - "mappings": [ - { - "if": "smoothness=excellent", - "then": { - "en": "Usable for thin rollers: rollerblade, skateboard", - "de": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard" - } - }, - { - "if": "smoothness=good", - "then": { - "en": "Usable for thin wheels: racing bike", - "de": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad" - } - }, - { - "if": "smoothness=intermediate", - "then": { - "en": "Usable for normal wheels: city bike, wheelchair, scooter", - "de": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter" - } - }, - { - "if": "smoothness=bad", - "then": { - "en": "Usable for robust wheels: trekking bike, car, rickshaw", - "de": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha" - } - }, - { - "if": "smoothness=very_bad", - "then": { - "en": "Usable for vehicles with high clearance: light duty off-road vehicle", - "de": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" - } - }, - { - "if": "smoothness=horrible", - "then": { - "en": "Usable for off-road vehicles: heavy duty off-road vehicle", - "de": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen" - } - }, - { - "if": "smoothness=very_horrible", - "then": { - "en": "Usable for specialized off-road vehicles: tractor, ATV", - "de": "Geeignet fÃŧr spezielle Geländewagen: Traktor, ATV" - } - }, - { - "if": "smoothness=impassable", - "then": { - "en": "Impassable / No wheeled vehicle", - "de": "Unpassierbar / Keine bereiften Fahrzeuge" - } - } - ], - "id": "Surface of the street" - }, - { - "condition": { - "and": [ - "highway!=cycleway", - "highway!=path" - ] - }, - "render": { - "en": "The carriage width of this road is {width:carriageway}m", - "nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m" - }, - "freeform": { - "key": "width:carriageway", - "type": "length", - "helperArgs": [ - "20", - "map" - ] - }, - "question": { - "en": "What is the carriage width of this road (in meters)?
This is measured curb to curb and thus includes the width of parallell parking lanes", - "nl": "Hoe breed is de rijbaan in deze straat (in meters)?
Dit is
Meet dit van stoepsteen tot stoepsteen, dus inclusief een parallelle parkeerstrook" - }, - "id": "width:carriageway" - }, - { - "id": "cycleway-lane-track-traffic-signs", - "question": { - "en": "What traffic sign does this cycleway have?", - "nl": "Welk verkeersbord heeft dit fietspad?", - "de": "Welches Verkehrszeichen hat dieser Radweg?" - }, - "condition": { - "or": [ - "cycleway=lane", - "cycleway=track" - ] - }, - "mappings": [ - { - "if": "cycleway:traffic_sign=BE:D7", - "then": { - "en": "Compulsory cycleway ", - "nl": "Verplicht fietspad ", - "de": "Vorgeschriebener Radweg " - }, - "hideInAnswer": "_country!=be" - }, - { - "if": "cycleway:traffic_sign~BE:D7;.*", - "then": { - "en": "Compulsory cycleway (with supplementary sign)
", - "nl": "Verplicht fietspad (met onderbord)
", - "de": "Vorgeschriebener Radweg (mit Zusatzschild)
" - }, - "hideInAnswer": true - }, - { - "if": "cycleway:traffic_sign=BE:D9", - "then": { - "en": "Segregated foot/cycleway ", - "nl": "Afgescheiden voet-/fietspad ", - "de": "Getrennter Fuß-/Radweg " - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:foot=designated", - "cycleway:segregated=yes" - ] - }, - { - "if": "cycleway:traffic_sign=BE:D10", - "then": { - "en": "Unsegregated foot/cycleway ", - "nl": "Gedeeld voet-/fietspad ", - "de": "Gemeinsamer Fuß-/Radweg " - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:foot=designated", - "cycleway:segregated=no" - ] - }, - { - "if": "cycleway:traffic_sign=none", - "then": { - "en": "No traffic sign present", - "nl": "Geen verkeersbord aanwezig", - "de": "Kein Verkehrsschild vorhanden" - } - } - ] - }, - { - "id": "cycleway-traffic-signs", - "question": { - "en": "What traffic sign does this cycleway have?", - "nl": "Welk verkeersbord heeft dit fietspad?", - "de": "Welches Verkehrszeichen hat dieser Radweg?" - }, - "condition": { - "or": [ - "highway=cycleway", - "highway=path" - ] - }, - "mappings": [ - { - "if": "traffic_sign=BE:D7", - "then": { - "en": "Compulsory cycleway ", - "nl": "Verplicht fietspad ", - "de": "Vorgeschriebener Radweg " - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "bicycle=designated", - "mofa=designated", - "moped=yes", - "speed_pedelec=yes" - ] - }, - { - "if": "traffic_sign~BE:D7;.*", - "then": { - "en": "Compulsory cycleway (with supplementary sign)
", - "nl": "Verplicht fietspad (met onderbord)
", - "de": "Vorgeschriebener Radweg (mit Zusatzschild)
" - }, - "hideInAnswer": true - }, - { - "if": "traffic_sign=BE:D9", - "then": { - "en": "Segregated foot/cycleway ", - "nl": "Afgescheiden voet-/fietspad ", - "de": "Getrennter Fuß-/Radweg " - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "foot=designated", - "bicycle=designated", - "mofa=designated", - "moped=no", - "speed_pedelec=no", - "segregated=yes" - ] - }, - { - "if": "traffic_sign=BE:D10", - "then": { - "en": "Unsegregated foot/cycleway ", - "nl": "Gedeeld voet-/fietspad ", - "de": "Gemeinsamer Fuß-/Radweg " - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "foot=designated", - "bicycle=designated", - "mofa=designated", - "moped=no", - "speed_pedelec=no", - "segregated=no" - ] - }, - { - "if": "traffic_sign=none", - "then": { - "en": "No traffic sign present", - "nl": "Geen verkeersbord aanwezig", - "de": "Kein Verkehrsschild vorhanden" - } - } - ] - }, - { - "id": "cycleway-traffic-signs-supplementary", - "question": { - "en": "Does the traffic sign D7 () have a supplementary sign?", - "nl": "Heeft het verkeersbord D7 () een onderbord?" - }, - "condition": { - "or": [ - "cycleway:traffic_sign=BE:D7", - "cycleway:traffic_sign~BE:D7;.*" - ] - }, - "mappings": [ - { - "if": "cycleway:traffic_sign=BE:D7;BE:M6", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:moped=designated" - ] - }, - { - "if": "cycleway:traffic_sign=BE:D7;BE:M13", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:speed_pedelec=designated" - ] - }, - { - "if": "cycleway:traffic_sign=BE:D7;BE:M14", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:moped=designated", - "cycleway:speed_pedelec=designated" - ] - }, - { - "if": "cycleway:traffic_sign=BE:D7;BE:M7", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:moped=no" - ] - }, - { - "if": "cycleway:traffic_sign=BE:D7;BE:M15", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:speed_pedelec=no" - ] - }, - { - "if": "cycleway:traffic_sign=BE:D7;BE:M16", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "cycleway:moped=designated", - "cycleway:speed_pedelec=no" - ] - }, - { - "if": "cycleway:traffic_sign:supplementary=none", - "then": { - "en": "No supplementary traffic sign present", - "nl": "Geen onderbord aanwezig", - "de": "Kein zusätzliches Verkehrszeichen vorhanden" - } - } - ] - }, - { - "id": "cycleway-traffic-signs-D7-supplementary", - "question": { - "en": "Does the traffic sign D7 () have a supplementary sign?", - "nl": "Heeft het verkeersbord D7 () een onderbord?" - }, - "condition": { - "or": [ - "traffic_sign=BE:D7", - "traffic_sign~BE:D7;.*" - ] - }, - "mappings": [ - { - "if": "traffic_sign=BE:D7;BE:M6", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "moped=designated" - ] - }, - { - "if": "traffic_sign=BE:D7;BE:M13", - "then": { - "en": "", - "nl": "", - "de": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "speed_pedelec=designated" - ] - }, - { - "if": "traffic_sign=BE:D7;BE:M14", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "moped=designated", - "speed_pedelec=designated" - ] - }, - { - "if": "traffic_sign=BE:D7;BE:M7", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "moped=no" - ] - }, - { - "if": ":traffic_sign=BE:D7;BE:M15", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "speed_pedelec=no" - ] - }, - { - "if": "traffic_sign=BE:D7;BE:M16", - "then": { - "en": "", - "nl": "" - }, - "hideInAnswer": "_country!=be", - "addExtraTags": [ - "moped=designated", - "speed_pedelec=no" - ] - }, - { - "if": "traffic_sign:supplementary=none", - "then": { - "en": "No supplementary traffic sign present", - "nl": "Geen onderbord aanwezig", - "de": "Kein zusätzliches Verkehrszeichen vorhanden" - } - } - ] - }, - { - "render": { - "en": "The buffer besides this cycleway is {cycleway:buffer} m", - "nl": "De schrikafstand van dit fietspad is {cycleway:buffer} m", - "de": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" - }, - "question": { - "en": "How wide is the gap between the cycleway and the road?", - "nl": "Hoe breed is de ruimte tussen het fietspad en de weg?", - "de": "Wie breit ist der Abstand zwischen Radweg und Straße?" - }, - "condition": { - "or": [ - "cycleway=track", - "cycleway=lane" - ] - }, - "freeform": { - "key": "cycleway:buffer", - "type": "length", - "helperArgs": [ - "20", - "map" - ] - }, - "id": "cycleways_and_roads-cycleway:buffer" - }, - { - "id": "cyclelan-segregation", - "question": { - "en": "How is this cycleway separated from the road?", - "nl": "Hoe is dit fietspad gescheiden van de weg?", - "de": "Wie ist der Radweg von der Straße abgegrenzt?" - }, - "condition": { - "or": [ - "cycleway=track", - "cycleway=lane" - ] - }, - "mappings": [ - { - "if": "cycleway:separation=dashed_line", - "then": { - "en": "This cycleway is separated by a dashed line", - "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep", - "de": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" - } - }, - { - "if": "cycleway:separation=solid_line", - "then": { - "en": "This cycleway is separated by a solid line", - "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep", - "de": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" - } - }, - { - "if": "cycleway:separation=parking_lane", - "then": { - "en": "This cycleway is separated by a parking lane", - "nl": "Dit fietspad is gescheiden van de weg met parkeervakken", - "de": "Der Radweg ist abgegrenzt durch eine Parkspur" - } - }, - { - "if": "cycleway:separation=kerb", - "then": { - "en": "This cycleway is separated by a kerb", - "nl": "Dit fietspad is gescheiden van de weg met een stoeprand", - "de": "Dieser Radweg ist getrennt durch einen Bordstein" - } - } - ] - }, - { - "id": "cycleway-segregation", - "question": { - "en": "How is this cycleway separated from the road?", - "nl": "Hoe is dit fietspad gescheiden van de weg?", - "de": "Wie ist der Radweg von der Straße abgegrenzt?" - }, - "condition": { - "or": [ - "highway=cycleway", - "highway=path" - ] - }, - "mappings": [ - { - "if": "separation=dashed_line", - "then": { - "en": "This cycleway is separated by a dashed line", - "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep", - "de": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" - } - }, - { - "if": "separation=solid_line", - "then": { - "en": "This cycleway is separated by a solid line", - "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep", - "de": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" - } - }, - { - "if": "separation=parking_lane", - "then": { - "en": "This cycleway is separated by a parking lane", - "nl": "Dit fietspad is gescheiden van de weg met parkeervakken", - "de": "Der Radweg ist abgegrenzt durch eine Parkspur" - } - }, - { - "if": "separation=kerb", - "then": { - "en": "This cycleway is separated by a kerb", - "nl": "Dit fietspad is gescheiden van de weg met een stoeprand", - "de": "Dieser Radweg ist getrennt durch einen Bordstein" - } - } - ] + "if": "cycleway=no", + "then": { + "en": "There is no cycleway", + "nl": "Er is geen fietspad aanwezig", + "de": "Es gibt keinen Radweg" + }, + "hideInAnswer": "cycleway!=opposite", + "addExtraTags": [ + "oneway:bicycle=no", + "fixme=Changed from cycleway=opposite" + ] } - ], - "icon": { + ], + "id": "Cycleway type for a road" + }, + { + "question": { + "en": "Is this street lit?", + "nl": "Is deze weg verlicht?", + "de": "Ist diese Straße beleuchtet?" + }, + "mappings": [ + { + "if": "lit=yes", + "then": { + "en": "This street is lit", + "nl": "Deze weg is verlicht", + "de": "Diese Straße ist beleuchtet" + } + }, + { + "if": "lit=no", + "then": { + "en": "This road is not lit", + "nl": "Deze weg is niet verlicht", + "de": "Diese Straße ist nicht beleuchtet" + } + }, + { + "if": "lit=sunset-sunrise", + "then": { + "en": "This road is lit at night", + "nl": "Deze weg is 's nachts verlicht", + "de": "Diese Straße ist nachts beleuchtet" + }, + "hideInAnswer": true + }, + { + "if": "lit=24/7", + "then": { + "en": "This road is lit 24/7", + "nl": "Deze weg is 24/7 verlicht", + "de": "Diese Straße ist durchgehend beleuchtet" + } + } + ], + "id": "is lit?" + }, + { + "question": { + "en": "Is this a cyclestreet?", + "nl": "Is dit een fietsstraat?", + "de": "Ist das eine Fahrradstraße?" + }, + "condition": { + "and": [ + "highway!=cycleway", + "highway!=path" + ] + }, + "mappings": [ + { + "if": "cyclestreet=yes", + "then": { + "en": "This is a cyclestreet, and a 30km/h zone.", + "nl": "Dit is een fietsstraat, en dus een 30km/h zone", + "de": "Dies ist eine Fahrradstraße in einer 30km/h Zone." + }, + "addExtraTags": [ + "overtaking:motor_vehicle=no", + "maxspeed=30" + ], + "hideInAnswer": "_country!=be" + }, + { + "if": "cyclestreet=yes", + "then": { + "en": "This is a cyclestreet", + "nl": "Dit is een fietsstraat", + "de": "Dies ist eine Fahrradstraße" + }, + "hideInAnswer": "_country=be" + }, + { + "if": "cyclestreet=", + "then": { + "en": "This is not a cyclestreet.", + "nl": "Dit is geen fietsstraat", + "de": "Dies ist keine Fahrradstraße." + }, + "addExtraTags": [ + "overtaking:motor_vehicle=" + ] + } + ], + "id": "Is this a cyclestreet? (For a road)" + }, + { + "render": { + "en": "The maximum speed on this road is {maxspeed} km/h", + "nl": "De maximumsnelheid op deze weg is {maxspeed} km/u", + "de": "Die HÃļchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h", + "id": "Kecepatan maksimum di jalan ini adalah {maxspeed} km/jam" + }, + "freeform": { + "key": "maxspeed", + "type": "nat" + }, + "condition": { + "and": [ + "highway!=cycleway", + "highway!=path" + ] + }, + "mappings": [ + { + "if": "maxspeed=20", + "then": { + "en": "The maximum speed is 20 km/h", + "nl": "De maximumsnelheid is 20 km/u", + "de": "Die HÃļchstgeschwindigkeit ist 20 km/h" + } + }, + { + "if": "maxspeed=30", + "then": { + "en": "The maximum speed is 30 km/h", + "nl": "De maximumsnelheid is 30 km/u", + "de": "Die HÃļchstgeschwindigkeit ist 30 km/h" + } + }, + { + "if": "maxspeed=50", + "then": { + "en": "The maximum speed is 50 km/h", + "nl": "De maximumsnelheid is 50 km/u", + "de": "Die HÃļchstgeschwindigkeit ist 50 km/h" + } + }, + { + "if": "maxspeed=70", + "then": { + "en": "The maximum speed is 70 km/h", + "nl": "De maximumsnelheid is 70 km/u", + "de": "Die HÃļchstgeschwindigkeit ist 70 km/h", + "id": "Kecepatan maksimum 70 km/jam" + } + }, + { + "if": "maxspeed=90", + "then": { + "en": "The maximum speed is 90 km/h", + "nl": "De maximumsnelheid is 90 km/u", + "de": "Die HÃļchstgeschwindigkeit ist 90 km/h", + "id": "Kecepatan maksimum 90 km/jam" + } + } + ], + "question": { + "en": "What is the maximum speed in this street?", + "nl": "Wat is de maximumsnelheid in deze straat?", + "de": "Was ist die HÃļchstgeschwindigkeit auf dieser Straße?", + "id": "Berapa kecepatan maksimum di jalan ini?" + }, + "id": "Maxspeed (for road)" + }, + { + "render": { + "en": "This cyleway is made of {cycleway:surface}", + "nl": "Dit fietspad is gemaakt van {cycleway:surface}", + "de": "Der Radweg ist aus {cycleway:surface}" + }, + "freeform": { + "key": "cycleway:surface" + }, + "condition": { + "or": [ + "cycleway=shared_lane", + "cycleway=lane", + "cycleway=track" + ] + }, + "mappings": [ + { + "if": "cycleway:surface=unpaved", + "then": { + "en": "This cycleway is unpaved", + "nl": "Dit fietspad is onverhard", + "de": "Dieser Radweg hat keinen festen Belag" + }, + "hideInAnswer": true + }, + { + "if": "cycleway:surface=paved", + "then": { + "en": "This cycleway is paved", + "nl": "Dit fietspad is geplaveid", + "de": "Dieser Radweg hat einen festen Belag" + }, + "hideInAnswer": true + }, + { + "if": "cycleway:surface=asphalt", + "then": { + "en": "This cycleway is made of asphalt", + "nl": "Dit fietspad is gemaakt van asfalt", + "de": "Der Radweg ist aus Asphalt" + } + }, + { + "if": "cycleway:surface=paving_stones", + "then": { + "en": "This cycleway is made of smooth paving stones", + "nl": "Dit fietspad is gemaakt van straatstenen", + "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" + } + }, + { + "if": "cycleway:surface=concrete", + "then": { + "en": "This cycleway is made of concrete", + "nl": "Dit fietspad is gemaakt van beton", + "de": "Der Radweg ist aus Beton" + } + }, + { + "if": "cycleway:surface=cobblestone", + "then": { + "en": "This cycleway is made of cobblestone (unhewn or sett)", + "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", + "de": "Dieser Radweg besteht aus Kopfsteinpflaster" + }, + "hideInAnswer": true + }, + { + "if": "cycleway:surface=unhewn_cobblestone", + "then": { + "en": "This cycleway is made of raw, natural cobblestone", + "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", + "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" + } + }, + { + "if": "cycleway:surface=sett", + "then": { + "en": "This cycleway is made of flat, square cobblestone", + "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", + "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + } + }, + { + "if": "cycleway:surface=wood", + "then": { + "en": "This cycleway is made of wood", + "nl": "Dit fietspad is gemaakt van hout", + "de": "Der Radweg ist aus Holz" + } + }, + { + "if": "cycleway:surface=gravel", + "then": { + "en": "This cycleway is made of gravel", + "nl": "Dit fietspad is gemaakt van grind", + "de": "Der Radweg ist aus Schotter" + } + }, + { + "if": "cycleway:surface=fine_gravel", + "then": { + "en": "This cycleway is made of fine gravel", + "nl": "Dit fietspad is gemaakt van fijn grind", + "de": "Dieser Radweg besteht aus feinem Schotter" + } + }, + { + "if": "cycleway:surface=pebblestone", + "then": { + "en": "This cycleway is made of pebblestone", + "nl": "Dit fietspad is gemaakt van kiezelsteentjes", + "de": "Der Radweg ist aus Kies" + } + }, + { + "if": "cycleway:surface=ground", + "then": { + "en": "This cycleway is made from raw ground", + "nl": "Dit fietspad is gemaakt van aarde", + "de": "Dieser Radweg besteht aus Rohboden" + } + } + ], + "question": { + "en": "What is the surface of the cycleway made from?", + "nl": "Waaruit is het oppervlak van het fietspad van gemaakt?", + "de": "Was ist der Belag dieses Radwegs?" + }, + "id": "Cycleway:surface" + }, + { + "question": { + "en": "What is the smoothness of this cycleway?", + "nl": "Wat is de kwaliteit van dit fietspad?", + "de": "Wie eben ist dieser Radweg?" + }, + "condition": { + "or": [ + "cycleway=shared_lane", + "cycleway=lane", + "cycleway=track" + ] + }, + "mappings": [ + { + "if": "cycleway:smoothness=excellent", + "then": { + "en": "Usable for thin rollers: rollerblade, skateboard", + "nl": "Geschikt voor fijne rollers: rollerblade, skateboard", + "de": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard" + } + }, + { + "if": "cycleway:smoothness=good", + "then": { + "en": "Usable for thin wheels: racing bike", + "nl": "Geschikt voor fijne wielen: racefiets", + "de": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad" + } + }, + { + "if": "cycleway:smoothness=intermediate", + "then": { + "en": "Usable for normal wheels: city bike, wheelchair, scooter", + "nl": "Geschikt voor normale wielen: stadsfiets, rolstoel, scooter", + "de": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter" + } + }, + { + "if": "cycleway:smoothness=bad", + "then": { + "en": "Usable for robust wheels: trekking bike, car, rickshaw", + "nl": "Geschikt voor brede wielen: trekfiets, auto, rickshaw", + "de": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha" + } + }, + { + "if": "cycleway:smoothness=very_bad", + "then": { + "en": "Usable for vehicles with high clearance: light duty off-road vehicle", + "nl": "Geschikt voor voertuigen met hoge banden: lichte terreinwagen", + "de": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + } + }, + { + "if": "cycleway:smoothness=horrible", + "then": { + "en": "Usable for off-road vehicles: heavy duty off-road vehicle", + "nl": "Geschikt voor terreinwagens: zware terreinwagen", + "de": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen" + } + }, + { + "if": "cycleway:smoothness=very_horrible", + "then": { + "en": "Usable for specialized off-road vehicles: tractor, ATV", + "nl": "Geschikt voor gespecialiseerde terreinwagens: tractor, alleterreinwagen", + "de": "Geeignet fÃŧr Geländefahrzeuge: Traktor, ATV" + } + }, + { + "if": "cycleway:smoothness=impassable", + "then": { + "en": "Impassable / No wheeled vehicle", + "nl": "Niet geschikt voor voertuigen met wielen", + "de": "Unpassierbar / Keine bereiften Fahrzeuge" + } + } + ], + "id": "Cycleway:smoothness" + }, + { + "render": { + "en": "This road is made of {surface}", + "nl": "Deze weg is gemaakt van {surface}", + "de": "Der Radweg ist aus {surface}", + "id": "Jalan ini terbuat dari {surface}" + }, + "freeform": { + "key": "surface" + }, + "mappings": [ + { + "if": "surface=unpaved", + "then": { + "en": "This cycleway is unhardened", + "nl": "Dit fietspad is onverhard", + "de": "Dieser Radweg ist nicht befestigt" + }, + "hideInAnswer": true + }, + { + "if": "surface=paved", + "then": { + "en": "This cycleway is paved", + "nl": "Dit fietspad is geplaveid", + "de": "Dieser Radweg hat einen festen Belag", + "id": "Jalur sepeda ini diaspal" + }, + "hideInAnswer": true + }, + { + "if": "surface=asphalt", + "then": { + "en": "This cycleway is made of asphalt", + "nl": "Dit fietspad is gemaakt van asfalt", + "de": "Der Radweg ist aus Asphalt", + "id": "Jalur sepeda ini terbuat dari aspal" + } + }, + { + "if": "surface=paving_stones", + "then": { + "en": "This cycleway is made of smooth paving stones", + "nl": "Dit fietspad is gemaakt van straatstenen", + "de": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen", + "id": "Jalur sepeda ini terbuat dari batu paving halus" + } + }, + { + "if": "surface=concrete", + "then": { + "en": "This cycleway is made of concrete", + "nl": "Dit fietspad is gemaakt van beton", + "de": "Der Radweg ist aus Beton", + "id": "Jalur sepeda ini terbuat dari beton" + } + }, + { + "if": "surface=cobblestone", + "then": { + "en": "This cycleway is made of cobblestone (unhewn or sett)", + "nl": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)", + "de": "Dieser Radweg besteht aus Kopfsteinpflaster", + "id": "Jalur sepeda ini terbuat dari cobblestone (unhewn atau sett)" + }, + "hideInAnswer": true + }, + { + "if": "surface=unhewn_cobblestone", + "then": { + "en": "This cycleway is made of raw, natural cobblestone", + "nl": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien", + "de": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster", + "id": "Jalur sepeda ini terbuat dari batu bulat alami" + } + }, + { + "if": "surface=sett", + "then": { + "en": "This cycleway is made of flat, square cobblestone", + "nl": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien", + "de": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + } + }, + { + "if": "surface=wood", + "then": { + "en": "This cycleway is made of wood", + "nl": "Dit fietspad is gemaakt van hout", + "de": "Der Radweg ist aus Holz", + "id": "Jalur sepeda ini terbuat dari kayu" + } + }, + { + "if": "surface=gravel", + "then": { + "en": "This cycleway is made of gravel", + "nl": "Dit fietspad is gemaakt van grind", + "de": "Der Radweg ist aus Schotter", + "id": "Jalur sepeda ini terbuat dari kerikil" + } + }, + { + "if": "surface=fine_gravel", + "then": { + "en": "This cycleway is made of fine gravel", + "nl": "Dit fietspad is gemaakt van fijn grind", + "de": "Dieser Radweg besteht aus feinem Schotter", + "id": "Jalur sepeda ini terbuat dari kerikil halus" + } + }, + { + "if": "surface=pebblestone", + "then": { + "en": "This cycleway is made of pebblestone", + "nl": "Dit fietspad is gemaakt van kiezelsteentjes", + "de": "Der Radweg ist aus Kies", + "id": "Jalur sepeda ini terbuat dari batu kerikil" + } + }, + { + "if": "surface=ground", + "then": { + "en": "This cycleway is made from raw ground", + "nl": "Dit fietspad is gemaakt van aarde", + "de": "Dieser Radweg besteht aus Rohboden", + "id": "Jalur sepeda ini terbuat dari tanah alami" + } + } + ], + "question": { + "en": "What is the surface of the street made from?", + "nl": "Waaruit is het oppervlak van de straat gemaakt?", + "de": "Was ist der Belag dieser Straße?", + "id": "Permukaan jalannya terbuat dari apa?" + }, + "id": "Surface of the road" + }, + { + "question": { + "en": "What is the smoothness of this street?", + "nl": "Wat is de kwaliteit van deze straat?", + "de": "Wie eben ist diese Straße?" + }, + "condition": { + "or": [ + "cycleway=no", + "highway=cycleway" + ] + }, + "mappings": [ + { + "if": "smoothness=excellent", + "then": { + "en": "Usable for thin rollers: rollerblade, skateboard", + "de": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard", + "id": "Dapat digunakan untuk roller tipis: rollerblade, skateboard" + } + }, + { + "if": "smoothness=good", + "then": { + "en": "Usable for thin wheels: racing bike", + "de": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad", + "id": "Dapat digunakan untuk roda tipis: sepeda balap" + } + }, + { + "if": "smoothness=intermediate", + "then": { + "en": "Usable for normal wheels: city bike, wheelchair, scooter", + "de": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter", + "id": "Dapat digunakan untuk roda normal: sepeda kota, kursi roda, skuter" + } + }, + { + "if": "smoothness=bad", + "then": { + "en": "Usable for robust wheels: trekking bike, car, rickshaw", + "de": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha", + "id": "Dapat digunakan untuk roda yang kuat: sepeda trekking, mobil, becak" + } + }, + { + "if": "smoothness=very_bad", + "then": { + "en": "Usable for vehicles with high clearance: light duty off-road vehicle", + "de": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + } + }, + { + "if": "smoothness=horrible", + "then": { + "en": "Usable for off-road vehicles: heavy duty off-road vehicle", + "de": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen", + "id": "Dapat digunakan untuk kendaraan off-road: kendaraan off-road berat" + } + }, + { + "if": "smoothness=very_horrible", + "then": { + "en": "Usable for specialized off-road vehicles: tractor, ATV", + "de": "Geeignet fÃŧr spezielle Geländewagen: Traktor, ATV", + "id": "Dapat digunakan untuk kendaraan off-road khusus: traktor, ATV" + } + }, + { + "if": "smoothness=impassable", + "then": { + "en": "Impassable / No wheeled vehicle", + "de": "Unpassierbar / Keine bereiften Fahrzeuge" + } + } + ], + "id": "Surface of the street" + }, + { + "condition": { + "and": [ + "highway!=cycleway", + "highway!=path" + ] + }, + "render": { + "en": "The carriage width of this road is {width:carriageway}m", + "nl": "De breedte van deze rijbaan in deze straat is {width:carriageway}m", + "de": "Die Fahrbahnbreite dieser Straße beträgt {width:carriageway}m" + }, + "freeform": { + "key": "width:carriageway", + "type": "length", + "helperArgs": [ + "20", + "map" + ] + }, + "question": { + "en": "What is the carriage width of this road (in meters)?
This is measured curb to curb and thus includes the width of parallell parking lanes", + "nl": "Hoe breed is de rijbaan in deze straat (in meters)?
Dit is
Meet dit van stoepsteen tot stoepsteen, dus inclusief een parallelle parkeerstrook", + "de": "Wie groß ist die Fahrbahnbreite dieser Straße (in Metern)?
Diese wird von Bordstein zu Bordstein gemessen und schließt daher die Breite von parallelen Parkspuren ein" + }, + "id": "width:carriageway" + }, + { + "id": "cycleway-lane-track-traffic-signs", + "question": { + "en": "What traffic sign does this cycleway have?", + "nl": "Welk verkeersbord heeft dit fietspad?", + "de": "Welches Verkehrszeichen hat dieser Radweg?", + "id": "Rambu lalu lintas apa yang dimiliki jalur sepeda ini?" + }, + "condition": { + "or": [ + "cycleway=lane", + "cycleway=track" + ] + }, + "mappings": [ + { + "if": "cycleway:traffic_sign=BE:D7", + "then": { + "en": "Compulsory cycleway ", + "nl": "Verplicht fietspad ", + "de": "Vorgeschriebener Radweg ", + "id": "Jalur sepeda wajib " + }, + "hideInAnswer": "_country!=be" + }, + { + "if": "cycleway:traffic_sign~BE:D7;.*", + "then": { + "en": "Compulsory cycleway (with supplementary sign)
", + "nl": "Verplicht fietspad (met onderbord)
", + "de": "Vorgeschriebener Radweg (mit Zusatzschild)
", + "id": "Jalur sepeda wajib (dengan tanda tambahan)
" + }, + "hideInAnswer": true + }, + { + "if": "cycleway:traffic_sign=BE:D9", + "then": { + "en": "Segregated foot/cycleway ", + "nl": "Afgescheiden voet-/fietspad ", + "de": "Getrennter Fuß-/Radweg ", + "id": "Jalur pejalan kaki/sepeda terpisah " + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:foot=designated", + "cycleway:segregated=yes" + ] + }, + { + "if": "cycleway:traffic_sign=BE:D10", + "then": { + "en": "Unsegregated foot/cycleway ", + "nl": "Gedeeld voet-/fietspad ", + "de": "Gemeinsamer Fuß-/Radweg ", + "id": "Jalur pejalan kaki/sepeda tidak terpisah " + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:foot=designated", + "cycleway:segregated=no" + ] + }, + { + "if": "cycleway:traffic_sign=none", + "then": { + "en": "No traffic sign present", + "nl": "Geen verkeersbord aanwezig", + "de": "Kein Verkehrsschild vorhanden", + "id": "Tidak ada rambu lalu lintas" + } + } + ] + }, + { + "id": "cycleway-traffic-signs", + "question": { + "en": "What traffic sign does this cycleway have?", + "nl": "Welk verkeersbord heeft dit fietspad?", + "de": "Welches Verkehrszeichen hat dieser Radweg?" + }, + "condition": { + "or": [ + "highway=cycleway", + "highway=path" + ] + }, + "mappings": [ + { + "if": "traffic_sign=BE:D7", + "then": { + "en": "Compulsory cycleway ", + "nl": "Verplicht fietspad ", + "de": "Vorgeschriebener Radweg ", + "id": "Jalur sepeda wajib " + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "bicycle=designated", + "mofa=designated", + "moped=yes", + "speed_pedelec=yes" + ] + }, + { + "if": "traffic_sign~BE:D7;.*", + "then": { + "en": "Compulsory cycleway (with supplementary sign)
", + "nl": "Verplicht fietspad (met onderbord)
", + "de": "Vorgeschriebener Radweg (mit Zusatzschild)
" + }, + "hideInAnswer": true + }, + { + "if": "traffic_sign=BE:D9", + "then": { + "en": "Segregated foot/cycleway ", + "nl": "Afgescheiden voet-/fietspad ", + "de": "Getrennter Fuß-/Radweg " + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "foot=designated", + "bicycle=designated", + "mofa=designated", + "moped=no", + "speed_pedelec=no", + "segregated=yes" + ] + }, + { + "if": "traffic_sign=BE:D10", + "then": { + "en": "Unsegregated foot/cycleway ", + "nl": "Gedeeld voet-/fietspad ", + "de": "Gemeinsamer Fuß-/Radweg " + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "foot=designated", + "bicycle=designated", + "mofa=designated", + "moped=no", + "speed_pedelec=no", + "segregated=no" + ] + }, + { + "if": "traffic_sign=none", + "then": { + "en": "No traffic sign present", + "nl": "Geen verkeersbord aanwezig", + "de": "Kein Verkehrsschild vorhanden" + } + } + ] + }, + { + "id": "cycleway-traffic-signs-supplementary", + "question": { + "en": "Does the traffic sign D7 () have a supplementary sign?", + "nl": "Heeft het verkeersbord D7 () een onderbord?", + "de": "Hat das Verkehrszeichen D7 () ein Zusatzzeichen?" + }, + "condition": { + "or": [ + "cycleway:traffic_sign=BE:D7", + "cycleway:traffic_sign~BE:D7;.*" + ] + }, + "mappings": [ + { + "if": "cycleway:traffic_sign=BE:D7;BE:M6", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:moped=designated" + ] + }, + { + "if": "cycleway:traffic_sign=BE:D7;BE:M13", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:speed_pedelec=designated" + ] + }, + { + "if": "cycleway:traffic_sign=BE:D7;BE:M14", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:moped=designated", + "cycleway:speed_pedelec=designated" + ] + }, + { + "if": "cycleway:traffic_sign=BE:D7;BE:M7", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:moped=no" + ] + }, + { + "if": "cycleway:traffic_sign=BE:D7;BE:M15", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:speed_pedelec=no" + ] + }, + { + "if": "cycleway:traffic_sign=BE:D7;BE:M16", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "cycleway:moped=designated", + "cycleway:speed_pedelec=no" + ] + }, + { + "if": "cycleway:traffic_sign:supplementary=none", + "then": { + "en": "No supplementary traffic sign present", + "nl": "Geen onderbord aanwezig", + "de": "Kein zusätzliches Verkehrszeichen vorhanden" + } + } + ] + }, + { + "id": "cycleway-traffic-signs-D7-supplementary", + "question": { + "en": "Does the traffic sign D7 () have a supplementary sign?", + "nl": "Heeft het verkeersbord D7 () een onderbord?", + "de": "Hat das Verkehrszeichen D7 () ein Zusatzzeichen?" + }, + "condition": { + "or": [ + "traffic_sign=BE:D7", + "traffic_sign~BE:D7;.*" + ] + }, + "mappings": [ + { + "if": "traffic_sign=BE:D7;BE:M6", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "moped=designated" + ] + }, + { + "if": "traffic_sign=BE:D7;BE:M13", + "then": { + "en": "", + "nl": "", + "de": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "speed_pedelec=designated" + ] + }, + { + "if": "traffic_sign=BE:D7;BE:M14", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "moped=designated", + "speed_pedelec=designated" + ] + }, + { + "if": "traffic_sign=BE:D7;BE:M7", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "moped=no" + ] + }, + { + "if": ":traffic_sign=BE:D7;BE:M15", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "speed_pedelec=no" + ] + }, + { + "if": "traffic_sign=BE:D7;BE:M16", + "then": { + "en": "", + "nl": "" + }, + "hideInAnswer": "_country!=be", + "addExtraTags": [ + "moped=designated", + "speed_pedelec=no" + ] + }, + { + "if": "traffic_sign:supplementary=none", + "then": { + "en": "No supplementary traffic sign present", + "nl": "Geen onderbord aanwezig", + "de": "Kein zusätzliches Verkehrszeichen vorhanden" + } + } + ] + }, + { + "render": { + "en": "The buffer besides this cycleway is {cycleway:buffer} m", + "nl": "De schrikafstand van dit fietspad is {cycleway:buffer} m", + "de": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" + }, + "question": { + "en": "How wide is the gap between the cycleway and the road?", + "nl": "Hoe breed is de ruimte tussen het fietspad en de weg?", + "de": "Wie breit ist der Abstand zwischen Radweg und Straße?" + }, + "condition": { + "or": [ + "cycleway=track", + "cycleway=lane" + ] + }, + "freeform": { + "key": "cycleway:buffer", + "type": "length", + "helperArgs": [ + "20", + "map" + ] + }, + "id": "cycleways_and_roads-cycleway:buffer" + }, + { + "id": "cyclelan-segregation", + "question": { + "en": "How is this cycleway separated from the road?", + "nl": "Hoe is dit fietspad gescheiden van de weg?", + "de": "Wie ist der Radweg von der Straße abgegrenzt?", + "id": "Bagaimana jalur sepeda ini terpisah dari jalan?" + }, + "condition": { + "or": [ + "cycleway=track", + "cycleway=lane" + ] + }, + "mappings": [ + { + "if": "cycleway:separation=dashed_line", + "then": { + "en": "This cycleway is separated by a dashed line", + "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep", + "de": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie", + "id": "Jalur sepeda ini dipisahkan oleh garis putus-putus" + } + }, + { + "if": "cycleway:separation=solid_line", + "then": { + "en": "This cycleway is separated by a solid line", + "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep", + "de": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie", + "id": "Jalur sepeda ini dipisahkan oleh garis solid" + } + }, + { + "if": "cycleway:separation=parking_lane", + "then": { + "en": "This cycleway is separated by a parking lane", + "nl": "Dit fietspad is gescheiden van de weg met parkeervakken", + "de": "Der Radweg ist abgegrenzt durch eine Parkspur", + "id": "Jalur sepeda ini dipisahkan oleh jalur parkir" + } + }, + { + "if": "cycleway:separation=kerb", + "then": { + "en": "This cycleway is separated by a kerb", + "nl": "Dit fietspad is gescheiden van de weg met een stoeprand", + "de": "Dieser Radweg ist getrennt durch einen Bordstein", + "id": "Jalur sepeda ini dipisahkan oleh kerb" + } + } + ] + }, + { + "id": "cycleway-segregation", + "question": { + "en": "How is this cycleway separated from the road?", + "nl": "Hoe is dit fietspad gescheiden van de weg?", + "de": "Wie ist der Radweg von der Straße abgegrenzt?", + "id": "Bagaimana jalur sepeda ini dipisahkan dari jalan?" + }, + "condition": { + "or": [ + "highway=cycleway", + "highway=path" + ] + }, + "mappings": [ + { + "if": "separation=dashed_line", + "then": { + "en": "This cycleway is separated by a dashed line", + "nl": "Dit fietspad is gescheiden van de weg met een onderbroken streep", + "de": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie", + "id": "Jalur sepeda ini dipisahkan oleh garis putus-putus" + } + }, + { + "if": "separation=solid_line", + "then": { + "en": "This cycleway is separated by a solid line", + "nl": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep", + "de": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie", + "id": "Jalur sepeda ini dipisahkan oleh garis solid" + } + }, + { + "if": "separation=parking_lane", + "then": { + "en": "This cycleway is separated by a parking lane", + "nl": "Dit fietspad is gescheiden van de weg met parkeervakken", + "de": "Der Radweg ist abgegrenzt durch eine Parkspur", + "id": "Jalur sepeda ini dipisahkan oleh jalur parkir" + } + }, + { + "if": "separation=kerb", + "then": { + "en": "This cycleway is separated by a kerb", + "nl": "Dit fietspad is gescheiden van de weg met een stoeprand", + "de": "Dieser Radweg ist getrennt durch einen Bordstein", + "id": "Jalur sepeda ini dipisahkan oleh kerb" + } + } + ] + } + ], + "allowSplit": true, + "mapRendering": [ + { + "icon": { "render": "./assets/themes/cycle_infra/bicycleway.svg" - }, - "width": { - "render": "8" - }, - "iconSize": { + }, + "iconSize": { "render": "40,40,center" + }, + "location": [ + "point" + ] }, - "color": { + { + "color": { "render": "rgba(170, 170, 170, 0.7)", "mappings": [ - { - "if": "highway=cycleway", - "then": "rgba(0, 189, 141, 0.7)" - }, - { - "if": "highway=path", - "then": "rgba(204, 74, 207, 0.7)" - }, - { - "if": "cycleway=track", - "then": "rgba(113, 3, 200, 0.7)" - }, - { - "if": "cycleway=shared_lane", - "then": "rgba(74, 59, 247, 0.7)" - }, - { - "if": "cycleway=lane", - "then": "rgba(254, 155, 6, 0.9)" - }, - { - "if": "cyclestreet=yes", - "then": "rgba(57, 159, 191, 0.7)" - } + { + "if": "highway=cycleway", + "then": "rgba(0, 189, 141, 0.7)" + }, + { + "if": "highway=path", + "then": "rgba(204, 74, 207, 0.7)" + }, + { + "if": "cycleway=track", + "then": "rgba(113, 3, 200, 0.7)" + }, + { + "if": "cycleway=shared_lane", + "then": "rgba(74, 59, 247, 0.7)" + }, + { + "if": "cycleway=lane", + "then": "rgba(254, 155, 6, 0.9)" + }, + { + "if": "cyclestreet=yes", + "then": "rgba(57, 159, 191, 0.7)" + } ] - }, - "dashArray": { + }, + "width": { + "render": "8" + }, + "dashArray": { "render": "", "mappings": [ - { - "if": { - "or": [ - "oneway=yes", - { - "or": [ - "highway=cycleway", - "highway=path" - ] - } - ] - }, - "then": "" + { + "if": { + "or": [ + "oneway=yes", + { + "or": [ + "highway=cycleway", + "highway=path" + ] + } + ] }, - { - "if": "cycleway=track", - "then": "" - }, - { - "if": "cycleway=shared_lane", - "then": "15 30" - }, - { - "if": "cycleway=lane", - "then": "25 15 15 15 25" - }, - { - "if": "cyclestreet=yes", - "then": "" - } + "then": "" + }, + { + "if": "cycleway=track", + "then": "" + }, + { + "if": "cycleway=shared_lane", + "then": "15 30" + }, + { + "if": "cycleway=lane", + "then": "25 15 15 15 25" + }, + { + "if": "cyclestreet=yes", + "then": "" + } ] - }, - "allowSplit": true, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/cycle_infra/bicycleway.svg" - }, - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point" - ] - }, - { - "color": { - "render": "rgba(170, 170, 170, 0.7)", - "mappings": [ - { - "if": "highway=cycleway", - "then": "rgba(0, 189, 141, 0.7)" - }, - { - "if": "highway=path", - "then": "rgba(204, 74, 207, 0.7)" - }, - { - "if": "cycleway=track", - "then": "rgba(113, 3, 200, 0.7)" - }, - { - "if": "cycleway=shared_lane", - "then": "rgba(74, 59, 247, 0.7)" - }, - { - "if": "cycleway=lane", - "then": "rgba(254, 155, 6, 0.9)" - }, - { - "if": "cyclestreet=yes", - "then": "rgba(57, 159, 191, 0.7)" - } - ] - }, - "width": { - "render": "8" - }, - "dashArray": { - "render": "", - "mappings": [ - { - "if": { - "or": [ - "oneway=yes", - { - "or": [ - "highway=cycleway", - "highway=path" - ] - } - ] - }, - "then": "" - }, - { - "if": "cycleway=track", - "then": "" - }, - { - "if": "cycleway=shared_lane", - "then": "15 30" - }, - { - "if": "cycleway=lane", - "then": "25 15 15 15 25" - }, - { - "if": "cyclestreet=yes", - "then": "" - } - ] - } - } - ] + } + } + ] } \ No newline at end of file diff --git a/assets/layers/defibrillator/defibrillator.json b/assets/layers/defibrillator/defibrillator.json index 8239166c2..74068d402 100644 --- a/assets/layers/defibrillator/defibrillator.json +++ b/assets/layers/defibrillator/defibrillator.json @@ -1,579 +1,572 @@ { - "id": "defibrillator", - "name": { - "en": "Defibrillators", - "ca": "Desfibril¡ladors", - "es": "Desfibriladores", - "fr": "DÊfibrillateurs", - "nl": "Defibrillatoren", - "de": "Defibrillatoren", - "it": "Defibrillatori", - "ru": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€Ņ‹" - }, - "source": { - "osmTags": "emergency=defibrillator" - }, - "calculatedTags": [ - "_days_since_last_survey=Math.floor(new Date() - new Date(feat.properties['survey:date'])/(1000*60*60*24))", - "_recently_surveyed=Number(feat.properties._days_since_last_survey) <= 90" - ], - "minzoom": 12, - "title": { - "render": { - "en": "Defibrillator", - "ca": "Desfibril¡lador", - "es": "Desfibrilador", - "fr": "DÊfibrillateur", - "nl": "Defibrillator", - "de": "Defibrillator", - "it": "Defibrillatore", - "ru": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" + "id": "defibrillator", + "name": { + "en": "Defibrillators", + "ca": "Desfibril¡ladors", + "es": "Desfibriladores", + "fr": "DÊfibrillateurs", + "nl": "Defibrillatoren", + "de": "Defibrillatoren", + "it": "Defibrillatori", + "ru": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€Ņ‹" + }, + "source": { + "osmTags": "emergency=defibrillator" + }, + "calculatedTags": [ + "_days_since_last_survey=Math.floor(new Date() - new Date(feat.properties['survey:date'])/(1000*60*60*24))", + "_recently_surveyed=Number(feat.properties._days_since_last_survey) <= 90" + ], + "minzoom": 12, + "title": { + "render": { + "en": "Defibrillator", + "ca": "Desfibril¡lador", + "es": "Desfibrilador", + "fr": "DÊfibrillateur", + "nl": "Defibrillator", + "de": "Defibrillator", + "it": "Defibrillatore", + "ru": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" + } + }, + "presets": [ + { + "title": { + "en": "Defibrillator", + "ca": "Desfibril¡lador", + "es": "Desfibrilador", + "fr": "DÊfibrillateur", + "nl": "Defibrillator", + "de": "Defibrillator", + "it": "Defibrillatore", + "ru": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" + }, + "tags": [ + "emergency=defibrillator" + ], + "preciseInput": { + "preferredBackground": "map" + } + } + ], + "tagRenderings": [ + "images", + { + "id": "defibrillator-indoors", + "question": { + "en": "Is this defibrillator located indoors?", + "ca": "Està el desfibril¡lador a l'interior?", + "es": "ÂŋEstÊ el desfibrilador en interior?", + "fr": "Ce dÊfibrillateur est-il disposÊ en intÊrieur ?", + "nl": "Hangt deze defibrillator binnen of buiten?", + "de": "Befindet sich dieser Defibrillator im Gebäude?", + "it": "Questo defibrillatore si trova all’interno?" + }, + "mappings": [ + { + "if": "indoor=yes", + "then": { + "en": "This defibrillator is located indoors", + "ca": "Aquest desfibril¡lador està a l'interior", + "es": "Este desfibrilador estÃĄ en interior", + "fr": "Ce dÊfibrillateur est en intÊrieur (dans un batiment)", + "nl": "Deze defibrillator bevindt zich in een gebouw", + "de": "Dieser Defibrillator befindet sich im Gebäude", + "it": "Questo defibrillatore si trova all’interno" + } + }, + { + "if": "indoor=no", + "then": { + "en": "This defibrillator is located outdoors", + "ca": "Aquest desfibril¡lador està a l'exterior", + "es": "Este desfibrilador estÃĄ en exterior", + "fr": "Ce dÊfibrillateur est situÊ en extÊrieur", + "nl": "Deze defibrillator hangt buiten", + "de": "Dieser Defibrillator befindet sich im Freien", + "it": "Questo defibrillatore si trova all’esterno" + } } + ] }, - "icon": { + { + "question": { + "en": "Is this defibrillator freely accessible?", + "ca": "Està el desfibril¡lador accessible lliurement?", + "es": "ÂŋEstÃĄ el desfibrilador accesible libremente?", + "fr": "Ce dÊfibrillateur est-il librement accessible ?", + "nl": "Is deze defibrillator vrij toegankelijk?", + "de": "Ist dieser Defibrillator frei zugänglich?", + "it": "Questo defibrillatore è liberamente accessibile?" + }, + "render": { + "en": "Access is {access}", + "ca": "L'accÊs Ês {access}", + "es": "El acceso es {access}", + "fr": "{access} accessible", + "nl": "Toegankelijkheid is {access}", + "de": "Zugang ist {access}", + "it": "Accesso è {access}" + }, + "freeform": { + "key": "access", + "addExtraTags": [ + "fixme=Freeform field used for access - doublecheck the value" + ] + }, + "mappings": [ + { + "if": "access=yes", + "then": { + "en": "Publicly accessible", + "ca": "AccÊs lliure", + "es": "Acceso libre", + "fr": "Librement accessible", + "nl": "Publiek toegankelijk", + "de": "Öffentlich zugänglich", + "it": "Pubblicamente accessibile", + "ru": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" + } + }, + { + "if": "access=public", + "then": { + "en": "Publicly accessible", + "ca": "Publicament accessible", + "es": "Publicament accesible", + "fr": "Librement accessible", + "nl": "Publiek toegankelijk", + "de": "Öffentlich zugänglich", + "it": "Pubblicamente accessibile", + "ru": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" + }, + "hideInAnswer": true + }, + { + "if": "access=customers", + "then": { + "en": "Only accessible to customers", + "ca": "NomÊs accessible a clients", + "es": "SÃŗlo accesible a clientes", + "fr": "RÊservÊ aux clients du lieu", + "nl": "Enkel toegankelijk voor klanten", + "de": "Nur fÃŧr Kunden zugänglich", + "it": "Accessibile solo ai clienti", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐž Ņ‚ĐžĐģŅŒĐēĐž Đ´ĐģŅ ĐēĐģиĐĩĐŊŅ‚Ов" + } + }, + { + "if": "access=private", + "then": { + "en": "Not accessible to the general public (e.g. only accesible to staff, the owners, ...)", + "ca": "No accessible al pÃēblic en general (ex. nomÊs accesible a treballadors, propietaris, ...)", + "es": "No accesible al pÃēblico en general (ex. sÃŗlo accesible a trabajadores, propietarios, ...)", + "fr": "Non accessible au public (par exemple rÊservÊ au personnel, au propriÊtaire, ...)", + "nl": "Niet toegankelijk voor het publiek (bv. enkel voor personeel, de eigenaar, ...)", + "de": "Nicht fÃŧr die Öffentlichkeit zugänglich (z.B. nur fÃŧr das Personal, die EigentÃŧmer, ...)", + "it": "Non accessibile al pubblico (ad esempio riservato al personale, ai proprietari, etc.)" + } + }, + { + "if": "access=no", + "then": { + "en": "Not accessible, possibly only for professional use", + "nl": "Niet toegankelijk, mogelijk enkel voor professionals", + "fr": "Pas accessible, peut-ÃĒtre uniquement à usage professionnel", + "it": "Non accessibile, potrebbe essere solo per uso professionale", + "de": "Nicht zugänglich, mÃļglicherweise nur fÃŧr betriebliche Nutzung" + } + } + ], + "id": "defibrillator-access" + }, + { + "question": { + "en": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?", + "nl": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?", + "fr": "Est-ce un dÊfibrillateur automatique normal ou un dÊfibrillateur manuel à usage professionnel uniquement ?", + "it": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?", + "de": "Ist dies ein normaler automatischer Defibrillator oder ein manueller Defibrillator nur fÃŧr Profis?" + }, + "condition": { + "and": [ + "access=no" + ] + }, + "mappings": [ + { + "if": "defibrillator=", + "then": { + "en": "There is no info about the type of device", + "nl": "Er is geen info over het soort toestel", + "fr": "Il n'y a pas d'information sur le type de dispositif", + "it": "Non vi sono informazioni riguardanti il tipo di questo dispositivo", + "de": "Es gibt keine Informationen Ãŧber den Gerätetyp" + }, + "hideInAnswer": true + }, + { + "if": "defibrillator=manual", + "then": { + "en": "This is a manual defibrillator for professionals", + "nl": "Dit is een manueel toestel enkel voor professionals", + "fr": "C'est un dÊfibrillateur manuel pour professionnel", + "it": "Questo è un defibrillatore manuale per professionisti", + "de": "Dies ist ein manueller Defibrillator fÃŧr den professionellen Einsatz" + } + }, + { + "if": "defibrillator=automatic", + "then": { + "en": "This is a normal automatic defibrillator", + "nl": "Dit is een gewone automatische defibrillator", + "fr": "C'est un dÊfibrillateur automatique manuel", + "it": "È un normale defibrillatore automatico", + "ru": "Đ­Ņ‚Đž ОйŅ‹Ņ‡ĐŊŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚иŅ‡ĐĩŅĐēиК Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€", + "de": "Dies ist ein normaler automatischer Defibrillator" + } + }, + { + "if": "defibrillator~", + "then": { + "en": "This is a special type of defibrillator: {defibrillator}" + }, + "hideInAnswer": true + } + ], + "id": "defibrillator-defibrillator" + }, + { + "question": { + "en": "On which floor is this defibrillator located?", + "ca": "A quina planta està el desfibril¡lador localitzat?", + "es": "ÂŋEn quÊ planta se encuentra el defibrilador localizado?", + "fr": "À quel Êtage est situÊ ce dÊfibrillateur ?", + "nl": "Op welke verdieping bevindt deze defibrillator zich?", + "de": "In welchem Stockwerk befindet sich dieser Defibrillator?", + "it": "A che piano si trova questo defibrillatore?" + }, + "condition": { + "and": [ + "indoor=yes" + ] + }, + "freeform": { + "key": "level", + "type": "int" + }, + "render": { + "en": "This defibrillator is on floor {level}", + "ca": "Aquest desfibril¡lador Ês a la planta {level}", + "es": "El desfibrilador se encuentra en la planta {level}", + "fr": "Ce dÊfibrillateur est à l'Êtage {level}", + "nl": "De defibrillator bevindt zicht op verdieping {level}", + "de": "Dieser Defibrallator befindet sich im {level}. Stockwerk", + "it": "Questo defibrillatore è al piano {level}" + }, + "mappings": [ + { + "if": "level=0", + "then": { + "en": "This defibrillator is on the ground floor", + "nl": "Deze defibrillator bevindt zich gelijkvloers", + "fr": "Ce dÊfibrillateur est au rez-de-chaussÊe", + "it": "Questo defibrillatore è al pian terreno", + "de": "Dieser Defibrillator befindet sich im Erdgeschoss" + } + }, + { + "if": "level=1", + "then": { + "en": "This defibrillator is on the first floor", + "nl": "Deze defibrillator is op de eerste verdieping", + "fr": "Ce dÊfibrillateur est au premier Êtage", + "it": "Questo defibrillatore è al primo piano", + "de": "Dieser Defibrillator befindet sich in der ersten Etage" + } + } + ], + "id": "defibrillator-level" + }, + { + "render": { + "nl": "Meer informatie over de locatie (lokale taal):
{defibrillator:location}", + "en": "Extra information about the location (in the local languagel):
{defibrillator:location}", + "fr": "Informations supplÊmentaires à propos de l'emplacement (dans la langue locale) :
{defibrillator:location}", + "it": "Informazioni supplementari circa la posizione (in lingua locale):
{defibrillator:location}", + "de": "Zusätzliche Informationen Ãŧber den Standort (in der Landessprache):
{defibrillator:location}" + }, + "question": { + "en": "Please give some explanation on where the defibrillator can be found (in the local language)", + "ca": "DÃŗna detalls d'on es pot trobar el desfibril¡lador", + "es": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en el idioma local)", + "fr": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (dans la langue local)", + "nl": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in de plaatselijke taal)", + "de": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)", + "it": "Indica piÚ precisamente dove si trova il defibrillatore (in lingua locale)" + }, + "freeform": { + "type": "text", + "key": "defibrillator:location" + }, + "id": "defibrillator-defibrillator:location" + }, + { + "render": { + "nl": "Meer informatie over de locatie (in het Engels):
{defibrillator:location:en}", + "en": "Extra information about the location (in English):
{defibrillator:location:en}", + "fr": "Informations supplÊmentaires à propos de l'emplacement (en anglais) :
{defibrillator:location:en}", + "it": "Informazioni supplementari circa la posizione (in inglese):
{defibrillator:location:en}", + "de": "Zusätzliche Informationen Ãŧber den Standort (auf Englisch):
{defibrillator:location:en}" + }, + "question": { + "en": "Please give some explanation on where the defibrillator can be found (in English)", + "ca": "DÃŗna detalls d'on es pot trobar el desfibril¡lador", + "es": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en ingles)", + "fr": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en englais)", + "nl": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Engels)", + "de": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Englisch)", + "it": "Indica piÚ precisamente dove si trova il defibrillatore (in inglese)" + }, + "freeform": { + "type": "text", + "key": "defibrillator:location:en" + }, + "id": "defibrillator-defibrillator:location:en" + }, + { + "render": { + "nl": "Meer informatie over de locatie (in het Frans):
{defibrillator:location:fr}", + "en": "Extra information about the location (in French):
{defibrillator:location:fr}", + "fr": "Informations supplÊmentaires à propos de l'emplacement (en Français) :
{defibrillator:location:fr}", + "it": "Informazioni supplementari circa la posizione (in francese):
{defibrillator:location:fr}", + "de": "Zusätzliche Informationen zum Standort (auf FranzÃļsisch):
{defibrillator:location:fr}" + }, + "question": { + "en": "Please give some explanation on where the defibrillator can be found (in French)", + "ca": "DÃŗna detalls d'on es pot trobar el desfibril¡lador", + "es": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en frances)", + "fr": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en français)", + "nl": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Frans)", + "de": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf FranzÃļsisch)", + "it": "Indica piÚ precisamente dove si trova il defibrillatore (in francese)" + }, + "freeform": { + "type": "text", + "key": "defibrillator:location:fr" + }, + "id": "defibrillator-defibrillator:location:fr" + }, + "wheelchair-access", + { + "render": { + "nl": "Officieel identificatienummer van het toestel: {ref}", + "en": "Official identification number of the device: {ref}", + "fr": "NumÊro d'identification officiel de ce dispositif : {ref}", + "it": "Numero identificativo ufficiale di questo dispositivo:{ref}", + "de": "Offizielle Identifikationsnummer des Geräts: {ref}" + }, + "question": { + "en": "What is the official identification number of the device? (if visible on device)", + "nl": "Wat is het officieel identificatienummer van het toestel? (indien zichtbaar op toestel)", + "fr": "Quel est le numÊro d'identification officiel de ce dispositif ? (si il est visible sur le dispositif)", + "it": "Qual è il numero identificativo ufficiale di questo dispositivo? (se visibile sul dispositivo)", + "de": "Wie lautet die offizielle Identifikationsnummer des Geräts? (falls am Gerät sichtbar)" + }, + "freeform": { + "type": "text", + "key": "ref" + }, + "id": "defibrillator-ref" + }, + { + "render": { + "en": "Email for questions about this defibrillator: {email}", + "nl": "Email voor vragen over deze defibrillator: {email}", + "fr": "Adresse Êlectronique pour des questions à propos de ce dÊfibrillateur : {email}", + "it": "Indirizzo email per le domande su questo defibrillatore:{email}", + "de": "E-Mail fÃŧr Fragen zu diesem Defibrillator: {email}" + }, + "question": { + "en": "What is the email for questions about this defibrillator?", + "nl": "Wat is het email-adres voor vragen over deze defibrillator", + "fr": "Quelle est l'adresse Êlectronique pour des questions à propos de ce dÊfibrillateur ?", + "it": "Qual è l’indirizzo email per le domande riguardanti questo defibrillatore?", + "de": "Wie lautet die E-Mail fÃŧr Fragen zu diesem Defibrillator?" + }, + "freeform": { + "key": "email", + "type": "email" + }, + "id": "defibrillator-email" + }, + { + "render": { + "en": "Telephone for questions about this defibrillator: {phone}", + "fr": "NumÊro de tÊlÊphone pour questions sur le dÊfibrillateur : {phone}", + "nl": "Telefoonnummer voor vragen over deze defibrillator: {phone}", + "it": "Numero di telefono per le domande su questo defibrillatore:{phone}", + "de": "Telefonnummer fÃŧr Fragen zu diesem Defibrillator: {phone}" + }, + "question": { + "en": "What is the phone number for questions about this defibrillator?", + "fr": "Quel est le numÊro de tÊlÊphone pour questions sur le dÊfibrillateur ?", + "nl": "Wat is het telefoonnummer voor vragen over deze defibrillator", + "it": "Qual è il numero di telefono per le domande riguardanti questo defibrillatore?", + "de": "Wie lautet die Telefonnummer fÃŧr Fragen zu diesem Defibrillator?" + }, + "freeform": { + "key": "phone", + "type": "phone" + }, + "id": "defibrillator-phone" + }, + { + "render": { + "en": "{opening_hours_table(opening_hours)}", + "nl": "{opening_hours_table(opening_hours)}", + "fr": "{opening_hours_table(opening_hours)}", + "it": "{opening_hours_table(opening_hours)}", + "ru": "{opening_hours_table(opening_hours)}", + "de": "{opening_hours_table(opening_hours)}" + }, + "question": { + "en": "At what times is this defibrillator available?", + "nl": "Wanneer is deze defibrillator beschikbaar?", + "fr": "À quels horaires ce dÊfibrillateur est-il accessible ?", + "it": "In quali orari è disponibile questo defibrillatore?", + "ru": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ ŅŅ‚ĐžŅ‚ Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€?", + "de": "Zu welchen Zeiten ist dieser Defibrillator verfÃŧgbar?" + }, + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "mappings": [ + { + "if": "opening_hours=24/7", + "then": { + "en": "24/7 opened (including holidays)", + "nl": "24/7 open (inclusief feestdagen)", + "fr": "Ouvert 24/7 (jours feriÊs inclus)", + "it": "Aperto 24/7 (festivi inclusi)", + "de": "24/7 geÃļffnet (auch an Feiertagen)" + } + } + ], + "id": "defibrillator-opening_hours" + }, + { + "render": { + "en": "Additional information: {description}", + "nl": "Aanvullende info: {description}", + "fr": "Informations supplÊmentaires : {description}", + "it": "Informazioni supplementari: {description}", + "ru": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ: {description}", + "de": "Zusätzliche Informationen: {description}", + "id": "Informasi tambahan: {description}" + }, + "question": { + "en": "Is there any useful information for users that you haven't been able to describe above? (leave blank if no)", + "nl": "Is er nog iets bijzonder aan deze defibrillator dat je nog niet hebt kunnen meegeven? (laat leeg indien niet)", + "fr": "Y a-t-il des informations utiles pour les utilisateurs que vous n'avez pas pu dÊcrire ci-dessus ? (laisser vide sinon)", + "it": "Vi sono altre informazioni utili agli utenti che non è stato possibile aggiungere prima? (lasciare vuoto in caso negativo)", + "de": "Gibt es nÃŧtzliche Informationen fÃŧr Benutzer, die Sie oben nicht beschreiben konnten? (leer lassen, wenn nein)" + }, + "freeform": { + "key": "description", + "type": "text" + }, + "id": "defibrillator-description" + }, + { + "question": { + "en": "When was this defibrillator last surveyed?", + "nl": "Wanneer is deze defibrillator het laatst gecontroleerd in OpenStreetMap?", + "fr": "Quand le dÊfibrillateur a-t-il ÊtÊ vÊrifiÊ pour la dernière fois ?", + "it": "Quando è stato verificato per l’ultima volta questo defibrillatore?", + "de": "Wann wurde dieser Defibrillator zuletzt ÃŧberprÃŧft?" + }, + "render": { + "en": "This defibrillator was last surveyed on {survey:date}", + "nl": "Deze defibrillator is nagekeken in OSM op {survey:date}", + "fr": "Ce dÊfibrillateur a ÊtÊ vÊrifiÊ pour la dernière fois le {survey:date}", + "it": "Questo defibrillatore è stato verificato per l‘ultima volta in data {survey:date}", + "de": "Dieser Defibrillator wurde zuletzt am {survey:date} ÃŧberprÃŧft" + }, + "freeform": { + "key": "survey:date", + "type": "date" + }, + "mappings": [ + { + "if": "survey:date:={_now:date}", + "then": { + "en": "Checked today!", + "nl": "Vandaag nagekeken!", + "fr": "VÊrifiÊ aujourd'hui !", + "it": "Verificato oggi!", + "ru": "ПŅ€ĐžĐ˛ĐĩŅ€ĐĩĐŊĐž ŅĐĩĐŗОдĐŊŅ!", + "de": "Heute ÃŧberprÃŧft!" + } + } + ], + "id": "defibrillator-survey:date" + }, + { + "render": { + "en": "Extra information for OpenStreetMap experts: {fixme}", + "nl": "Extra informatie voor OpenStreetMap experts: {fixme}", + "fr": "Informations supplÊmentaires pour les experts d'OpenStreetMap : {fixme}", + "it": "Informazioni supplementari per gli esperti di OpenStreetMap: {fixme}", + "de": "Zusätzliche Informationen fÃŧr OpenStreetMap-Experten: {fixme}", + "ru": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Đ´ĐģŅ ŅĐēŅĐŋĐĩŅ€Ņ‚Ов OpenStreetMap: {fixme}" + }, + "question": { + "en": "Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to OpenStreetMap experts)", + "nl": "Is er iets mis met de informatie over deze defibrillator dat je hier niet opgelost kreeg? (laat hier een berichtje achter voor OpenStreetMap experts)", + "fr": "Y a-t-il quelque chose qui ne va pas dans la manière dont ça a ÊtÊ cartographiÊ, et que vous n'avez pas pu rÊparer ici ? (laisser une note pour les experts d'OpenStreetMap)", + "it": "C’è qualcosa di sbagliato riguardante come è stato mappato, che non si è potuto correggere qua? (lascia una nota agli esperti di OpenStreetMap)", + "de": "Gibt es einen Fehler in der Kartierung, den Sie hier nicht beheben konnten? (hinterlasse eine Notiz an OpenStreetMap-Experten)" + }, + "freeform": { + "key": "fixme", + "type": "text" + }, + "id": "defibrillator-fixme" + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:emergency:=defibrillator}", + "emergency=" + ] + }, + "neededChangesets": 5 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/themes/aed/aed.svg", "mappings": [ - { - "if": "_recently_surveyed=true", - "then": { - "en": "./assets/layers/defibrillator/aed_checked.svg", - "ru": "./assets/layers/defibrillator/aed_checked.svg", - "it": "./assets/layers/defibrillator/aed_checked.svg", - "fr": "./assets/layers/defibrillator/aed_checked.svg", - "de": "./assets/layers/defibrillator/aed_checked.svg" - } - } + { + "if": "_recently_surveyed=true", + "then": "./assets/layers/defibrillator/aed_checked.svg" + } ] + }, + "location": [ + "point" + ] }, - "color": "#0000ff", - "presets": [ - { - "title": { - "en": "Defibrillator", - "ca": "Desfibril¡lador", - "es": "Desfibrilador", - "fr": "DÊfibrillateur", - "nl": "Defibrillator", - "de": "Defibrillator", - "it": "Defibrillatore", - "ru": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" - }, - "tags": [ - "emergency=defibrillator" - ], - "preciseInput": { - "preferredBackground": "map" - } - } - ], - "tagRenderings": [ - "images", - { - "id": "defibrillator-indoors", - "question": { - "en": "Is this defibrillator located indoors?", - "ca": "Està el desfibril¡lador a l'interior?", - "es": "ÂŋEstÊ el desfibrilador en interior?", - "fr": "Ce dÊfibrillateur est-il disposÊ en intÊrieur ?", - "nl": "Hangt deze defibrillator binnen of buiten?", - "de": "Befindet sich dieser Defibrillator im Gebäude?", - "it": "Questo defibrillatore si trova all’interno?" - }, - "mappings": [ - { - "if": "indoor=yes", - "then": { - "en": "This defibrillator is located indoors", - "ca": "Aquest desfibril¡lador està a l'interior", - "es": "Este desfibrilador estÃĄ en interior", - "fr": "Ce dÊfibrillateur est en intÊrieur (dans un batiment)", - "nl": "Deze defibrillator bevindt zich in een gebouw", - "de": "Dieser Defibrillator befindet sich im Gebäude", - "it": "Questo defibrillatore si trova all’interno" - } - }, - { - "if": "indoor=no", - "then": { - "en": "This defibrillator is located outdoors", - "ca": "Aquest desfibril¡lador està a l'exterior", - "es": "Este desfibrilador estÃĄ en exterior", - "fr": "Ce dÊfibrillateur est situÊ en extÊrieur", - "nl": "Deze defibrillator hangt buiten", - "de": "Dieser Defibrillator befindet sich im Freien", - "it": "Questo defibrillatore si trova all’esterno" - } - } - ] - }, - { - "question": { - "en": "Is this defibrillator freely accessible?", - "ca": "Està el desfibril¡lador accessible lliurement?", - "es": "ÂŋEstÃĄ el desfibrilador accesible libremente?", - "fr": "Ce dÊfibrillateur est-il librement accessible ?", - "nl": "Is deze defibrillator vrij toegankelijk?", - "de": "Ist dieser Defibrillator frei zugänglich?", - "it": "Questo defibrillatore è liberamente accessibile?" - }, - "render": { - "en": "Access is {access}", - "ca": "L'accÊs Ês {access}", - "es": "El acceso es {access}", - "fr": "{access} accessible", - "nl": "Toegankelijkheid is {access}", - "de": "Zugang ist {access}", - "it": "Accesso è {access}" - }, - "freeform": { - "key": "access", - "addExtraTags": [ - "fixme=Freeform field used for access - doublecheck the value" - ] - }, - "mappings": [ - { - "if": "access=yes", - "then": { - "en": "Publicly accessible", - "ca": "AccÊs lliure", - "es": "Acceso libre", - "fr": "Librement accessible", - "nl": "Publiek toegankelijk", - "de": "Öffentlich zugänglich", - "it": "Pubblicamente accessibile", - "ru": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" - } - }, - { - "if": "access=public", - "then": { - "en": "Publicly accessible", - "ca": "Publicament accessible", - "es": "Publicament accesible", - "fr": "Librement accessible", - "nl": "Publiek toegankelijk", - "de": "Öffentlich zugänglich", - "it": "Pubblicamente accessibile", - "ru": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" - }, - "hideInAnswer": true - }, - { - "if": "access=customers", - "then": { - "en": "Only accessible to customers", - "ca": "NomÊs accessible a clients", - "es": "SÃŗlo accesible a clientes", - "fr": "RÊservÊ aux clients du lieu", - "nl": "Enkel toegankelijk voor klanten", - "de": "Nur fÃŧr Kunden zugänglich", - "it": "Accessibile solo ai clienti", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐž Ņ‚ĐžĐģŅŒĐēĐž Đ´ĐģŅ ĐēĐģиĐĩĐŊŅ‚Ов" - } - }, - { - "if": "access=private", - "then": { - "en": "Not accessible to the general public (e.g. only accesible to staff, the owners, ...)", - "ca": "No accessible al pÃēblic en general (ex. nomÊs accesible a treballadors, propietaris, ...)", - "es": "No accesible al pÃēblico en general (ex. sÃŗlo accesible a trabajadores, propietarios, ...)", - "fr": "Non accessible au public (par exemple rÊservÊ au personnel, au propriÊtaire, ...)", - "nl": "Niet toegankelijk voor het publiek (bv. enkel voor personeel, de eigenaar, ...)", - "de": "Nicht fÃŧr die Öffentlichkeit zugänglich (z.B. nur fÃŧr das Personal, die EigentÃŧmer, ...)", - "it": "Non accessibile al pubblico (ad esempio riservato al personale, ai proprietari, etc.)" - } - }, - { - "if": "access=no", - "then": { - "en": "Not accessible, possibly only for professional use", - "nl": "Niet toegankelijk, mogelijk enkel voor professionals", - "fr": "Pas accessible, peut-ÃĒtre uniquement à usage professionnel", - "it": "Non accessibile, potrebbe essere solo per uso professionale", - "de": "Nicht zugänglich, mÃļglicherweise nur fÃŧr betriebliche Nutzung" - } - } - ], - "id": "defibrillator-access" - }, - { - "render": { - "en": "There is no info about the type of device", - "nl": "Er is geen info over het soort toestel", - "fr": "Il n'y a pas d'information sur le type de dispositif", - "it": "Non vi sono informazioni riguardanti il tipo di questo dispositivo", - "de": "Es gibt keine Informationen Ãŧber den Gerätetyp" - }, - "question": { - "en": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?", - "nl": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?", - "fr": "Est-ce un dÊfibrillateur automatique normal ou un dÊfibrillateur manuel à usage professionnel uniquement ?", - "it": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?" - }, - "freeform": { - "key": "defibrillator" - }, - "condition": { - "and": [ - "access=no" - ] - }, - "mappings": [ - { - "if": "defibrillator=manual", - "then": { - "en": "This is a manual defibrillator for professionals", - "nl": "Dit is een manueel toestel enkel voor professionals", - "fr": "C'est un dÊfibrillateur manuel pour professionnel", - "it": "Questo è un defibrillatore manuale per professionisti", - "de": "Dies ist ein manueller Defibrillator fÃŧr den professionellen Einsatz" - } - }, - { - "if": "defibrillator=automatic", - "then": { - "en": "This is a normal automatic defibrillator", - "nl": "Dit is een gewone automatische defibrillator", - "fr": "C'est un dÊfibrillateur automatique manuel", - "it": "È un normale defibrillatore automatico", - "ru": "Đ­Ņ‚Đž ОйŅ‹Ņ‡ĐŊŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚иŅ‡ĐĩŅĐēиК Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€", - "de": "Dies ist ein normaler automatischer Defibrillator" - } - } - ], - "id": "defibrillator-defibrillator" - }, - { - "question": { - "en": "On which floor is this defibrillator located?", - "ca": "A quina planta està el desfibril¡lador localitzat?", - "es": "ÂŋEn quÊ planta se encuentra el defibrilador localizado?", - "fr": "À quel Êtage est situÊ ce dÊfibrillateur ?", - "nl": "Op welke verdieping bevindt deze defibrillator zich?", - "de": "In welchem Stockwerk befindet sich dieser Defibrillator?", - "it": "A che piano si trova questo defibrillatore?" - }, - "condition": { - "and": [ - "indoor=yes" - ] - }, - "freeform": { - "key": "level", - "type": "int" - }, - "render": { - "en": "This defibrillator is on floor {level}", - "ca": "Aquest desfibril¡lador Ês a la planta {level}", - "es": "El desfibrilador se encuentra en la planta {level}", - "fr": "Ce dÊfibrillateur est à l'Êtage {level}", - "nl": "De defibrillator bevindt zicht op verdieping {level}", - "de": "Dieser Defibrallator befindet sich im {level}. Stockwerk", - "it": "Questo defibrillatore è al piano {level}" - }, - "mappings": [ - { - "if": "level=0", - "then": { - "en": "This defibrillator is on the ground floor", - "nl": "Deze defibrillator bevindt zich gelijkvloers", - "fr": "Ce dÊfibrillateur est au rez-de-chaussÊe", - "it": "Questo defibrillatore è al pian terreno", - "de": "Dieser Defibrillator befindet sich im Erdgeschoss" - } - }, - { - "if": "level=1", - "then": { - "en": "This defibrillator is on the first floor", - "nl": "Deze defibrillator is op de eerste verdieping", - "fr": "Ce dÊfibrillateur est au premier Êtage", - "it": "Questo defibrillatore è al primo piano", - "de": "Dieser Defibrillator befindet sich in der ersten Etage" - } - } - ], - "id": "defibrillator-level" - }, - { - "render": { - "nl": "Meer informatie over de locatie (lokale taal):
{defibrillator:location}", - "en": "Extra information about the location (in the local languagel):
{defibrillator:location}", - "fr": "Informations supplÊmentaires à propos de l'emplacement (dans la langue locale) :
{defibrillator:location}", - "it": "Informazioni supplementari circa la posizione (in lingua locale):
{defibrillator:location}", - "de": "Zusätzliche Informationen Ãŧber den Standort (in der Landessprache):
{defibrillator:location}" - }, - "question": { - "en": "Please give some explanation on where the defibrillator can be found (in the local language)", - "ca": "DÃŗna detalls d'on es pot trobar el desfibril¡lador", - "es": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en el idioma local)", - "fr": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (dans la langue local)", - "nl": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in de plaatselijke taal)", - "de": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)", - "it": "Indica piÚ precisamente dove si trova il defibrillatore (in lingua locale)" - }, - "freeform": { - "type": "text", - "key": "defibrillator:location" - }, - "id": "defibrillator-defibrillator:location" - }, - { - "render": { - "nl": "Meer informatie over de locatie (in het Engels):
{defibrillator:location:en}", - "en": "Extra information about the location (in English):
{defibrillator:location:en}", - "fr": "Informations supplÊmentaires à propos de l'emplacement (en anglais) :
{defibrillator:location}", - "it": "Informazioni supplementari circa la posizione (in inglese):
{defibrillator:location:en}", - "de": "Zusätzliche Informationen Ãŧber den Standort (auf Englisch):
{defibrillator:location}" - }, - "question": { - "en": "Please give some explanation on where the defibrillator can be found (in English)", - "ca": "DÃŗna detalls d'on es pot trobar el desfibril¡lador", - "es": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en ingles)", - "fr": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en englais)", - "nl": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Engels)", - "de": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Englisch)", - "it": "Indica piÚ precisamente dove si trova il defibrillatore (in inglese)" - }, - "freeform": { - "type": "text", - "key": "defibrillator:location:en" - }, - "id": "defibrillator-defibrillator:location:en" - }, - { - "render": { - "nl": "Meer informatie over de locatie (in het Frans):
{defibrillator:location:fr}", - "en": "Extra information about the location (in French):
{defibrillator:location:fr}", - "fr": "Informations supplÊmentaires à propos de l'emplacement (en Français) :
{defibrillator:location}", - "it": "Informazioni supplementari circa la posizione (in francese):
{defibrillator:location:fr}", - "de": "Zusätzliche Informationen zum Standort (auf FranzÃļsisch):
{defibrillator:Standort:fr}" - }, - "question": { - "en": "Please give some explanation on where the defibrillator can be found (in French)", - "ca": "DÃŗna detalls d'on es pot trobar el desfibril¡lador", - "es": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en frances)", - "fr": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en français)", - "nl": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Frans)", - "de": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf FranzÃļsisch)", - "it": "Indica piÚ precisamente dove si trova il defibrillatore (in francese)" - }, - "freeform": { - "type": "text", - "key": "defibrillator:location:fr" - }, - "id": "defibrillator-defibrillator:location:fr" - }, - "wheelchair-access", - { - "render": { - "nl": "Officieel identificatienummer van het toestel: {ref}", - "en": "Official identification number of the device: {ref}", - "fr": "NumÊro d'identification officiel de ce dispositif : {ref}", - "it": "Numero identificativo ufficiale di questo dispositivo:{ref}", - "de": "Offizielle Identifikationsnummer des Geräts: {ref}" - }, - "question": { - "en": "What is the official identification number of the device? (if visible on device)", - "nl": "Wat is het officieel identificatienummer van het toestel? (indien zichtbaar op toestel)", - "fr": "Quel est le numÊro d'identification officiel de ce dispositif ? (si il est visible sur le dispositif)", - "it": "Qual è il numero identificativo ufficiale di questo dispositivo? (se visibile sul dispositivo)", - "de": "Wie lautet die offizielle Identifikationsnummer des Geräts? (falls am Gerät sichtbar)" - }, - "freeform": { - "type": "text", - "key": "ref" - }, - "id": "defibrillator-ref" - }, - { - "render": { - "en": "Email for questions about this defibrillator: {email}", - "nl": "Email voor vragen over deze defibrillator: {email}", - "fr": "Adresse Êlectronique pour des questions à propos de ce dÊfibrillateur : {email}", - "it": "Indirizzo email per le domande su questo defibrillatore:{email}", - "de": "E-Mail fÃŧr Fragen zu diesem Defibrillator: {email}" - }, - "question": { - "en": "What is the email for questions about this defibrillator?", - "nl": "Wat is het email-adres voor vragen over deze defibrillator", - "fr": "Quelle est l'adresse Êlectronique pour des questions à propos de ce dÊfibrillateur ?", - "it": "Qual è l’indirizzo email per le domande riguardanti questo defibrillatore?", - "de": "Wie lautet die E-Mail fÃŧr Fragen zu diesem Defibrillator?" - }, - "freeform": { - "key": "email", - "type": "email" - }, - "id": "defibrillator-email" - }, - { - "render": { - "en": "Telephone for questions about this defibrillator: {phone}", - "fr": "NumÊro de tÊlÊphone pour questions sur le dÊfibrillateur : {phone}", - "nl": "Telefoonnummer voor vragen over deze defibrillator: {phone}", - "it": "Numero di telefono per le domande su questo defibrillatore:{phone}", - "de": "Telefonnummer fÃŧr Fragen zu diesem Defibrillator: {phone}" - }, - "question": { - "en": "What is the phone number for questions about this defibrillator?", - "fr": "Quel est le numÊro de tÊlÊphone pour questions sur le dÊfibrillateur ?", - "nl": "Wat is het telefoonnummer voor vragen over deze defibrillator", - "it": "Qual è il numero di telefono per le domande riguardanti questo defibrillatore?", - "de": "Wie lautet die Telefonnummer fÃŧr Fragen zu diesem Defibrillator?" - }, - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "defibrillator-phone" - }, - { - "render": { - "en": "{opening_hours_table(opening_hours)}", - "nl": "{opening_hours_table(opening_hours)}", - "fr": "{opening_hours_table(opening_hours)}", - "it": "{opening_hours_table(opening_hours)}", - "ru": "{opening_hours_table(opening_hours)}", - "de": "{opening_hours_table(opening_hours)}" - }, - "question": { - "en": "At what times is this defibrillator available?", - "nl": "Wanneer is deze defibrillator beschikbaar?", - "fr": "À quels horaires ce dÊfibrillateur est-il accessible ?", - "it": "In quali orari è disponibile questo defibrillatore?", - "ru": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ ŅŅ‚ĐžŅ‚ Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€?", - "de": "Zu welchen Zeiten ist dieser Defibrillator verfÃŧgbar?" - }, - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "mappings": [ - { - "if": "opening_hours=24/7", - "then": { - "en": "24/7 opened (including holidays)", - "nl": "24/7 open (inclusief feestdagen)", - "fr": "Ouvert 24/7 (jours feriÊs inclus)", - "it": "Aperto 24/7 (festivi inclusi)", - "de": "24/7 geÃļffnet (auch an Feiertagen)" - } - } - ], - "id": "defibrillator-opening_hours" - }, - { - "render": { - "en": "Additional information: {description}", - "nl": "Aanvullende info: {description}", - "fr": "Informations supplÊmentaires : {description}", - "it": "Informazioni supplementari: {description}", - "ru": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ: {description}", - "de": "Zusätzliche Informationen: {description}", - "id": "Informasi tambahan: {description}" - }, - "question": { - "en": "Is there any useful information for users that you haven't been able to describe above? (leave blank if no)", - "nl": "Is er nog iets bijzonder aan deze defibrillator dat je nog niet hebt kunnen meegeven? (laat leeg indien niet)", - "fr": "Y a-t-il des informations utiles pour les utilisateurs que vous n'avez pas pu dÊcrire ci-dessus ? (laisser vide sinon)", - "it": "Vi sono altre informazioni utili agli utenti che non è stato possibile aggiungere prima? (lasciare vuoto in caso negativo)", - "de": "Gibt es nÃŧtzliche Informationen fÃŧr Benutzer, die Sie oben nicht beschreiben konnten? (leer lassen, wenn nein)" - }, - "freeform": { - "key": "description", - "type": "text" - }, - "id": "defibrillator-description" - }, - { - "question": { - "en": "When was this defibrillator last surveyed?", - "nl": "Wanneer is deze defibrillator het laatst gecontroleerd in OpenStreetMap?", - "fr": "Quand le dÊfibrillateur a-t-il ÊtÊ vÊrifiÊ pour la dernière fois ?", - "it": "Quando è stato verificato per l’ultima volta questo defibrillatore?", - "de": "Wann wurde dieser Defibrillator zuletzt ÃŧberprÃŧft?" - }, - "render": { - "en": "This defibrillator was last surveyed on {survey:date}", - "nl": "Deze defibrillator is nagekeken in OSM op {survey:date}", - "fr": "Ce dÊfibrillateur a ÊtÊ vÊrifiÊ pour la dernière fois le {survey:date}", - "it": "Questo defibrillatore è stato verificato per l‘ultima volta in data {survey:date}", - "de": "Dieser Defibrillator wurde zuletzt am {survey:date} ÃŧberprÃŧft" - }, - "freeform": { - "key": "survey:date", - "type": "date" - }, - "mappings": [ - { - "if": "survey:date:={_now:date}", - "then": { - "en": "Checked today!", - "nl": "Vandaag nagekeken!", - "fr": "VÊrifiÊ aujourd'hui !", - "it": "Verificato oggi!", - "ru": "ПŅ€ĐžĐ˛ĐĩŅ€ĐĩĐŊĐž ŅĐĩĐŗОдĐŊŅ!", - "de": "Heute ÃŧberprÃŧft!" - } - } - ], - "id": "defibrillator-survey:date" - }, - { - "render": { - "en": "Extra information for OpenStreetMap experts: {fixme}", - "nl": "Extra informatie voor OpenStreetMap experts: {fixme}", - "fr": "Informations supplÊmentaires pour les experts d'OpenStreetMap : {fixme}", - "it": "Informazioni supplementari per gli esperti di OpenStreetMap: {fixme}", - "de": "Zusätzliche Informationen fÃŧr OpenStreetMap-Experten: {fixme}", - "ru": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Đ´ĐģŅ ŅĐēŅĐŋĐĩŅ€Ņ‚Ов OpenStreetMap: {fixme}" - }, - "question": { - "en": "Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to OpenStreetMap experts)", - "nl": "Is er iets mis met de informatie over deze defibrillator dat je hier niet opgelost kreeg? (laat hier een berichtje achter voor OpenStreetMap experts)", - "fr": "Y a-t-il quelque chose qui ne va pas dans la manière dont ça a ÊtÊ cartographiÊ, et que vous n'avez pas pu rÊparer ici ? (laisser une note pour les experts d'OpenStreetMap)", - "it": "C’è qualcosa di sbagliato riguardante come è stato mappato, che non si è potuto correggere qua? (lascia una nota agli esperti di OpenStreetMap)", - "de": "Gibt es einen Fehler in der Kartierung, den Sie hier nicht beheben konnten? (hinterlasse eine Notiz an OpenStreetMap-Experten)" - }, - "freeform": { - "key": "fixme", - "type": "text" - }, - "id": "defibrillator-fixme" - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:emergency:=defibrillator}", - "emergency=" - ] - }, - "neededChangesets": 5 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/aed/aed.svg", - "mappings": [ - { - "if": "_recently_surveyed=true", - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - ] - }, - "location": [ - "point" - ] - }, - { - "color": "#0000ff" - } - ] + { + "color": "#0000ff" + } + ] } \ No newline at end of file diff --git a/assets/layers/direction/direction.json b/assets/layers/direction/direction.json index 2114615ff..c60322d11 100644 --- a/assets/layers/direction/direction.json +++ b/assets/layers/direction/direction.json @@ -1,74 +1,58 @@ { - "id": "direction", - "name": { - "en": "Direction visualization", - "nl": "Richtingsvisualisatie", - "fr": "Visualisation de la direction", - "it": "Visualizzazione della direzione", - "ru": "ВизŅƒĐ°ĐģиСаŅ†Đ¸Ņ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиŅ", - "de": "Visualisierung der Richtung" - }, - "minzoom": 16, - "source": { - "osmTags": { - "or": [ - "camera:direction~*", - "direction~*" - ] - } - }, - "doNotDownload": true, - "passAllFeatures": true, - "title": null, - "description": { - "en": "This layer visualizes directions", - "nl": "Deze laag toont de oriÃĢntatie van een object", - "fr": "Cette couche visualise les directions", - "it": "Questo livello visualizza le direzioni", - "de": "Diese Ebene visualisiert Richtungen" - }, - "tagRenderings": [], - "icon": { + "id": "direction", + "name": { + "en": "Direction visualization", + "nl": "Richtingsvisualisatie", + "fr": "Visualisation de la direction", + "it": "Visualizzazione della direzione", + "ru": "ВизŅƒĐ°ĐģиСаŅ†Đ¸Ņ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиŅ", + "de": "Visualisierung der Richtung" + }, + "minzoom": 16, + "source": { + "osmTags": { + "or": [ + "camera:direction~*", + "direction~*" + ] + } + }, + "doNotDownload": true, + "passAllFeatures": true, + "title": null, + "description": { + "en": "This layer visualizes directions", + "nl": "Deze laag toont de oriÃĢntatie van een object", + "fr": "Cette couche visualise les directions", + "it": "Questo livello visualizza le direzioni", + "de": "Diese Ebene visualisiert Richtungen" + }, + "tagRenderings": [], + "stroke": "0", + "presets": [], + "mapRendering": [ + { + "icon": { "render": "direction_gradient:var(--catch-detail-color)", "#": "For some weird reason, showing the icon in the layer control panel breaks the svg-gradient (because the svg gradient has a global color or smthng) - so we use a different icon without gradient", "mappings": [ - { - "if": "id=node/-1", - "then": "direction:var(--catch-detail-color)" - } + { + "if": "id=node/-1", + "then": "direction:var(--catch-detail-color)" + } ] - }, - "rotation": { + }, + "iconSize": "200,200,center", + "location": [ + "point", + "centroid" + ], + "rotation": { "render": "{_direction:numerical}deg" + } }, - "iconSize": "200,200,center", - "color": "--catch-detail-color", - "stroke": "0", - "presets": [], - "wayHandling": 2, - "mapRendering": [ - { - "icon": { - "render": "direction_gradient:var(--catch-detail-color)", - "#": "For some weird reason, showing the icon in the layer control panel breaks the svg-gradient (because the svg gradient has a global color or smthng) - so we use a different icon without gradient", - "mappings": [ - { - "if": "id=node/-1", - "then": "direction:var(--catch-detail-color)" - } - ] - }, - "iconSize": "200,200,center", - "location": [ - "point", - "centroid" - ], - "rotation": { - "render": "{_direction:numerical}deg" - } - }, - { - "color": "--catch-detail-color" - } - ] + { + "color": "--catch-detail-color" + } + ] } \ No newline at end of file diff --git a/assets/layers/drinking_water/drinking_water.json b/assets/layers/drinking_water/drinking_water.json index d2e705d9c..4e960226f 100644 --- a/assets/layers/drinking_water/drinking_water.json +++ b/assets/layers/drinking_water/drinking_water.json @@ -1,206 +1,191 @@ { - "id": "drinking_water", - "name": { - "en": "Drinking water", - "nl": "Drinkbaar water", - "fr": "Eau potable", - "gl": "Auga potÃĄbel", - "de": "Trinkwasserstelle", - "it": "Acqua potabile", - "ru": "ПиŅ‚ŅŒĐĩваŅ вОда", - "id": "Air minum" - }, - "title": { - "render": { - "en": "Drinking water", - "nl": "Drinkbaar water", - "fr": "Eau potable", - "gl": "Auga potÃĄbel", - "de": "Trinkwasserstelle", - "it": "Acqua potabile", - "ru": "ПиŅ‚ŅŒĐĩваŅ вОда", - "id": "Air minum" + "id": "drinking_water", + "name": { + "en": "Drinking water", + "nl": "Drinkbaar water", + "fr": "Eau potable", + "gl": "Auga potÃĄbel", + "de": "Trinkwasserstelle", + "it": "Acqua potabile", + "ru": "ПиŅ‚ŅŒĐĩваŅ вОда", + "id": "Air minum" + }, + "title": { + "render": { + "en": "Drinking water", + "nl": "Drinkbaar water", + "fr": "Eau potable", + "gl": "Auga potÃĄbel", + "de": "Trinkwasserstelle", + "it": "Acqua potabile", + "ru": "ПиŅ‚ŅŒĐĩваŅ вОда", + "id": "Air minum" + } + }, + "source": { + "osmTags": { + "and": [ + "amenity=drinking_water", + "access!=permissive", + "access!=private" + ] + } + }, + "calculatedTags": [ + "_closest_other_drinking_water=feat.closestn('drinking_water', 1, undefined, 5000).map(f => ({id: f.feat.id, distance: ''+f.distance}))[0]", + "_closest_other_drinking_water_id=JSON.parse(feat.properties._closest_other_drinking_water)?.id", + "_closest_other_drinking_water_distance=Math.floor(Number(JSON.parse(feat.properties._closest_other_drinking_water)?.distance))" + ], + "minzoom": 13, + "presets": [ + { + "title": { + "en": "drinking water", + "nl": "drinkbaar water", + "fr": "eau potable", + "gl": "auga potÃĄbel", + "de": "trinkwasser", + "it": "acqua potabile", + "ru": "ĐŋиŅ‚ŅŒĐĩваŅ вОда", + "id": "air minum" + }, + "tags": [ + "amenity=drinking_water" + ] + } + ], + "tagRenderings": [ + "images", + { + "question": { + "en": "Is this drinking water spot still operational?", + "nl": "Is deze drinkwaterkraan nog steeds werkende?", + "it": "Questo punto di acqua potabile è sempre funzionante?", + "fr": "Ce point d'eau potable est-il toujours opÊrationnel ?", + "de": "Ist diese Trinkwasserstelle noch in Betrieb?" + }, + "render": { + "en": "The operational status is {operational_status}", + "nl": "Deze waterkraan-status is {operational_status}", + "it": "Lo stato operativo è {operational_status}", + "fr": "L'Êtat opÊrationnel est {operational_status}", + "de": "Der Betriebsstatus ist {operational_status}/i>" + }, + "freeform": { + "key": "operational_status" + }, + "mappings": [ + { + "if": "operational_status=", + "then": { + "en": "This drinking water works", + "nl": "Deze drinkwaterfontein werkt", + "it": "La fontanella funziona", + "fr": "Cette fontaine fonctionne", + "de": "Diese Trinkwasserstelle funktioniert" + } + }, + { + "if": "operational_status=broken", + "then": { + "en": "This drinking water is broken", + "nl": "Deze drinkwaterfontein is kapot", + "it": "La fontanella è guasta", + "fr": "Cette fontaine est cassÊe", + "de": "Diese Trinkwasserstelle ist kaputt" + } + }, + { + "if": "operational_status=closed", + "then": { + "en": "This drinking water is closed", + "nl": "Deze drinkwaterfontein is afgesloten", + "it": "La fontanella è chiusa", + "fr": "Cette fontaine est fermÊe", + "de": "Diese Trinkwasserstelle wurde geschlossen" + } } + ], + "id": "Still in use?" }, - "icon": { + { + "question": { + "en": "How easy is it to fill water bottles?", + "nl": "Hoe gemakkelijk is het om drinkbussen bij te vullen?", + "de": "Wie einfach ist es, Wasserflaschen zu fÃŧllen?", + "it": "Quanto è facile riempire d’acqua le bottiglie?", + "fr": "Est-il facile de remplir des bouteilles d'eau ?" + }, + "mappings": [ + { + "if": "bottle=yes", + "then": { + "en": "It is easy to refill water bottles", + "nl": "Een drinkbus bijvullen gaat makkelijk", + "de": "Es ist einfach, Wasserflaschen nachzufÃŧllen", + "it": "È facile riempire d’acqua le bottiglie", + "fr": "Il est facile de remplir les bouteilles d'eau" + } + }, + { + "if": "bottle=no", + "then": { + "en": "Water bottles may not fit", + "nl": "Een drinkbus past moeilijk", + "de": "Wasserflaschen passen mÃļglicherweise nicht", + "it": "Le bottiglie d’acqua potrebbero non entrare", + "fr": "Les bouteilles d'eau peuvent ne pas passer" + } + } + ], + "id": "Bottle refill" + }, + { + "id": "render-closest-drinking-water", + "render": { + "en": "There is another drinking water fountain at {_closest_other_drinking_water_distance} meter", + "nl": "Er bevindt zich een ander drinkwaterpunt op {_closest_other_drinking_water_distance} meter", + "it": "C’è un’altra fontanella a {_closest_other_drinking_water_distance} metri", + "de": "Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter", + "fr": "Une autre source d’eau potable est à {_closest_other_drinking_water_distance} mètres a>" + }, + "condition": "_closest_other_drinking_water_id~*" + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] + }, + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "pin:#6BC4F7;./assets/layers/drinking_water/drips.svg" - }, - "iconOverlays": [ + }, + "iconBadges": [ { - "if": { - "or": [ - "operational_status=broken", - "operational_status=closed" - ] - }, - "then": "close:#c33" - } - ], - "iconSize": "40,40,bottom", - "source": { - "osmTags": { - "and": [ - "amenity=drinking_water", - "access!=permissive", - "access!=private" + "if": { + "or": [ + "operational_status=broken", + "operational_status=closed" ] + }, + "then": "close:#c33" } - }, - "calculatedTags": [ - "_closest_other_drinking_water=feat.closestn('drinking_water', 1, undefined, 5000).map(f => ({id: f.feat.id, distance: ''+f.distance}))[0]", - "_closest_other_drinking_water_id=JSON.parse(feat.properties._closest_other_drinking_water)?.id", - "_closest_other_drinking_water_distance=Math.floor(Number(JSON.parse(feat.properties._closest_other_drinking_water)?.distance) * 1000)" - ], - "minzoom": 13, - "wayHandling": 1, - "presets": [ - { - "title": { - "en": "drinking water", - "nl": "drinkbaar water", - "fr": "eau potable", - "gl": "auga potÃĄbel", - "de": "trinkwasser", - "it": "acqua potabile", - "ru": "ĐŋиŅ‚ŅŒĐĩваŅ вОда", - "id": "air minum" - }, - "tags": [ - "amenity=drinking_water" - ] - } - ], - "color": "#6bc4f7", - "tagRenderings": [ - "images", - { - "question": { - "en": "Is this drinking water spot still operational?", - "nl": "Is deze drinkwaterkraan nog steeds werkende?", - "it": "Questo punto di acqua potabile è sempre funzionante?", - "fr": "Ce point d'eau potable est-il toujours opÊrationnel ?", - "de": "Ist diese Trinkwasserstelle noch in Betrieb?" - }, - "render": { - "en": "The operational status is {operational_status", - "nl": "Deze waterkraan-status is {operational_status}", - "it": "Lo stato operativo è {operational_status}", - "fr": "L'Êtat opÊrationnel est {operational_status", - "de": "Der Betriebsstatus ist {operational_status" - }, - "freeform": { - "key": "operational_status" - }, - "mappings": [ - { - "if": "operational_status=", - "then": { - "en": "This drinking water works", - "nl": "Deze drinkwaterfontein werkt", - "it": "La fontanella funziona", - "fr": "Cette fontaine fonctionne" - } - }, - { - "if": "operational_status=broken", - "then": { - "en": "This drinking water is broken", - "nl": "Deze drinkwaterfontein is kapot", - "it": "La fontanella è guasta", - "fr": "Cette fontaine est cassÊe", - "de": "Diese Trinkwasserstelle ist kaputt" - } - }, - { - "if": "operational_status=closed", - "then": { - "en": "This drinking water is closed", - "nl": "Deze drinkwaterfontein is afgesloten", - "it": "La fontanella è chiusa", - "fr": "Cette fontaine est fermÊe", - "de": "Diese Trinkwasserstelle wurde geschlossen" - } - } - ], - "id": "Still in use?" - }, - { - "question": { - "en": "How easy is it to fill water bottles?", - "nl": "Hoe gemakkelijk is het om drinkbussen bij te vullen?", - "de": "Wie einfach ist es, Wasserflaschen zu fÃŧllen?", - "it": "Quanto è facile riempire d’acqua le bottiglie?", - "fr": "Est-il facile de remplir des bouteilles d'eau ?" - }, - "mappings": [ - { - "if": "bottle=yes", - "then": { - "en": "It is easy to refill water bottles", - "nl": "Een drinkbus bijvullen gaat makkelijk", - "de": "Es ist einfach, Wasserflaschen nachzufÃŧllen", - "it": "È facile riempire d’acqua le bottiglie", - "fr": "Il est facile de remplir les bouteilles d'eau" - } - }, - { - "if": "bottle=no", - "then": { - "en": "Water bottles may not fit", - "nl": "Een drinkbus past moeilijk", - "de": "Wasserflaschen passen mÃļglicherweise nicht", - "it": "Le bottiglie d’acqua potrebbero non entrare", - "fr": "Les bouteilles d'eau peuvent ne pas passer" - } - } - ], - "id": "Bottle refill" - }, - { - "id": "render-closest-drinking-water", - "render": { - "en": "There is another drinking water fountain at {_closest_other_drinking_water_distance} meter", - "nl": "Er bevindt zich een ander drinkwaterpunt op {_closest_other_drinking_water_distance} meter", - "it": "C’è un’altra fontanella a {_closest_other_drinking_water_distance} metri", - "de": "Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter", - "fr": "Une autre source d’eau potable est à {_closest_other_drinking_water_distance} mètres a>" - }, - "condition": "_closest_other_drinking_water_id~*" - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "pin:#6BC4F7;./assets/layers/drinking_water/drips.svg" - }, - "iconBadges": [ - { - "if": { - "or": [ - "operational_status=broken", - "operational_status=closed" - ] - }, - "then": "close:#c33" - } - ], - "iconSize": "40,40,bottom", - "location": [ - "point" - ] - } - ] + ], + "iconSize": "40,40,bottom", + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/etymology/etymology.json b/assets/layers/etymology/etymology.json index 01a68444b..e9645a4bb 100644 --- a/assets/layers/etymology/etymology.json +++ b/assets/layers/etymology/etymology.json @@ -1,219 +1,186 @@ { - "id": "etymology", - "#": "A layer showing all objects having etymology info (either via `name:etymology:wikidata` or `name:etymology`. The intention is that this layer is reused for a certain category to also _ask_ for information", - "name": { - "en": "Has etymolgy", - "nl": "Heeft etymology info", - "de": "Hat eine Namensherkunft" + "id": "etymology", + "#": "A layer showing all objects having etymology info (either via `name:etymology:wikidata` or `name:etymology`. The intention is that this layer is reused for a certain category to also _ask_ for information", + "name": { + "en": "Has etymolgy", + "nl": "Heeft etymology info", + "de": "Hat eine Namensherkunft" + }, + "minzoom": 12, + "source": { + "osmTags": { + "or": [ + "name:etymology:wikidata~*", + "name:etymology~*" + ] + } + }, + "title": { + "render": { + "*": "{name}" + } + }, + "description": { + "en": "All objects which have an etymology known", + "nl": "Alle lagen met een gelinkt etymology", + "de": "Alle Objekte, die eine bekannte Namensherkunft haben" + }, + "calculatedTags": [ + "_same_name_ids=feat.closestn('*', 250, undefined, 2500)?.filter(f => f.feat.properties.name === feat.properties.name)?.map(f => f.feat.properties.id)??[]" + ], + "tagRenderings": [ + { + "id": "etymology-images-from-wikipedia", + "render": { + "*": "{image_carousel(name:etymology:wikidata)}" + } }, - "minzoom": 12, - "source": { - "osmTags": { - "or": [ - "name:etymology:wikidata~*", - "name:etymology~*" + { + "id": "wikipedia-etymology", + "question": { + "en": "What is the Wikidata-item that this object is named after?", + "nl": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?", + "de": "Was ist das Wikidata-Element, nach dem dieses Objekt benannt ist?" + }, + "freeform": { + "key": "name:etymology:wikidata", + "type": "wikidata", + "helperArgs": [ + "name", + { + "removePostfixes": [ + "steenweg", + "heirbaan", + "baan", + "straat", + "street", + "weg", + "dreef", + "laan", + "boulevard", + "pad", + "path", + "plein", + "square", + "plaza", + "wegel", + "kerk", + "church", + "kaai" ] + } + ] + }, + "render": { + "en": "

Wikipedia article of the name giver

{wikipedia(name:etymology:wikidata):max-height:20rem}", + "nl": "

Wikipedia artikel van de naamgever

{wikipedia(name:etymology:wikidata):max-height:20rem}", + "de": "

Wikipedia Artikel zur Namensherkunft

{wikipedia(name:etymology:wikidata):max-height:20rem}" + }, + "condition": "name:etymology!=unknown" + }, + { + "id": "zoeken op inventaris onroerend erfgoed", + "render": { + "nl": "
Zoeken op inventaris onroerend erfgoed", + "en": "Search on inventaris onroerend erfgoed" + }, + "conditions": "_country=be" + }, + { + "id": "simple etymology", + "question": { + "en": "What is this object named after?
This might be written on the street name sign", + "nl": "Naar wat is dit object vernoemd?
Dit staat mogelijks vermeld op het straatnaambordje", + "de": "Wonach ist dieses Objekt benannt?
Das kÃļnnte auf einem Straßenschild stehen" + }, + "render": { + "en": "Named after {name:etymology}", + "nl": "Vernoemd naar {name:etymology}", + "de": "Benannt nach {name:etymology}" + }, + "freeform": { + "key": "name:etymology" + }, + "mappings": [ + { + "if": "name:etymology=unknown", + "then": { + "en": "The origin of this name is unknown in all literature", + "nl": "De oorsprong van deze naam is onbekend in de literatuur", + "de": "Der Ursprung dieses Namens ist in der gesamten Literatur unbekannt" + } } + ], + "condition": { + "or": [ + "name:etymology~*", + "name:etymology:wikidata=" + ] + } }, - "title": { - "render": { - "*": "{name}" - } + "questions", + { + "id": "street-name-sign-image", + "render": { + "en": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Add image of a street name sign)}", + "nl": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Voeg afbeelding van straatnaambordje toe)}" + } }, - "description": { - "en": "All objects which have an etymology known", - "nl": "Alle lagen met een gelinkt etymology", - "de": "Alle Objekte, die eine bekannte Namensherkunft haben" + { + "id": "minimap", + "render": { + "*": "{minimap(18, id, _same_name_ids):height:10rem}" + } }, - "calculatedTags": [ - "_same_name_ids=feat.closestn('*', 250, undefined, 2500)?.filter(f => f.feat.properties.name === feat.properties.name)?.map(f => f.feat.properties.id)??[]" - ], - "tagRenderings": [ - { - "id": "etymology-images-from-wikipedia", - "render": { - "*": "{image_carousel(name:etymology:wikidata)}" - } - }, - { - "id": "wikipedia-etymology", - "question": { - "en": "What is the Wikidata-item that this object is named after?", - "nl": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?", - "de": "Was ist das Wikidata-Element, nach dem dieses Objekt benannt ist?" - }, - "freeform": { - "key": "name:etymology:wikidata", - "type": "wikidata", - "helperArgs": [ - "name", - { - "removePostfixes": [ - "steenweg", - "heirbaan", - "baan", - "straat", - "street", - "weg", - "dreef", - "laan", - "boulevard", - "pad", - "path", - "plein", - "square", - "plaza", - "wegel", - "kerk", - "church", - "kaai" - ] - } - ] - }, - "render": { - "en": "

Wikipedia article of the name giver

{wikipedia(name:etymology:wikidata):max-height:20rem}", - "nl": "

Wikipedia artikel van de naamgever

{wikipedia(name:etymology:wikidata):max-height:20rem}", - "de": "

Wikipedia Artikel zur Namensherkunft

{wikipedia(name:etymology:wikidata):max-height:20rem}" - }, - "condition": "name:etymology!=unknown" - }, - { - "id": "zoeken op inventaris onroerend erfgoed", - "render": { - "nl": "Zoeken op inventaris onroerend erfgoed", - "en": "Search on inventaris onroerend erfgoed" - }, - "conditions": "_country=be" - }, - { - "id": "simple etymology", - "question": { - "en": "What is this object named after?
This might be written on the street name sign", - "nl": "Naar wat is dit object vernoemd?
Dit staat mogelijks vermeld op het straatnaambordje", - "de": "Wonach ist dieses Objekt benannt?
Das kÃļnnte auf einem Straßenschild stehen" - }, - "render": { - "en": "Named after {name:etymology}", - "nl": "Vernoemd naar {name:etymology}", - "de": "Benannt nach {name:etymology}" - }, - "freeform": { - "key": "name:etymology" - }, - "mappings": [ - { - "if": "name:etymology=unknown", - "then": { - "en": "The origin of this name is unknown in all literature", - "nl": "De oorsprong van deze naam is onbekend in de literatuur", - "de": "Der Ursprung dieses Namens ist in der gesamten Literatur unbekannt" - } - } - ], - "condition": { - "or": [ - "name:etymology~*", - "name:etymology:wikidata=" - ] - } - }, - { - "id": "street-name-sign-image", - "render": { - "en": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Add image of a street name sign)}", - "nl": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Voeg afbeelding van straatnaambordje toe)}" - } - }, - { - "id": "minimap", - "render": { - "*": "{minimap(18, id, _same_name_ids):height:10rem}" - } - }, - { - "id": "etymology_multi_apply", - "render": { - "en": "{multi_apply(_same_name_ids, name:etymology:wikidata;name:etymology, Auto-applying data on all segments with the same name, true)}" - } - }, - "wikipedia" - ], - "icon": { + { + "id": "etymology_multi_apply", + "render": { + "en": "{multi_apply(_same_name_ids, name:etymology:wikidata;name:etymology, Auto-applying data on all segments with the same name, true)}" + } + }, + "wikipedia" + ], + "mapRendering": [ + { + "icon": { "render": "pin:#05d7fcaa;./assets/layers/etymology/logo.svg", "mappings": [ - { - "if": { - "and": [ - "name:etymology=", - "name:etymology:wikidata=" - ] - }, - "then": "pin:#fcca05aa;./assets/layers/etymology/logo.svg" - } + { + "if": { + "and": [ + "name:etymology=", + "name:etymology:wikidata=" + ] + }, + "then": "pin:#fcca05aa;./assets/layers/etymology/logo.svg" + } ] - }, - "width": { - "render": "8" - }, - "iconSize": { + }, + "iconSize": { "render": "40,40,center" + }, + "location": [ + "point" + ] }, - "color": { + { + "color": { "render": "#05d7fcaa", "mappings": [ - { - "if": { - "and": [ - "name:etymology=", - "name:etymology:wikidata=" - ] - }, - "then": "#fcca05aa" - } + { + "if": { + "and": [ + "name:etymology=", + "name:etymology:wikidata=" + ] + }, + "then": "#fcca05aa" + } ] - }, - "mapRendering": [ - { - "icon": { - "render": "pin:#05d7fcaa;./assets/layers/etymology/logo.svg", - "mappings": [ - { - "if": { - "and": [ - "name:etymology=", - "name:etymology:wikidata=" - ] - }, - "then": "pin:#fcca05aa;./assets/layers/etymology/logo.svg" - } - ] - }, - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point" - ] - }, - { - "color": { - "render": "#05d7fcaa", - "mappings": [ - { - "if": { - "and": [ - "name:etymology=", - "name:etymology:wikidata=" - ] - }, - "then": "#fcca05aa" - } - ] - }, - "width": { - "render": "8" - } - } - ] + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/etymology/logo.svg b/assets/layers/etymology/logo.svg index 6d6c9a0f6..bb88d3040 100644 --- a/assets/layers/etymology/logo.svg +++ b/assets/layers/etymology/logo.svg @@ -2,106 +2,105 @@ - - - - - - image/svg+xml - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="31.41128mm" + height="21.6535mm" + viewBox="0 0 31.41128 21.6535" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="logo.svg"> + + + + + + image/svg+xml + + + + + + - - - - - - - - - - + transform="matrix(0.21233122,0,0,0.21233122,6.7520733,38.096318)" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + id="flowRoot10"> + + + + + + + + + + + + - - diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json index 724e676e7..260d281ad 100644 --- a/assets/layers/food/food.json +++ b/assets/layers/food/food.json @@ -1,720 +1,679 @@ { - "id": "food", - "name": { - "nl": "Eetgelegenheden", - "en": "Restaurants and fast food", - "de": "Restaurants und Fast Food" + "id": "food", + "name": { + "nl": "Eetgelegenheden", + "en": "Restaurants and fast food", + "de": "Restaurants und Fast Food" + }, + "source": { + "osmTags": { + "or": [ + "amenity=fast_food", + "amenity=restaurant" + ] + } + }, + "minzoom": 12, + "presets": [ + { + "title": { + "en": "restaurant", + "nl": "restaurant", + "ru": "Ņ€ĐĩŅŅ‚ĐžŅ€Đ°ĐŊ", + "de": "Restaurant" + }, + "tags": [ + "amenity=restaurant" + ], + "description": { + "nl": "Een eetgegelegenheid waar je aan tafel wordt bediend", + "en": "A formal eating place with sit-down facilities selling full meals served by waiters", + "de": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden" + }, + "preciseInput": { + "preferredBackground": "map" + } }, - "source": { - "osmTags": { - "or": [ - "amenity=fast_food", - "amenity=restaurant" - ] + { + "title": { + "en": "fastfood", + "nl": "fastfood-zaak", + "ru": "ĐąŅ‹ŅŅ‚Ņ€ĐžĐĩ ĐŋиŅ‚Đ°ĐŊиĐĩ", + "de": "Schnellimbiss" + }, + "tags": [ + "amenity=fast_food" + ], + "description": { + "nl": "Een zaak waar je snel bediend wordt, vaak met de focus op afhalen. Zitgelegenheid is eerder beperkt (of zelfs afwezig)", + "en": "A food business concentrating on fast counter-only service and take-away food", + "de": "Ein Lebensmittelunternehmen, das sich auf schnellen Thekendienst und Essen zum Mitnehmen konzentriert" + }, + "preciseInput": { + "preferredBackground": "map" + } + }, + { + "title": { + "en": "fries shop", + "nl": "frituur", + "de": "Pommesbude" + }, + "tags": [ + "amenity=fast_food", + "cuisine=friture" + ], + "description": { + "nl": "Een fastfood-zaak waar je frieten koopt" + }, + "preciseInput": { + "preferredBackground": "map" + } + } + ], + "title": { + "render": { + "nl": "Eetgelegenheid" + }, + "mappings": [ + { + "if": { + "and": [ + "name~*", + "amenity=restaurant" + ] + }, + "then": { + "nl": "Restaurant {name}", + "en": "Restaurant {name}", + "de": "Restaurant {name}" } + }, + { + "if": { + "and": [ + "name~*", + "amenity=fast_food" + ] + }, + "then": { + "nl": "Fastfood-zaak {name}", + "en": "Fastfood {name}", + "de": "Schnellrestaurant{name}" + } + } + ] + }, + "tagRenderings": [ + "images", + { + "question": { + "nl": "Wat is de naam van deze eetgelegenheid?", + "en": "What is the name of this restaurant?", + "de": "Wie heißt dieses Restaurant?" + }, + "render": { + "nl": "De naam van deze eetgelegeheid is {name}", + "en": "The name of this restaurant is {name}", + "de": "Das Restaurant heißt {name}" + }, + "freeform": { + "key": "name" + }, + "id": "Name" }, - "minzoom": 12, - "wayHandling": 1, - "icon": { + { + "question": { + "en": "What type of business is this?", + "nl": "Wat voor soort zaak is dit?", + "de": "Um was fÃŧr ein Geschäft handelt es sich?" + }, + "mappings": [ + { + "if": "amenity=fast_food", + "then": { + "nl": "Dit is een fastfood-zaak. De focus ligt op snelle bediening, zitplaatsen zijn vaak beperkt en functioneel" + } + }, + { + "if": "amenity=restaurant", + "then": { + "nl": "Dit is een restaurant. De focus ligt op een aangename ervaring waar je aan tafel wordt bediend" + } + } + ], + "id": "Fastfood vs restaurant" + }, + "opening_hours", + "website", + "email", + "phone", + "payment-options", + "wheelchair-access", + { + "question": { + "nl": "Welk soort gerechten worden hier geserveerd?", + "en": "Which food is served here?", + "de": "Welches Essen gibt es hier?" + }, + "render": { + "nl": "Deze plaats serveert vooral {cuisine}", + "en": "This place mostly serves {cuisine}", + "de": "An diesem Ort gibt es hauptsächlich {cuisine}" + }, + "freeform": { + "key": "cuisine", + "addExtraTags": [ + "fixme=Freeform tag `cuisine` used, to be doublechecked" + ] + }, + "mappings": [ + { + "if": "cuisine=pizza", + "then": { + "en": "This is a pizzeria", + "nl": "Dit is een pizzeria", + "de": "Dies ist eine Pizzeria" + } + }, + { + "if": "cuisine=friture", + "then": { + "en": "This is a friture", + "nl": "Dit is een frituur", + "de": "Dies ist eine Pommesbude" + } + }, + { + "if": "cuisine=pasta", + "then": { + "en": "Mainly serves pasta", + "nl": "Dit is een pastazaak", + "de": "Bietet vorwiegend Pastagerichte an" + } + }, + { + "if": "cuisine=kebab", + "then": { + "nl": "Dit is een kebabzaak" + } + }, + { + "if": "cuisine=sandwich", + "then": { + "nl": "Dit is een broodjeszaak" + } + }, + { + "if": "cuisine=burger", + "then": { + "nl": "Dit is een hamburgerrestaurant" + } + }, + { + "if": "cuisine=sushi", + "then": { + "nl": "Dit is een sushirestaurant" + } + }, + { + "if": "cuisine=coffee", + "then": { + "nl": "Dit is een koffiezaak" + } + }, + { + "if": "cuisine=italian", + "then": { + "nl": "Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)" + } + }, + { + "if": "cuisine=french", + "then": { + "nl": "Dit is een Frans restaurant" + } + }, + { + "if": "cuisine=chinese", + "then": { + "nl": "Dit is een Chinees restaurant" + } + }, + { + "if": "cuisine=greek", + "then": { + "nl": "Dit is een Grieks restaurant" + } + }, + { + "if": "cuisine=indian", + "then": { + "nl": "Dit is een Indisch restaurant" + } + }, + { + "if": "cuisine=turkish", + "then": { + "nl": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)" + } + }, + { + "if": "cuisine=thai", + "then": { + "nl": "Dit is een Thaïs restaurant" + } + } + ], + "id": "Cuisine" + }, + { + "question": { + "nl": "Biedt deze zaak een afhaalmogelijkheid aan?", + "en": "Does this place offer takea-way?", + "de": "Ist an diesem Ort Mitnahme mÃļglich?" + }, + "mappings": [ + { + "if": "takeaway=only", + "then": { + "en": "This is a take-away only business", + "nl": "Hier is enkel afhaal mogelijk", + "de": "Dieses Geschäft bietet nur Artikel zur Mitnahme an" + } + }, + { + "if": "takeaway=yes", + "then": { + "en": "Take-away is possible here", + "nl": "Eten kan hier afgehaald worden", + "de": "Mitnahme mÃļglich" + } + }, + { + "if": "takeaway=no", + "then": { + "en": "Take-away is not possible here", + "nl": "Hier is geen afhaalmogelijkheid", + "de": "Mitnahme nicht mÃļglich" + } + } + ], + "id": "Takeaway" + }, + { + "question": { + "nl": "Heeft deze eetgelegenheid een vegetarische optie?", + "en": "Does this restaurant have a vegetarian option?", + "de": "Gibt es im das Restaurant vegetarische Speisen?" + }, + "mappings": [ + { + "if": "diet:vegetarian=no", + "then": { + "nl": "Geen vegetarische opties beschikbaar" + } + }, + { + "if": "diet:vegetarian=limited", + "then": { + "nl": "Beperkte vegetarische opties zijn beschikbaar" + } + }, + { + "if": "diet:vegetarian=yes", + "then": { + "nl": "Vegetarische opties zijn beschikbaar" + } + }, + { + "if": "diet:vegetarian=only", + "then": { + "nl": "Enkel vegetarische opties zijn beschikbaar" + } + } + ], + "condition": "cuisine!=friture", + "id": "Vegetarian (no friture)" + }, + { + "question": { + "nl": "Heeft deze eetgelegenheid een veganistische optie?" + }, + "mappings": [ + { + "if": "diet:vegan=no", + "then": { + "nl": "Geen veganistische opties beschikbaar" + } + }, + { + "if": "diet:vegan=limited", + "then": { + "nl": "Beperkte veganistische opties zijn beschikbaar" + } + }, + { + "if": "diet:vegan=yes", + "then": { + "nl": "Veganistische opties zijn beschikbaar" + } + }, + { + "if": "diet:vegan=only", + "then": { + "nl": "Enkel veganistische opties zijn beschikbaar" + } + } + ], + "condition": "cuisine!=friture", + "id": "Vegan (no friture)" + }, + { + "question": { + "en": "Does this restaurant offer a halal menu?", + "nl": "Heeft dit restaurant halal opties?", + "de": "Gibt es im das Restaurant halal Speisen?" + }, + "mappings": [ + { + "if": "diet:halal=no", + "then": { + "en": "There are no halal options available", + "nl": "Er zijn geen halal opties aanwezig", + "de": "Hier gibt es keine halal Speisen" + } + }, + { + "if": "diet:halal=limited", + "then": { + "en": "There is a small halal menu", + "nl": "Er zijn een beperkt aantal halal opties", + "de": "Hier gibt es wenige halal Speisen" + } + }, + { + "if": "diet:halal=yes", + "then": { + "nl": "Halal menu verkrijgbaar", + "en": "There is a halal menu", + "de": "Es gibt halal Speisen" + } + }, + { + "if": "diet:halal=only", + "then": { + "nl": "Enkel halal opties zijn beschikbaar", + "en": "Only halal options are available", + "de": "Es gibt ausschließlich halal Speisen" + } + } + ], + "condition": "cuisine!=friture", + "id": "halal (no friture)" + }, + { + "id": "friture-vegetarian", + "question": { + "nl": "Heeft deze frituur vegetarische snacks?", + "fr": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtariens ?" + }, + "mappings": [ + { + "if": "diet:vegetarian=yes", + "then": { + "nl": "Er zijn vegetarische snacks aanwezig", + "fr": "Des collations vÊgÊtariens sont disponibles" + } + }, + { + "if": "diet:vegetarian=limited", + "then": { + "nl": "Slechts enkele vegetarische snacks", + "fr": "Quelques snacks vÊgÊtariens seulement" + } + }, + { + "if": "diet:vegetarian=no", + "then": { + "nl": "Geen vegetarische snacks beschikbaar", + "fr": "Pas d'en-cas vÊgÊtariens disponibles" + } + } + ], + "condition": "cuisine=friture" + }, + { + "id": "friture-vegan", + "question": { + "nl": "Heeft deze frituur veganistische snacks?", + "fr": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtaliens ?" + }, + "mappings": [ + { + "if": "diet:vegan=yes", + "then": { + "nl": "Er zijn veganistische snacks aanwezig", + "fr": "Des collations vÊgÊtaliens sont disponibles" + } + }, + { + "if": "diet:vegan=limited", + "then": { + "nl": "Slechts enkele veganistische snacks", + "fr": "Quelques snacks vÊgÊtaliens seulement" + } + }, + { + "if": "diet:vegan=no", + "then": { + "nl": "Geen veganistische snacks beschikbaar", + "fr": "Pas d'en-cas vÊgÊtaliens disponibles" + } + } + ], + "condition": "cuisine=friture" + }, + { + "id": "friture-oil", + "question": { + "nl": "Bakt deze frituur met dierlijk vet of met plantaardige olie?", + "fr": "Cette friteuse fonctionne-t-elle avec de la graisse animale ou vÊgÊtale ?" + }, + "mappings": [ + { + "if": "friture:oil=vegetable", + "then": { + "nl": "Plantaardige olie", + "fr": "Huile vÊgÊtale" + } + }, + { + "if": "friture:oil=animal", + "then": { + "nl": "Dierlijk vet", + "fr": "Graisse animale" + } + } + ], + "condition": "cuisine=friture" + }, + { + "id": "friture-take-your-container", + "question": { + "nl": "Als je je eigen container (bv. kookpot of kleine potjes voor saus) meeneemt, gebruikt de frituur deze dan om je bestelling in te doen?", + "fr": "Est-il proposÊ d’utiliser ses propres contenants pour sa commande ?
", + "en": "If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
", + "ja": "おåŽĸ様が持参厚器(čĒŋį†į”¨ãŽé‹ã‚„小さãĒ鍋ãĒお)をもãŖãĻきた場合は、æŗ¨æ–‡ãŽæĸąåŒ…ãĢäŊŋį”¨ã•ã‚Œãžã™ã‹?
", + "de": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine TÃļpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" + }, + "mappings": [ + { + "if": "reusable_packaging:accept=yes", + "then": { + "nl": "Je mag je eigen containers meenemen om je bestelling in mee te nemen en zo minder afval te maken", + "fr": "Vous pouvez apporter vos contenants pour votre commande, limitant l’usage de matÊriaux à usage unique et les dÊchets", + "en": "You can bring your own containers to get your order, saving on single-use packaging material and thus waste", + "ja": "č‡Ē分ぎ厚器を持ãŖãĻきãĻ、æŗ¨æ–‡ã‚’受け取ることができ、äŊŋい捨ãĻぎæĸąåŒ…材をį¯€į´„しãĻ、į„Ąé§„ã‚’įœãã“とができぞす", + "de": "Sie kÃļnnen ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" + } + }, + { + "if": "reusable_packaging:accept=no", + "then": { + "nl": "Je mag geen eigen containers meenemen om je bestelling in mee te nemen", + "fr": "Apporter ses propres contenants n’est pas permis", + "en": "Bringing your own container is not allowed", + "ja": "į‹Ŧč‡Ēぎ厚器を持参することはできぞせん", + "ru": "ПŅ€Đ¸ĐŊĐžŅĐ¸Ņ‚ŅŒ ŅĐ˛ĐžŅŽ Ņ‚Đ°Ņ€Ņƒ ĐŊĐĩ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐĩĐŊĐž", + "de": "Das Mitbringen eines eigenen Containers ist nicht erlaubt" + } + }, + { + "if": "reusable_packaging:accept=only", + "then": { + "nl": "Je moet je eigen containers meenemen om je bestelling in mee te nemen.", + "en": "You must bring your own container to order here.", + "ja": "č‡ĒčēĢぎ厚器がæŗ¨æ–‡ãĢåŋ…čĻã€‚", + "fr": "Il est obligatoire d’apporter ses propres contenants", + "de": "Sie mÃŧssen Ihren eigenen Behälter mitbringen, um hier zu bestellen." + } + } + ], + "condition": "cuisine=friture" + }, + "service:electricity", + "dog-access" + ], + "filter": [ + { + "id": "opened-now", + "options": [ + { + "question": { + "en": "Opened now", + "nl": "Nu geopened", + "de": "Aktuell geÃļffnet" + }, + "osmTags": "_isOpen=yes" + } + ] + }, + { + "id": "vegetarian", + "options": [ + { + "question": { + "en": "Has a vegetarian menu", + "nl": "Heeft een vegetarisch menu", + "de": "Hat vegetarische Speisen" + }, + "osmTags": { + "or": [ + "diet:vegetarian=yes", + "diet:vegetarian=only", + "diet:vegan=yes", + "diet:vegan=only" + ] + } + } + ] + }, + { + "id": "vegan", + "options": [ + { + "question": { + "en": "Has a vegan menu", + "nl": "Heeft een veganistisch menu", + "de": "Bietet vegan Speisen an" + }, + "osmTags": { + "or": [ + "diet:vegan=yes", + "diet:vegan=only" + ] + } + } + ] + }, + { + "id": "halal", + "options": [ + { + "question": { + "en": "Has a halal menu", + "nl": "Heeft een halal menu", + "de": "Hat halal Speisen" + }, + "osmTags": { + "or": [ + "diet:halal=yes", + "diet:halal=only" + ] + } + } + ] + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "amenity=", + "disused:amenity:={amenity}" + ] + } + }, + "allowMove": true, + "mapRendering": [ + { + "icon": { "render": "circle:white;./assets/layers/food/restaurant.svg", "mappings": [ - { - "if": { - "and": [ - "amenity=fast_food", - "cuisine=friture" - ] - }, - "then": "circle:white;./assets/layers/food/fries.svg" - }, - { - "if": "amenity=fast_food", - "then": "circle:white;./assets/layers/food/fastfood.svg" - } - ] - }, - "iconOverlays": [ - { - "if": "opening_hours~*", - "then": "isOpen", - "badge": true - }, - { + { "if": { - "or": [ - "diet:vegetarian=yes", - "diet:vegan=yes" - ] - }, - "then": { - "render": "circle:white;./assets/themes/fritures/Vegetarian-mark.svg" - }, - "badge": true - } - ], - "label": { - "mappings": [ - { - "if": "name~*", - "then": "
{name}
" - } - ] - }, - "presets": [ - { - "title": { - "en": "restaurant", - "nl": "restaurant", - "ru": "Ņ€ĐĩŅŅ‚ĐžŅ€Đ°ĐŊ", - "de": "Restaurant" - }, - "tags": [ - "amenity=restaurant" - ], - "description": { - "nl": "Een eetgegelegenheid waar je aan tafel wordt bediend", - "en": "A formal eating place with sit-down facilities selling full meals served by waiters", - "de": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "title": { - "en": "fastfood", - "nl": "fastfood-zaak", - "ru": "ĐąŅ‹ŅŅ‚Ņ€ĐžĐĩ ĐŋиŅ‚Đ°ĐŊиĐĩ", - "de": "Schnellimbiss" - }, - "tags": [ - "amenity=fast_food" - ], - "description": { - "nl": "Een zaak waar je snel bediend wordt, vaak met de focus op afhalen. Zitgelegenheid is eerder beperkt (of zelfs afwezig)", - "en": "A food business concentrating on fast counter-only service and take-away food" - }, - "preciseInput": { - "preferredBackground": "map" - } - }, - { - "title": { - "en": "fries shop", - "nl": "frituur", - "de": "Pommesbude" - }, - "tags": [ + "and": [ "amenity=fast_food", "cuisine=friture" - ], - "description": { - "nl": "Een fastfood-zaak waar je frieten koopt" + ] }, - "preciseInput": { - "preferredBackground": "map" - } - } - ], - "title": { - "render": { - "nl": "Eetgelegenheid" - }, - "mappings": [ - { - "if": { - "and": [ - "name~*", - "amenity=restaurant" - ] - }, - "then": { - "nl": "Restaurant {name}", - "en": "Restaurant {name}", - "de": "Restaurant {name}" - } - }, - { - "if": { - "and": [ - "name~*", - "amenity=fast_food" - ] - }, - "then": { - "nl": "Fastfood-zaak {name}", - "en": "Fastfood {name}", - "de": "Schnellrestaurant{name}" - } - } + "then": "circle:white;./assets/layers/food/fries.svg" + }, + { + "if": "amenity=fast_food", + "then": "circle:white;./assets/layers/food/fastfood.svg" + } ] - }, - "tagRenderings": [ - "images", + }, + "iconBadges": [ { - "question": { - "nl": "Wat is de naam van deze eetgelegenheid?", - "en": "What is the name of this restaurant?", - "de": "Wie heißt dieses Restaurant?" - }, - "render": { - "nl": "De naam van deze eetgelegeheid is {name}", - "en": "The name of this restaurant is {name}", - "de": "Das Restaurant heißt {name}" - }, - "freeform": { - "key": "name" - }, - "id": "Name" + "if": "opening_hours~*", + "then": "isOpen" }, { - "question": { - "en": "What type of business is this?", - "nl": "Wat voor soort zaak is dit?", - "de": "Um was fÃŧr ein Geschäft handelt es sich?" - }, - "mappings": [ - { - "if": "amenity=fast_food", - "then": { - "nl": "Dit is een fastfood-zaak. De focus ligt op snelle bediening, zitplaatsen zijn vaak beperkt en functioneel" - } - }, - { - "if": "amenity=restaurant", - "then": { - "nl": "Dit is een restaurant. De focus ligt op een aangename ervaring waar je aan tafel wordt bediend" - } - } - ], - "id": "Fastfood vs restaurant" - }, - "opening_hours", - "website", - "email", - "phone", - "payment-options", - "wheelchair-access", - { - "question": { - "nl": "Welk soort gerechten worden hier geserveerd?", - "en": "Which food is served here?", - "de": "Welches Essen gibt es hier?" - }, - "render": { - "nl": "Deze plaats serveert vooral {cuisine}", - "en": "This place mostly serves {cuisine}", - "de": "An diesem Ort gibt es hauptsächlich {cuisine}" - }, - "freeform": { - "key": "cuisine", - "addExtraTags": [ - "fixme=Freeform tag `cuisine` used, to be doublechecked" - ] - }, - "mappings": [ - { - "if": "cuisine=pizza", - "then": { - "en": "This is a pizzeria", - "nl": "Dit is een pizzeria", - "de": "Dies ist eine Pizzeria" - } - }, - { - "if": "cuisine=friture", - "then": { - "en": "This is a friture", - "nl": "Dit is een frituur", - "de": "Dies ist eine Pommesbude" - } - }, - { - "if": "cuisine=pasta", - "then": { - "en": "Mainly serves pasta", - "nl": "Dit is een pastazaak", - "de": "Bietet vorwiegend Pastagerichte an" - } - }, - { - "if": "cuisine=kebab", - "then": { - "nl": "Dit is een kebabzaak" - } - }, - { - "if": "cuisine=sandwich", - "then": { - "nl": "Dit is een broodjeszaak" - } - }, - { - "if": "cuisine=burger", - "then": { - "nl": "Dit is een hamburgerrestaurant" - } - }, - { - "if": "cuisine=sushi", - "then": { - "nl": "Dit is een sushirestaurant" - } - }, - { - "if": "cuisine=coffee", - "then": { - "nl": "Dit is een koffiezaak" - } - }, - { - "if": "cuisine=italian", - "then": { - "nl": "Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)" - } - }, - { - "if": "cuisine=french", - "then": { - "nl": "Dit is een Frans restaurant" - } - }, - { - "if": "cuisine=chinese", - "then": { - "nl": "Dit is een Chinees restaurant" - } - }, - { - "if": "cuisine=greek", - "then": { - "nl": "Dit is een Grieks restaurant" - } - }, - { - "if": "cuisine=indian", - "then": { - "nl": "Dit is een Indisch restaurant" - } - }, - { - "if": "cuisine=turkish", - "then": { - "nl": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)" - } - }, - { - "if": "cuisine=thai", - "then": { - "nl": "Dit is een Thaïs restaurant" - } - } - ], - "id": "Cuisine" - }, - { - "question": { - "nl": "Biedt deze zaak een afhaalmogelijkheid aan?", - "en": "Does this place offer takea-way?", - "de": "Ist an diesem Ort Mitnahme mÃļglich?" - }, - "mappings": [ - { - "if": "takeaway=only", - "then": { - "en": "This is a take-away only business", - "nl": "Hier is enkel afhaal mogelijk", - "de": "Dieses Geschäft bietet nur Artikel zur Mitnahme an" - } - }, - { - "if": "takeaway=yes", - "then": { - "en": "Take-away is possible here", - "nl": "Eten kan hier afgehaald worden", - "de": "Mitnahme mÃļglich" - } - }, - { - "if": "takeaway=no", - "then": { - "en": "Take-away is not possible here", - "nl": "Hier is geen afhaalmogelijkheid", - "de": "Mitnahme nicht mÃļglich" - } - } - ], - "id": "Takeaway" - }, - { - "question": { - "nl": "Heeft deze eetgelegenheid een vegetarische optie?", - "en": "Does this restaurant have a vegetarian option?", - "de": "Gibt es im das Restaurant vegetarische Speisen?" - }, - "mappings": [ - { - "if": "diet:vegetarian=no", - "then": { - "nl": "Geen vegetarische opties beschikbaar" - } - }, - { - "if": "diet:vegetarian=limited", - "then": { - "nl": "Beperkte vegetarische opties zijn beschikbaar" - } - }, - { - "if": "diet:vegetarian=yes", - "then": { - "nl": "Vegetarische opties zijn beschikbaar" - } - }, - { - "if": "diet:vegetarian=only", - "then": { - "nl": "Enkel vegetarische opties zijn beschikbaar" - } - } - ], - "condition": "cuisine!=friture", - "id": "Vegetarian (no friture)" - }, - { - "question": { - "nl": "Heeft deze eetgelegenheid een veganistische optie?" - }, - "mappings": [ - { - "if": "diet:vegan=no", - "then": { - "nl": "Geen veganistische opties beschikbaar" - } - }, - { - "if": "diet:vegan=limited", - "then": { - "nl": "Beperkte veganistische opties zijn beschikbaar" - } - }, - { - "if": "diet:vegan=yes", - "then": { - "nl": "Veganistische opties zijn beschikbaar" - } - }, - { - "if": "diet:vegan=only", - "then": { - "nl": "Enkel veganistische opties zijn beschikbaar" - } - } - ], - "condition": "cuisine!=friture", - "id": "Vegan (no friture)" - }, - { - "question": { - "en": "Does this restaurant offer a halal menu?", - "nl": "Heeft dit restaurant halal opties?", - "de": "Gibt es im das Restaurant halal Speisen?" - }, - "mappings": [ - { - "if": "diet:halal=no", - "then": { - "en": "There are no halal options available", - "nl": "Er zijn geen halal opties aanwezig", - "de": "Hier gibt es keine halal Speisen" - } - }, - { - "if": "diet:halal=limited", - "then": { - "en": "There is a small halal menu", - "nl": "Er zijn een beperkt aantal halal opties", - "de": "Hier gibt es wenige halal Speisen" - } - }, - { - "if": "diet:halal=yes", - "then": { - "nl": "Halal menu verkrijgbaar", - "en": "There is a halal menu", - "de": "Es gibt halal Speisen" - } - }, - { - "if": "diet:halal=only", - "then": { - "nl": "Enkel halal opties zijn beschikbaar", - "en": "Only halal options are available", - "de": "Es gibt ausschließlich halal Speisen" - } - } - ], - "condition": "cuisine!=friture", - "id": "halal (no friture)" - }, - { - "id": "friture-vegetarian", - "question": { - "nl": "Heeft deze frituur vegetarische snacks?", - "fr": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtariens ?" - }, - "mappings": [ - { - "if": "diet:vegetarian=yes", - "then": { - "nl": "Er zijn vegetarische snacks aanwezig", - "fr": "Des collations vÊgÊtariens sont disponibles" - } - }, - { - "if": "diet:vegetarian=limited", - "then": { - "nl": "Slechts enkele vegetarische snacks", - "fr": "Quelques snacks vÊgÊtariens seulement" - } - }, - { - "if": "diet:vegetarian=no", - "then": { - "nl": "Geen vegetarische snacks beschikbaar", - "fr": "Pas d'en-cas vÊgÊtariens disponibles" - } - } - ], - "condition": "cuisine=friture" - }, - { - "id": "friture-vegan", - "question": { - "nl": "Heeft deze frituur veganistische snacks?", - "fr": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtaliens ?" - }, - "mappings": [ - { - "if": "diet:vegan=yes", - "then": { - "nl": "Er zijn veganistische snacks aanwezig", - "fr": "Des collations vÊgÊtaliens sont disponibles" - } - }, - { - "if": "diet:vegan=limited", - "then": { - "nl": "Slechts enkele veganistische snacks", - "fr": "Quelques snacks vÊgÊtaliens seulement" - } - }, - { - "if": "diet:vegan=no", - "then": { - "nl": "Geen veganistische snacks beschikbaar", - "fr": "Pas d'en-cas vÊgÊtaliens disponibles" - } - } - ], - "condition": "cuisine=friture" - }, - { - "id": "friture-oil", - "question": { - "nl": "Bakt deze frituur met dierlijk vet of met plantaardige olie?", - "fr": "Cette friteuse fonctionne-t-elle avec de la graisse animale ou vÊgÊtale ?" - }, - "mappings": [ - { - "if": "friture:oil=vegetable", - "then": { - "nl": "Plantaardige olie", - "fr": "Huile vÊgÊtale" - } - }, - { - "if": "friture:oil=animal", - "then": { - "nl": "Dierlijk vet", - "fr": "Graisse animale" - } - } - ], - "condition": "cuisine=friture" - }, - { - "id": "friture-take-your-container", - "question": { - "nl": "Als je je eigen container (bv. kookpot of kleine potjes voor saus) meeneemt, gebruikt de frituur deze dan om je bestelling in te doen?", - "fr": "Est-il proposÊ d’utiliser ses propres contenants pour sa commande ?
", - "en": "If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
", - "ja": "おåŽĸ様が持参厚器(čĒŋį†į”¨ãŽé‹ã‚„小さãĒ鍋ãĒお)をもãŖãĻきた場合は、æŗ¨æ–‡ãŽæĸąåŒ…ãĢäŊŋį”¨ã•ã‚Œãžã™ã‹?
", - "de": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine TÃļpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" - }, - "mappings": [ - { - "if": "reusable_packaging:accept=yes", - "then": { - "nl": "Je mag je eigen containers meenemen om je bestelling in mee te nemen en zo minder afval te maken", - "fr": "Vous pouvez apporter vos contenants pour votre commande, limitant l’usage de matÊriaux à usage unique et les dÊchets", - "en": "You can bring your own containers to get your order, saving on single-use packaging material and thus waste", - "ja": "č‡Ē分ぎ厚器を持ãŖãĻきãĻ、æŗ¨æ–‡ã‚’受け取ることができ、äŊŋい捨ãĻぎæĸąåŒ…材をį¯€į´„しãĻ、į„Ąé§„ã‚’įœãã“とができぞす", - "de": "Sie kÃļnnen ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" - } - }, - { - "if": "reusable_packaging:accept=no", - "then": { - "nl": "Je mag geen eigen containers meenemen om je bestelling in mee te nemen", - "fr": "Apporter ses propres contenants n’est pas permis", - "en": "Bringing your own container is not allowed", - "ja": "į‹Ŧč‡Ēぎ厚器を持参することはできぞせん", - "ru": "ПŅ€Đ¸ĐŊĐžŅĐ¸Ņ‚ŅŒ ŅĐ˛ĐžŅŽ Ņ‚Đ°Ņ€Ņƒ ĐŊĐĩ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐĩĐŊĐž" - } - }, - { - "if": "reusable_packaging:accept=only", - "then": { - "nl": "Je moet je eigen containers meenemen om je bestelling in mee te nemen.", - "en": "You must bring your own container to order here.", - "ja": "č‡ĒčēĢぎ厚器がæŗ¨æ–‡ãĢåŋ…čĻã€‚", - "fr": "Il est obligatoire d’apporter ses propres contenants" - } - } - ], - "condition": "cuisine=friture" - }, - "dog-access" - ], - "filter": [ - { - "id": "opened-now", - "options": [ - { - "question": { - "en": "Opened now", - "nl": "Nu geopened", - "de": "Aktuell geÃļffnet" - }, - "osmTags": "_isOpen=yes" - } - ] - }, - { - "id": "vegetarian", - "options": [ - { - "question": { - "en": "Has a vegetarian menu", - "nl": "Heeft een vegetarisch menu", - "de": "Hat vegetarische Speisen" - }, - "osmTags": { - "or": [ - "diet:vegetarian=yes", - "diet:vegetarian=only", - "diet:vegan=yes", - "diet:vegan=only" - ] - } - } - ] - }, - { - "id": "vegan", - "options": [ - { - "question": { - "en": "Has a vegan menu", - "nl": "Heeft een veganistisch menu", - "de": "Bietet vegan Speisen an" - }, - "osmTags": { - "or": [ - "diet:vegan=yes", - "diet:vegan=only" - ] - } - } - ] - }, - { - "id": "halal", - "options": [ - { - "question": { - "en": "Has a halal menu", - "nl": "Heeft een halal menu", - "de": "Hat halal Speisen" - }, - "osmTags": { - "or": [ - "diet:halal=yes", - "diet:halal=only" - ] - } - } + "if": { + "or": [ + "diet:vegetarian=yes", + "diet:vegan=yes" ] + }, + "then": { + "render": "circle:white;./assets/themes/fritures/Vegetarian-mark.svg" + } } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "amenity=", - "disused:amenity:={amenity}" - ] - } - }, - "allowMove": true, - "mapRendering": [ - { - "icon": { - "render": "circle:white;./assets/layers/food/restaurant.svg", - "mappings": [ - { - "if": { - "and": [ - "amenity=fast_food", - "cuisine=friture" - ] - }, - "then": "circle:white;./assets/layers/food/fries.svg" - }, - { - "if": "amenity=fast_food", - "then": "circle:white;./assets/layers/food/fastfood.svg" - } - ] - }, - "iconBadges": [ - { - "if": "opening_hours~*", - "then": "isOpen" - }, - { - "if": { - "or": [ - "diet:vegetarian=yes", - "diet:vegan=yes" - ] - }, - "then": { - "render": "circle:white;./assets/themes/fritures/Vegetarian-mark.svg" - } - } - ], - "label": { - "mappings": [ - { - "if": "name~*", - "then": "
{name}
" - } - ] - }, - "location": [ - "point" - ] - } - ] + ], + "label": { + "mappings": [ + { + "if": "name~*", + "then": "
{name}
" + } + ] + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/ghost_bike/ghost_bike.json b/assets/layers/ghost_bike/ghost_bike.json index 0e8e7ac46..be4b2292e 100644 --- a/assets/layers/ghost_bike/ghost_bike.json +++ b/assets/layers/ghost_bike/ghost_bike.json @@ -1,216 +1,213 @@ { - "id": "ghost_bike", - "name": { - "en": "Ghost bikes", - "nl": "Witte Fietsen", - "de": "Geisterräder", - "it": "Bici fantasma", - "fr": "VÊlos fantômes", - "eo": "Fantombiciklo", - "es": "Bicicleta blanca", - "fi": "HaamupyÃļrä", - "gl": "Bicicleta pantasma", - "hu": "EmlÊkkerÊkpÃĄr", - "ja": "ゴãƒŧ゚トバイク", - "nb_NO": "Spøkelsessykler", - "pl": "Duch roweru", - "pt_BR": "Bicicleta fantasma", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost", - "sv": "SpÃļkcykel", - "zh_Hant": "åšŊ靈喎čģŠ", - "pt": "Bicicleta fantasma" + "id": "ghost_bike", + "name": { + "en": "Ghost bikes", + "nl": "Witte Fietsen", + "de": "Geisterräder", + "it": "Bici fantasma", + "fr": "VÊlos fantômes", + "eo": "Fantombiciklo", + "es": "Bicicleta blanca", + "fi": "HaamupyÃļrä", + "gl": "Bicicleta pantasma", + "hu": "EmlÊkkerÊkpÃĄr", + "ja": "ゴãƒŧ゚トバイク", + "nb_NO": "Spøkelsessykler", + "pl": "Duch roweru", + "pt_BR": "Bicicleta fantasma", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost", + "sv": "SpÃļkcykel", + "zh_Hant": "åšŊ靈喎čģŠ", + "pt": "Bicicleta fantasma" + }, + "source": { + "osmTags": "memorial=ghost_bike" + }, + "minzoom": 0, + "title": { + "render": { + "en": "Ghost bike", + "nl": "Witte Fiets", + "de": "Geisterrad", + "it": "Bici fantasma", + "fr": "VÊlo fantôme", + "eo": "Fantombiciklo", + "es": "Bicicleta blanca", + "fi": "HaamupyÃļrä", + "gl": "Bicicleta pantasma", + "hu": "EmlÊkkerÊkpÃĄr", + "ja": "ゴãƒŧ゚トバイク", + "nb_NO": "Spøkelsessykler", + "pl": "Duch roweru", + "pt_BR": "Bicicleta fantasma", + "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost", + "sv": "SpÃļkcykel", + "zh_Hant": "åšŊ靈喎čģŠ", + "pt": "Bicicleta fantasma" }, - "source": { - "osmTags": "memorial=ghost_bike" - }, - "minzoom": 0, - "title": { - "render": { - "en": "Ghost bike", - "nl": "Witte Fiets", - "de": "Geisterrad", - "it": "Bici fantasma", - "fr": "VÊlo fantôme", - "eo": "Fantombiciklo", - "es": "Bicicleta blanca", - "fi": "HaamupyÃļrä", - "gl": "Bicicleta pantasma", - "hu": "EmlÊkkerÊkpÃĄr", - "ja": "ゴãƒŧ゚トバイク", - "nb_NO": "Spøkelsessykler", - "pl": "Duch roweru", - "pt_BR": "Bicicleta fantasma", - "ru": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost", - "sv": "SpÃļkcykel", - "zh_Hant": "åšŊ靈喎čģŠ", - "pt": "Bicicleta fantasma" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "en": "Ghost bike in the remembrance of {name}", - "nl": "Witte fiets ter nagedachtenis van {name}", - "de": "Geisterrad im Gedenken an {name}", - "it": "Bici fantasma in ricordo di {name}", - "fr": "VÊlo fantôme en souvenir de {name}" - } - } - ] - }, - "icon": "./assets/layers/ghost_bike/ghost_bike.svg", - "iconSize": "40,40,bottom", - "width": "5", - "color": "#000", - "wayHandling": 1, - "presets": [ - { - "title": { - "en": "Ghost bike", - "nl": "Witte fiets", - "de": "Geisterrad", - "it": "Bici fantasma", - "fr": "VÊlo fantôme" - }, - "tags": [ - "historic=memorial", - "memorial=ghost_bike" - ] - } - ], - "tagRenderings": [ - { - "id": "ghost-bike-explanation", - "render": { - "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.", - "nl": "Een Witte Fiets (of Spookfiets) is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat over een witgeschilderde fiets die geplaatst werd in de buurt van het ongeval.", - "de": "Ein Geisterrad ist ein Denkmal fÃŧr einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt wird.", - "it": "Una bici fantasma è il memoriale di un ciclista che è morto in un incidente stradale e che ha la forma di una bicicletta bianca piazzata in maniera stabile vicino al luogo dell’incidente.", - "fr": "Un vÊlo fantôme est un monument commÊmoratif pour un cycliste dÊcÊdÊ dans un accident de la route, sous la forme d'un vÊlo blanc placÊ en permanence près du lieu de l'accident." - } - }, - "images", - { - "question": { - "en": "Whom is remembered by this ghost bike?
Please respect privacy - only fill out the name if it is widely published or marked on the cycle. Opt to leave out the family name.
", - "nl": "Aan wie is deze witte fiets een eerbetoon?
Respecteer privacy - voeg enkel een naam toe indien die op de fiets staat of gepubliceerd is. Eventueel voeg je enkel de voornaam toe.
", - "de": "An wen erinnert dieses Geisterrad?
Bitte respektieren Sie die Privatsphäre - geben Sie den Namen nur an, wenn er weit verbreitet oder auf dem Fahrrad markiert ist. Den Familiennamen kÃļnnen Sie weglassen.
", - "it": "A chi è dedicata questa bici fantasma?
Rispetta la privacy (compila solo il nome se questo è stato ampiamente pubblicato o se è scritto sulla bici). Decidi se è il caso di non inserire il cognome.
", - "fr": "À qui est dÊdiÊ ce vÊlo fantôme ?
Veuillez respecter la vie privÊe – ajoutez le nom seulement s'il est largement publiÊ ou marquÊ sur le vÊlo. Choisissez de ne pas indiquer le nom de famille
" - }, - "render": { - "en": "In remembrance of {name}", - "nl": "Ter nagedachtenis van {name}", - "de": "Im Gedenken an {name}", - "it": "In ricordo di {name}", - "fr": "En souvenir de {name}", - "ru": "В СĐŊĐ°Đē ĐŋĐ°ĐŧŅŅ‚и Đž {name}" - }, - "freeform": { - "key": "name" - }, - "mappings": [ - { - "if": "noname=yes", - "then": { - "en": "No name is marked on the bike", - "nl": "De naam is niet aangeduid op de fiets", - "de": "Auf dem Fahrrad ist kein Name angegeben", - "it": "Nessun nome scritto sulla bici", - "fr": "Aucun nom n'est marquÊ sur le vÊlo" - } - } - ], - "id": "ghost_bike-name" - }, - { - "question": { - "en": "On what webpage can one find more information about the Ghost bike or the accident?", - "nl": "Op welke website kan men meer informatie vinden over de Witte fiets of over het ongeval?", - "de": "Auf welcher Webseite kann man mehr Informationen Ãŧber das Geisterrad oder den Unfall finden?", - "it": "In quale pagina web si possono trovare informazioni sulla bici fantasma o l’incidente?", - "fr": "Sur quelle page web peut-on trouver plus d'informations sur le VÊlo fantôme ou l'accident ?" - }, - "render": { - "en": "More information is available", - "nl": "Meer informatie", - "de": "Mehr Informationen", - "it": "Sono disponibili ulteriori informazioni", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐ° йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ", - "fr": "Plus d'informations sont disponibles", - "id": "Informasi lanjut tersedia" - }, - "freeform": { - "type": "url", - "key": "source" - }, - "id": "ghost_bike-source" - }, - { - "question": { - "en": "What is the inscription on this Ghost bike?", - "nl": "Wat is het opschrift op deze witte fiets?", - "de": "Wie lautet die Inschrift auf diesem Geisterrad?", - "it": "Che cosa è scritto sulla bici fantasma?", - "fr": "Quelle est l'inscription sur ce vÊlo fantôme ?" - }, - "render": { - "en": "{inscription}", - "nl": "{inscription}", - "de": "{inscription}", - "ca": "{inscription}", - "fr": "{inscription}", - "it": "{inscription}", - "ru": "{inscription}", - "id": "{inscription}" - }, - "freeform": { - "key": "inscription" - }, - "id": "ghost_bike-inscription" - }, - { - "question": { - "nl": "Wanneer werd deze witte fiets geplaatst?", - "en": "When was this Ghost bike installed?", - "it": "Quando è stata installata questa bici fantasma?", - "fr": "Quand ce vÊlo fantôme a-t-il ÊtÊ installÊe ?", - "de": "Wann wurde dieses Geisterrad aufgestellt?" - }, - "render": { - "nl": "Geplaatst op {start_date}", - "en": "Placed on {start_date}", - "it": "Piazzata in data {start_date}", - "fr": "PlacÊ le {start_date}", - "ru": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}" - }, - "freeform": { - "key": "start_date", - "type": "date" - }, - "id": "ghost_bike-start_date" - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "razed:memorial:=ghost_bike", - "memorial=" - ] - }, - "neededChangesets": 50 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": "./assets/layers/ghost_bike/ghost_bike.svg", - "iconSize": "40,40,bottom", - "location": [ - "point" - ] + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Ghost bike in the remembrance of {name}", + "nl": "Witte fiets ter nagedachtenis van {name}", + "de": "Geisterrad im Gedenken an {name}", + "it": "Bici fantasma in ricordo di {name}", + "fr": "VÊlo fantôme en souvenir de {name}" } + } ] + }, + "presets": [ + { + "title": { + "en": "Ghost bike", + "nl": "Witte fiets", + "de": "Geisterrad", + "it": "Bici fantasma", + "fr": "VÊlo fantôme" + }, + "tags": [ + "historic=memorial", + "memorial=ghost_bike" + ] + } + ], + "tagRenderings": [ + { + "id": "ghost-bike-explanation", + "render": { + "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.", + "nl": "Een Witte Fiets (of Spookfiets) is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat over een witgeschilderde fiets die geplaatst werd in de buurt van het ongeval.", + "de": "Ein Geisterrad ist ein Denkmal fÃŧr einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt wird.", + "it": "Una bici fantasma è il memoriale di un ciclista che è morto in un incidente stradale e che ha la forma di una bicicletta bianca piazzata in maniera stabile vicino al luogo dell’incidente.", + "fr": "Un vÊlo fantôme est un monument commÊmoratif pour un cycliste dÊcÊdÊ dans un accident de la route, sous la forme d'un vÊlo blanc placÊ en permanence près du lieu de l'accident." + } + }, + "images", + { + "question": { + "en": "Whom is remembered by this ghost bike?
Please respect privacy - only fill out the name if it is widely published or marked on the cycle. Opt to leave out the family name.
", + "nl": "Aan wie is deze witte fiets een eerbetoon?
Respecteer privacy - voeg enkel een naam toe indien die op de fiets staat of gepubliceerd is. Eventueel voeg je enkel de voornaam toe.
", + "de": "An wen erinnert dieses Geisterrad?
Bitte respektieren Sie die Privatsphäre - geben Sie den Namen nur an, wenn er weit verbreitet oder auf dem Fahrrad markiert ist. Den Familiennamen kÃļnnen Sie weglassen.
", + "it": "A chi è dedicata questa bici fantasma?
Rispetta la privacy (compila solo il nome se questo è stato ampiamente pubblicato o se è scritto sulla bici). Decidi se è il caso di non inserire il cognome.
", + "fr": "À qui est dÊdiÊ ce vÊlo fantôme ?
Veuillez respecter la vie privÊe – ajoutez le nom seulement s'il est largement publiÊ ou marquÊ sur le vÊlo. Choisissez de ne pas indiquer le nom de famille
" + }, + "render": { + "en": "In remembrance of {name}", + "nl": "Ter nagedachtenis van {name}", + "de": "Im Gedenken an {name}", + "it": "In ricordo di {name}", + "fr": "En souvenir de {name}", + "ru": "В СĐŊĐ°Đē ĐŋĐ°ĐŧŅŅ‚и Đž {name}" + }, + "freeform": { + "key": "name" + }, + "mappings": [ + { + "if": "noname=yes", + "then": { + "en": "No name is marked on the bike", + "nl": "De naam is niet aangeduid op de fiets", + "de": "Auf dem Fahrrad ist kein Name angegeben", + "it": "Nessun nome scritto sulla bici", + "fr": "Aucun nom n'est marquÊ sur le vÊlo" + } + } + ], + "id": "ghost_bike-name" + }, + { + "question": { + "en": "On what webpage can one find more information about the Ghost bike or the accident?", + "nl": "Op welke website kan men meer informatie vinden over de Witte fiets of over het ongeval?", + "de": "Auf welcher Webseite kann man mehr Informationen Ãŧber das Geisterrad oder den Unfall finden?", + "it": "In quale pagina web si possono trovare informazioni sulla bici fantasma o l’incidente?", + "fr": "Sur quelle page web peut-on trouver plus d'informations sur le VÊlo fantôme ou l'accident ?" + }, + "render": { + "en": "More information is available", + "nl": "Meer informatie", + "de": "Mehr Informationen", + "it": "Sono disponibili ulteriori informazioni", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐ° йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ", + "fr": "Plus d'informations sont disponibles", + "id": "Informasi lanjut tersedia" + }, + "freeform": { + "type": "url", + "key": "source" + }, + "id": "ghost_bike-source" + }, + { + "question": { + "en": "What is the inscription on this Ghost bike?", + "nl": "Wat is het opschrift op deze witte fiets?", + "de": "Wie lautet die Inschrift auf diesem Geisterrad?", + "it": "Che cosa è scritto sulla bici fantasma?", + "fr": "Quelle est l'inscription sur ce vÊlo fantôme ?" + }, + "render": { + "en": "{inscription}", + "nl": "{inscription}", + "de": "{inscription}", + "ca": "{inscription}", + "fr": "{inscription}", + "it": "{inscription}", + "ru": "{inscription}", + "id": "{inscription}" + }, + "freeform": { + "key": "inscription" + }, + "id": "ghost_bike-inscription" + }, + { + "question": { + "nl": "Wanneer werd deze witte fiets geplaatst?", + "en": "When was this Ghost bike installed?", + "it": "Quando è stata installata questa bici fantasma?", + "fr": "Quand ce vÊlo fantôme a-t-il ÊtÊ installÊe ?", + "de": "Wann wurde dieses Geisterrad aufgestellt?" + }, + "render": { + "nl": "Geplaatst op {start_date}", + "en": "Placed on {start_date}", + "it": "Piazzata in data {start_date}", + "fr": "PlacÊ le {start_date}", + "ru": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}", + "de": "Aufgestellt am {start_date}" + }, + "freeform": { + "key": "start_date", + "type": "date" + }, + "id": "ghost_bike-start_date" + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "razed:memorial:=ghost_bike", + "memorial=" + ] + }, + "neededChangesets": 50 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": "./assets/layers/ghost_bike/ghost_bike.svg", + "iconSize": "40,40,bottom", + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/gps_location/gps_location.json b/assets/layers/gps_location/gps_location.json index 617349405..5016797eb 100644 --- a/assets/layers/gps_location/gps_location.json +++ b/assets/layers/gps_location/gps_location.json @@ -1,15 +1,19 @@ { - "id": "gps_location", - "description": "Meta layer showing the current location of the user", - "minzoom": 0, - "source": { - "osmTags": "user:location=yes" - }, - "mapRendering": [ - { - "icon": "crosshair:#00f", - "iconSize": "40,40,center", - "location": "point" - } - ] + "id": "gps_location", + "description": "Meta layer showing the current location of the user. Add this to your theme and override the icon to change the appearance of the current location. The object will always have `id=gps` and will have _all_ the properties included in the [`Coordinates`-object](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationCoordinates) returned by the browser.", + "minzoom": 0, + "source": { + "osmTags": "id=gps", + "maxCacheAge": 0 + }, + "mapRendering": [ + { + "icon": "crosshair:#00f", + "iconSize": "40,40,center", + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/gps_location_history/gps_location_history.json b/assets/layers/gps_location_history/gps_location_history.json new file mode 100644 index 000000000..988016183 --- /dev/null +++ b/assets/layers/gps_location_history/gps_location_history.json @@ -0,0 +1,10 @@ +{ + "id": "gps_location_history", + "description": "Meta layer which contains the previous locations of the user as single points. This is mainly for technical reasons, e.g. to keep match the distance to the modified object", + "minzoom": 0, + "source": { + "osmTags": "user:location=yes", + "maxCacheAge": 604800 + }, + "mapRendering": null +} \ No newline at end of file diff --git a/assets/layers/gps_track/gps_track.json b/assets/layers/gps_track/gps_track.json new file mode 100644 index 000000000..39e7ec69c --- /dev/null +++ b/assets/layers/gps_track/gps_track.json @@ -0,0 +1,33 @@ +{ + "id": "gps_track", + "description": "Meta layer showing the previous locations of the user as single line. Add this to your theme and override the icon to change the appearance of the current location.", + "minzoom": 0, + "source": { + "osmTags": "id=location_track", + "maxCacheAge": 0 + }, + "title": { + "render": "Your travelled path" + }, + "tagRenderings": [ + { + "id": "Privacy notice", + "render": { + "en": "This is the path you've travelled since this website is opened. Don't worry - this is only visible to you and no one else. Your location data is never sent off-device without your permission." + } + }, + "export_as_gpx", + "minimap", + { + "id": "delete", + "render": "{clear_location_history()}" + } + ], + "name": "Your track", + "mapRendering": [ + { + "width": 3, + "color": "#bb000077" + } + ] +} \ No newline at end of file diff --git a/assets/layers/grass_in_parks/grass_in_parks.json b/assets/layers/grass_in_parks/grass_in_parks.json index e95a104b1..87ea8db0d 100644 --- a/assets/layers/grass_in_parks/grass_in_parks.json +++ b/assets/layers/grass_in_parks/grass_in_parks.json @@ -1,69 +1,64 @@ { - "id": "grass_in_parks", - "name": { - "nl": "Toegankelijke grasvelden in parken" - }, - "source": { - "osmTags": { - "or": [ - "name=Park Oude God", - { - "and": [ - "landuse=grass", - { - "or": [ - "access=public", - "access=yes" - ] - } - ] - } - ] - }, - "overpassScript": "way[\"leisure\"=\"park\"];node(w);is_in;area._[\"leisure\"=\"park\"];(way(area)[\"landuse\"=\"grass\"]; node(w); );" - }, - "minzoom": 0, - "title": { - "render": { - "nl": "Speelweide in een park" - }, - "mappings": [ + "id": "grass_in_parks", + "name": { + "nl": "Toegankelijke grasvelden in parken" + }, + "source": { + "osmTags": { + "or": [ + "name=Park Oude God", + { + "and": [ + "landuse=grass", { - "if": "name~*", - "then": { - "nl": "{name}" - } + "or": [ + "access=public", + "access=yes" + ] } - ] + ] + } + ] }, - "icon": "./assets/themes/playgrounds/playground.svg", - "iconSize": "40,40,center", - "width": "1", - "color": "#0f0", - "wayHandling": 2, - "tagRenderings": [ - "images", - { - "id": "explanation", - "render": "Op dit grasveld in het park mag je spelen, picnicken, zitten, ..." - }, - { - "id": "grass-in-parks-reviews", - "render": "{reviews(name, landuse=grass )}" - } - ], - "mapRendering": [ - { - "icon": "./assets/themes/playgrounds/playground.svg", - "iconSize": "40,40,center", - "location": [ - "point", - "centroid" - ] - }, - { - "color": "#0f0", - "width": "1" + "overpassScript": "way[\"leisure\"=\"park\"];node(w);is_in;area._[\"leisure\"=\"park\"];(way(area)[\"landuse\"=\"grass\"]; node(w); );" + }, + "minzoom": 0, + "title": { + "render": { + "nl": "Speelweide in een park" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "nl": "{name}" } + } ] + }, + "tagRenderings": [ + "images", + { + "id": "explanation", + "render": "Op dit grasveld in het park mag je spelen, picnicken, zitten, ..." + }, + { + "id": "grass-in-parks-reviews", + "render": "{reviews(name, landuse=grass )}" + } + ], + "mapRendering": [ + { + "icon": "./assets/themes/playgrounds/playground.svg", + "iconSize": "40,40,center", + "location": [ + "point", + "centroid" + ] + }, + { + "color": "#0f0", + "width": "1" + } + ] } \ No newline at end of file diff --git a/assets/layers/home_location/home_location.json b/assets/layers/home_location/home_location.json index 0955af79b..74276dc09 100644 --- a/assets/layers/home_location/home_location.json +++ b/assets/layers/home_location/home_location.json @@ -1,19 +1,23 @@ { - "id": "home_location", - "description": "Meta layer showing the home location of the user", - "minzoom": 0, - "source": { - "osmTags": "user:home=yes" - }, - "mapRendering": [ - { - "icon": { - "render": "circle:white;./assets/svg/home.svg" - }, - "iconSize": { - "render": "20,20,center" - }, - "location": "point" - } - ] + "id": "home_location", + "description": "Meta layer showing the home location of the user. The home location can be set in the [profile settings](https://www.openstreetmap.org/profile/edit) of OpenStreetMap.", + "minzoom": 0, + "source": { + "osmTags": "user:home=yes", + "maxCacheAge": 0 + }, + "mapRendering": [ + { + "icon": { + "render": "circle:white;./assets/svg/home.svg" + }, + "iconSize": { + "render": "20,20,center" + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/information_board/information_board.json b/assets/layers/information_board/information_board.json index 630461e50..b482ff5b3 100644 --- a/assets/layers/information_board/information_board.json +++ b/assets/layers/information_board/information_board.json @@ -1,90 +1,81 @@ { - "id": "information_board", - "name": { - "nl": "Informatieborden", - "en": "Information boards", - "it": "Pannelli informativi", - "fr": "Panneaux d'informations", - "de": "Informationstafeln", - "ru": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đĩ Ņ‰Đ¸Ņ‚Ņ‹" + "id": "information_board", + "name": { + "nl": "Informatieborden", + "en": "Information boards", + "it": "Pannelli informativi", + "fr": "Panneaux d'informations", + "de": "Informationstafeln", + "ru": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đĩ Ņ‰Đ¸Ņ‚Ņ‹" + }, + "minzoom": 12, + "source": { + "osmTags": { + "and": [ + "information=board" + ] + } + }, + "title": { + "render": { + "nl": "Informatiebord", + "en": "Information board", + "it": "Pannello informativo", + "fr": "Panneau d'informations", + "de": "Informationstafel", + "ru": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" + } + }, + "tagRenderings": [ + "images" + ], + "presets": [ + { + "tags": [ + "tourism=information", + "information=board" + ], + "title": { + "nl": "informatiebord", + "en": "information board", + "it": "pannello informativo", + "fr": "panneau d'informations", + "de": "informationstafel", + "ru": "иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:tourism:=information", + "tourism=", + "razed:information=board", + "information=" + ] }, - "minzoom": 12, - "source": { - "osmTags": { - "and": [ - "information=board" - ] - } - }, - "title": { - "render": { - "nl": "Informatiebord", - "en": "Information board", - "it": "Pannello informativo", - "fr": "Panneau d'informations", - "de": "Informationstafel", - "ru": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" - } - }, - "tagRenderings": [ - "images" - ], - "icon": { + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/information_board/board.svg" - }, - "iconSize": { + }, + "iconSize": { "render": "40,40,center" + }, + "location": [ + "point" + ] }, - "color": { + { + "color": { "render": "#00f" - }, - "presets": [ - { - "tags": [ - "tourism=information", - "information=board" - ], - "title": { - "nl": "informatiebord", - "en": "information board", - "it": "pannello informativo", - "fr": "panneau d'informations", - "de": "informationstafel", - "ru": "иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" - } - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:tourism:=information", - "tourism=", - "razed:information=board", - "information=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/information_board/board.svg" - }, - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point" - ] - }, - { - "color": { - "render": "#00f" - } - } - ] + } + } + ] } \ No newline at end of file diff --git a/assets/layers/left_right_style/left_right_style.json b/assets/layers/left_right_style/left_right_style.json index 91fd76b79..9b8f82d13 100644 --- a/assets/layers/left_right_style/left_right_style.json +++ b/assets/layers/left_right_style/left_right_style.json @@ -1,35 +1,35 @@ { - "id": "left_right_style", - "description": "Special meta-style which will show one single line, either on the left or on the right depending on the id. This is used in the small popups with left_right roads", - "source": { - "osmTags": { - "or": [ - "id=left", - "id=right" - ] - } - }, - "mapRendering": [ - { - "width": 15, - "color": { - "render": "#ff000088", - "mappings": [ - { - "if": "id=left", - "then": "#0000ff88" - } - ] - }, - "offset": { - "render": "-15", - "mappings": [ - { - "if": "id=right", - "then": "15" - } - ] - } - } - ] + "id": "left_right_style", + "description": "Special meta-style which will show one single line, either on the left or on the right depending on the id. This is used in the small popups with left_right roads. Cannot be included in a theme", + "source": { + "osmTags": { + "or": [ + "id=left", + "id=right" + ] + } + }, + "mapRendering": [ + { + "width": 15, + "color": { + "render": "#ff000088", + "mappings": [ + { + "if": "id=left", + "then": "#0000ff88" + } + ] + }, + "offset": { + "render": "-15", + "mappings": [ + { + "if": "id=right", + "then": "15" + } + ] + } + } + ] } \ No newline at end of file diff --git a/assets/layers/map/map.json b/assets/layers/map/map.json index dbf28faf7..464ed658f 100644 --- a/assets/layers/map/map.json +++ b/assets/layers/map/map.json @@ -1,295 +1,254 @@ { - "id": "map", - "name": { - "en": "Maps", - "nl": "Kaarten", - "it": "Mappe", - "ru": "КаŅ€Ņ‚Ņ‹", - "fr": "Cartes", - "de": "Karten" - }, - "minzoom": 12, - "source": { - "osmTags": { - "or": [ - "tourism=map", - "information=map" - ] - } - }, - "title": { - "render": { - "en": "Map", - "nl": "Kaart", - "it": "Mappa", - "ru": "КаŅ€Ņ‚Đ°", - "fr": "Carte", - "de": "Karte" - } - }, - "description": { - "en": "A map, meant for tourists which is permanently installed in the public space", - "nl": "Een permantent geinstalleerde kaart", - "it": "Una mappa, destinata ai turisti e che è sistemata in maniera permanente in uno spazio pubblico", - "fr": "Une carte, destinÊe aux touristes, installÊe en permanence dans l'espace public", - "de": "Eine Karte, die fÃŧr Touristen gedacht ist und dauerhaft im Ãļffentlichen Raum aufgestellt ist" - }, - "tagRenderings": [ - "images", + "id": "map", + "name": { + "en": "Maps", + "nl": "Kaarten", + "it": "Mappe", + "ru": "КаŅ€Ņ‚Ņ‹", + "fr": "Cartes", + "de": "Karten" + }, + "minzoom": 12, + "source": { + "osmTags": { + "or": [ + "tourism=map", + "information=map" + ] + } + }, + "title": { + "render": { + "en": "Map", + "nl": "Kaart", + "it": "Mappa", + "ru": "КаŅ€Ņ‚Đ°", + "fr": "Carte", + "de": "Karte" + } + }, + "description": { + "en": "A map, meant for tourists which is permanently installed in the public space", + "nl": "Een permantent geinstalleerde kaart", + "it": "Una mappa, destinata ai turisti e che è sistemata in maniera permanente in uno spazio pubblico", + "fr": "Une carte, destinÊe aux touristes, installÊe en permanence dans l'espace public", + "de": "Eine Karte, die fÃŧr Touristen gedacht ist und dauerhaft im Ãļffentlichen Raum aufgestellt ist" + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "On which data is this map based?", + "nl": "Op welke data is deze kaart gebaseerd?", + "it": "Su quali dati si basa questa mappa?", + "fr": "Sur quelles donnÊes cette carte est-elle basÊe ?", + "de": "Auf welchen Daten basiert diese Karte?" + }, + "mappings": [ { - "question": { - "en": "On which data is this map based?", - "nl": "Op welke data is deze kaart gebaseerd?", - "it": "Su quali dati si basa questa mappa?", - "fr": "Sur quelles donnÊes cette carte est-elle basÊe ?", - "de": "Auf welchen Daten basiert diese Karte?" - }, - "mappings": [ - { - "if": { - "and": [ - "map_source=OpenStreetMap", - "not:map_source=" - ] - }, - "then": { - "en": "This map is based on OpenStreetMap", - "nl": "Deze kaart is gebaseerd op OpenStreetMap", - "it": "Questa mappa si basa su OpenStreetMap", - "ru": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° OpenStreetMap", - "fr": "Cette carte est basÊe sur OpenStreetMap", - "de": "Diese Karte basiert auf OpenStreetMap" - } - } - ], - "freeform": { - "key": "map_source" - }, - "render": { - "en": "This map is based on {map_source}", - "nl": "Deze kaart is gebaseerd op {map_source}", - "it": "Questa mappa si basa su {map_source}", - "ru": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° {map_source}", - "fr": "Cette carte est basÊe sur {map_source}", - "de": "Diese Karte basiert auf {map_source}" - }, - "id": "map-map_source" + "if": { + "and": [ + "map_source=OpenStreetMap", + "not:map_source=" + ] + }, + "then": { + "en": "This map is based on OpenStreetMap", + "nl": "Deze kaart is gebaseerd op OpenStreetMap", + "it": "Questa mappa si basa su OpenStreetMap", + "ru": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° OpenStreetMap", + "fr": "Cette carte est basÊe sur OpenStreetMap", + "de": "Diese Karte basiert auf OpenStreetMap" + } + } + ], + "freeform": { + "key": "map_source" + }, + "render": { + "en": "This map is based on {map_source}", + "nl": "Deze kaart is gebaseerd op {map_source}", + "it": "Questa mappa si basa su {map_source}", + "ru": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° {map_source}", + "fr": "Cette carte est basÊe sur {map_source}", + "de": "Diese Karte basiert auf {map_source}" + }, + "id": "map-map_source" + }, + { + "id": "map-attribution", + "question": { + "en": "Is the OpenStreetMap-attribution given?", + "nl": "Is de attributie voor OpenStreetMap aanwezig?", + "it": "L’attribuzione a OpenStreetMap è presente?", + "de": "Ist die OpenStreetMap-Attribution vorhanden?", + "fr": "L’attribution à OpenStreetMap est elle-prÊsente ?" + }, + "mappings": [ + { + "if": { + "and": [ + "map_source:attribution=yes" + ] + }, + "then": { + "en": "OpenStreetMap is clearly attributed, including the ODBL-license", + "nl": "De OpenStreetMap-attributie is duidelijk aangegeven, zelf met vermelding van \"ODBL\" ", + "it": "L’attribuzione a OpenStreetMap è chiaramente specificata, inclusa la licenza ODBL", + "de": "OpenStreetMap ist eindeutig attributiert, einschließlich der ODBL-Lizenz", + "fr": "L’attribution est clairement inscrite ainsi que la licence ODBL" + } }, { - "id": "map-attribution", - "question": { - "en": "Is the OpenStreetMap-attribution given?", - "nl": "Is de attributie voor OpenStreetMap aanwezig?", - "it": "L’attribuzione a OpenStreetMap è presente?", - "de": "Ist die OpenStreetMap-Attribution vorhanden?", - "fr": "L’attribution à OpenStreetMap est elle-prÊsente ?" - }, - "mappings": [ - { - "if": { - "and": [ - "map_source:attribution=yes" - ] - }, - "then": { - "en": "OpenStreetMap is clearly attributed, including the ODBL-license", - "nl": "De OpenStreetMap-attributie is duidelijk aangegeven, zelf met vermelding van \"ODBL\" ", - "it": "L’attribuzione a OpenStreetMap è chiaramente specificata, inclusa la licenza ODBL", - "de": "OpenStreetMap ist eindeutig attributiert, einschließlich der ODBL-Lizenz", - "fr": "L’attribution est clairement inscrite ainsi que la licence ODBL" - } - }, - { - "if": { - "and": [ - "map_source:attribution=incomplete" - ] - }, - "then": { - "en": "OpenStreetMap is clearly attributed, but the license is not mentioned", - "nl": "OpenStreetMap is duidelijk aangegeven, maar de licentievermelding ontbreekt", - "it": "L’attribuzione a OpenStreetMap è chiaramente specificata ma la licenza non compare", - "de": "OpenStreetMap ist eindeutig attributiert, aber die Lizenz wird nicht erwähnt", - "fr": "L’attribution est clairement inscrite mais la licence est absente" - } - }, - { - "if": { - "and": [ - "map_source:attribution=sticker" - ] - }, - "then": { - "en": "OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it", - "nl": "OpenStreetMap was oorspronkelijk niet aangeduid, maar iemand plaatste er een sticker", - "it": "Non era presente alcun cenno a OpenStreetMap ma qualcuno vi ha attaccato un adesivo di OpenStreetMap", - "de": "OpenStreetMap wurde nicht erwähnt, aber jemand hat einen OpenStreetMap-Aufkleber darauf geklebt", - "fr": "OpenStreetMap n’est pas mentionnÊ, un sticker OpenStreetMap a ÊtÊ collÊ" - } - }, - { - "if": { - "and": [ - "map_source:attribution=none" - ] - }, - "then": { - "en": "There is no attribution at all", - "nl": "Er is geen attributie", - "it": "Non c’è alcuna attribuzione", - "fr": "Il n'y a aucune attribution", - "de": "Es gibt Ãŧberhaupt keine Namensnennung" - } - }, - { - "if": { - "and": [ - "map_source:attribution=no" - ] - }, - "then": { - "nl": "Er is geen attributie", - "en": "There is no attribution at all", - "it": "Non c’è alcuna attribuzione", - "fr": "Il n'y a aucune attribution", - "de": "Es gibt Ãŧberhaupt keine Namensnennung" - }, - "hideInAnswer": true - } - ], - "condition": { - "or": [ - "map_source~(O|)pen(S|s)treet(M|m)ap", - "map_source=osm", - "map_source=OSM" - ] - } + "if": { + "and": [ + "map_source:attribution=incomplete" + ] + }, + "then": { + "en": "OpenStreetMap is clearly attributed, but the license is not mentioned", + "nl": "OpenStreetMap is duidelijk aangegeven, maar de licentievermelding ontbreekt", + "it": "L’attribuzione a OpenStreetMap è chiaramente specificata ma la licenza non compare", + "de": "OpenStreetMap ist eindeutig attributiert, aber die Lizenz wird nicht erwähnt", + "fr": "L’attribution est clairement inscrite mais la licence est absente" + } + }, + { + "if": { + "and": [ + "map_source:attribution=sticker" + ] + }, + "then": { + "en": "OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it", + "nl": "OpenStreetMap was oorspronkelijk niet aangeduid, maar iemand plaatste er een sticker", + "it": "Non era presente alcun cenno a OpenStreetMap ma qualcuno vi ha attaccato un adesivo di OpenStreetMap", + "de": "OpenStreetMap wurde nicht erwähnt, aber jemand hat einen OpenStreetMap-Aufkleber darauf geklebt", + "fr": "OpenStreetMap n’est pas mentionnÊ, un sticker OpenStreetMap a ÊtÊ collÊ" + } + }, + { + "if": { + "and": [ + "map_source:attribution=none" + ] + }, + "then": { + "en": "There is no attribution at all", + "nl": "Er is geen attributie", + "it": "Non c’è alcuna attribuzione", + "fr": "Il n'y a aucune attribution", + "de": "Es gibt Ãŧberhaupt keine Namensnennung" + } + }, + { + "if": { + "and": [ + "map_source:attribution=no" + ] + }, + "then": { + "nl": "Er is geen attributie", + "en": "There is no attribution at all", + "it": "Non c’è alcuna attribuzione", + "fr": "Il n'y a aucune attribution", + "de": "Es gibt Ãŧberhaupt keine Namensnennung" + }, + "hideInAnswer": true } - ], - "icon": { + ], + "condition": { + "or": [ + "map_source~(O|)pen(S|s)treet(M|m)ap", + "map_source=osm", + "map_source=OSM" + ] + } + } + ], + "presets": [ + { + "tags": [ + "tourism=map" + ], + "title": { + "en": "Map", + "nl": "Kaart", + "it": "Mappa", + "ru": "КаŅ€Ņ‚Đ°", + "fr": "Carte", + "de": "Karte" + }, + "description": { + "en": "Add a missing map", + "nl": "Voeg een ontbrekende kaart toe", + "it": "Aggiungi una mappa mancante", + "fr": "Ajouter une carte manquante", + "de": "Fehlende Karte hinzufÃŧgen" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "razed:tourism:=information", + "tourism=" + ] + }, + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/map/map.svg", "mappings": [ - { - "if": { - "and": [ - "map_source=OpenStreetMap", - "map_source:attribution=sticker" - ] - }, - "then": "./assets/layers/map/map-stickered.svg" + { + "if": { + "and": [ + "map_source=OpenStreetMap", + "map_source:attribution=sticker" + ] }, - { - "if": { - "and": [ - "map_source=OpenStreetMap", - "map_source:attribution=yes" - ] - }, - "then": "./assets/layers/map/osm-logo-white-bg.svg" + "then": "./assets/layers/map/map-stickered.svg" + }, + { + "if": { + "and": [ + "map_source=OpenStreetMap", + "map_source:attribution=yes" + ] }, - { - "if": { - "and": [ - "map_source=OpenStreetMap" - ] - }, - "then": "./assets/layers/map/osm-logo-buggy-attr.svg" - } + "then": "./assets/layers/map/osm-logo-white-bg.svg" + }, + { + "if": { + "and": [ + "map_source=OpenStreetMap" + ] + }, + "then": "./assets/layers/map/osm-logo-buggy-attr.svg" + } ] - }, - "width": { - "render": "8" - }, - "iconSize": { + }, + "iconSize": { "render": "50,50,center" + }, + "location": [ + "point", + "centroid" + ] }, - "color": { + { + "color": { "render": "#00f" - }, - "presets": [ - { - "tags": [ - "tourism=map" - ], - "title": { - "en": "Map", - "nl": "Kaart", - "it": "Mappa", - "ru": "КаŅ€Ņ‚Đ°", - "fr": "Carte", - "de": "Karte" - }, - "description": { - "en": "Add a missing map", - "nl": "Voeg een ontbrekende kaart toe", - "it": "Aggiungi una mappa mancante", - "fr": "Ajouter une carte manquante", - "de": "Fehlende Karte hinzufÃŧgen" - } - } - ], - "wayHandling": 2, - "deletion": { - "softDeletionTags": { - "and": [ - "razed:tourism:=information", - "tourism=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/map/map.svg", - "mappings": [ - { - "if": { - "and": [ - "map_source=OpenStreetMap", - "map_source:attribution=sticker" - ] - }, - "then": "./assets/layers/map/map-stickered.svg" - }, - { - "if": { - "and": [ - "map_source=OpenStreetMap", - "map_source:attribution=yes" - ] - }, - "then": "./assets/layers/map/osm-logo-white-bg.svg" - }, - { - "if": { - "and": [ - "map_source=OpenStreetMap" - ] - }, - "then": "./assets/layers/map/osm-logo-buggy-attr.svg" - } - ] - }, - "iconSize": { - "render": "50,50,center" - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#00f" - }, - "width": { - "render": "8" - } - } - ] + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/nature_reserve/nature_reserve.json b/assets/layers/nature_reserve/nature_reserve.json index 8e6010525..ca6baadd2 100644 --- a/assets/layers/nature_reserve/nature_reserve.json +++ b/assets/layers/nature_reserve/nature_reserve.json @@ -1,489 +1,479 @@ { - "id": "nature_reserve", - "name": { - "nl": "Natuurgebied" - }, - "minzoom": 12, - "source": { - "osmTags": { - "and": [ - { - "or": [ - "leisure=nature_reserve", - { - "and": [ - "protect_class!=98", - "boundary=protected_area" - ] - } - ] - } - ] - } - }, - "title": { - "render": { - "nl": "Natuurgebied" - }, - "mappings": [ + "id": "nature_reserve", + "name": { + "nl": "Natuurgebied" + }, + "minzoom": 12, + "source": { + "osmTags": { + "and": [ + { + "or": [ + "leisure=nature_reserve", { - "if": { - "and": [ - "name:nl~*" - ] - }, - "then": { - "nl": "{name:nl}" - } - }, - { - "if": { - "and": [ - "name~*" - ] - }, - "then": { - "nl": "{name}" - } - } - ] - }, - "description": { - "nl": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid." - }, - "tagRenderings": [ - "images", - { - "render": { - "nl": "De toegankelijkheid van dit gebied is: {access:description}" - }, - "question": { - "nl": "Is dit gebied toegankelijk?" - }, - "freeform": { - "key": "access:description" - }, - "mappings": [ - { - "if": { - "and": [ - "access=yes", - "fee=" - ] - }, - "then": { - "nl": "Vrij toegankelijk" - } - }, - { - "if": { - "and": [ - "access=no", - "fee=" - ] - }, - "then": { - "nl": "Niet toegankelijk" - } - }, - { - "if": { - "and": [ - "access=private", - "fee=" - ] - }, - "then": { - "nl": "Niet toegankelijk, want privÊgebied" - } - }, - { - "if": { - "and": [ - "access=permissive", - "fee=" - ] - }, - "then": { - "nl": "Toegankelijk, ondanks dat het privegebied is" - } - }, - { - "if": { - "and": [ - "access=guided", - "fee=" - ] - }, - "then": { - "nl": "Enkel toegankelijk met een gids of tijdens een activiteit" - } - }, - { - "if": { - "and": [ - "access=yes", - "fee=yes" - ] - }, - "then": { - "nl": "Toegankelijk mits betaling" - } - } - ], - "id": "Access tag" - }, - { - "render": { - "nl": "Beheer door {operator}" - }, - "question": { - "nl": "Wie beheert dit gebied?" - }, - "freeform": { - "key": "operator" - }, - "mappings": [ - { - "if": { - "and": [ - "operator=Natuurpunt" - ] - }, - "then": { - "nl": "Dit gebied wordt beheerd door Natuurpunt" - } - }, - { - "if": { - "and": [ - "operator~(n|N)atuurpunt.*" - ] - }, - "then": { - "nl": "Dit gebied wordt beheerd door {operator}" - }, - "hideInAnswer": true - }, - { - "if": { - "and": [ - "operator=Agentschap Natuur en Bos" - ] - }, - "then": { - "nl": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" - } - } - ], - "id": "Operator tag" - }, - { - "render": { - "nl": "Dit gebied heet {name:nl}" - }, - "question": { - "nl": "Wat is de Nederlandstalige naam van dit gebied?" - }, - "freeform": { - "key": "name:nl" - }, - "condition": { - "and": [ - "name:nl~*" - ] - }, - "id": "Name:nl-tag" - }, - { - "render": { - "nl": "Dit gebied heet {name}" - }, - "question": { - "nl": "Wat is de naam van dit gebied?" - }, - "freeform": { - "key": "name", - "addExtraTags": [ - "noname=" - ] - }, - "condition": { - "and": [ - "name:nl=" - ] - }, - "mappings": [ - { - "if": { - "and": [ - "noname=yes", - "name=" - ] - }, - "then": { - "nl": "Dit gebied heeft geen naam" - } - } - ], - "id": "Name tag" - }, - { - "question": { - "nl": "Zijn honden toegelaten in dit gebied?", - "en": "Are dogs allowed in this nature reserve?", - "it": "I cani sono ammessi in questa riserva naturale?", - "fr": "Les chiens sont-ils autorisÊs dans cette rÊserve naturelle ?", - "de": "Sind Hunde in diesem Naturschutzgebiet erlaubt?" - }, - "condition": { - "or": [ - "access=yes", - "access=permissive", - "access=guided" - ] - }, - "mappings": [ - { - "if": "dog=leashed", - "then": { - "nl": "Honden moeten aan de leiband", - "en": "Dogs have to be leashed", - "it": "I cani devono essere tenuti al guinzaglio", - "fr": "Les chiens doivent ÃĒtre tenus en laisse", - "de": "Hunde mÃŧssen angeleint sein" - } - }, - { - "if": "dog=no", - "then": { - "nl": "Honden zijn niet toegestaan", - "en": "No dogs allowed", - "it": "I cani non sono ammessi", - "fr": "Chiens interdits", - "de": "Hunde sind nicht erlaubt" - } - }, - { - "if": "dog=yes", - "then": { - "nl": "Honden zijn welkom en mogen vrij rondlopen", - "en": "Dogs are allowed to roam freely", - "it": "I cani sono liberi di girare liberi", - "fr": "Les chiens sont autorisÊs à se promener librement", - "de": "Hunde dÃŧrfen frei herumlaufen" - } - } - ], - "id": "Dogs?" - }, - { - "question": { - "en": "On which webpage can one find more information about this nature reserve?", - "nl": "Op welke webpagina kan men meer informatie vinden over dit natuurgebied?", - "it": "In quale pagina web si possono trovare altre informazioni riguardanti questa riserva naturale?", - "fr": "Sur quelle page web peut-on trouver plus d'informations sur cette rÊserve naturelle ?", - "de": "Auf welcher Webseite kann man mehr Informationen Ãŧber dieses Naturschutzgebiet finden?" - }, - "render": "{website}", - "freeform": { - "key": "website", - "type": "url" - }, - "id": "Website" - }, - { - "question": { - "nl": "Wie is de conservator van dit gebied?
Respecteer privacy - geef deze naam enkel als die duidelijk is gepubliceerd", - "en": "Whom is the curator of this nature reserve?
Respect privacy - only fill out a name if this is widely published", - "it": "Chi è il curatore di questa riserva naturale?
Rispetta la privacy (scrivi il nome solo se questo è noto pubblicamente)", - "fr": "Qui est en charge de la conservation de la rÊserve ?
À ne remplir seulement que si le nom est diffusÊ au public", - "de": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist" - }, - "render": { - "nl": "{curator} is de beheerder van dit gebied", - "en": "{curator} is the curator of this nature reserve", - "it": "{curator} è il curatore di questa riserva naturale", - "fr": "{curator} est en charge de la conservation de la rÊserve" - }, - "freeform": { - "key": "curator", - "type": "string" - }, - "id": "Curator" - }, - { - "question": { - "nl": "Waar kan men naartoe emailen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke emailadressen als deze elders zijn gepubliceerd", - "en": "What email adress can one send to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal email address if this is widely published", - "it": "Qual è l’indirizzo email a cui scrivere per fare domande o segnalare problemi su questa riserva naturale?
Rispetta la privacy (compila l’indirizzo email personale solo se è stato reso pubblico)", - "fr": "À quelle adresse courriel peut-on envoyer des questions et des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez une adresse Êlectronique personnelle seulement si celle-ci est largement publiÊe" - }, - "render": { - "nl": "{email}", - "en": "{email}", - "ca": "{email}", - "de": "{email}", - "fr": "{email}", - "it": "{email}", - "ru": "{email}", - "id": "{email}" - }, - "freeform": { - "key": "email", - "type": "email" - }, - "id": "Email" - }, - { - "question": { - "nl": "Waar kan men naartoe bellen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke telefoonnummers als deze elders zijn gepubliceerd", - "en": "What phone number can one call to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal phone number address if this is widely published", - "it": "Quale numero di telefono comporre per fare domande o segnalare problemi riguardanti questa riserva naturale?br/>Rispetta la privacy (inserisci il numero di telefono privato solo se questo è noto pubblicamente)", - "fr": "Quel numÊro de tÊlÊphone peut-on appeler pour poser des questions et rÊsoudre des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez un numÊro de tÊlÊphone personnel seulement si celui-ci est largement publiÊ" - }, - "render": { - "nl": "{phone}", - "en": "{phone}", - "ca": "{phone}", - "de": "{phone}", - "fr": "{phone}", - "it": "{phone}", - "ru": "{phone}", - "id": "{phone}" - }, - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "phone" - }, - { - "render": { - "nl": "Extra info: {description}" - }, - "freeform": { - "key": "description" - }, - "id": "Non-editable description {description}" - }, - { - "question": "Is er extra info die je kwijt wil?", - "render": { - "nl": "Extra info: {description:0}" - }, - "freeform": { - "key": "description:0" - }, - "id": "Editable description {description:0}" - }, - { - "render": { - "en": "Surface area: {_surface:ha}Ha", - "nl": "Totale oppervlakte: {_surface:ha}Ha", - "it": "Area: {_surface:ha} ha", - "fr": "Superficie : {_surface:ha} ha", - "de": "Grundfläche: {_surface:ha}ha" - }, - "mappings": [ - { - "if": "_surface:ha=0", - "then": { - "*": "" - } - } - ], - "id": "Surface area" - }, - "wikipedia" - ], - "wayHandling": 2, - "icon": { - "render": "./assets/layers/nature_reserve/nature_reserve.svg" - }, - "width": { - "render": "1" - }, - "iconSize": { - "render": "50,50,center" - }, - "color": { - "render": "#3c3" - }, - "presets": [ - { - "tags": [ - "leisure=nature_reserve", - "fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen" - ], - "title": { - "nl": "natuurreservaat" - }, - "description": { - "nl": "Voeg een ontbrekend, erkend natuurreservaat toe, bv. een gebied dat beheerd wordt door het ANB of natuurpunt" + "and": [ + "protect_class!=98", + "boundary=protected_area" + ] } + ] } - ], - "filter": [ - { - "id": "access", - "options": [ - { - "question": { - "nl": "Vrij te bezoeken" - }, - "osmTags": "access=yes" - } - ] + ] + } + }, + "title": { + "render": { + "nl": "Natuurgebied" + }, + "mappings": [ + { + "if": { + "and": [ + "name:nl~*" + ] }, - { - "id": "dogs", - "options": [ - { - "question": { - "nl": "Alle natuurgebieden" - } - }, - { - "question": { - "nl": "Honden mogen vrij rondlopen" - }, - "osmTags": "dog=yes" - }, - { - "question": { - "nl": "Honden welkom aan de leiband" - }, - "osmTags": { - "or": [ - "dog=yes", - "dog=leashed" - ] - } - } - ] + "then": { + "nl": "{name:nl}" } - ], - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/nature_reserve/nature_reserve.svg" - }, - "iconSize": { - "render": "50,50,center" - }, - "location": [ - "point", - "centroid" - ] + }, + { + "if": { + "and": [ + "name~*" + ] }, - { - "color": { - "render": "#3c3" - }, - "width": { - "render": "1" - } + "then": { + "nl": "{name}" } + } ] + }, + "description": { + "nl": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid." + }, + "tagRenderings": [ + "images", + { + "render": { + "nl": "De toegankelijkheid van dit gebied is: {access:description}" + }, + "question": { + "nl": "Is dit gebied toegankelijk?" + }, + "freeform": { + "key": "access:description" + }, + "mappings": [ + { + "if": { + "and": [ + "access=yes", + "fee=" + ] + }, + "then": { + "nl": "Vrij toegankelijk" + } + }, + { + "if": { + "and": [ + "access=no", + "fee=" + ] + }, + "then": { + "nl": "Niet toegankelijk" + } + }, + { + "if": { + "and": [ + "access=private", + "fee=" + ] + }, + "then": { + "nl": "Niet toegankelijk, want privÊgebied" + } + }, + { + "if": { + "and": [ + "access=permissive", + "fee=" + ] + }, + "then": { + "nl": "Toegankelijk, ondanks dat het privegebied is" + } + }, + { + "if": { + "and": [ + "access=guided", + "fee=" + ] + }, + "then": { + "nl": "Enkel toegankelijk met een gids of tijdens een activiteit" + } + }, + { + "if": { + "and": [ + "access=yes", + "fee=yes" + ] + }, + "then": { + "nl": "Toegankelijk mits betaling" + } + } + ], + "id": "Access tag" + }, + { + "render": { + "nl": "Beheer door {operator}" + }, + "question": { + "nl": "Wie beheert dit gebied?" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": { + "and": [ + "operator=Natuurpunt" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door Natuurpunt" + } + }, + { + "if": { + "and": [ + "operator~(n|N)atuurpunt.*" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door {operator}" + }, + "hideInAnswer": true + }, + { + "if": { + "and": [ + "operator=Agentschap Natuur en Bos" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" + } + } + ], + "id": "Operator tag" + }, + { + "render": { + "nl": "Dit gebied heet {name:nl}" + }, + "question": { + "nl": "Wat is de Nederlandstalige naam van dit gebied?" + }, + "freeform": { + "key": "name:nl" + }, + "condition": { + "and": [ + "name:nl~*" + ] + }, + "id": "Name:nl-tag" + }, + { + "render": { + "nl": "Dit gebied heet {name}" + }, + "question": { + "nl": "Wat is de naam van dit gebied?" + }, + "freeform": { + "key": "name", + "addExtraTags": [ + "noname=" + ] + }, + "condition": { + "and": [ + "name:nl=" + ] + }, + "mappings": [ + { + "if": { + "and": [ + "noname=yes", + "name=" + ] + }, + "then": { + "nl": "Dit gebied heeft geen naam" + } + } + ], + "id": "Name tag" + }, + { + "question": { + "nl": "Zijn honden toegelaten in dit gebied?", + "en": "Are dogs allowed in this nature reserve?", + "it": "I cani sono ammessi in questa riserva naturale?", + "fr": "Les chiens sont-ils autorisÊs dans cette rÊserve naturelle ?", + "de": "Sind Hunde in diesem Naturschutzgebiet erlaubt?" + }, + "condition": { + "or": [ + "access=yes", + "access=permissive", + "access=guided" + ] + }, + "mappings": [ + { + "if": "dog=leashed", + "then": { + "nl": "Honden moeten aan de leiband", + "en": "Dogs have to be leashed", + "it": "I cani devono essere tenuti al guinzaglio", + "fr": "Les chiens doivent ÃĒtre tenus en laisse", + "de": "Hunde mÃŧssen angeleint sein" + } + }, + { + "if": "dog=no", + "then": { + "nl": "Honden zijn niet toegestaan", + "en": "No dogs allowed", + "it": "I cani non sono ammessi", + "fr": "Chiens interdits", + "de": "Hunde sind nicht erlaubt" + } + }, + { + "if": "dog=yes", + "then": { + "nl": "Honden zijn welkom en mogen vrij rondlopen", + "en": "Dogs are allowed to roam freely", + "it": "I cani sono liberi di girare liberi", + "fr": "Les chiens sont autorisÊs à se promener librement", + "de": "Hunde dÃŧrfen frei herumlaufen" + } + } + ], + "id": "Dogs?" + }, + { + "question": { + "en": "On which webpage can one find more information about this nature reserve?", + "nl": "Op welke webpagina kan men meer informatie vinden over dit natuurgebied?", + "it": "In quale pagina web si possono trovare altre informazioni riguardanti questa riserva naturale?", + "fr": "Sur quelle page web peut-on trouver plus d'informations sur cette rÊserve naturelle ?", + "de": "Auf welcher Webseite kann man mehr Informationen Ãŧber dieses Naturschutzgebiet finden?" + }, + "render": "{website}", + "freeform": { + "key": "website", + "type": "url" + }, + "id": "Website" + }, + { + "question": { + "nl": "Wie is de conservator van dit gebied?
Respecteer privacy - geef deze naam enkel als die duidelijk is gepubliceerd", + "en": "Whom is the curator of this nature reserve?
Respect privacy - only fill out a name if this is widely published", + "it": "Chi è il curatore di questa riserva naturale?
Rispetta la privacy (scrivi il nome solo se questo è noto pubblicamente)", + "fr": "Qui est en charge de la conservation de la rÊserve ?
À ne remplir seulement que si le nom est diffusÊ au public", + "de": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist" + }, + "render": { + "nl": "{curator} is de beheerder van dit gebied", + "en": "{curator} is the curator of this nature reserve", + "it": "{curator} è il curatore di questa riserva naturale", + "fr": "{curator} est en charge de la conservation de la rÊserve", + "de": "{curator} ist der Pfleger dieses Naturschutzgebietes" + }, + "freeform": { + "key": "curator", + "type": "string" + }, + "id": "Curator" + }, + { + "question": { + "nl": "Waar kan men naartoe emailen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke emailadressen als deze elders zijn gepubliceerd", + "en": "What email adress can one send to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal email address if this is widely published", + "it": "Qual è l’indirizzo email a cui scrivere per fare domande o segnalare problemi su questa riserva naturale?
Rispetta la privacy (compila l’indirizzo email personale solo se è stato reso pubblico)", + "fr": "À quelle adresse courriel peut-on envoyer des questions et des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez une adresse Êlectronique personnelle seulement si celle-ci est largement publiÊe", + "de": "An welche Email-Adresse kann man sich bei Fragen und Problemen zu diesem Naturschutzgebiet wenden?
Respektieren Sie die Privatsphäre - geben Sie nur dann eine persÃļnliche Email-Adresse an, wenn diese allgemein bekannt ist" + }, + "render": { + "nl": "{email}", + "en": "{email}", + "ca": "{email}", + "de": "{email}", + "fr": "{email}", + "it": "{email}", + "ru": "{email}", + "id": "{email}" + }, + "freeform": { + "key": "email", + "type": "email" + }, + "id": "Email" + }, + { + "question": { + "nl": "Waar kan men naartoe bellen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke telefoonnummers als deze elders zijn gepubliceerd", + "en": "What phone number can one call to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal phone number address if this is widely published", + "it": "Quale numero di telefono comporre per fare domande o segnalare problemi riguardanti questa riserva naturale?br/>Rispetta la privacy (inserisci il numero di telefono privato solo se questo è noto pubblicamente)", + "fr": "Quel numÊro de tÊlÊphone peut-on appeler pour poser des questions et rÊsoudre des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez un numÊro de tÊlÊphone personnel seulement si celui-ci est largement publiÊ", + "de": "Welche Telefonnummer kann man bei Fragen und Problemen zu diesem Naturschutzgebiet anrufen?
Respektieren Sie die Privatsphäre - geben Sie nur eine Telefonnummer an, wenn diese allgemein bekannt ist" + }, + "render": { + "nl": "{phone}", + "en": "{phone}", + "ca": "{phone}", + "de": "{phone}", + "fr": "{phone}", + "it": "{phone}", + "ru": "{phone}", + "id": "{phone}" + }, + "freeform": { + "key": "phone", + "type": "phone" + }, + "id": "phone" + }, + { + "render": { + "nl": "Extra info: {description}" + }, + "freeform": { + "key": "description" + }, + "id": "Non-editable description" + }, + { + "question": "Is er extra info die je kwijt wil?", + "render": { + "nl": "Extra info: {description:0}" + }, + "freeform": { + "key": "description:0" + }, + "id": "Editable description" + }, + { + "render": { + "en": "Surface area: {_surface:ha}Ha", + "nl": "Totale oppervlakte: {_surface:ha}Ha", + "it": "Area: {_surface:ha} ha", + "fr": "Superficie : {_surface:ha} ha", + "de": "Grundfläche: {_surface:ha}ha" + }, + "mappings": [ + { + "if": "_surface:ha=0", + "then": { + "*": "" + } + } + ], + "id": "Surface area" + }, + "wikipedia" + ], + "presets": [ + { + "tags": [ + "leisure=nature_reserve", + "fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen" + ], + "title": { + "nl": "natuurreservaat" + }, + "description": { + "nl": "Voeg een ontbrekend, erkend natuurreservaat toe, bv. een gebied dat beheerd wordt door het ANB of natuurpunt" + } + } + ], + "filter": [ + { + "id": "access", + "options": [ + { + "question": { + "nl": "Vrij te bezoeken" + }, + "osmTags": "access=yes" + } + ] + }, + { + "id": "dogs", + "options": [ + { + "question": { + "nl": "Alle natuurgebieden" + } + }, + { + "question": { + "nl": "Honden mogen vrij rondlopen" + }, + "osmTags": "dog=yes" + }, + { + "question": { + "nl": "Honden welkom aan de leiband" + }, + "osmTags": { + "or": [ + "dog=yes", + "dog=leashed" + ] + } + } + ] + } + ], + "mapRendering": [ + { + "icon": { + "render": "./assets/layers/nature_reserve/nature_reserve.svg" + }, + "iconSize": { + "render": "50,50,center" + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": { + "render": "#3c3" + }, + "width": { + "render": "1" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/observation_tower/Tower_observation.svg b/assets/layers/observation_tower/Tower_observation.svg index 2dd693970..cda4271f8 100644 --- a/assets/layers/observation_tower/Tower_observation.svg +++ b/assets/layers/observation_tower/Tower_observation.svg @@ -1,38 +1,37 @@ - - - - image/svgxml - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="14" + height="14" + viewBox="0 0 14 14" + id="svg2"> + + + + image/svgxml + + + + + + + + \ No newline at end of file diff --git a/assets/layers/observation_tower/observation_tower.json b/assets/layers/observation_tower/observation_tower.json index 62dbe57c5..c098033d0 100644 --- a/assets/layers/observation_tower/observation_tower.json +++ b/assets/layers/observation_tower/observation_tower.json @@ -1,221 +1,210 @@ { - "id": "observation_tower", - "name": { - "en": "Observation towers", - "nl": "Uitkijktorens", - "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Ņ‹Đĩ йаŅˆĐŊи", - "de": "AussichtstÃŧrme" + "id": "observation_tower", + "name": { + "en": "Observation towers", + "nl": "Uitkijktorens", + "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Ņ‹Đĩ йаŅˆĐŊи", + "de": "AussichtstÃŧrme" + }, + "minzoom": 8, + "title": { + "render": { + "en": "Observation tower", + "nl": "Uitkijktoren", + "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ", + "de": "Beobachtungsturm" }, - "minzoom": 8, - "title": { - "render": { - "en": "Observation tower", - "nl": "Uitkijktoren", - "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ", - "de": "Beobachtungsturm" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "en": "{name}", - "nl": "{name}", - "ru": "{name}", - "de": "{name}" - } - } - ] - }, - "description": { - "en": "Towers with a panoramic view", - "nl": "Torens om van het uitzicht te genieten", - "de": "TÃŧrme zur Aussicht auf die umgebende Landschaft" - }, - "tagRenderings": [ - "images", - { - "question": { - "en": "What is the name of this tower?", - "nl": "Heeft deze toren een naam?", - "de": "Wie heißt dieser Turm?" - }, - "render": { - "en": "This tower is called {name}", - "nl": "Deze toren heet {name}", - "de": "Der Name dieses Turms lautet {name}" - }, - "freeform": { - "key": "name" - }, - "mappings": [ - { - "if": "noname=yes", - "then": { - "en": "This tower doesn't have a specific name", - "nl": "Deze toren heeft geen specifieke naam", - "de": "Dieser Turm hat keinen eigenen Namen" - } - } - ], - "id": "name" - }, - { - "question": { - "en": "What is the height of this tower?", - "nl": "Hoe hoog is deze toren?", - "de": "Wie hoch ist dieser Turm?" - }, - "render": { - "en": "This tower is {height} high", - "nl": "Deze toren is {height} hoog", - "de": "Dieser Turm ist {height} hoch" - }, - "freeform": { - "key": "height", - "type": "pfloat" - }, - "id": "Height" - }, - { - "question": { - "en": "Who maintains this tower?", - "nl": "Wie onderhoudt deze toren?", - "de": "Wer betreibt diesen Turm?" - }, - "render": { - "nl": "Wordt onderhouden door {operator}", - "en": "Maintained by {operator}", - "de": "Betrieben von {operator}" - }, - "freeform": { - "key": "operator" - }, - "id": "Operator" - }, - "website", - { - "question": { - "en": "How much does one have to pay to enter this tower?", - "nl": "Hoeveel moet men betalen om deze toren te bezoeken?" - }, - "render": { - "en": "Visiting this tower costs {charge}", - "nl": "Deze toren bezoeken kost {charge}", - "de": "Der Besuch des Turms kostet {charge}" - }, - "freeform": { - "key": "charge", - "addExtraTags": [ - "fee=yes" - ] - }, - "mappings": [ - { - "if": { - "and": [ - "fee=no", - "charge=" - ] - }, - "then": { - "en": "Free to visit", - "nl": "Gratis te bezoeken", - "de": "Eintritt kostenlos" - } - } - ], - "id": "Fee" - }, - { - "builtin": "payment-options", - "override": { - "condition": { - "or": [ - "fee=yes", - "charge~*" - ] - } - }, - "id": "Payment methods" - }, - "wheelchair-access", - "wikipedia" - ], - "wayHandling": 1, - "icon": { - "render": "circle:white;./assets/layers/observation_tower/Tower_observation.svg" - }, - "width": { - "render": "2" - }, - "iconSize": { - "render": "40,40,center" - }, - "color": { - "render": "#00f" - }, - "presets": [ - { - "tags": [ - "man_made=tower", - "tower:type=observation" - ], - "title": { - "en": "observation tower", - "nl": "Uitkijktoren", - "ru": "ŅĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ", - "de": "Beobachtungsturm" - }, - "description": { - "nl": "Een publiek toegankelijke uitkijktoren" - } - } - ], - "source": { - "osmTags": { - "and": [ - "tower:type=observation" - ] - } - }, - "units": [ - { - "appliesToKey": [ - "height" - ], - "applicableUnits": [ - { - "canonicalDenomination": "m", - "alternativeDenomination": [ - "meter", - "mtr" - ], - "human": { - "nl": " meter", - "en": " meter", - "ru": " ĐŧĐĩŅ‚Ņ€", - "de": " Meter" - } - } - ], - "eraseInvalidValues": true - } - ], - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "circle:white;./assets/layers/observation_tower/Tower_observation.svg" - }, - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point" - ] + "mappings": [ + { + "if": "name~*", + "then": { + "en": "{name}", + "nl": "{name}", + "ru": "{name}", + "de": "{name}" } + } ] + }, + "description": { + "en": "Towers with a panoramic view", + "nl": "Torens om van het uitzicht te genieten", + "de": "TÃŧrme zur Aussicht auf die umgebende Landschaft" + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "What is the name of this tower?", + "nl": "Heeft deze toren een naam?", + "de": "Wie heißt dieser Turm?" + }, + "render": { + "en": "This tower is called {name}", + "nl": "Deze toren heet {name}", + "de": "Der Name dieses Turms lautet {name}" + }, + "freeform": { + "key": "name" + }, + "mappings": [ + { + "if": "noname=yes", + "then": { + "en": "This tower doesn't have a specific name", + "nl": "Deze toren heeft geen specifieke naam", + "de": "Dieser Turm hat keinen eigenen Namen" + } + } + ], + "id": "name" + }, + { + "question": { + "en": "What is the height of this tower?", + "nl": "Hoe hoog is deze toren?", + "de": "Wie hoch ist dieser Turm?" + }, + "render": { + "en": "This tower is {height} high", + "nl": "Deze toren is {height} hoog", + "de": "Dieser Turm ist {height} hoch" + }, + "freeform": { + "key": "height", + "type": "pfloat" + }, + "id": "Height" + }, + { + "question": { + "en": "Who maintains this tower?", + "nl": "Wie onderhoudt deze toren?", + "de": "Wer betreibt diesen Turm?" + }, + "render": { + "nl": "Wordt onderhouden door {operator}", + "en": "Maintained by {operator}", + "de": "Betrieben von {operator}" + }, + "freeform": { + "key": "operator" + }, + "id": "Operator" + }, + "website", + { + "question": { + "en": "How much does one have to pay to enter this tower?", + "nl": "Hoeveel moet men betalen om deze toren te bezoeken?", + "de": "Was kostet der Zugang zu diesem Turm?" + }, + "render": { + "en": "Visiting this tower costs {charge}", + "nl": "Deze toren bezoeken kost {charge}", + "de": "Der Besuch des Turms kostet {charge}" + }, + "freeform": { + "key": "charge", + "addExtraTags": [ + "fee=yes" + ] + }, + "mappings": [ + { + "if": { + "and": [ + "fee=no", + "charge=" + ] + }, + "then": { + "en": "Free to visit", + "nl": "Gratis te bezoeken", + "de": "Eintritt kostenlos" + } + } + ], + "id": "Fee" + }, + { + "builtin": "payment-options", + "override": { + "condition": { + "or": [ + "fee=yes", + "charge~*" + ] + } + }, + "id": "Payment methods" + }, + "wheelchair-access", + "wikipedia" + ], + "presets": [ + { + "tags": [ + "man_made=tower", + "tower:type=observation" + ], + "title": { + "en": "observation tower", + "nl": "Uitkijktoren", + "ru": "ŅĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ", + "de": "Beobachtungsturm" + }, + "description": { + "nl": "Een publiek toegankelijke uitkijktoren" + } + } + ], + "source": { + "osmTags": { + "and": [ + "tower:type=observation" + ] + } + }, + "units": [ + { + "appliesToKey": [ + "height" + ], + "applicableUnits": [ + { + "canonicalDenomination": "m", + "alternativeDenomination": [ + "meter", + "mtr" + ], + "human": { + "nl": " meter", + "en": " meter", + "ru": " ĐŧĐĩŅ‚Ņ€", + "de": " Meter" + } + } + ], + "eraseInvalidValues": true + } + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { + "render": "circle:white;./assets/layers/observation_tower/Tower_observation.svg" + }, + "iconSize": { + "render": "40,40,center" + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/parking/parking.json b/assets/layers/parking/parking.json index b2eccdd9e..8e7764b35 100644 --- a/assets/layers/parking/parking.json +++ b/assets/layers/parking/parking.json @@ -1,111 +1,65 @@ { - "id": "parking", - "name": { - "nl": "Parking" + "id": "parking", + "name": { + "nl": "Parking" + }, + "minzoom": 12, + "source": { + "osmTags": "amenity=parking" + }, + "title": { + "render": { + "nl": "Parking voor auto's", + "en": "Car parking" + } + }, + "description": { + "en": "A layer showing car parkings", + "nl": "Deze laag toont autoparkings" + }, + "tagRenderings": [ + "images" + ], + "presets": [ + { + "tags": [ + "amenity=parking" + ], + "title": { + "nl": "parking voor auto's", + "en": "car parking" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] }, - "minzoom": 12, - "source": { - "osmTags": { - "and": [ - { - "or": [ - "amenity=parking", - "amenity=motorcycle_parking", - "amenity=bicycle_parking" - ] - } - ] - } - }, - "title": { - "render": { - "nl": "Parking" - }, - "mappings": [ - { - "if": "amenity=parking", - "then": { - "nl": "{name:nl}" - } - }, - { - "if": "amenity=motorcycle_parking", - "then": { - "nl": "{name}" - } - }, - { - "if": "amenity=bicycle_parking", - "then": { - "nl": "Fietsenstalling" - } - } - ] - }, - "icon": { + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/parking/parking.svg" - }, - "description": { - "nl": "Parking" - }, - "tagRenderings": [ - "images" - ], - "wayHandling": 1, - "iconSize": { + }, + "iconSize": { "render": "36,36,center" + }, + "location": [ + "point", + "centroid" + ] }, - "color": { - "render": "#E1AD01" - }, - "presets": [ - { - "tags": [ - "amenity=bicycle_parking" - ], - "title": { - "nl": "fietsparking" - }, - "description": { - "nl": "Voeg hier een fietsenstalling toe" - } - }, - { - "tags": [ - "amenity=parking" - ], - "title": { - "nl": "parking" - }, - "description": { - "nl": "Voeg hier een parking voor auto's toe" - } - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/parking/parking.svg" - }, - "iconSize": { - "render": "36,36,center" - }, - "location": [ - "point" - ] - } - ] + { + "width": 2, + "color": "#ddcc00" + } + ] } \ No newline at end of file diff --git a/assets/layers/picnic_table/picnic_table.json b/assets/layers/picnic_table/picnic_table.json index aec396493..fd06f63f4 100644 --- a/assets/layers/picnic_table/picnic_table.json +++ b/assets/layers/picnic_table/picnic_table.json @@ -1,132 +1,123 @@ { - "id": "picnic_table", - "name": { - "en": "Picnic tables", - "nl": "Picnictafels", - "it": "Tavoli da picnic", - "ru": "ĐĄŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "fr": "Tables de pique-nique", - "de": "Picknick-Tische" - }, - "minzoom": 12, - "source": { - "osmTags": "leisure=picnic_table" - }, - "title": { - "render": { - "en": "Picnic table", - "nl": "Picnictafel", - "it": "Tavolo da picnic", - "ru": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "fr": "Table de pique-nique", - "de": "Picknick-Tisch" - } - }, - "description": { - "en": "The layer showing picnic tables", - "nl": "Deze laag toont picnictafels", - "it": "Il livello che mostra i tavoli da picnic", - "fr": "La couche montrant les tables de pique-nique", - "ru": "ĐĄĐģОК, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ŅŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "de": "Die Ebene zeigt Picknicktische an" - }, - "tagRenderings": [ + "id": "picnic_table", + "name": { + "en": "Picnic tables", + "nl": "Picnictafels", + "it": "Tavoli da picnic", + "ru": "ĐĄŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "fr": "Tables de pique-nique", + "de": "Picknick-Tische" + }, + "minzoom": 12, + "source": { + "osmTags": "leisure=picnic_table" + }, + "title": { + "render": { + "en": "Picnic table", + "nl": "Picnictafel", + "it": "Tavolo da picnic", + "ru": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "fr": "Table de pique-nique", + "de": "Picknick-Tisch" + } + }, + "description": { + "en": "The layer showing picnic tables", + "nl": "Deze laag toont picnictafels", + "it": "Il livello che mostra i tavoli da picnic", + "fr": "La couche montrant les tables de pique-nique", + "ru": "ĐĄĐģОК, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ŅŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "de": "Die Ebene zeigt Picknicktische an" + }, + "tagRenderings": [ + { + "question": { + "en": "What material is this picnic table made of?", + "nl": "Van welk materiaal is deze picnictafel gemaakt?", + "it": "Di che materiale è fatto questo tavolo da picnic?", + "de": "Aus welchem Material besteht dieser Picknicktisch?", + "ru": "ИС Ņ‡ĐĩĐŗĐž иСĐŗĐžŅ‚ОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°?", + "fr": "En quel matÊriau est faite la table de pique-nique ?" + }, + "render": { + "en": "This picnic table is made of {material}", + "nl": "Deze picnictafel is gemaakt van {material}", + "it": "Questo tavolo da picnic è fatto di {material}", + "de": "Dieser Picknicktisch besteht aus {material}", + "ru": "Đ­Ņ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ° ŅĐ´ĐĩĐģĐ°ĐŊ иС {material}", + "fr": "La table est faite en {material}" + }, + "freeform": { + "key": "material" + }, + "mappings": [ { - "question": { - "en": "What material is this picnic table made of?", - "nl": "Van welk materiaal is deze picnictafel gemaakt?", - "it": "Di che materiale è fatto questo tavolo da picnic?", - "de": "Aus welchem Material besteht dieser Picknicktisch?", - "ru": "ИС Ņ‡ĐĩĐŗĐž иСĐŗĐžŅ‚ОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°?", - "fr": "En quel matÊriau est faite la table de pique-nique ?" - }, - "render": { - "en": "This picnic table is made of {material}", - "nl": "Deze picnictafel is gemaakt van {material}", - "it": "Questo tavolo da picnic è fatto di {material}", - "de": "Dieser Picknicktisch besteht aus {material}", - "ru": "Đ­Ņ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ° ŅĐ´ĐĩĐģĐ°ĐŊ иС {material}", - "fr": "La table est faite en {material}" - }, - "freeform": { - "key": "material" - }, - "mappings": [ - { - "if": "material=wood", - "then": { - "en": "This is a wooden picnic table", - "nl": "Deze picnictafel is gemaakt uit hout", - "it": "È un tavolo da picnic in legno", - "ru": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвŅĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "de": "Dies ist ein Picknicktisch aus Holz", - "fr": "C’est une table en bois" - } - }, - { - "if": "material=concrete", - "then": { - "en": "This is a concrete picnic table", - "nl": "Deze picnictafel is gemaakt uit beton", - "it": "È un tavolo da picnic in cemento", - "ru": "Đ­Ņ‚Đž ĐąĐĩŅ‚ĐžĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "de": "Dies ist ein Picknicktisch aus Beton", - "fr": "C’est une table en bÊton" - } - } - ], - "id": "picnic_table-material" - } - ], - "icon": { - "render": "circle:#e6cf39;./assets/layers/picnic_table/picnic_table.svg" - }, - "iconSize": { - "render": "35,35,center" - }, - "color": { - "render": "#00f" - }, - "presets": [ - { - "tags": [ - "leisure=picnic_table" - ], - "title": { - "en": "picnic table", - "nl": "picnic-tafel", - "it": "tavolo da picnic", - "ru": "ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "de": "picknicktisch", - "fr": "table de pique-nique" - } - } - ], - "wayHandling": 1, - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] + "if": "material=wood", + "then": { + "en": "This is a wooden picnic table", + "nl": "Deze picnictafel is gemaakt uit hout", + "it": "È un tavolo da picnic in legno", + "ru": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвŅĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "de": "Dies ist ein Picknicktisch aus Holz", + "fr": "C’est une table en bois" + } }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ { - "icon": { - "render": "circle:#e6cf39;./assets/layers/picnic_table/picnic_table.svg" - }, - "iconSize": { - "render": "35,35,center" - }, - "location": [ - "point" - ] + "if": "material=concrete", + "then": { + "en": "This is a concrete picnic table", + "nl": "Deze picnictafel is gemaakt uit beton", + "it": "È un tavolo da picnic in cemento", + "ru": "Đ­Ņ‚Đž ĐąĐĩŅ‚ĐžĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "de": "Dies ist ein Picknicktisch aus Beton", + "fr": "C’est une table en bÊton" + } } - ] + ], + "id": "picnic_table-material" + } + ], + "presets": [ + { + "tags": [ + "leisure=picnic_table" + ], + "title": { + "en": "picnic table", + "nl": "picnic-tafel", + "it": "tavolo da picnic", + "ru": "ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "de": "picknicktisch", + "fr": "table de pique-nique" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] + }, + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { + "render": "circle:#e6cf39;./assets/layers/picnic_table/picnic_table.svg" + }, + "iconSize": { + "render": "35,35,center" + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/play_forest/play_forest.json b/assets/layers/play_forest/play_forest.json index 4244e81f5..227311cad 100644 --- a/assets/layers/play_forest/play_forest.json +++ b/assets/layers/play_forest/play_forest.json @@ -1,142 +1,123 @@ { - "id": "play_forest", - "name": { - "nl": "Speelbossen" + "id": "play_forest", + "name": { + "nl": "Speelbossen" + }, + "minzoom": 13, + "source": { + "osmTags": { + "and": [ + "playground=forest" + ] + } + }, + "title": { + "render": { + "nl": "Speelbos" }, - "minzoom": 13, - "source": { - "osmTags": { - "and": [ - "playground=forest" - ] + "mappings": [ + { + "if": "name~Speelbos.*", + "then": { + "nl": "{name}" } - }, - "title": { - "render": { - "nl": "Speelbos" - }, - "mappings": [ - { - "if": "name~Speelbos.*", - "then": { - "nl": "{name}" - } - }, - { - "if": "name~*", - "then": { - "nl": "Speelbos {name}" - } - } - ] - }, - "description": { - "nl": "Een speelbos is een vrij toegankelijke zone in een bos" - }, - "tagRenderings": [ - "images", - { - "question": "Wie beheert dit gebied?", - "render": "Dit gebied wordt beheerd door {operator}", - "freeform": { - "key": "operator" - }, - "mappings": [ - { - "if": "operator~[aA][nN][bB]", - "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos", - "hideInAnswer": true - }, - { - "if": "operator=Agenstchap Natuur en Bos", - "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" - } - ], - "id": "play_forest-operator" - }, - { - "id": "play_forest-opening_hours", - "question": "Wanneer is deze speelzone toegankelijk?", - "mappings": [ - { - "if": "opening_hours=08:00-22:00", - "then": "Het hele jaar door overdag toegankelijk (van 08:00 tot 22:00)" - }, - { - "if": "opening_hours=Jul-Aug 08:00-22:00", - "then": "Enkel in de zomervakantie en overdag toegankelijk (van 1 juli tot 31 augustus, van 08:00 tot 22:00" - } - ] - }, - { - "question": "Wie kan men emailen indien er problemen zijn met de speelzone?", - "render": "De bevoegde dienst kan bereikt worden via {email}", - "freeform": { - "key": "email", - "type": "email" - }, - "id": "play_forest-email" - }, - { - "question": "Wie kan men bellen indien er problemen zijn met de speelzone?", - "render": "De bevoegde dienst kan getelefoneerd worden via {phone}", - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "play_forest-phone" - }, - "questions", - { - "id": "play_forest-reviews", - "render": "{reviews(name, play_forest)}" - } - ], - "hideFromOverview": false, - "icon": { - "render": "./assets/layers/play_forest/icon.svg" - }, - "width": { - "render": "2" - }, - "iconSize": { - "render": "40,40,center" - }, - "color": { - "render": "#007055" - }, - "presets": [ - { - "title": "Speelbos", - "tags": [ - "leisure=playground", - "playground=forest", - "fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen" - ], - "description": "Een zone in het bos, duidelijk gemarkeerd als speelzone met de overeenkomstige borden.
" - } - ], - "wayHandling": 2, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/play_forest/icon.svg" - }, - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#007055" - }, - "width": { - "render": "2" - } + }, + { + "if": "name~*", + "then": { + "nl": "Speelbos {name}" } + } ] + }, + "description": { + "nl": "Een speelbos is een vrij toegankelijke zone in een bos" + }, + "tagRenderings": [ + "images", + { + "question": "Wie beheert dit gebied?", + "render": "Dit gebied wordt beheerd door {operator}", + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": "operator~[aA][nN][bB]", + "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos", + "hideInAnswer": true + }, + { + "if": "operator=Agenstchap Natuur en Bos", + "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" + } + ], + "id": "play_forest-operator" + }, + { + "id": "play_forest-opening_hours", + "question": "Wanneer is deze speelzone toegankelijk?", + "mappings": [ + { + "if": "opening_hours=08:00-22:00", + "then": "Het hele jaar door overdag toegankelijk (van 08:00 tot 22:00)" + }, + { + "if": "opening_hours=Jul-Aug 08:00-22:00", + "then": "Enkel in de zomervakantie en overdag toegankelijk (van 1 juli tot 31 augustus, van 08:00 tot 22:00" + } + ] + }, + { + "question": "Wie kan men emailen indien er problemen zijn met de speelzone?", + "render": "De bevoegde dienst kan bereikt worden via {email}", + "freeform": { + "key": "email", + "type": "email" + }, + "id": "play_forest-email" + }, + { + "question": "Wie kan men bellen indien er problemen zijn met de speelzone?", + "render": "De bevoegde dienst kan getelefoneerd worden via {phone}", + "freeform": { + "key": "phone", + "type": "phone" + }, + "id": "play_forest-phone" + }, + "questions", + { + "id": "play_forest-reviews", + "render": "{reviews(name, play_forest)}" + } + ], + "hideFromOverview": false, + "presets": [ + { + "title": "Speelbos", + "tags": [ + "leisure=playground", + "playground=forest", + "fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen" + ], + "description": "Een zone in het bos, duidelijk gemarkeerd als speelzone met de overeenkomstige borden.
" + } + ], + "mapRendering": [ + { + "icon": "./assets/layers/play_forest/icon.svg", + "iconSize": { + "render": "40,40,center" + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": "#007055", + "width": "2" + } + ] } \ No newline at end of file diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json index f4dfc4f3e..b6df6429a 100644 --- a/assets/layers/playground/playground.json +++ b/assets/layers/playground/playground.json @@ -1,596 +1,557 @@ { - "id": "playground", - "name": { - "nl": "Speeltuinen", - "en": "Playgrounds", - "ru": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", - "de": "Spielplätze", - "it": "Campi da gioco", - "fr": "Aire de jeu" + "id": "playground", + "name": { + "nl": "Speeltuinen", + "en": "Playgrounds", + "ru": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", + "de": "Spielplätze", + "it": "Campi da gioco", + "fr": "Aire de jeu" + }, + "minzoom": 13, + "source": { + "osmTags": { + "and": [ + "leisure=playground", + "playground!=forest" + ] + } + }, + "calculatedTags": [ + "_size_classification=Number(feat.properties._surface) < 10 ? 'small' : (Number(feat.properties._surface) < 100 ? 'medium' : 'large') " + ], + "description": { + "nl": "Speeltuinen", + "en": "Playgrounds", + "it": "Parchi giochi", + "ru": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", + "de": "Spielplätze", + "fr": "Aire de jeu" + }, + "title": { + "render": { + "nl": "Speeltuin", + "en": "Playground", + "it": "Parco giochi", + "ru": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "de": "Spielplatz", + "fr": "Aire de jeu" }, - "minzoom": 13, - "source": { - "osmTags": { - "and": [ - "leisure=playground", - "playground!=forest" - ] + "mappings": [ + { + "if": "name~*", + "then": { + "nl": "Speeltuin {name}", + "en": "Playground {name}", + "it": "Parco giochi {name}", + "ru": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° {name}", + "de": "Spielplatz {name}", + "fr": "Aire de jeu {name}" } - }, - "calculatedTags": [ - "_size_classification=Number(feat.properties._surface) < 10 ? 'small' : (Number(feat.properties._surface) < 100 ? 'medium' : 'large') " - ], - "description": { - "nl": "Speeltuinen", - "en": "Playgrounds", - "it": "Parchi giochi", - "ru": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", - "de": "Spielplätze", - "fr": "Aire de jeu" - }, - "title": { - "render": { - "nl": "Speeltuin", - "en": "Playground", - "it": "Parco giochi", - "ru": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "de": "Spielplatz", - "fr": "Aire de jeu" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "nl": "Speeltuin {name}", - "en": "Playground {name}", - "it": "Parco giochi {name}", - "ru": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° {name}", - "de": "Spielplatz {name}", - "fr": "Aire de jeu {name}" - } - } - ] - }, - "tagRenderings": [ - "images", + } + ] + }, + "tagRenderings": [ + "images", + { + "question": { + "nl": "Wat is de ondergrond van deze speeltuin?
Indien er verschillende ondergronden zijn, neem de meest voorkomende", + "en": "Which is the surface of this playground?
If there are multiple, select the most occuring one", + "it": "Qual è la superficie di questo parco giochi?
Se ve ne è piÚ di una, seleziona quella predominante", + "de": "Welche Oberfläche hat dieser Spielplatz?
Wenn es mehrere gibt, wähle die am häufigsten vorkommende aus", + "fr": "De quelle matière est la surface de l’aire de jeu ?
Pour plusieurs matières, sÊlectionner la principale" + }, + "render": { + "nl": "De ondergrond is {surface}", + "en": "The surface is {surface}", + "it": "La superficie è {surface}", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}", + "de": "Die Oberfläche ist {surface}", + "fr": "La surface est en {surface}" + }, + "freeform": { + "key": "surface" + }, + "mappings": [ { - "question": { - "nl": "Wat is de ondergrond van deze speeltuin?
Indien er verschillende ondergronden zijn, neem de meest voorkomende", - "en": "Which is the surface of this playground?
If there are multiple, select the most occuring one", - "it": "Qual è la superficie di questo parco giochi?
Se ve ne è piÚ di una, seleziona quella predominante", - "de": "Welche Oberfläche hat dieser Spielplatz?
Wenn es mehrere gibt, wähle die am häufigsten vorkommende aus", - "fr": "De quelle matière est la surface de l’aire de jeu ?
Pour plusieurs matières, sÊlectionner la principale" - }, - "render": { - "nl": "De ondergrond is {surface}", - "en": "The surface is {surface}", - "it": "La superficie è {surface}", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}", - "de": "Die Oberfläche ist {surface}", - "fr": "La surface est en {surface}" - }, - "freeform": { - "key": "surface" - }, - "mappings": [ - { - "if": "surface=grass", - "then": { - "nl": "De ondergrond is gras", - "en": "The surface is grass", - "it": "La superficie è prato", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°", - "de": "Die Oberfläche ist Gras", - "fr": "La surface est en gazon" - } - }, - { - "if": "surface=sand", - "then": { - "nl": "De ondergrond is zand", - "en": "The surface is sand", - "it": "La superficie è sabbia", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē", - "de": "Die Oberfläche ist Sand", - "fr": "La surface est en sable" - } - }, - { - "if": "surface=woodchips", - "then": { - "nl": "De ondergrond bestaat uit houtsnippers", - "en": "The surface consist of woodchips", - "it": "La superficie consiste di trucioli di legno", - "de": "Die Oberfläche besteht aus Holzschnitzeln", - "ru": "ПоĐēŅ€Ņ‹Ņ‚иĐĩ иС Ņ‰ĐĩĐŋŅ‹", - "fr": "La surface est en copeaux de bois" - } - }, - { - "if": "surface=paving_stones", - "then": { - "nl": "De ondergrond bestaat uit stoeptegels", - "en": "The surface is paving stones", - "it": "La superficie è mattonelle regolari", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°", - "de": "Die Oberfläche ist Pflastersteine", - "fr": "La surface est en pavÊs" - } - }, - { - "if": "surface=asphalt", - "then": { - "nl": "De ondergrond is asfalt", - "en": "The surface is asphalt", - "it": "La superficie è asfalto", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚", - "de": "Die Oberfläche ist Asphalt", - "fr": "La surface est en bitume" - } - }, - { - "if": "surface=concrete", - "then": { - "nl": "De ondergrond is beton", - "en": "The surface is concrete", - "it": "La superficie è cemento", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ", - "de": "Die Oberfläche ist Beton", - "fr": "La surface est en bÊton" - } - }, - { - "if": "surface=unpaved", - "then": { - "nl": "De ondergrond is onverhard", - "en": "The surface is unpaved", - "it": "La superficie è non pavimentato", - "de": "Die Oberfläche ist unbefestigt", - "fr": "La surface n’a pas de revÃĒtement" - }, - "hideInAnswer": true - }, - { - "if": "surface=paved", - "then": { - "nl": "De ondergrond is verhard", - "en": "The surface is paved", - "it": "La superficie è pavimentato", - "de": "Die Oberfläche ist befestigt", - "fr": "La surface a un revÃĒtement" - }, - "hideInAnswer": true - } - ], - "id": "playground-surface" + "if": "surface=grass", + "then": { + "nl": "De ondergrond is gras", + "en": "The surface is grass", + "it": "La superficie è prato", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°", + "de": "Die Oberfläche ist Gras", + "fr": "La surface est en gazon" + } }, { - "id": "playground-lit", - "question": { - "nl": "Is deze speeltuin 's nachts verlicht?", - "en": "Is this playground lit at night?", - "it": "È illuminato di notte questo parco giochi?", - "fr": "Ce terrain de jeux est-il ÊclairÊ la nuit ?", - "de": "Ist dieser Spielplatz nachts beleuchtet?", - "ru": "Đ­Ņ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ?" - }, - "mappings": [ - { - "if": "lit=yes", - "then": { - "nl": "Deze speeltuin is 's nachts verlicht", - "en": "This playground is lit at night", - "it": "Questo parco giochi è illuminato di notte", - "de": "Dieser Spielplatz ist nachts beleuchtet", - "ru": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ", - "fr": "L’aire de jeu est ÊclairÊe de nuit" - } - }, - { - "if": "lit=no", - "then": { - "nl": "Deze speeltuin is 's nachts niet verlicht", - "en": "This playground is not lit at night", - "it": "Questo parco giochi non è illuminato di notte", - "de": "Dieser Spielplatz ist nachts nicht beleuchtet", - "ru": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŊĐĩ ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ", - "fr": "L’aire de jeu n’est pas ÊclairÊe de nuit" - } - } - ] + "if": "surface=sand", + "then": { + "nl": "De ondergrond is zand", + "en": "The surface is sand", + "it": "La superficie è sabbia", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē", + "de": "Die Oberfläche ist Sand", + "fr": "La surface est en sable" + } }, { - "render": { - "nl": "Toegankelijk vanaf {min_age} jaar oud", - "en": "Accessible to kids older than {min_age} years", - "it": "Accessibile ai bambini di almeno {min_age} anni", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš ŅŅ‚Đ°Ņ€ŅˆĐĩ {min_age} ĐģĐĩŅ‚", - "fr": "Accessible aux enfants de plus de {min_age} ans", - "de": "Zugang nur fÃŧr Kinder ab {min_age} Jahren" - }, - "question": { - "nl": "Wat is de minimale leeftijd om op deze speeltuin te mogen?", - "en": "What is the minimum age required to access this playground?", - "it": "Qual è l’età minima per accedere a questo parco giochi?", - "fr": "Quel est l'Ãĸge minimal requis pour accÊder à ce terrain de jeux ?", - "ru": "ĐĄ ĐēĐ°ĐēĐžĐŗĐž вОСŅ€Đ°ŅŅ‚Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?" - }, - "freeform": { - "key": "min_age", - "type": "pnat" - }, - "id": "playground-min_age" + "if": "surface=woodchips", + "then": { + "nl": "De ondergrond bestaat uit houtsnippers", + "en": "The surface consist of woodchips", + "it": "La superficie consiste di trucioli di legno", + "de": "Die Oberfläche besteht aus Holzschnitzeln", + "ru": "ПоĐēŅ€Ņ‹Ņ‚иĐĩ иС Ņ‰ĐĩĐŋŅ‹", + "fr": "La surface est en copeaux de bois" + } }, { - "render": { - "nl": "Toegankelijk tot {max_age}", - "en": "Accessible to kids of at most {max_age}", - "it": "Accessibile ai bambini di età inferiore a {max_age}", - "fr": "Accessible aux enfants de {max_age} au maximum", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐĩŅ‚ŅĐŧ Đ´Đž {max_age}", - "de": "Zugang nur fÃŧr Kinder bis maximal {max_age}" - }, - "question": { - "nl": "Wat is de maximaal toegestane leeftijd voor deze speeltuin?", - "en": "What is the maximum age allowed to access this playground?", - "it": "Qual è l’età massima per accedere a questo parco giochi?", - "fr": "Quel est l’Ãĸge maximum autorisÊ pour utiliser l’aire de jeu ?" - }, - "freeform": { - "key": "max_age", - "type": "pnat" - }, - "id": "playground-max_age" + "if": "surface=paving_stones", + "then": { + "nl": "De ondergrond bestaat uit stoeptegels", + "en": "The surface is paving stones", + "it": "La superficie è mattonelle regolari", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°", + "de": "Die Oberfläche ist Pflastersteine", + "fr": "La surface est en pavÊs" + } }, { - "question": { - "nl": "Wie beheert deze speeltuin?", - "en": "Who operates this playground?", - "it": "Chi è il responsabile di questo parco giochi?", - "de": "Wer betreibt diesen Spielplatz?", - "fr": "Qui est en charge de l’exploitation de l’aire de jeu ?" - }, - "render": { - "nl": "Beheer door {operator}", - "en": "Operated by {operator}", - "it": "Gestito da {operator}", - "fr": "ExploitÊ par {operator}", - "de": "Betrieben von {operator}" - }, - "freeform": { - "key": "operator" - }, - "id": "playground-operator" + "if": "surface=asphalt", + "then": { + "nl": "De ondergrond is asfalt", + "en": "The surface is asphalt", + "it": "La superficie è asfalto", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚", + "de": "Die Oberfläche ist Asphalt", + "fr": "La surface est en bitume" + } }, { - "id": "playground-access", - "question": { - "nl": "Is deze speeltuin vrij toegankelijk voor het publiek?", - "en": "Is this playground accessible to the general public?", - "it": "Questo parco giochi è pubblicamente accessibile?", - "de": "Ist dieser Spielplatz fÃŧr die Allgemeinheit zugänglich?", - "fr": "L’aire de jeu est-elle accessible au public ?" - }, - "mappings": [ - { - "if": "access=", - "then": { - "en": "Accessible to the general public", - "nl": "Vrij toegankelijk voor het publiek", - "it": "Accessibile pubblicamente", - "de": "Zugänglich fÃŧr die Allgemeinheit", - "fr": "Accessible au public" - }, - "hideInAnswer": true - }, - { - "if": "access=yes", - "then": { - "en": "Accessible to the general public", - "nl": "Vrij toegankelijk voor het publiek", - "it": "Accessibile pubblicamente", - "de": "Zugänglich fÃŧr die Allgemeinheit", - "fr": "Accessible au public" - } - }, - { - "if": "access=customers", - "then": { - "en": "Only accessible for clients of the operating business", - "nl": "Enkel toegankelijk voor klanten van de bijhorende zaak", - "it": "Accessibile solamente ai clienti dell’attività che lo gestisce", - "de": "Nur fÃŧr Kunden des Betreibers zugänglich", - "fr": "RÊservÊe aux clients" - } - }, - { - "if": "access=students", - "then": { - "en": "Only accessible to students of the school", - "nl": "Vrij toegankelijk voor scholieren van de school", - "it": "Accessibile solamente agli studenti della scuola", - "de": "Nur fÃŧr SchÃŧler der Schule zugänglich", - "fr": "RÊservÊe aux Êlèves de l’Êcole" - } - }, - { - "if": "access=private", - "then": { - "en": "Not accessible", - "nl": "Niet vrij toegankelijk", - "it": "Non accessibile", - "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž", - "fr": "Non accessible", - "de": "Nicht zugänglich" - } - } - ] + "if": "surface=concrete", + "then": { + "nl": "De ondergrond is beton", + "en": "The surface is concrete", + "it": "La superficie è cemento", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ", + "de": "Die Oberfläche ist Beton", + "fr": "La surface est en bÊton" + } }, { - "question": { - "nl": "Wie kan men emailen indien er problemen zijn met de speeltuin?", - "en": "What is the email address of the playground maintainer?", - "it": "Qual è l’indirizzo email del gestore di questo parco giochi?", - "fr": "Quelle est l'adresse Êlectronique du responsable de l'aire de jeux ?", - "de": "Wie lautet die E-Mail Adresse des Spielplatzbetreuers?" - }, - "render": { - "nl": "De bevoegde dienst kan bereikt worden via {email}", - "en": "{email}", - "ca": "{email}", - "de": "{email}", - "fr": "{email}", - "it": "{email}", - "ru": "{email}", - "id": "{email}" - }, - "freeform": { - "key": "email", - "type": "email" - }, - "id": "playground-email" + "if": "surface=unpaved", + "then": { + "nl": "De ondergrond is onverhard", + "en": "The surface is unpaved", + "it": "La superficie è non pavimentato", + "de": "Die Oberfläche ist unbefestigt", + "fr": "La surface n’a pas de revÃĒtement" + }, + "hideInAnswer": true }, { - "question": { - "nl": "Wie kan men bellen indien er problemen zijn met de speeltuin?", - "en": "What is the phone number of the playground maintainer?", - "fr": "Quel est le numÊro de tÊlÊphone du responsable du terrain de jeux ?", - "it": "Qual è il numero di telefono del gestore del campetto?" - }, - "render": { - "nl": "De bevoegde dienst kan getelefoneerd worden via {phone}", - "en": "{phone}", - "ca": "{phone}", - "de": "{phone}", - "fr": "{phone}", - "ru": "{phone}", - "id": "{phone}", - "it": "{phone}" - }, - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "playground-phone" - }, - { - "id": "Playground-wheelchair", - "question": { - "nl": "Is deze speeltuin toegankelijk voor rolstoelgebruikers?", - "en": "Is this playground accessible to wheelchair users?", - "fr": "Ce terrain de jeux est-il accessible aux personnes en fauteuil roulant ?", - "de": "Ist dieser Spielplatz fÃŧr Rollstuhlfahrer zugänglich?", - "it": "Il campetto è accessibile a persone in sedia a rotelle?", - "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐ° Đģи Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē?" - }, - "mappings": [ - { - "if": "wheelchair=yes", - "then": { - "nl": "Geheel toegankelijk voor rolstoelgebruikers", - "en": "Completely accessible for wheelchair users", - "fr": "Entièrement accessible aux personnes en fauteuil roulant", - "de": "Vollständig zugänglich fÃŧr Rollstuhlfahrer", - "it": "Completamente accessibile in sedia a rotelle", - "ru": "ПоĐģĐŊĐžŅŅ‚ŅŒŅŽ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - } - }, - { - "if": "wheelchair=limited", - "then": { - "nl": "Beperkt toegankelijk voor rolstoelgebruikers", - "en": "Limited accessibility for wheelchair users", - "fr": "AccessibilitÊ limitÊe pour les personnes en fauteuil roulant", - "de": "Eingeschränkte Zugänglichkeit fÃŧr Rollstuhlfahrer", - "it": "Accesso limitato in sedia a rotelle", - "ru": "ЧаŅŅ‚иŅ‡ĐŊĐž Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - } - }, - { - "if": "wheelchair=no", - "then": { - "nl": "Niet toegankelijk voor rolstoelgebruikers", - "en": "Not accessible for wheelchair users", - "fr": "Non accessible aux personnes en fauteuil roulant", - "de": "Nicht zugänglich fÃŧr Rollstuhlfahrer", - "it": "Non accessibile in sedia a rotelle", - "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - } - } - ] - }, - { - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "render": "{opening_hours_table(opening_hours)}", - "question": { - "nl": "Op welke uren is deze speeltuin toegankelijk?", - "en": "When is this playground accessible?", - "fr": "Quand ce terrain de jeux est-il accessible ?", - "it": "Quando si puÃ˛ accedere a questo campetto?", - "ru": "КоĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ° ŅŅ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?", - "de": "Wann ist dieser Spielplatz zugänglich?" - }, - "mappings": [ - { - "if": "opening_hours=sunrise-sunset", - "then": { - "nl": "Van zonsopgang tot zonsondergang", - "en": "Accessible from sunrise till sunset", - "fr": "Accessible du lever au coucher du soleil", - "it": "Si puÃ˛ accedere dall'alba al tramonto", - "ru": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đž ĐžŅ‚ Ņ€Đ°ŅŅĐ˛ĐĩŅ‚Đ° Đ´Đž СаĐēĐ°Ņ‚Đ°", - "de": "Zugänglich von Sonnenaufgang bis Sonnenuntergang" - } - }, - { - "if": "opening_hours=24/7", - "then": { - "nl": "Dag en nacht toegankelijk", - "en": "Always accessible", - "fr": "Toujours accessible", - "ru": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ", - "it": "Si puÃ˛ sempre accedere", - "de": "Immer zugänglich" - } - }, - { - "if": "opening_hours=", - "then": { - "nl": "Dag en nacht toegankelijk", - "en": "Always accessible", - "ru": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ", - "fr": "Toujours accessible", - "it": "Si puÃ˛ sempre accedere", - "de": "Immer zugänglich" - }, - "hideInAnswer": true - } - ], - "id": "playground-opening_hours" - }, - "questions", - { - "id": "playground-reviews", - "render": "{reviews(name, playground)}" + "if": "surface=paved", + "then": { + "nl": "De ondergrond is verhard", + "en": "The surface is paved", + "it": "La superficie è pavimentato", + "de": "Die Oberfläche ist befestigt", + "fr": "La surface a un revÃĒtement" + }, + "hideInAnswer": true } - ], - "icon": { + ], + "id": "playground-surface" + }, + { + "id": "playground-lit", + "question": { + "nl": "Is deze speeltuin 's nachts verlicht?", + "en": "Is this playground lit at night?", + "it": "È illuminato di notte questo parco giochi?", + "fr": "Ce terrain de jeux est-il ÊclairÊ la nuit ?", + "de": "Ist dieser Spielplatz nachts beleuchtet?", + "ru": "Đ­Ņ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ?" + }, + "mappings": [ + { + "if": "lit=yes", + "then": { + "nl": "Deze speeltuin is 's nachts verlicht", + "en": "This playground is lit at night", + "it": "Questo parco giochi è illuminato di notte", + "de": "Dieser Spielplatz ist nachts beleuchtet", + "ru": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ", + "fr": "L’aire de jeu est ÊclairÊe de nuit" + } + }, + { + "if": "lit=no", + "then": { + "nl": "Deze speeltuin is 's nachts niet verlicht", + "en": "This playground is not lit at night", + "it": "Questo parco giochi non è illuminato di notte", + "de": "Dieser Spielplatz ist nachts nicht beleuchtet", + "ru": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŊĐĩ ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ", + "fr": "L’aire de jeu n’est pas ÊclairÊe de nuit" + } + } + ] + }, + { + "render": { + "nl": "Toegankelijk vanaf {min_age} jaar oud", + "en": "Accessible to kids older than {min_age} years", + "it": "Accessibile ai bambini di almeno {min_age} anni", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš ŅŅ‚Đ°Ņ€ŅˆĐĩ {min_age} ĐģĐĩŅ‚", + "fr": "Accessible aux enfants de plus de {min_age} ans", + "de": "Zugang nur fÃŧr Kinder ab {min_age} Jahren" + }, + "question": { + "nl": "Wat is de minimale leeftijd om op deze speeltuin te mogen?", + "en": "What is the minimum age required to access this playground?", + "it": "Qual è l’età minima per accedere a questo parco giochi?", + "fr": "Quel est l'Ãĸge minimal requis pour accÊder à ce terrain de jeux ?", + "ru": "ĐĄ ĐēĐ°ĐēĐžĐŗĐž вОСŅ€Đ°ŅŅ‚Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?", + "de": "Ab welchem Alter dÃŧrfen Kinder auf diesem Spielplatz spielen?" + }, + "freeform": { + "key": "min_age", + "type": "pnat" + }, + "id": "playground-min_age" + }, + { + "render": { + "nl": "Toegankelijk tot {max_age}", + "en": "Accessible to kids of at most {max_age}", + "it": "Accessibile ai bambini di età inferiore a {max_age}", + "fr": "Accessible aux enfants de {max_age} au maximum", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐĩŅ‚ŅĐŧ Đ´Đž {max_age}", + "de": "Zugang nur fÃŧr Kinder bis maximal {max_age}" + }, + "question": { + "nl": "Wat is de maximaal toegestane leeftijd voor deze speeltuin?", + "en": "What is the maximum age allowed to access this playground?", + "it": "Qual è l’età massima per accedere a questo parco giochi?", + "fr": "Quel est l’Ãĸge maximum autorisÊ pour utiliser l’aire de jeu ?", + "de": "Bis zu welchem Alter dÃŧrfen Kinder auf diesem Spielplatz spielen?" + }, + "freeform": { + "key": "max_age", + "type": "pnat" + }, + "id": "playground-max_age" + }, + { + "question": { + "nl": "Wie beheert deze speeltuin?", + "en": "Who operates this playground?", + "it": "Chi è il responsabile di questo parco giochi?", + "de": "Wer betreibt diesen Spielplatz?", + "fr": "Qui est en charge de l’exploitation de l’aire de jeu ?" + }, + "render": { + "nl": "Beheer door {operator}", + "en": "Operated by {operator}", + "it": "Gestito da {operator}", + "fr": "ExploitÊ par {operator}", + "de": "Betrieben von {operator}" + }, + "freeform": { + "key": "operator" + }, + "id": "playground-operator" + }, + { + "id": "playground-access", + "question": { + "nl": "Is deze speeltuin vrij toegankelijk voor het publiek?", + "en": "Is this playground accessible to the general public?", + "it": "Questo parco giochi è pubblicamente accessibile?", + "de": "Ist dieser Spielplatz fÃŧr die Allgemeinheit zugänglich?", + "fr": "L’aire de jeu est-elle accessible au public ?" + }, + "mappings": [ + { + "if": "access=", + "then": { + "en": "Accessible to the general public", + "nl": "Vrij toegankelijk voor het publiek", + "it": "Accessibile pubblicamente", + "de": "Zugänglich fÃŧr die Allgemeinheit", + "fr": "Accessible au public" + }, + "hideInAnswer": true + }, + { + "if": "access=yes", + "then": { + "en": "Accessible to the general public", + "nl": "Vrij toegankelijk voor het publiek", + "it": "Accessibile pubblicamente", + "de": "Zugänglich fÃŧr die Allgemeinheit", + "fr": "Accessible au public" + } + }, + { + "if": "access=customers", + "then": { + "en": "Only accessible for clients of the operating business", + "nl": "Enkel toegankelijk voor klanten van de bijhorende zaak", + "it": "Accessibile solamente ai clienti dell’attività che lo gestisce", + "de": "Nur fÃŧr Kunden des Betreibers zugänglich", + "fr": "RÊservÊe aux clients" + } + }, + { + "if": "access=students", + "then": { + "en": "Only accessible to students of the school", + "nl": "Vrij toegankelijk voor scholieren van de school", + "it": "Accessibile solamente agli studenti della scuola", + "de": "Nur fÃŧr SchÃŧler der Schule zugänglich", + "fr": "RÊservÊe aux Êlèves de l’Êcole" + } + }, + { + "if": "access=private", + "then": { + "en": "Not accessible", + "nl": "Niet vrij toegankelijk", + "it": "Non accessibile", + "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž", + "fr": "Non accessible", + "de": "Nicht zugänglich" + } + } + ] + }, + { + "question": { + "nl": "Wie kan men emailen indien er problemen zijn met de speeltuin?", + "en": "What is the email address of the playground maintainer?", + "it": "Qual è l’indirizzo email del gestore di questo parco giochi?", + "fr": "Quelle est l'adresse Êlectronique du responsable de l'aire de jeux ?", + "de": "Wie lautet die E-Mail Adresse des Spielplatzbetreuers?" + }, + "render": { + "nl": "De bevoegde dienst kan bereikt worden via {email}", + "en": "{email}", + "ca": "{email}", + "de": "{email}", + "fr": "{email}", + "it": "{email}", + "ru": "{email}", + "id": "{email}" + }, + "freeform": { + "key": "email", + "type": "email" + }, + "id": "playground-email" + }, + { + "question": { + "nl": "Wie kan men bellen indien er problemen zijn met de speeltuin?", + "en": "What is the phone number of the playground maintainer?", + "fr": "Quel est le numÊro de tÊlÊphone du responsable du terrain de jeux ?", + "it": "Qual è il numero di telefono del gestore del campetto?", + "de": "Wie lautet die Telefonnummer vom Betreiber des Spielplatzes?" + }, + "render": { + "nl": "De bevoegde dienst kan getelefoneerd worden via {phone}", + "en": "{phone}", + "ca": "{phone}", + "de": "{phone}", + "fr": "{phone}", + "ru": "{phone}", + "id": "{phone}", + "it": "{phone}" + }, + "freeform": { + "key": "phone", + "type": "phone" + }, + "id": "playground-phone" + }, + { + "id": "Playground-wheelchair", + "question": { + "nl": "Is deze speeltuin toegankelijk voor rolstoelgebruikers?", + "en": "Is this playground accessible to wheelchair users?", + "fr": "Ce terrain de jeux est-il accessible aux personnes en fauteuil roulant ?", + "de": "Ist dieser Spielplatz fÃŧr Rollstuhlfahrer zugänglich?", + "it": "Il campetto è accessibile a persone in sedia a rotelle?", + "ru": "ДоŅŅ‚ŅƒĐŋĐŊĐ° Đģи Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē?" + }, + "mappings": [ + { + "if": "wheelchair=yes", + "then": { + "nl": "Geheel toegankelijk voor rolstoelgebruikers", + "en": "Completely accessible for wheelchair users", + "fr": "Entièrement accessible aux personnes en fauteuil roulant", + "de": "Vollständig zugänglich fÃŧr Rollstuhlfahrer", + "it": "Completamente accessibile in sedia a rotelle", + "ru": "ПоĐģĐŊĐžŅŅ‚ŅŒŅŽ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + } + }, + { + "if": "wheelchair=limited", + "then": { + "nl": "Beperkt toegankelijk voor rolstoelgebruikers", + "en": "Limited accessibility for wheelchair users", + "fr": "AccessibilitÊ limitÊe pour les personnes en fauteuil roulant", + "de": "Eingeschränkte Zugänglichkeit fÃŧr Rollstuhlfahrer", + "it": "Accesso limitato in sedia a rotelle", + "ru": "ЧаŅŅ‚иŅ‡ĐŊĐž Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + } + }, + { + "if": "wheelchair=no", + "then": { + "nl": "Niet toegankelijk voor rolstoelgebruikers", + "en": "Not accessible for wheelchair users", + "fr": "Non accessible aux personnes en fauteuil roulant", + "de": "Nicht zugänglich fÃŧr Rollstuhlfahrer", + "it": "Non accessibile in sedia a rotelle", + "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + } + } + ] + }, + { + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "render": "{opening_hours_table(opening_hours)}", + "question": { + "nl": "Op welke uren is deze speeltuin toegankelijk?", + "en": "When is this playground accessible?", + "fr": "Quand ce terrain de jeux est-il accessible ?", + "it": "Quando si puÃ˛ accedere a questo campetto?", + "ru": "КоĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ° ŅŅ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?", + "de": "Wann ist dieser Spielplatz zugänglich?" + }, + "mappings": [ + { + "if": "opening_hours=sunrise-sunset", + "then": { + "nl": "Van zonsopgang tot zonsondergang", + "en": "Accessible from sunrise till sunset", + "fr": "Accessible du lever au coucher du soleil", + "it": "Si puÃ˛ accedere dall'alba al tramonto", + "ru": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đž ĐžŅ‚ Ņ€Đ°ŅŅĐ˛ĐĩŅ‚Đ° Đ´Đž СаĐēĐ°Ņ‚Đ°", + "de": "Zugänglich von Sonnenaufgang bis Sonnenuntergang" + } + }, + { + "if": "opening_hours=24/7", + "then": { + "nl": "Dag en nacht toegankelijk", + "en": "Always accessible", + "fr": "Toujours accessible", + "ru": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ", + "it": "Si puÃ˛ sempre accedere", + "de": "Immer zugänglich" + } + }, + { + "if": "opening_hours=", + "then": { + "nl": "Dag en nacht toegankelijk", + "en": "Always accessible", + "ru": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ", + "fr": "Toujours accessible", + "it": "Si puÃ˛ sempre accedere", + "de": "Immer zugänglich" + }, + "hideInAnswer": true + } + ], + "id": "playground-opening_hours" + }, + "questions", + { + "id": "playground-reviews", + "render": "{reviews(name, playground)}" + } + ], + "presets": [ + { + "tags": [ + "leisure=playground" + ], + "title": { + "nl": "Speeltuin", + "en": "Playground", + "ru": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "fr": "Terrain de jeux", + "it": "Campetto", + "de": "Spielplatz" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:leisure=playground", + "leisure=" + ] + } + }, + "mapRendering": [ + { + "icon": { "render": "./assets/themes/playgrounds/playground.svg" - }, - "iconOverlays": [ + }, + "iconBadges": [ { - "if": { - "and": [ - "opening_hours!=24/7", - "opening_hours~*" - ] - }, - "then": "isOpen" + "if": { + "and": [ + "opening_hours!=24/7", + "opening_hours~*" + ] + }, + "then": "isOpen" } - ], - "width": { - "render": "1" - }, - "iconSize": { + ], + "iconSize": { "render": "40,40,center", "mappings": [ - { - "if": "id~node/.*", - "then": "40,40,center" - }, - { - "if": "_size_classification=small", - "then": "25,25,center" - }, - { - "if": "_size_classification=medium", - "then": "40,40,center" - }, - { - "if": "_size_classification=large", - "then": "60,60,center" - } + { + "if": "id~node/.*", + "then": "40,40,center" + }, + { + "if": "_size_classification=small", + "then": "25,25,center" + }, + { + "if": "_size_classification=medium", + "then": "40,40,center" + }, + { + "if": "_size_classification=large", + "then": "60,60,center" + } ] + }, + "location": [ + "point", + "centroid" + ] }, - "color": { + { + "color": { "render": "#5dbaa9" - }, - "presets": [ - { - "tags": [ - "leisure=playground" - ], - "title": { - "nl": "Speeltuin", - "en": "Playground", - "ru": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "fr": "Terrain de jeux", - "it": "Campetto", - "de": "Spielplatz" - } - } - ], - "wayHandling": 2, - "deletion": { - "softDeletionTags": { - "and": [ - "disused:leisure=playground", - "leisure=" - ] - } - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/playgrounds/playground.svg" - }, - "iconBadges": [ - { - "if": { - "and": [ - "opening_hours!=24/7", - "opening_hours~*" - ] - }, - "then": "isOpen" - } - ], - "iconSize": { - "render": "40,40,center", - "mappings": [ - { - "if": "id~node/.*", - "then": "40,40,center" - }, - { - "if": "_size_classification=small", - "then": "25,25,center" - }, - { - "if": "_size_classification=medium", - "then": "40,40,center" - }, - { - "if": "_size_classification=large", - "then": "60,60,center" - } - ] - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#5dbaa9" - }, - "width": { - "render": "1" - } - } - ] + }, + "width": { + "render": "1" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/public_bookcase/public_bookcase.json b/assets/layers/public_bookcase/public_bookcase.json index 6b4c6b11b..ebb432d1a 100644 --- a/assets/layers/public_bookcase/public_bookcase.json +++ b/assets/layers/public_bookcase/public_bookcase.json @@ -1,518 +1,500 @@ { - "id": "public_bookcase", - "name": { - "en": "Bookcases", - "nl": "Boekenruilkastjes", - "de": "BÃŧcherschränke", - "fr": "Microbibliothèque", - "ru": "КĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹", - "it": "Microbiblioteche" + "id": "public_bookcase", + "name": { + "en": "Bookcases", + "nl": "Boekenruilkastjes", + "de": "BÃŧcherschränke", + "fr": "Microbibliothèque", + "ru": "КĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹", + "it": "Microbiblioteche" + }, + "description": { + "en": "A streetside cabinet with books, accessible to anyone", + "nl": "Een straatkastje met boeken voor iedereen", + "de": "Ein BÃŧcherschrank am Straßenrand mit BÃŧchern, fÃŧr jedermann zugänglich", + "fr": "Une armoire ou une boite contenant des livres en libre accès", + "it": "Una vetrinetta ai bordi della strada contenente libri, aperta al pubblico", + "ru": "ĐŖĐģиŅ‡ĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ Ņ ĐēĐŊиĐŗĐ°Đŧи, Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đŧи Đ´ĐģŅ вŅĐĩŅ…" + }, + "source": { + "osmTags": "amenity=public_bookcase" + }, + "minzoom": 10, + "title": { + "render": { + "en": "Bookcase", + "nl": "Boekenruilkast", + "de": "BÃŧcherschrank", + "fr": "Microbibliothèque", + "ru": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„", + "it": "Microbiblioteca" }, - "description": { - "en": "A streetside cabinet with books, accessible to anyone", - "nl": "Een straatkastje met boeken voor iedereen", - "de": "Ein BÃŧcherschrank am Straßenrand mit BÃŧchern, fÃŧr jedermann zugänglich", - "fr": "Une armoire ou une boite contenant des livres en libre accès", - "it": "Una vetrinetta ai bordi della strada contenente libri, aperta al pubblico", - "ru": "ĐŖĐģиŅ‡ĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ Ņ ĐēĐŊиĐŗĐ°Đŧи, Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đŧи Đ´ĐģŅ вŅĐĩŅ…" - }, - "source": { - "osmTags": "amenity=public_bookcase" - }, - "minzoom": 10, - "wayHandling": 2, - "title": { - "render": { - "en": "Bookcase", - "nl": "Boekenruilkast", - "de": "BÃŧcherschrank", - "fr": "Microbibliothèque", - "ru": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„", - "it": "Microbiblioteca" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "en": "Public bookcase {name}", - "nl": "Boekenruilkast {name}", - "de": "Öffentlicher BÃŧcherschrank {name}", - "fr": "Microbibliothèque {name}", - "ru": "ОбŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ {name}", - "it": "Microbiblioteca pubblica {name}" - } - } - ] - }, - "icon": { - "render": "./assets/themes/bookcases/bookcase.svg" - }, - "label": { - "mappings": [ - { - "if": "name~*", - "then": "
{name}
" - } - ] - }, - "color": { - "render": "#0000ff" - }, - "width": { - "render": "8" - }, - "presets": [ - { - "title": { - "en": "Bookcase", - "nl": "Boekenruilkast", - "de": "BÃŧcherschrank", - "fr": "Microbibliothèque", - "ru": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„", - "it": "Microbiblioteca" - }, - "tags": [ - "amenity=public_bookcase" - ], - "preciseInput": { - "preferredBackground": "photo" - } - } - ], - "tagRenderings": [ - "images", - { - "id": "minimap", - "render": "{minimap():height: 9rem; border-radius: 2.5rem; overflow:hidden;border:1px solid gray}" - }, - { - "render": { - "en": "The name of this bookcase is {name}", - "nl": "De naam van dit boekenruilkastje is {name}", - "de": "Der Name dieses BÃŧcherschrank lautet {name}", - "fr": "Le nom de cette microbibliothèque est {name}", - "ru": "НазваĐŊиĐĩ ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° — {name}", - "it": "Questa microbiblioteca si chiama {name}" - }, - "question": { - "en": "What is the name of this public bookcase?", - "nl": "Wat is de naam van dit boekenuilkastje?", - "de": "Wie heißt dieser Ãļffentliche BÃŧcherschrank?", - "fr": "Quel est le nom de cette microbibliothèque ?", - "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?", - "it": "Come si chiama questa microbiblioteca pubblica?" - }, - "freeform": { - "key": "name" - }, - "mappings": [ - { - "if": { - "and": [ - "noname=yes", - "name=" - ] - }, - "then": { - "en": "This bookcase doesn't have a name", - "nl": "Dit boekenruilkastje heeft geen naam", - "de": "Dieser BÃŧcherschrank hat keinen Namen", - "fr": "Cette microbibliothèque n'a pas de nom", - "ru": "ĐŖ ŅŅ‚ĐžĐŗĐž ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ", - "it": "Questa microbiblioteca non ha un nome proprio" - } - } - ], - "id": "public_bookcase-name" - }, - { - "render": { - "en": "{capacity} books fit in this bookcase", - "nl": "Er passen {capacity} boeken", - "de": "{capacity} BÃŧcher passen in diesen BÃŧcherschrank", - "fr": "{capacity} livres peuvent entrer dans cette microbibliothèque", - "it": "Questa microbiblioteca puÃ˛ contenere fino a {capacity} libri", - "ru": "{capacity} ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžŅ‚ ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" - }, - "question": { - "en": "How many books fit into this public bookcase?", - "nl": "Hoeveel boeken passen er in dit boekenruilkastje?", - "de": "Wie viele BÃŧcher passen in diesen Ãļffentlichen BÃŧcherschrank?", - "fr": "Combien de livres peuvent entrer dans cette microbibliothèque ?", - "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?", - "it": "Quanti libri puÃ˛ contenere questa microbiblioteca?" - }, - "freeform": { - "key": "capacity", - "type": "nat", - "inline": true - }, - "id": "public_bookcase-capacity" - }, - { - "id": "bookcase-booktypes", - "question": { - "en": "What kind of books can be found in this public bookcase?", - "nl": "Voor welke doelgroep zijn de meeste boeken in dit boekenruilkastje?", - "de": "Welche Art von BÃŧchern sind in diesem Ãļffentlichen BÃŧcherschrank zu finden?", - "fr": "Quel type de livres peut-on dans cette microbibliothèque ?", - "it": "Che tipo di libri si possono trovare in questa microbiblioteca?", - "ru": "КаĐēиĐĩ ĐēĐŊиĐŗи ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?" - }, - "mappings": [ - { - "if": "books=children", - "then": { - "en": "Mostly children books", - "nl": "Voornamelijk kinderboeken", - "de": "Vorwiegend KinderbÃŧcher", - "fr": "Livres pour enfants", - "ru": "В ĐžŅĐŊОвĐŊĐžĐŧ Đ´ĐĩŅ‚ŅĐēиĐĩ ĐēĐŊиĐŗи", - "it": "Principalmente libri per l'infanzia" - } - }, - { - "if": "books=adults", - "then": { - "en": "Mostly books for adults", - "nl": "Voornamelijk boeken voor volwassenen", - "de": "Vorwiegend BÃŧcher fÃŧr Erwachsene", - "fr": "Livres pour les adultes", - "ru": "В ĐžŅĐŊОвĐŊĐžĐŧ ĐēĐŊиĐŗи Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…", - "it": "Principalmente libri per persone in età adulta" - } - }, - { - "if": "books=children;adults", - "then": { - "en": "Both books for kids and adults", - "nl": "Boeken voor zowel kinderen als volwassenen", - "de": "Sowohl BÃŧcher fÃŧr Kinder als auch fÃŧr Erwachsene", - "fr": "Livres pour enfants et adultes Êgalement", - "it": "Sia libri per l'infanzia, sia per l'età adulta", - "ru": "КĐŊиĐŗи и Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš, и Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" - } - } - ] - }, - { - "id": "bookcase-is-indoors", - "question": { - "en": "Is this bookcase located outdoors?", - "nl": "Staat dit boekenruilkastje binnen of buiten?", - "de": "Befindet sich dieser BÃŧcherschrank im Freien?", - "fr": "Cette microbiliothèque est-elle en extÊrieur ?", - "it": "Questa microbiblioteca si trova all'aperto?" - }, - "mappings": [ - { - "then": { - "en": "This bookcase is located indoors", - "nl": "Dit boekenruilkastje staat binnen", - "de": "Dieser BÃŧcherschrank befindet sich im Innenbereich", - "fr": "Cette microbibliothèque est en intÊrieur", - "it": "Questa microbiblioteca si trova al chiuso" - }, - "if": "indoor=yes" - }, - { - "then": { - "en": "This bookcase is located outdoors", - "nl": "Dit boekenruilkastje staat buiten", - "de": "Dieser BÃŧcherschrank befindet sich im Freien", - "fr": "Cette microbibliothèque est en extÊrieur", - "it": "Questa microbiblioteca si trova all'aperto" - }, - "if": "indoor=no" - }, - { - "then": { - "en": "This bookcase is located outdoors", - "nl": "Dit boekenruilkastje staat buiten", - "de": "Dieser BÃŧcherschrank befindet sich im Freien", - "fr": "Cette microbibliothèque est en extÊrieur", - "it": "Questa microbiblioteca si trova all'aperto" - }, - "if": "indoor=", - "hideInAnswer": true - } - ] - }, - { - "id": "bookcase-is-accessible", - "question": { - "en": "Is this public bookcase freely accessible?", - "nl": "Is dit boekenruilkastje publiek toegankelijk?", - "de": "Ist dieser Ãļffentliche BÃŧcherschrank frei zugänglich?", - "fr": "Cette microbibliothèque est-elle librement accèssible ?", - "it": "Questa microbiblioteca è ad accesso libero?", - "ru": "ИĐŧĐĩĐĩŅ‚ŅŅ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ĐžĐŧŅƒ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧŅƒ ĐēĐŊиĐļĐŊĐžĐŧŅƒ ŅˆĐēĐ°Ņ„Ņƒ?" - }, - "condition": "indoor=yes", - "mappings": [ - { - "then": { - "en": "Publicly accessible", - "nl": "Publiek toegankelijk", - "de": "Öffentlich zugänglich", - "fr": "Accèssible au public", - "it": "È ad accesso libero", - "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" - }, - "if": "access=yes" - }, - { - "then": { - "en": "Only accessible to customers", - "nl": "Enkel toegankelijk voor klanten", - "de": "Nur fÃŧr Kunden zugänglich", - "fr": "Accèssible aux clients", - "it": "L'accesso è riservato ai clienti" - }, - "if": "access=customers" - } - ] - }, - { - "question": { - "en": "Who maintains this public bookcase?", - "nl": "Wie is verantwoordelijk voor dit boekenruilkastje?", - "de": "Wer unterhält diesen Ãļffentlichen BÃŧcherschrank?", - "fr": "Qui entretien cette microbibliothèque ?", - "it": "Chi mantiene questa microbiblioteca?" - }, - "render": { - "en": "Operated by {operator}", - "nl": "Onderhouden door {operator}", - "de": "Betrieben von {operator}", - "fr": "Entretenue par {operator}", - "it": "È gestita da {operator}" - }, - "freeform": { - "type": "string", - "key": "operator" - }, - "id": "public_bookcase-operator" - }, - { - "question": { - "en": "Is this public bookcase part of a bigger network?", - "nl": "Is dit boekenruilkastje deel van een netwerk?", - "de": "Ist dieser Ãļffentliche BÃŧcherschrank Teil eines grÃļßeren Netzwerks?", - "fr": "Cette microbibliothèque fait-elle partie d'un rÊseau/groupe ?", - "it": "Questa microbiblioteca fa parte di una rete?" - }, - "render": { - "en": "This public bookcase is part of {brand}", - "nl": "Dit boekenruilkastje is deel van het netwerk {brand}", - "de": "Dieser BÃŧcherschrank ist Teil von {brand}", - "fr": "Cette microbibliothèque fait partie du groupe {brand}", - "it": "Questa microbiblioteca fa parte di {brand}" - }, - "condition": "ref=", - "freeform": { - "key": "brand" - }, - "mappings": [ - { - "then": { - "en": "Part of the network 'Little Free Library'", - "nl": "Deel van het netwerk 'Little Free Library'", - "de": "Teil des Netzwerks 'Little Free Library'", - "fr": "Fait partie du rÊseau Little Free Library", - "it": "Fa parte della rete 'Little Free Library'" - }, - "if": { - "and": [ - "brand=Little Free Library", - "nobrand=" - ] - } - }, - { - "if": { - "and": [ - "nobrand=yes", - "brand=" - ] - }, - "then": { - "en": "This public bookcase is not part of a bigger network", - "nl": "Dit boekenruilkastje maakt geen deel uit van een netwerk", - "de": "Dieser Ãļffentliche BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks", - "fr": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe", - "it": "Questa microbiblioteca non fa parte di una rete" - } - } - ], - "id": "public_bookcase-brand" - }, - { - "render": { - "en": "The reference number of this public bookcase within {brand} is {ref}", - "nl": "Het referentienummer binnen {brand} is {ref}", - "de": "Die Referenznummer dieses Ãļffentlichen BÃŧcherschranks innerhalb {brand} lautet {ref}", - "fr": "Cette microbibliothèque du rÊseau {brand} possède le numÊro {ref}", - "it": "Il numero identificativo di questa microbiblioteca nella rete {brand} è {ref}" - }, - "question": { - "en": "What is the reference number of this public bookcase?", - "nl": "Wat is het referentienummer van dit boekenruilkastje?", - "de": "Wie lautet die Referenznummer dieses Ãļffentlichen BÃŧcherschranks?", - "fr": "Quelle est le numÊro de rÊfÊrence de cette microbibliothèque ?", - "it": "Qual è il numero identificativo di questa microbiblioteca?" - }, - "condition": "brand~*", - "freeform": { - "key": "ref" - }, - "mappings": [ - { - "then": { - "en": "This bookcase is not part of a bigger network", - "nl": "Dit boekenruilkastje maakt geen deel uit van een netwerk", - "de": "Dieser BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks", - "fr": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe", - "it": "Questa microbiblioteca non fa parte di una rete" - }, - "if": { - "and": [ - "nobrand=yes", - "brand=", - "ref=" - ] - } - } - ], - "id": "public_bookcase-ref" - }, - { - "question": { - "en": "When was this public bookcase installed?", - "nl": "Op welke dag werd dit boekenruilkastje geinstalleerd?", - "de": "Wann wurde dieser Ãļffentliche BÃŧcherschrank installiert?", - "fr": "Quand a ÊtÊ installÊe cette microbibliothèque ?", - "it": "Quando è stata inaugurata questa microbiblioteca?", - "ru": "КоĐŗĐ´Đ° ĐąŅ‹Đģ ŅƒŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?" - }, - "render": { - "en": "Installed on {start_date}", - "nl": "Geplaatst op {start_date}", - "de": "Installiert am {start_date}", - "fr": "InstallÊe le {start_date}", - "it": "È stata inaugurata il {start_date}", - "ru": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}" - }, - "freeform": { - "key": "start_date", - "type": "date" - }, - "id": "public_bookcase-start_date" - }, - { - "render": { - "en": "More info on the website", - "nl": "Meer info op de website", - "de": "Weitere Informationen auf der Webseite", - "fr": "Plus d'infos sur le site web", - "ru": "БоĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ ĐŊĐ° ŅĐ°ĐšŅ‚Đĩ", - "it": "Maggiori informazioni sul sito web" - }, - "question": { - "en": "Is there a website with more information about this public bookcase?", - "nl": "Is er een website over dit boekenruilkastje?", - "de": "Gibt es eine Website mit weiteren Informationen Ãŧber diesen Ãļffentlichen BÃŧcherschrank?", - "fr": "Y a-t-il un site web avec plus d'informations sur cette microbibliothèque ?", - "it": "C'è un sito web con maggiori informazioni su questa microbiblioteca?", - "ru": "ЕŅŅ‚ŅŒ Đģи вĐĩĐą-ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Đĩ?" - }, - "freeform": { - "key": "website", - "type": "url" - }, - "id": "public_bookcase-website" - } - ], - "allowMove": true, - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity=public_bookcase", - "amenity=" - ] - }, - "neededChangesets": 5 - }, - "filter": [ - { - "id": "kid-books", - "options": [ - { - "question": "Kinderboeken aanwezig?", - "osmTags": "books~.*children.*" - } - ] - }, - { - "id": "adult-books", - "options": [ - { - "question": "Boeken voor volwassenen aanwezig?", - "osmTags": "books~.*adults.*" - } - ] - }, - { - "id": "inside", - "options": [ - { - "question": { - "nl": "Binnen of buiten", - "en": "Indoor or outdoor", - "de": "Innen oder Außen" - } - }, - { - "question": "Binnen?", - "osmTags": "indoor=yes" - }, - { - "question": "Buiten?", - "osmTags": { - "or": [ - "indoor=no", - "indoor=" - ] - } - } - ] - } - ], - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/bookcases/bookcase.svg" - }, - "label": { - "mappings": [ - { - "if": "name~*", - "then": "
{name}
" - } - ] - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#0000ff" - }, - "width": { - "render": "8" - } + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Public bookcase {name}", + "nl": "Boekenruilkast {name}", + "de": "Öffentlicher BÃŧcherschrank {name}", + "fr": "Microbibliothèque {name}", + "ru": "ОбŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ {name}", + "it": "Microbiblioteca pubblica {name}" } + } ] + }, + "presets": [ + { + "title": { + "en": "Bookcase", + "nl": "Boekenruilkast", + "de": "BÃŧcherschrank", + "fr": "Microbibliothèque", + "ru": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„", + "it": "Microbiblioteca" + }, + "tags": [ + "amenity=public_bookcase" + ], + "preciseInput": { + "preferredBackground": "photo" + } + } + ], + "tagRenderings": [ + "images", + { + "id": "minimap", + "render": "{minimap():height: 9rem; border-radius: 2.5rem; overflow:hidden;border:1px solid gray}" + }, + { + "render": { + "en": "The name of this bookcase is {name}", + "nl": "De naam van dit boekenruilkastje is {name}", + "de": "Der Name dieses BÃŧcherschrank lautet {name}", + "fr": "Le nom de cette microbibliothèque est {name}", + "ru": "НазваĐŊиĐĩ ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° — {name}", + "it": "Questa microbiblioteca si chiama {name}" + }, + "question": { + "en": "What is the name of this public bookcase?", + "nl": "Wat is de naam van dit boekenuilkastje?", + "de": "Wie heißt dieser Ãļffentliche BÃŧcherschrank?", + "fr": "Quel est le nom de cette microbibliothèque ?", + "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?", + "it": "Come si chiama questa microbiblioteca pubblica?" + }, + "freeform": { + "key": "name" + }, + "mappings": [ + { + "if": { + "and": [ + "noname=yes", + "name=" + ] + }, + "then": { + "en": "This bookcase doesn't have a name", + "nl": "Dit boekenruilkastje heeft geen naam", + "de": "Dieser BÃŧcherschrank hat keinen Namen", + "fr": "Cette microbibliothèque n'a pas de nom", + "ru": "ĐŖ ŅŅ‚ĐžĐŗĐž ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ", + "it": "Questa microbiblioteca non ha un nome proprio" + } + } + ], + "id": "public_bookcase-name" + }, + { + "render": { + "en": "{capacity} books fit in this bookcase", + "nl": "Er passen {capacity} boeken", + "de": "{capacity} BÃŧcher passen in diesen BÃŧcherschrank", + "fr": "{capacity} livres peuvent entrer dans cette microbibliothèque", + "it": "Questa microbiblioteca puÃ˛ contenere fino a {capacity} libri", + "ru": "{capacity} ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžŅ‚ ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" + }, + "question": { + "en": "How many books fit into this public bookcase?", + "nl": "Hoeveel boeken passen er in dit boekenruilkastje?", + "de": "Wie viele BÃŧcher passen in diesen Ãļffentlichen BÃŧcherschrank?", + "fr": "Combien de livres peuvent entrer dans cette microbibliothèque ?", + "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?", + "it": "Quanti libri puÃ˛ contenere questa microbiblioteca?" + }, + "freeform": { + "key": "capacity", + "type": "nat", + "inline": true + }, + "id": "public_bookcase-capacity" + }, + { + "id": "bookcase-booktypes", + "question": { + "en": "What kind of books can be found in this public bookcase?", + "nl": "Voor welke doelgroep zijn de meeste boeken in dit boekenruilkastje?", + "de": "Welche Art von BÃŧchern sind in diesem Ãļffentlichen BÃŧcherschrank zu finden?", + "fr": "Quel type de livres peut-on dans cette microbibliothèque ?", + "it": "Che tipo di libri si possono trovare in questa microbiblioteca?", + "ru": "КаĐēиĐĩ ĐēĐŊиĐŗи ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?" + }, + "mappings": [ + { + "if": "books=children", + "then": { + "en": "Mostly children books", + "nl": "Voornamelijk kinderboeken", + "de": "Vorwiegend KinderbÃŧcher", + "fr": "Livres pour enfants", + "ru": "В ĐžŅĐŊОвĐŊĐžĐŧ Đ´ĐĩŅ‚ŅĐēиĐĩ ĐēĐŊиĐŗи", + "it": "Principalmente libri per l'infanzia" + } + }, + { + "if": "books=adults", + "then": { + "en": "Mostly books for adults", + "nl": "Voornamelijk boeken voor volwassenen", + "de": "Vorwiegend BÃŧcher fÃŧr Erwachsene", + "fr": "Livres pour les adultes", + "ru": "В ĐžŅĐŊОвĐŊĐžĐŧ ĐēĐŊиĐŗи Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…", + "it": "Principalmente libri per persone in età adulta" + } + }, + { + "if": "books=children;adults", + "then": { + "en": "Both books for kids and adults", + "nl": "Boeken voor zowel kinderen als volwassenen", + "de": "Sowohl BÃŧcher fÃŧr Kinder als auch fÃŧr Erwachsene", + "fr": "Livres pour enfants et adultes Êgalement", + "it": "Sia libri per l'infanzia, sia per l'età adulta", + "ru": "КĐŊиĐŗи и Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš, и Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" + } + } + ] + }, + { + "id": "bookcase-is-indoors", + "question": { + "en": "Is this bookcase located outdoors?", + "nl": "Staat dit boekenruilkastje binnen of buiten?", + "de": "Befindet sich dieser BÃŧcherschrank im Freien?", + "fr": "Cette microbiliothèque est-elle en extÊrieur ?", + "it": "Questa microbiblioteca si trova all'aperto?" + }, + "mappings": [ + { + "then": { + "en": "This bookcase is located indoors", + "nl": "Dit boekenruilkastje staat binnen", + "de": "Dieser BÃŧcherschrank befindet sich im Innenbereich", + "fr": "Cette microbibliothèque est en intÊrieur", + "it": "Questa microbiblioteca si trova al chiuso" + }, + "if": "indoor=yes" + }, + { + "then": { + "en": "This bookcase is located outdoors", + "nl": "Dit boekenruilkastje staat buiten", + "de": "Dieser BÃŧcherschrank befindet sich im Freien", + "fr": "Cette microbibliothèque est en extÊrieur", + "it": "Questa microbiblioteca si trova all'aperto" + }, + "if": "indoor=no" + }, + { + "then": { + "en": "This bookcase is located outdoors", + "nl": "Dit boekenruilkastje staat buiten", + "de": "Dieser BÃŧcherschrank befindet sich im Freien", + "fr": "Cette microbibliothèque est en extÊrieur", + "it": "Questa microbiblioteca si trova all'aperto" + }, + "if": "indoor=", + "hideInAnswer": true + } + ] + }, + { + "id": "bookcase-is-accessible", + "question": { + "en": "Is this public bookcase freely accessible?", + "nl": "Is dit boekenruilkastje publiek toegankelijk?", + "de": "Ist dieser Ãļffentliche BÃŧcherschrank frei zugänglich?", + "fr": "Cette microbibliothèque est-elle librement accèssible ?", + "it": "Questa microbiblioteca è ad accesso libero?", + "ru": "ИĐŧĐĩĐĩŅ‚ŅŅ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ĐžĐŧŅƒ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧŅƒ ĐēĐŊиĐļĐŊĐžĐŧŅƒ ŅˆĐēĐ°Ņ„Ņƒ?" + }, + "condition": "indoor=yes", + "mappings": [ + { + "then": { + "en": "Publicly accessible", + "nl": "Publiek toegankelijk", + "de": "Öffentlich zugänglich", + "fr": "Accèssible au public", + "it": "È ad accesso libero", + "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" + }, + "if": "access=yes" + }, + { + "then": { + "en": "Only accessible to customers", + "nl": "Enkel toegankelijk voor klanten", + "de": "Nur fÃŧr Kunden zugänglich", + "fr": "Accèssible aux clients", + "it": "L'accesso è riservato ai clienti" + }, + "if": "access=customers" + } + ] + }, + { + "question": { + "en": "Who maintains this public bookcase?", + "nl": "Wie is verantwoordelijk voor dit boekenruilkastje?", + "de": "Wer unterhält diesen Ãļffentlichen BÃŧcherschrank?", + "fr": "Qui entretien cette microbibliothèque ?", + "it": "Chi mantiene questa microbiblioteca?" + }, + "render": { + "en": "Operated by {operator}", + "nl": "Onderhouden door {operator}", + "de": "Betrieben von {operator}", + "fr": "Entretenue par {operator}", + "it": "È gestita da {operator}" + }, + "freeform": { + "type": "string", + "key": "operator" + }, + "id": "public_bookcase-operator" + }, + { + "question": { + "en": "Is this public bookcase part of a bigger network?", + "nl": "Is dit boekenruilkastje deel van een netwerk?", + "de": "Ist dieser Ãļffentliche BÃŧcherschrank Teil eines grÃļßeren Netzwerks?", + "fr": "Cette microbibliothèque fait-elle partie d'un rÊseau/groupe ?", + "it": "Questa microbiblioteca fa parte di una rete?" + }, + "render": { + "en": "This public bookcase is part of {brand}", + "nl": "Dit boekenruilkastje is deel van het netwerk {brand}", + "de": "Dieser BÃŧcherschrank ist Teil von {brand}", + "fr": "Cette microbibliothèque fait partie du groupe {brand}", + "it": "Questa microbiblioteca fa parte di {brand}" + }, + "condition": "ref=", + "freeform": { + "key": "brand" + }, + "mappings": [ + { + "then": { + "en": "Part of the network 'Little Free Library'", + "nl": "Deel van het netwerk 'Little Free Library'", + "de": "Teil des Netzwerks 'Little Free Library'", + "fr": "Fait partie du rÊseau Little Free Library", + "it": "Fa parte della rete 'Little Free Library'" + }, + "if": { + "and": [ + "brand=Little Free Library", + "nobrand=" + ] + } + }, + { + "if": { + "and": [ + "nobrand=yes", + "brand=" + ] + }, + "then": { + "en": "This public bookcase is not part of a bigger network", + "nl": "Dit boekenruilkastje maakt geen deel uit van een netwerk", + "de": "Dieser Ãļffentliche BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks", + "fr": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe", + "it": "Questa microbiblioteca non fa parte di una rete" + } + } + ], + "id": "public_bookcase-brand" + }, + { + "render": { + "en": "The reference number of this public bookcase within {brand} is {ref}", + "nl": "Het referentienummer binnen {brand} is {ref}", + "de": "Die Referenznummer dieses Ãļffentlichen BÃŧcherschranks innerhalb {brand} lautet {ref}", + "fr": "Cette microbibliothèque du rÊseau {brand} possède le numÊro {ref}", + "it": "Il numero identificativo di questa microbiblioteca nella rete {brand} è {ref}" + }, + "question": { + "en": "What is the reference number of this public bookcase?", + "nl": "Wat is het referentienummer van dit boekenruilkastje?", + "de": "Wie lautet die Referenznummer dieses Ãļffentlichen BÃŧcherschranks?", + "fr": "Quelle est le numÊro de rÊfÊrence de cette microbibliothèque ?", + "it": "Qual è il numero identificativo di questa microbiblioteca?" + }, + "condition": "brand~*", + "freeform": { + "key": "ref" + }, + "mappings": [ + { + "then": { + "en": "This bookcase is not part of a bigger network", + "nl": "Dit boekenruilkastje maakt geen deel uit van een netwerk", + "de": "Dieser BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks", + "fr": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe", + "it": "Questa microbiblioteca non fa parte di una rete" + }, + "if": { + "and": [ + "nobrand=yes", + "brand=", + "ref=" + ] + } + } + ], + "id": "public_bookcase-ref" + }, + { + "question": { + "en": "When was this public bookcase installed?", + "nl": "Op welke dag werd dit boekenruilkastje geinstalleerd?", + "de": "Wann wurde dieser Ãļffentliche BÃŧcherschrank installiert?", + "fr": "Quand a ÊtÊ installÊe cette microbibliothèque ?", + "it": "Quando è stata inaugurata questa microbiblioteca?", + "ru": "КоĐŗĐ´Đ° ĐąŅ‹Đģ ŅƒŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?" + }, + "render": { + "en": "Installed on {start_date}", + "nl": "Geplaatst op {start_date}", + "de": "Installiert am {start_date}", + "fr": "InstallÊe le {start_date}", + "it": "È stata inaugurata il {start_date}", + "ru": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}" + }, + "freeform": { + "key": "start_date", + "type": "date" + }, + "id": "public_bookcase-start_date" + }, + { + "render": { + "en": "More info on the website", + "nl": "Meer info op de website", + "de": "Weitere Informationen auf der Webseite", + "fr": "Plus d'infos sur le site web", + "ru": "БоĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ ĐŊĐ° ŅĐ°ĐšŅ‚Đĩ", + "it": "Maggiori informazioni sul sito web" + }, + "question": { + "en": "Is there a website with more information about this public bookcase?", + "nl": "Is er een website over dit boekenruilkastje?", + "de": "Gibt es eine Website mit weiteren Informationen Ãŧber diesen Ãļffentlichen BÃŧcherschrank?", + "fr": "Y a-t-il un site web avec plus d'informations sur cette microbibliothèque ?", + "it": "C'è un sito web con maggiori informazioni su questa microbiblioteca?", + "ru": "ЕŅŅ‚ŅŒ Đģи вĐĩĐą-ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Đĩ?" + }, + "freeform": { + "key": "website", + "type": "url" + }, + "id": "public_bookcase-website" + } + ], + "allowMove": true, + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity=public_bookcase", + "amenity=" + ] + }, + "neededChangesets": 5 + }, + "filter": [ + { + "id": "kid-books", + "options": [ + { + "question": "Kinderboeken aanwezig?", + "osmTags": "books~.*children.*" + } + ] + }, + { + "id": "adult-books", + "options": [ + { + "question": "Boeken voor volwassenen aanwezig?", + "osmTags": "books~.*adults.*" + } + ] + }, + { + "id": "inside", + "options": [ + { + "question": { + "nl": "Binnen of buiten", + "en": "Indoor or outdoor", + "de": "Innen oder Außen" + } + }, + { + "question": "Binnen?", + "osmTags": "indoor=yes" + }, + { + "question": "Buiten?", + "osmTags": { + "or": [ + "indoor=no", + "indoor=" + ] + } + } + ] + } + ], + "mapRendering": [ + { + "icon": { + "render": "./assets/themes/bookcases/bookcase.svg" + }, + "label": { + "mappings": [ + { + "if": "name~*", + "then": "
{name}
" + } + ] + }, + "location": [ + "point", + "centroid" + ] + }, + { + "color": { + "render": "#0000ff" + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index c9d263d81..b739986fb 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -1,6 +1,335 @@ { - "id": "shops", - "name": { + "id": "shops", + "name": { + "en": "Shop", + "fr": "Magasin", + "ru": "МаĐŗаСиĐŊ", + "ja": "åē—", + "nl": "Winkel", + "de": "Geschäft", + "eo": "Butiko" + }, + "minzoom": 16, + "source": { + "osmTags": { + "and": [ + "shop~*" + ] + } + }, + "title": { + "render": { + "en": "Shop", + "fr": "Magasin", + "ru": "МаĐŗаСиĐŊ", + "ja": "åē—", + "nl": "Winkel", + "de": "Geschäft", + "eo": "Butiko" + }, + "mappings": [ + { + "if": { + "and": [ + "name~*" + ] + }, + "then": { + "en": "{name}", + "fr": "{name}", + "ru": "{name}", + "ja": "{name}", + "de": "{name}", + "eo": "{name}" + } + }, + { + "if": { + "and": [ + "shop!~yes" + ] + }, + "then": { + "en": "{shop}", + "fr": "{shop}", + "ru": "{shop}", + "ja": "{shop}", + "de": "{shop}", + "eo": "{shop}" + } + } + ] + }, + "description": { + "en": "A shop", + "fr": "Un magasin", + "ja": "ã‚ˇãƒ§ãƒƒãƒ—", + "nl": "Een winkel", + "ru": "МаĐŗаСиĐŊ", + "de": "Ein Geschäft", + "eo": "Butiko" + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "What is the name of this shop?", + "fr": "Qu'est-ce que le nom de ce magasin?", + "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ?", + "ja": "こぎおåē—ぎ名前はäŊ•ã§ã™ã‹?", + "nl": "Wat is de naam van deze winkel?", + "de": "Wie ist der Name dieses Geschäfts?" + }, + "render": "This shop is called {name}", + "freeform": { + "key": "name" + }, + "id": "shops-name" + }, + { + "render": { + "en": "This shop sells {shop}", + "fr": "Ce magasin vends {shop}", + "ja": "ã“ãĄã‚‰ãŽãŠåē—では{shop}ã‚’č˛ŠåŖ˛ã—ãĻおりぞす", + "de": "Dieses Geschäft verkauft {shop}", + "eo": "Ĉi tiu butiko vendas {shop}" + }, + "question": { + "en": "What does this shop sell?", + "fr": "Que vends ce magasin ?", + "ja": "こぎおåē—ではäŊ•ã‚’åŖ˛ãŖãĻいぞすか?", + "ru": "ЧŅ‚Đž ĐŋŅ€ĐžĐ´Đ°Ņ‘Ņ‚ŅŅ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?", + "de": "Was wird in diesem Geschäft verkauft?", + "eo": "Kion vendas ĉi tiu butiko?" + }, + "freeform": { + "key": "shop" + }, + "mappings": [ + { + "if": { + "and": [ + "shop=convenience" + ] + }, + "then": { + "en": "Convenience store", + "fr": "Épicerie/superette", + "ja": "ã‚ŗãƒŗビニエãƒŗ゚゚トã‚ĸ", + "de": "Lebensmittelladen", + "nl": "Gemakswinkel" + } + }, + { + "if": { + "and": [ + "shop=supermarket" + ] + }, + "then": { + "en": "Supermarket", + "fr": "SupermarchÊ", + "ru": "ĐĄŅƒĐŋĐĩŅ€ĐŧĐ°Ņ€ĐēĐĩŅ‚", + "ja": "ã‚šãƒŧパãƒŧマãƒŧã‚ąãƒƒãƒˆ", + "nl": "Supermarkt", + "de": "Supermarkt" + } + }, + { + "if": { + "and": [ + "shop=clothes" + ] + }, + "then": { + "en": "Clothing store", + "fr": "Magasin de vÃĒtements", + "ru": "МаĐŗаСиĐŊ ОдĐĩĐļĐ´Ņ‹", + "ja": "čĄŖ料品åē—", + "de": "Bekleidungsgeschäft", + "nl": "Kledingwinkel" + } + }, + { + "if": { + "and": [ + "shop=hairdresser" + ] + }, + "then": { + "en": "Hairdresser", + "fr": "Coiffeur", + "ru": "ПаŅ€Đ¸ĐēĐŧĐ°Ņ…ĐĩŅ€ŅĐēĐ°Ņ", + "ja": "į†åŽšå¸Ģ", + "nl": "Kapper", + "de": "Friseur" + } + }, + { + "if": { + "and": [ + "shop=bakery" + ] + }, + "then": { + "en": "Bakery", + "fr": "Boulangerie", + "ja": "ベãƒŧã‚ĢãƒĒãƒŧ", + "nl": "Bakkerij", + "de": "Bäckerei", + "eo": "Bakejo" + } + }, + { + "if": { + "and": [ + "shop=car_repair" + ] + }, + "then": { + "en": "Car repair (garage)", + "fr": "Garage de rÊparation automobile", + "ja": "č‡Ē動čģŠäŋŽį†(ã‚ŦãƒŦãƒŧジ)", + "de": "Autowerkstatt", + "fi": "Autokorjaamo", + "hu": "AutÃŗszerelő", + "id": "Bengkel Mobil", + "it": "Autofficina", + "nb_NO": "Bilverksted", + "nl": "Autogarage", + "pl": "Warsztat samochodowy", + "pt": "Oficina de automÃŗveis", + "pt_BR": "Oficina MecÃĸnica", + "ru": "АвŅ‚ĐžĐŧĐ°ŅŅ‚ĐĩŅ€ŅĐēĐ°Ņ", + "sv": "Bilverkstad" + } + }, + { + "if": { + "and": [ + "shop=car" + ] + }, + "then": { + "en": "Car dealer", + "fr": "Concessionnaire", + "ru": "АвŅ‚ĐžŅĐ°ĐģĐžĐŊ", + "ja": "č‡Ē動čģŠãƒ‡ã‚Ŗãƒŧナãƒŧ", + "de": "Autohändler", + "nl": "Autodealer" + } + } + ], + "id": "shops-shop" + }, + { + "render": { + "en": "{phone}", + "fr": "{phone}", + "ca": "{phone}", + "id": "{phone}", + "ru": "{phone}", + "ja": "{phone}", + "de": "{phone}", + "eo": "{phone}", + "nl": "{phone}" + }, + "question": { + "en": "What is the phone number?", + "fr": "Quel est le numÊro de tÊlÊphone ?", + "ja": "é›ģ芹į•Ēåˇã¯äŊ•į•Ēですか?", + "nl": "Wat is het telefoonnummer?", + "ru": "КаĐēОК Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊ?", + "de": "Wie ist die Telefonnummer?", + "eo": "Kio estas la telefonnumero?" + }, + "freeform": { + "key": "phone", + "type": "phone" + }, + "id": "shops-phone" + }, + { + "render": { + "en": "{website}", + "fr": "{website}", + "ca": "{website}", + "id": "{website}", + "ru": "{website}", + "ja": "{website}", + "de": "{website}", + "eo": "{website}" + }, + "question": { + "en": "What is the website of this shop?", + "fr": "Quel est le site internet de ce magasin ?", + "ja": "こぎおåē—ぎホãƒŧムペãƒŧジはäŊ•ã§ã™ã‹?", + "nl": "Wat is de website van deze winkel?", + "ru": "КаĐēОК вĐĩĐą-ŅĐ°ĐšŅ‚ Ņƒ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", + "de": "Wie lautet die Webseite dieses Geschäfts?" + }, + "freeform": { + "key": "website", + "type": "url" + }, + "id": "shops-website" + }, + { + "render": { + "en": "{email}", + "fr": "{email}", + "id": "{email}", + "ru": "{email}", + "ja": "{email}", + "eo": "{email}", + "nl": "{email}" + }, + "question": { + "en": "What is the email address of this shop?", + "fr": "Quelle est l'adresse Êlectronique de ce magasin ?", + "ja": "こぎおåē—ãŽãƒĄãƒŧãƒĢã‚ĸドãƒŦ゚はäŊ•ã§ã™ã‹?", + "ru": "КаĐēОв Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", + "nl": "Wat is het e-mailadres van deze winkel?", + "de": "Wie ist die Email-Adresse dieses Geschäfts?", + "eo": "Kio estas la retpoŝta adreso de ĉi tiu butiko?" + }, + "freeform": { + "key": "email", + "type": "email" + }, + "id": "shops-email" + }, + { + "render": { + "en": "{opening_hours_table(opening_hours)}", + "fr": "{opening_hours_table(opening_hours)}", + "ru": "{opening_hours_table(opening_hours)}", + "ja": "{opening_hours_table(opening_hours)}", + "nl": "{opening_hours_table(opening_hours)}" + }, + "question": { + "en": "What are the opening hours of this shop?", + "fr": "Quels sont les horaires d'ouverture de ce magasin ?", + "ja": "こぎåē—ぎå–ļæĨ­æ™‚間はäŊ•æ™‚からäŊ•æ™‚ぞでですか?", + "nl": "Wat zijn de openingsuren van deze winkel?", + "ru": "КаĐēОвŅ‹ Ņ‡Đ°ŅŅ‹ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", + "de": "Wie sind die Öffnungszeiten dieses Geschäfts?" + }, + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "id": "shops-opening_hours" + }, + "questions", + "reviews" + ], + "presets": [ + { + "tags": [ + "shop=yes" + ], + "title": { "en": "Shop", "fr": "Magasin", "ru": "МаĐŗаСиĐŊ", @@ -8,402 +337,53 @@ "nl": "Winkel", "de": "Geschäft", "eo": "Butiko" - }, - "minzoom": 16, - "source": { - "osmTags": { - "and": [ - "shop~*" - ] - } - }, - "title": { - "render": { - "en": "Shop", - "fr": "Magasin", - "ru": "МаĐŗаСиĐŊ", - "ja": "åē—", - "nl": "Winkel", - "de": "Geschäft", - "eo": "Butiko" - }, - "mappings": [ - { - "if": { - "and": [ - "name~*" - ] - }, - "then": { - "en": "{name}", - "fr": "{name}", - "ru": "{name}", - "ja": "{name}", - "de": "{name}", - "eo": "{name}" - } - }, - { - "if": { - "and": [ - "shop!~yes" - ] - }, - "then": { - "en": "{shop}", - "fr": "{shop}", - "ru": "{shop}", - "ja": "{shop}", - "de": "{shop}", - "eo": "{shop}" - } - } - ] - }, - "description": { - "en": "A shop", - "fr": "Un magasin", - "ja": "ã‚ˇãƒ§ãƒƒãƒ—", - "nl": "Een winkel", - "ru": "МаĐŗаСиĐŊ", - "de": "Ein Geschäft", - "eo": "Butiko" - }, - "tagRenderings": [ - "images", - { - "question": { - "en": "What is the name of this shop?", - "fr": "Qu'est-ce que le nom de ce magasin?", - "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ?", - "ja": "こぎおåē—ぎ名前はäŊ•ã§ã™ã‹?", - "nl": "Wat is de naam van deze winkel?", - "de": "Wie ist der Name dieses Geschäfts?" - }, - "render": "This shop is called {name}", - "freeform": { - "key": "name" - }, - "id": "shops-name" - }, - { - "render": { - "en": "This shop sells {shop}", - "fr": "Ce magasin vends {shop}", - "ja": "ã“ãĄã‚‰ãŽãŠåē—では{shop}ã‚’č˛ŠåŖ˛ã—ãĻおりぞす", - "de": "Dieses Geschäft verkauft {shop}", - "eo": "Ĉi tiu butiko vendas {shop}" - }, - "question": { - "en": "What does this shop sell?", - "fr": "Que vends ce magasin ?", - "ja": "こぎおåē—ではäŊ•ã‚’åŖ˛ãŖãĻいぞすか?", - "ru": "ЧŅ‚Đž ĐŋŅ€ĐžĐ´Đ°Ņ‘Ņ‚ŅŅ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?", - "de": "Was wird in diesem Geschäft verkauft?", - "eo": "Kion vendas ĉi tiu butiko?" - }, - "freeform": { - "key": "shop" - }, - "mappings": [ - { - "if": { - "and": [ - "shop=convenience" - ] - }, - "then": { - "en": "Convenience store", - "fr": "Épicerie/superette", - "ja": "ã‚ŗãƒŗビニエãƒŗ゚゚トã‚ĸ", - "de": "Lebensmittelladen", - "nl": "Gemakswinkel" - } - }, - { - "if": { - "and": [ - "shop=supermarket" - ] - }, - "then": { - "en": "Supermarket", - "fr": "SupermarchÊ", - "ru": "ĐĄŅƒĐŋĐĩŅ€ĐŧĐ°Ņ€ĐēĐĩŅ‚", - "ja": "ã‚šãƒŧパãƒŧマãƒŧã‚ąãƒƒãƒˆ", - "nl": "Supermarkt", - "de": "Supermarkt" - } - }, - { - "if": { - "and": [ - "shop=clothes" - ] - }, - "then": { - "en": "Clothing store", - "fr": "Magasin de vÃĒtements", - "ru": "МаĐŗаСиĐŊ ОдĐĩĐļĐ´Ņ‹", - "ja": "čĄŖ料品åē—", - "de": "Bekleidungsgeschäft", - "nl": "Kledingwinkel" - } - }, - { - "if": { - "and": [ - "shop=hairdresser" - ] - }, - "then": { - "en": "Hairdresser", - "fr": "Coiffeur", - "ru": "ПаŅ€Đ¸ĐēĐŧĐ°Ņ…ĐĩŅ€ŅĐēĐ°Ņ", - "ja": "į†åŽšå¸Ģ", - "nl": "Kapper", - "de": "Friseur" - } - }, - { - "if": { - "and": [ - "shop=bakery" - ] - }, - "then": { - "en": "Bakery", - "fr": "Boulangerie", - "ja": "ベãƒŧã‚ĢãƒĒãƒŧ", - "nl": "Bakkerij", - "de": "Bäckerei", - "eo": "Bakejo" - } - }, - { - "if": { - "and": [ - "shop=car_repair" - ] - }, - "then": { - "en": "Car repair (garage)", - "fr": "Garage de rÊparation automobile", - "ja": "č‡Ē動čģŠäŋŽį†(ã‚ŦãƒŦãƒŧジ)", - "de": "Autowerkstatt", - "fi": "Autokorjaamo", - "hu": "AutÃŗszerelő", - "id": "Bengkel Mobil", - "it": "Autofficina", - "nb_NO": "Bilverksted", - "nl": "Autogarage", - "pl": "Warsztat samochodowy", - "pt": "Oficina de automÃŗveis", - "pt_BR": "Oficina MecÃĸnica", - "ru": "АвŅ‚ĐžĐŧĐ°ŅŅ‚ĐĩŅ€ŅĐēĐ°Ņ", - "sv": "Bilverkstad" - } - }, - { - "if": { - "and": [ - "shop=car" - ] - }, - "then": { - "en": "Car dealer", - "fr": "Concessionnaire", - "ru": "АвŅ‚ĐžŅĐ°ĐģĐžĐŊ", - "ja": "č‡Ē動čģŠãƒ‡ã‚Ŗãƒŧナãƒŧ", - "de": "Autohändler", - "nl": "Autodealer" - } - } - ], - "id": "shops-shop" - }, - { - "render": { - "en": "{phone}", - "fr": "{phone}", - "ca": "{phone}", - "id": "{phone}", - "ru": "{phone}", - "ja": "{phone}", - "de": "{phone}", - "eo": "{phone}", - "nl": "{phone}" - }, - "question": { - "en": "What is the phone number?", - "fr": "Quel est le numÊro de tÊlÊphone ?", - "ja": "é›ģ芹į•Ēåˇã¯äŊ•į•Ēですか?", - "nl": "Wat is het telefoonnummer?", - "ru": "КаĐēОК Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊ?", - "de": "Wie ist die Telefonnummer?", - "eo": "Kio estas la telefonnumero?" - }, - "freeform": { - "key": "phone", - "type": "phone" - }, - "id": "shops-phone" - }, - { - "render": { - "en": "{website}", - "fr": "{website}", - "ca": "{website}", - "id": "{website}", - "ru": "{website}", - "ja": "{website}", - "de": "{website}", - "eo": "{website}" - }, - "question": { - "en": "What is the website of this shop?", - "fr": "Quel est le site internet de ce magasin ?", - "ja": "こぎおåē—ぎホãƒŧムペãƒŧジはäŊ•ã§ã™ã‹?", - "nl": "Wat is de website van deze winkel?", - "ru": "КаĐēОК вĐĩĐą-ŅĐ°ĐšŅ‚ Ņƒ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", - "de": "Wie lautet die Webseite dieses Geschäfts?" - }, - "freeform": { - "key": "website", - "type": "url" - }, - "id": "shops-website" - }, - { - "render": { - "en": "{email}", - "fr": "{email}", - "id": "{email}", - "ru": "{email}", - "ja": "{email}", - "eo": "{email}", - "nl": "{email}" - }, - "question": { - "en": "What is the email address of this shop?", - "fr": "Quelle est l'adresse Êlectronique de ce magasin ?", - "ja": "こぎおåē—ãŽãƒĄãƒŧãƒĢã‚ĸドãƒŦ゚はäŊ•ã§ã™ã‹?", - "ru": "КаĐēОв Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", - "nl": "Wat is het e-mailadres van deze winkel?", - "de": "Wie ist die Email-Adresse dieses Geschäfts?", - "eo": "Kio estas la retpoŝta adreso de ĉi tiu butiko?" - }, - "freeform": { - "key": "email", - "type": "email" - }, - "id": "shops-email" - }, - { - "render": { - "en": "{opening_hours_table(opening_hours)}", - "fr": "{opening_hours_table(opening_hours)}", - "ru": "{opening_hours_table(opening_hours)}", - "ja": "{opening_hours_table(opening_hours)}", - "nl": "{opening_hours_table(opening_hours)}" - }, - "question": { - "en": "What are the opening hours of this shop?", - "fr": "Quels sont les horaires d'ouverture de ce magasin ?", - "ja": "こぎåē—ぎå–ļæĨ­æ™‚間はäŊ•æ™‚からäŊ•æ™‚ぞでですか?", - "nl": "Wat zijn de openingsuren van deze winkel?", - "ru": "КаĐēОвŅ‹ Ņ‡Đ°ŅŅ‹ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", - "de": "Wie sind die Öffnungszeiten dieses Geschäfts?" - }, - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "id": "shops-opening_hours" - }, - "questions", - "reviews" - ], - "icon": { + }, + "description": { + "en": "Add a new shop", + "fr": "Ajouter un nouveau magasin", + "ru": "ДобавиŅ‚ŅŒ ĐŊОвŅ‹Đš ĐŧĐ°ĐŗаСиĐŊ", + "ja": "新しいåē—ã‚’čŋŊ加する", + "nl": "Voeg een nieuwe winkel toe", + "de": "Ein neues Geschäft hinzufÃŧgen", + "eo": "Enmeti novan butikon" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "amenity=", + "disused:amenity:={amenity}" + ] + } + }, + "allowMove": true, + "mapRendering": [ + { + "icon": { "render": "./assets/themes/shops/shop.svg" - }, - "iconOverlays": [ + }, + "iconBadges": [ { - "if": "opening_hours~*", - "then": "isOpen", - "badge": true + "if": "opening_hours~*", + "then": "isOpen" } - ], - "width": { - "render": "8" - }, - "iconSize": { + ], + "iconSize": { "render": "40,40,center" + }, + "location": [ + "point", + "centroid" + ] }, - "color": { + { + "color": { "render": "#00f" - }, - "presets": [ - { - "tags": [ - "shop=yes" - ], - "title": { - "en": "Shop", - "fr": "Magasin", - "ru": "МаĐŗаСиĐŊ", - "ja": "åē—", - "nl": "Winkel", - "de": "Geschäft", - "eo": "Butiko" - }, - "description": { - "en": "Add a new shop", - "fr": "Ajouter un nouveau magasin", - "ru": "ДобавиŅ‚ŅŒ ĐŊОвŅ‹Đš ĐŧĐ°ĐŗаСиĐŊ", - "ja": "新しいåē—ã‚’čŋŊ加する", - "nl": "Voeg een nieuwe winkel toe", - "de": "Ein neues Geschäft hinzufÃŧgen", - "eo": "Enmeti novan butikon" - } - } - ], - "wayHandling": 2, - "deletion": { - "softDeletionTags": { - "and": [ - "amenity=", - "disused:amenity:={amenity}" - ] - } - }, - "allowMove": true, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/shops/shop.svg" - }, - "iconBadges": [ - { - "if": "opening_hours~*", - "then": "isOpen" - } - ], - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point", - "centroid" - ] - }, - { - "color": { - "render": "#00f" - }, - "width": { - "render": "8" - } - } - ] + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/slow_roads/slow_roads.json b/assets/layers/slow_roads/slow_roads.json index 1de9fc997..88be0f251 100644 --- a/assets/layers/slow_roads/slow_roads.json +++ b/assets/layers/slow_roads/slow_roads.json @@ -1,311 +1,278 @@ { - "id": "slow_roads", - "name": { - "nl": "Paadjes, trage wegen en autoluwe straten" + "id": "slow_roads", + "name": { + "nl": "Paadjes, trage wegen en autoluwe straten" + }, + "minzoom": 16, + "source": { + "osmTags": { + "and": [ + { + "or": [ + "highway=pedestrian", + "highway=footway", + "highway=path", + "highway=bridleway", + "highway=living_street", + "highway=track" + ] + }, + "access!=no", + "access!=private" + ] + } + }, + "title": { + "render": { + "nl": "Trage weg" }, - "icon": "./assets/layers/slow_roads/slow_road.svg", - "minzoom": 16, - "source": { - "osmTags": { - "and": [ - { - "or": [ - "highway=pedestrian", - "highway=footway", - "highway=path", - "highway=bridleway", - "highway=living_street", - "highway=track" - ] - }, - "access!=no", - "access!=private" - ] + "mappings": [ + { + "if": "name~*", + "then": { + "nl": "{name}" } - }, - "title": { - "render": { - "nl": "Trage weg" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "nl": "{name}" - } - }, - { - "if": "highway=footway", - "then": { - "nl": "Voetpad" - } - }, - { - "if": "highway=cycleway", - "then": { - "nl": "Fietspad" - } - }, - { - "if": "highway=pedestrian", - "then": { - "nl": "Voetgangersstraat" - } - }, - { - "if": "highway=living_street", - "then": { - "nl": "Woonerf" - } - }, - { - "if": "highway=path", - "then": "Klein pad" - } - ] - }, - "tagRenderings": [ - "images", - { - "id": "explanation", - "mappings": [ - { - "if": "highway=living_street", - "then": { - "nl:": "
Dit is een woonerf:
  • Voetgangers mogen hier de volledige breedte van de straat gebruiken
  • Gemotoriseerd verkeer mag maximaal 20km/h rijden
" - } - }, - { - "if": "highway=pedestrian", - "then": { - "nl": "Dit is een brede, autovrije straat" - } - }, - { - "if": "highway=footway", - "then": { - "nl": "Dit is een voetpaadje" - } - }, - { - "if": "highway=path", - "then": { - "nl": "Dit is een wegeltje of bospad" - } - }, - { - "if": "highway=bridleway", - "then": { - "nl": "Dit is een ruiterswegel" - } - }, - { - "if": "highway=track", - "then": { - "nl": "Dit is een tractorspoor of weg om landbouwgrond te bereikken" - } - } - ] - }, - { - "question": { - "nl": "Wat is de wegverharding van dit pad?" - }, - "render": { - "nl": "De ondergrond is {surface}", - "en": "The surface is {surface}", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}", - "fr": "La surface en {surface}", - "it": "La superficie è {surface}", - "de": "Die Oberfläche ist {surface}", - "eo": "La surfaco estas {surface}" - }, - "freeform": { - "key": "surface" - }, - "mappings": [ - { - "if": "surface=grass", - "then": { - "nl": "De ondergrond is gras", - "en": "The surface is grass", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°", - "fr": "La surface est en herbe", - "it": "La superficie è erba", - "de": "Die Oberfläche ist Gras", - "eo": "La surfaco estas herba" - } - }, - { - "if": "surface=ground", - "then": { - "nl": "De ondergrond is aarde", - "en": "The surface is ground", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - СĐĩĐŧĐģŅ", - "fr": "La surface est en terre", - "it": "La superficie è terreno", - "de": "Die Oberfläche ist Erde" - } - }, - { - "if": "surface=unpaved", - "then": { - "nl": "De ondergrond is onverhard", - "en": "The surface is unpaved", - "fr": "La surface est non pavÊe", - "it": "La superficie è non pavimentata", - "de": "Die Oberfläche ist ohne festen Belag" - }, - "hideInAnswer": true - }, - { - "if": "surface=sand", - "then": { - "nl": "De ondergrond is zand", - "en": "The surface is sand", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē", - "fr": "La surface est en sable", - "it": "La superficie è sabbia", - "de": "Die Oberfläche ist Sand", - "eo": "La surfaco estas sabla" - } - }, - { - "if": "surface=paving_stones", - "then": { - "nl": "De ondergrond bestaat uit stoeptegels", - "en": "The surface is paving stones", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°", - "it": "La superficie è pietre irregolari", - "fr": "La surface est en pierres pavÊes", - "de": "Die Oberfläche ist aus Pflastersteinen" - } - }, - { - "if": "surface=asphalt", - "then": { - "nl": "De ondergrond is asfalt", - "en": "The surface is asphalt", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚", - "it": "La superficie è asfalto", - "fr": "La surface est en bitume", - "de": "Die Oberfläche ist Asphalt" - } - }, - { - "if": "surface=concrete", - "then": { - "nl": "De ondergrond is beton", - "en": "The surface is concrete", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ", - "fr": "La surface est en bÊton", - "it": "La superficie è calcestruzzo", - "de": "Die Oberfläche ist Beton", - "eo": "La surfaco estas betona" - } - }, - { - "if": "surface=paved", - "then": { - "nl": "De ondergrond is verhard", - "en": "The surface is paved", - "fr": "La surface est pavÊe", - "it": "La superficie è pavimentata", - "de": "Die Oberfläche ist gepflastert" - }, - "hideInAnswer": true - } - ], - "id": "slow_roads-surface" - }, - { - "id": "slow_road_is_lit", - "question": "Is deze weg 's nachts verlicht?", - "mappings": [ - { - "if": "lit=yes", - "then": "'s nachts verlicht" - }, - { - "if": "lit=no", - "then": "Niet verlicht" - } - ] + }, + { + "if": "highway=footway", + "then": { + "nl": "Voetpad" } - ], - "width": { + }, + { + "if": "highway=cycleway", + "then": { + "nl": "Fietspad" + } + }, + { + "if": "highway=pedestrian", + "then": { + "nl": "Voetgangersstraat" + } + }, + { + "if": "highway=living_street", + "then": { + "nl": "Woonerf" + } + }, + { + "if": "highway=path", + "then": "Klein pad" + } + ] + }, + "tagRenderings": [ + "images", + { + "id": "explanation", + "mappings": [ + { + "if": "highway=living_street", + "then": { + "nl:": "
Dit is een woonerf:
  • Voetgangers mogen hier de volledige breedte van de straat gebruiken
  • Gemotoriseerd verkeer mag maximaal 20km/h rijden
" + } + }, + { + "if": "highway=pedestrian", + "then": { + "nl": "Dit is een brede, autovrije straat" + } + }, + { + "if": "highway=footway", + "then": { + "nl": "Dit is een voetpaadje" + } + }, + { + "if": "highway=path", + "then": { + "nl": "Dit is een wegeltje of bospad" + } + }, + { + "if": "highway=bridleway", + "then": { + "nl": "Dit is een ruiterswegel" + } + }, + { + "if": "highway=track", + "then": { + "nl": "Dit is een tractorspoor of weg om landbouwgrond te bereikken" + } + } + ] + }, + { + "question": { + "nl": "Wat is de wegverharding van dit pad?" + }, + "render": { + "nl": "De ondergrond is {surface}", + "en": "The surface is {surface}", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}", + "fr": "La surface en {surface}", + "it": "La superficie è {surface}", + "de": "Die Oberfläche ist {surface}", + "eo": "La surfaco estas {surface}" + }, + "freeform": { + "key": "surface" + }, + "mappings": [ + { + "if": "surface=grass", + "then": { + "nl": "De ondergrond is gras", + "en": "The surface is grass", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°", + "fr": "La surface est en herbe", + "it": "La superficie è erba", + "de": "Die Oberfläche ist Gras", + "eo": "La surfaco estas herba" + } + }, + { + "if": "surface=ground", + "then": { + "nl": "De ondergrond is aarde", + "en": "The surface is ground", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - СĐĩĐŧĐģŅ", + "fr": "La surface est en terre", + "it": "La superficie è terreno", + "de": "Die Oberfläche ist Erde" + } + }, + { + "if": "surface=unpaved", + "then": { + "nl": "De ondergrond is onverhard", + "en": "The surface is unpaved", + "fr": "La surface est non pavÊe", + "it": "La superficie è non pavimentata", + "de": "Die Oberfläche ist ohne festen Belag" + }, + "hideInAnswer": true + }, + { + "if": "surface=sand", + "then": { + "nl": "De ondergrond is zand", + "en": "The surface is sand", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē", + "fr": "La surface est en sable", + "it": "La superficie è sabbia", + "de": "Die Oberfläche ist Sand", + "eo": "La surfaco estas sabla" + } + }, + { + "if": "surface=paving_stones", + "then": { + "nl": "De ondergrond bestaat uit stoeptegels", + "en": "The surface is paving stones", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°", + "it": "La superficie è pietre irregolari", + "fr": "La surface est en pierres pavÊes", + "de": "Die Oberfläche ist aus Pflastersteinen" + } + }, + { + "if": "surface=asphalt", + "then": { + "nl": "De ondergrond is asfalt", + "en": "The surface is asphalt", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚", + "it": "La superficie è asfalto", + "fr": "La surface est en bitume", + "de": "Die Oberfläche ist Asphalt" + } + }, + { + "if": "surface=concrete", + "then": { + "nl": "De ondergrond is beton", + "en": "The surface is concrete", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ", + "fr": "La surface est en bÊton", + "it": "La superficie è calcestruzzo", + "de": "Die Oberfläche ist Beton", + "eo": "La surfaco estas betona" + } + }, + { + "if": "surface=paved", + "then": { + "nl": "De ondergrond is verhard", + "en": "The surface is paved", + "fr": "La surface est pavÊe", + "it": "La superficie è pavimentata", + "de": "Die Oberfläche ist gepflastert" + }, + "hideInAnswer": true + } + ], + "id": "slow_roads-surface" + }, + { + "id": "slow_road_is_lit", + "question": "Is deze weg 's nachts verlicht?", + "mappings": [ + { + "if": "lit=yes", + "then": "'s nachts verlicht" + }, + { + "if": "lit=no", + "then": "Niet verlicht" + } + ] + } + ], + "presets": [], + "mapRendering": [ + { + "icon": "./assets/layers/slow_roads/slow_road.svg", + "location": [ + "point" + ] + }, + { + "color": { + "render": "#eaba2a" + }, + "width": { "render": "7" - }, - "dashArray": { + }, + "dashArray": { "render": "", "mappings": [ - { - "if": "highway=cycleway", - "then": "" + { + "if": "highway=cycleway", + "then": "" + }, + { + "if": "highway=path", + "then": "0 12" + }, + { + "if": { + "or": [ + "highway=footway", + "highway=pedestrian" + ] }, - { - "if": "highway=path", - "then": "0 12" - }, - { - "if": { - "or": [ - "highway=footway", - "highway=pedestrian" - ] - }, - "then": "12 18" - }, - { - "if": "highway=living_street", - "then": "12 12 0 12" - } + "then": "12 18" + }, + { + "if": "highway=living_street", + "then": "12 12 0 12" + } ] - }, - "color": { - "render": "#eaba2a" - }, - "presets": [], - "mapRendering": [ - { - "icon": "./assets/layers/slow_roads/slow_road.svg", - "location": [ - "point" - ] - }, - { - "color": { - "render": "#eaba2a" - }, - "width": { - "render": "7" - }, - "dashArray": { - "render": "", - "mappings": [ - { - "if": "highway=cycleway", - "then": "" - }, - { - "if": "highway=path", - "then": "0 12" - }, - { - "if": { - "or": [ - "highway=footway", - "highway=pedestrian" - ] - }, - "then": "12 18" - }, - { - "if": "highway=living_street", - "then": "12 12 0 12" - } - ] - } - } - ] + } + } + ] } \ No newline at end of file diff --git a/assets/layers/sport_pitch/license_info.json b/assets/layers/sport_pitch/license_info.json index b4d37f96e..17c0c3c83 100644 --- a/assets/layers/sport_pitch/license_info.json +++ b/assets/layers/sport_pitch/license_info.json @@ -1,15 +1,4 @@ [ - { - "path": ".svg", - "license": "CC-BY-SA 4.0", - "authors": [ - "Gitte Loos (Createlli) in opdracht van Provincie Antwerpen " - ], - "sources": [ - "https://createlli.com/", - "https://www.provincieantwerpen.be/" - ] - }, { "path": "baseball.svg", "license": "CC-BY-SA 4.0", diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json index d5648444f..c3d7f38e1 100644 --- a/assets/layers/sport_pitch/sport_pitch.json +++ b/assets/layers/sport_pitch/sport_pitch.json @@ -1,589 +1,532 @@ { - "id": "sport_pitch", - "name": { - "nl": "Sportterrein", - "fr": "Terrains de sport", - "en": "Sport pitches", - "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", - "it": "Campi sportivi", - "de": "Sportplätze" - }, - "wayHandling": 1, - "minzoom": 12, - "source": { - "osmTags": { + "id": "sport_pitch", + "name": { + "nl": "Sportterrein", + "fr": "Terrains de sport", + "en": "Sport pitches", + "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", + "it": "Campi sportivi", + "de": "Sportplätze" + }, + "minzoom": 12, + "source": { + "osmTags": { + "and": [ + "leisure=pitch" + ] + } + }, + "calculatedTags": [ + "_size_classification=Number(feat.properties._surface) < 200 ? 'small' : (Number(feat.properties._surface) < 750 ? 'medium' : 'large') " + ], + "title": { + "render": { + "nl": "Sportterrein", + "fr": "Terrain de sport", + "en": "Sport pitch", + "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "it": "Campo sportivo", + "de": "Sportplatz" + } + }, + "description": { + "nl": "Een sportterrein", + "fr": "Un terrain de sport", + "en": "A sport pitch", + "it": "Un campo sportivo", + "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "de": "Ein Sportplatz" + }, + "tagRenderings": [ + "images", + { + "render": { + "nl": "Hier kan men {sport} beoefenen", + "fr": "Ici on joue au {sport}", + "en": "{sport} is played here", + "it": "Qui si gioca a {sport}", + "de": "Hier wird {sport} gespielt" + }, + "freeform": { + "key": "sport" + }, + "question": { + "nl": "Welke sporten kan men hier beoefenen?", + "fr": "À quel sport peut-on jouer ici ?", + "en": "Which sport can be played here?", + "it": "Quale sport si gioca qui?", + "de": "Welche Sportarten kÃļnnen hier gespielt werden?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": { "and": [ - "leisure=pitch" + "sport=basketball" ] + }, + "then": { + "nl": "Hier kan men basketbal spelen", + "fr": "Ici, on joue au basketball", + "en": "Basketball is played here", + "it": "Qui si gioca a basket", + "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ", + "de": "Hier wird Basketball gespielt" + } + }, + { + "if": { + "and": [ + "sport=soccer" + ] + }, + "then": { + "nl": "Hier kan men voetbal spelen", + "fr": "Ici, on joue au football", + "en": "Soccer is played here", + "it": "Qui si gioca a calcio", + "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ„ŅƒŅ‚йОĐģ", + "de": "Hier wird Fußball gespielt" + } + }, + { + "if": { + "and": [ + "sport=table_tennis" + ] + }, + "then": { + "nl": "Dit is een pingpongtafel", + "fr": "C'est une table de ping-pong", + "en": "This is a pingpong table", + "ru": "Đ­Ņ‚Đž ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐŊĐŗ-ĐŋĐžĐŊĐŗĐ°", + "it": "Questo è un tavolo da ping pong", + "de": "Dies ist eine Tischtennisplatte" + } + }, + { + "if": { + "and": [ + "sport=tennis" + ] + }, + "then": { + "nl": "Hier kan men tennis spelen", + "fr": "Ici, on joue au tennis", + "en": "Tennis is played here", + "it": "Qui si gioca a tennis", + "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ‚ĐĩĐŊĐŊиŅ", + "de": "Hier wird Tennis gespielt" + } + }, + { + "if": { + "and": [ + "sport=korfball" + ] + }, + "then": { + "nl": "Hier kan men korfbal spelen", + "fr": "Ici, on joue au korfball", + "en": "Korfball is played here", + "it": "Qui si gioca a korfball", + "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в ĐēĐžŅ€Ņ„йОĐģ", + "de": "Hier wird Kopfball gespielt" + } + }, + { + "if": { + "and": [ + "sport=basket" + ] + }, + "then": { + "nl": "Hier kan men basketbal beoefenen", + "fr": "Ici, on joue au basketball", + "en": "Basketball is played here", + "it": "Qui si gioca a basket", + "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ", + "de": "Hier wird Basketball gespielt" + }, + "hideInAnswer": true } + ], + "id": "sport_pitch-sport" }, - "calculatedTags": [ - "_size_classification=Number(feat.properties._surface) < 200 ? 'small' : (Number(feat.properties._surface) < 750 ? 'medium' : 'large') " - ], - "title": { - "render": { - "nl": "Sportterrein", - "fr": "Terrain de sport", - "en": "Sport pitch", - "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "it": "Campo sportivo", - "de": "Sportplatz" + { + "question": { + "nl": "Wat is de ondergrond van dit sportveld?", + "fr": "De quelle surface est fait ce terrain de sport ?", + "en": "Which is the surface of this sport pitch?", + "it": "Qual è la superficie di questo campo sportivo?", + "ru": "КаĐēĐžĐĩ ĐŋĐžĐēŅ€Ņ‹Ņ‚иĐĩ ĐŊĐ° ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?", + "de": "Was ist die Oberfläche dieses Sportplatzes?" + }, + "render": { + "nl": "De ondergrond is {surface}", + "fr": "La surface est {surface}", + "en": "The surface is {surface}", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}", + "it": "La superficie è {surface}", + "de": "Die Oberfläche ist {surface}" + }, + "freeform": { + "key": "surface" + }, + "mappings": [ + { + "if": "surface=grass", + "then": { + "nl": "De ondergrond is gras", + "fr": "La surface est de l'herbe", + "en": "The surface is grass", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°", + "it": "La superficie è erba", + "de": "Die Oberfläche ist Gras" + } + }, + { + "if": "surface=sand", + "then": { + "nl": "De ondergrond is zand", + "fr": "La surface est du sable", + "en": "The surface is sand", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē", + "it": "La superficie è sabbia", + "de": "Die Oberfläche ist Sand" + } + }, + { + "if": "surface=paving_stones", + "then": { + "nl": "De ondergrond bestaat uit stoeptegels", + "fr": "La surface est des pavÊs", + "en": "The surface is paving stones", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°", + "it": "La superficie è pietre irregolari", + "de": "Die Oberfläche ist aus Pflastersteinen" + } + }, + { + "if": "surface=asphalt", + "then": { + "nl": "De ondergrond is asfalt", + "fr": "La surface est de l'asphalte", + "en": "The surface is asphalt", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚", + "it": "La superficie è asfalto", + "de": "Die Oberfläche ist Asphalt" + } + }, + { + "if": "surface=concrete", + "then": { + "nl": "De ondergrond is beton", + "fr": "La surface est du bÊton", + "en": "The surface is concrete", + "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ", + "it": "La superficie è calcestruzzo", + "de": "Die Oberfläche ist Beton" + } } + ], + "id": "sport_pitch-surface" }, - "description": { - "nl": "Een sportterrein", - "fr": "Un terrain de sport", - "en": "A sport pitch", - "it": "Un campo sportivo", + { + "id": "sport-pitch-access", + "question": { + "nl": "Is dit sportterrein publiek toegankelijk?", + "fr": "Est-ce que ce terrain de sport est accessible au public ?", + "en": "Is this sport pitch publicly accessible?", + "it": "Questo campo sportivo è aperto al pubblico?", + "ru": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?", + "de": "Ist dieser Sportplatz Ãļffentlich zugänglich?" + }, + "mappings": [ + { + "if": "access=public", + "then": { + "nl": "Publiek toegankelijk", + "fr": "Accessible au public", + "en": "Public access", + "it": "Aperto al pubblico", + "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ", + "de": "Öffentlicher Zugang" + } + }, + { + "if": "access=limited", + "then": { + "nl": "Beperkt toegankelijk (enkel na reservatie, tijdens bepaalde uren, ...)", + "fr": "Accès limitÊ (par exemple uniquement sur rÊservation, à certains horairesâ€Ļ)", + "en": "Limited access (e.g. only with an appointment, during certain hours, ...)", + "it": "Accesso limitato (p.es. solo con prenotazione, in certi orari, ...)", + "ru": "ОĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ (ĐŊĐ°ĐŋŅ€., Ņ‚ĐžĐģŅŒĐēĐž ĐŋĐž СаĐŋиŅĐ¸, в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊŅ‹Đĩ Ņ‡Đ°ŅŅ‹, ...)", + "de": "Eingeschränkter Zugang (z. B. nur mit Termin, zu bestimmten Zeiten, ...)" + } + }, + { + "if": "access=members", + "then": { + "nl": "Enkel toegankelijk voor leden van de bijhorende sportclub", + "fr": "Accessible uniquement aux membres du club", + "en": "Only accessible for members of the club", + "it": "Accesso limitato ai membri dell'associazione", + "ru": "ДоŅŅ‚ŅƒĐŋ Ņ‚ĐžĐģŅŒĐēĐž Ņ‡ĐģĐĩĐŊĐ°Đŧ ĐēĐģŅƒĐąĐ°", + "de": "Zugang nur fÃŧr Vereinsmitglieder" + } + }, + { + "if": "access=private", + "then": { + "nl": "Privaat en niet toegankelijk", + "fr": "PrivÊ - Pas accessible au public", + "en": "Private - not accessible to the public", + "it": "Privato - non aperto al pubblico", + "de": "Privat - kein Ãļffentlicher Zugang" + } + } + ] + }, + { + "id": "sport-pitch-reservation", + "question": { + "nl": "Moet men reserveren om gebruik te maken van dit sportveld?", + "fr": "Doit-on rÊserver pour utiliser ce terrain de sport ?", + "en": "Does one have to make an appointment to use this sport pitch?", + "it": "È necessario prenotarsi per usare questo campo sportivo?", + "ru": "НŅƒĐļĐŊĐ° Đģи ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ?", + "de": "Muss man einen Termin vereinbaren, um diesen Sportplatz zu benutzen?" + }, + "condition": { + "and": [ + "access!=public", + "access!=private", + "access!=members" + ] + }, + "mappings": [ + { + "if": "reservation=required", + "then": { + "nl": "Reserveren is verplicht om gebruik te maken van dit sportterrein", + "fr": "Il est obligatoire de rÊserver pour utiliser ce terrain de sport", + "en": "Making an appointment is obligatory to use this sport pitch", + "it": "La prenotazione è obbligatoria per usare questo campo sportivo", + "de": "FÃŧr die Nutzung des Sportplatzes ist eine Voranmeldung erforderlich" + } + }, + { + "if": "reservation=recommended", + "then": { + "nl": "Reserveren is sterk aangeraden om gebruik te maken van dit sportterrein", + "fr": "Il est recommendÊ de rÊserver pour utiliser ce terrain de sport", + "en": "Making an appointment is recommended when using this sport pitch", + "it": "La prenotazione è consigliata per usare questo campo sportivo", + "ru": "ЖĐĩĐģĐ°Ņ‚ĐĩĐģŅŒĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ", + "de": "FÃŧr die Nutzung des Sportplatzes wird eine Voranmeldung empfohlen" + } + }, + { + "if": "reservation=yes", + "then": { + "nl": "Reserveren is mogelijk, maar geen voorwaarde", + "fr": "Il est possible de rÊserver, mais ce n'est pas nÊcÊssaire pour utiliser ce terrain de sport", + "en": "Making an appointment is possible, but not necessary to use this sport pitch", + "it": "La prenotazione è consentita, ma non è obbligatoria per usare questo campo sportivo", + "ru": "ПŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ вОСĐŧĐžĐļĐŊĐ°, ĐŊĐž ĐŊĐĩ ОйŅĐˇĐ°Ņ‚ĐĩĐģŅŒĐŊĐ°", + "de": "Eine Voranmeldung ist mÃļglich, aber nicht notwendig, um diesen Sportplatz zu nutzen" + } + }, + { + "if": "reservation=no", + "then": { + "nl": "Reserveren is niet mogelijk", + "fr": "On ne peut pas rÊserver", + "en": "Making an appointment is not possible", + "it": "Non è possibile prenotare", + "ru": "НĐĩвОСĐŧĐžĐļĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ", + "de": "Termine nach Vereinbarung nicht mÃļglich" + } + } + ] + }, + { + "question": { + "nl": "Wat is het telefoonnummer van de bevoegde dienst of uitbater?", + "fr": "Quel est le numÊro de tÊlÊphone du gÊrant ?", + "en": "What is the phone number of the operator?", + "it": "Qual è il numero di telefono del gestore?", + "de": "Wie ist die Telefonnummer des Betreibers?" + }, + "freeform": { + "key": "phone", + "type": "phone" + }, + "render": "{phone}", + "id": "sport_pitch-phone" + }, + { + "question": { + "nl": "Wat is het email-adres van de bevoegde dienst of uitbater?", + "fr": "Quelle est l'adresse courriel du gÊrant ?", + "en": "What is the email address of the operator?", + "it": "Qual è l'indirizzo email del gestore?", + "de": "Wie ist die Email-Adresse des Betreibers?" + }, + "freeform": { + "key": "email", + "type": "email" + }, + "render": "{email}", + "id": "sport_pitch-email" + }, + { + "question": { + "nl": "Wanneer is dit sportveld toegankelijk?", + "fr": "Quand ce terrain est-il accessible ?", + "en": "When is this pitch accessible?", + "it": "Quando è aperto questo campo sportivo?", + "ru": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?", + "de": "Wann ist dieser Sportplatz zugänglich?" + }, + "render": "Openingsuren: {opening_hours_table()}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "mappings": [ + { + "if": "opening_hours=", + "then": "24/7 toegankelijk", + "hideInAnswer": true + }, + { + "if": "opening_hours=24/7", + "then": { + "nl": "24/7 toegankelijk", + "fr": "Accessible en permanence", + "en": "Always accessible", + "ru": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ", + "it": "Sempre aperto", + "de": "Immer zugänglich" + } + } + ], + "condition": "access~*", + "id": "sport_pitch-opening_hours" + }, + "questions", + { + "id": "sport-pitch-reviews", + "render": "{reviews(name, sportpitch)}" + } + ], + "presets": [ + { + "title": { + "nl": "Ping-pong tafel", + "fr": "Table de ping-pong", + "en": "Tabletennis table", + "it": "Tavolo da tennistavolo", + "ru": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŊĐ°ŅŅ‚ĐžĐģŅŒĐŊĐžĐŗĐž Ņ‚ĐĩĐŊĐŊиŅĐ°", + "de": "Tischtennisplatte" + }, + "tags": [ + "leisure=pitch", + "sport=table_tennis" + ] + }, + { + "title": { + "nl": "Sportterrein", + "fr": "Terrain de sport", + "en": "Sport pitch", "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "de": "Ein Sportplatz" - }, - "tagRenderings": [ - "images", - { - "render": { - "nl": "Hier kan men {sport} beoefenen", - "fr": "Ici on joue au {sport}", - "en": "{sport} is played here", - "it": "Qui si gioca a {sport}", - "de": "Hier wird {sport} gespielt" - }, - "freeform": { - "key": "sport" - }, - "question": { - "nl": "Welke sporten kan men hier beoefenen?", - "fr": "À quel sport peut-on jouer ici ?", - "en": "Which sport can be played here?", - "it": "Quale sport si gioca qui?", - "de": "Welche Sportarten kÃļnnen hier gespielt werden?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": { - "and": [ - "sport=basketball" - ] - }, - "then": { - "nl": "Hier kan men basketbal spelen", - "fr": "Ici, on joue au basketball", - "en": "Basketball is played here", - "it": "Qui si gioca a basket", - "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ", - "de": "Hier wird Basketball gespielt" - } - }, - { - "if": { - "and": [ - "sport=soccer" - ] - }, - "then": { - "nl": "Hier kan men voetbal spelen", - "fr": "Ici, on joue au football", - "en": "Soccer is played here", - "it": "Qui si gioca a calcio", - "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ„ŅƒŅ‚йОĐģ", - "de": "Hier wird Fußball gespielt" - } - }, - { - "if": { - "and": [ - "sport=table_tennis" - ] - }, - "then": { - "nl": "Dit is een pingpongtafel", - "fr": "C'est une table de ping-pong", - "en": "This is a pingpong table", - "ru": "Đ­Ņ‚Đž ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐŊĐŗ-ĐŋĐžĐŊĐŗĐ°", - "it": "Questo è un tavolo da ping pong", - "de": "Dies ist eine Tischtennisplatte" - } - }, - { - "if": { - "and": [ - "sport=tennis" - ] - }, - "then": { - "nl": "Hier kan men tennis spelen", - "fr": "Ici, on joue au tennis", - "en": "Tennis is played here", - "it": "Qui si gioca a tennis", - "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ‚ĐĩĐŊĐŊиŅ", - "de": "Hier wird Tennis gespielt" - } - }, - { - "if": { - "and": [ - "sport=korfball" - ] - }, - "then": { - "nl": "Hier kan men korfbal spelen", - "fr": "Ici, on joue au korfball", - "en": "Korfball is played here", - "it": "Qui si gioca a korfball", - "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в ĐēĐžŅ€Ņ„йОĐģ", - "de": "Hier wird Kopfball gespielt" - } - }, - { - "if": { - "and": [ - "sport=basket" - ] - }, - "then": { - "nl": "Hier kan men basketbal beoefenen", - "fr": "Ici, on joue au basketball", - "en": "Basketball is played here", - "it": "Qui si gioca a basket", - "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ", - "de": "Hier wird Basketball gespielt" - }, - "hideInAnswer": true - } - ], - "id": "sport_pitch-sport" - }, - { - "question": { - "nl": "Wat is de ondergrond van dit sportveld?", - "fr": "De quelle surface est fait ce terrain de sport ?", - "en": "Which is the surface of this sport pitch?", - "it": "Qual è la superficie di questo campo sportivo?", - "ru": "КаĐēĐžĐĩ ĐŋĐžĐēŅ€Ņ‹Ņ‚иĐĩ ĐŊĐ° ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?" - }, - "render": { - "nl": "De ondergrond is {surface}", - "fr": "La surface est {surface}", - "en": "The surface is {surface}", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}", - "it": "La superficie è {surface}", - "de": "Die Oberfläche ist {surface}" - }, - "freeform": { - "key": "surface" - }, - "mappings": [ - { - "if": "surface=grass", - "then": { - "nl": "De ondergrond is gras", - "fr": "La surface est de l'herbe", - "en": "The surface is grass", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°", - "it": "La superficie è erba", - "de": "Die Oberfläche ist Gras" - } - }, - { - "if": "surface=sand", - "then": { - "nl": "De ondergrond is zand", - "fr": "La surface est du sable", - "en": "The surface is sand", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē", - "it": "La superficie è sabbia", - "de": "Die Oberfläche ist Sand" - } - }, - { - "if": "surface=paving_stones", - "then": { - "nl": "De ondergrond bestaat uit stoeptegels", - "fr": "La surface est des pavÊs", - "en": "The surface is paving stones", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°", - "it": "La superficie è pietre irregolari", - "de": "Die Oberfläche ist aus Pflastersteinen" - } - }, - { - "if": "surface=asphalt", - "then": { - "nl": "De ondergrond is asfalt", - "fr": "La surface est de l'asphalte", - "en": "The surface is asphalt", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚", - "it": "La superficie è asfalto", - "de": "Die Oberfläche ist Asphalt" - } - }, - { - "if": "surface=concrete", - "then": { - "nl": "De ondergrond is beton", - "fr": "La surface est du bÊton", - "en": "The surface is concrete", - "ru": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ", - "it": "La superficie è calcestruzzo", - "de": "Die Oberfläche ist Beton" - } - } - ], - "id": "sport_pitch-surface" - }, - { - "id": "sport-pitch-access", - "question": { - "nl": "Is dit sportterrein publiek toegankelijk?", - "fr": "Est-ce que ce terrain de sport est accessible au public ?", - "en": "Is this sport pitch publicly accessible?", - "it": "Questo campo sportivo è aperto al pubblico?", - "ru": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?", - "de": "Ist dieser Sportplatz Ãļffentlich zugänglich?" - }, - "mappings": [ - { - "if": "access=public", - "then": { - "nl": "Publiek toegankelijk", - "fr": "Accessible au public", - "en": "Public access", - "it": "Aperto al pubblico", - "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ", - "de": "Öffentlicher Zugang" - } - }, - { - "if": "access=limited", - "then": { - "nl": "Beperkt toegankelijk (enkel na reservatie, tijdens bepaalde uren, ...)", - "fr": "Accès limitÊ (par exemple uniquement sur rÊservation, à certains horairesâ€Ļ)", - "en": "Limited access (e.g. only with an appointment, during certain hours, ...)", - "it": "Accesso limitato (p.es. solo con prenotazione, in certi orari, ...)", - "ru": "ОĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ (ĐŊĐ°ĐŋŅ€., Ņ‚ĐžĐģŅŒĐēĐž ĐŋĐž СаĐŋиŅĐ¸, в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊŅ‹Đĩ Ņ‡Đ°ŅŅ‹, ...)" - } - }, - { - "if": "access=members", - "then": { - "nl": "Enkel toegankelijk voor leden van de bijhorende sportclub", - "fr": "Accessible uniquement aux membres du club", - "en": "Only accessible for members of the club", - "it": "Accesso limitato ai membri dell'associazione", - "ru": "ДоŅŅ‚ŅƒĐŋ Ņ‚ĐžĐģŅŒĐēĐž Ņ‡ĐģĐĩĐŊĐ°Đŧ ĐēĐģŅƒĐąĐ°", - "de": "Zugang nur fÃŧr Vereinsmitglieder" - } - }, - { - "if": "access=private", - "then": { - "nl": "Privaat en niet toegankelijk", - "fr": "PrivÊ - Pas accessible au public", - "en": "Private - not accessible to the public", - "it": "Privato - non aperto al pubblico", - "de": "Privat - kein Ãļffentlicher Zugang" - } - } - ] - }, - { - "id": "sport-pitch-reservation", - "question": { - "nl": "Moet men reserveren om gebruik te maken van dit sportveld?", - "fr": "Doit-on rÊserver pour utiliser ce terrain de sport ?", - "en": "Does one have to make an appointment to use this sport pitch?", - "it": "È necessario prenotarsi per usare questo campo sportivo?", - "ru": "НŅƒĐļĐŊĐ° Đģи ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ?" - }, - "condition": { - "and": [ - "access!=public", - "access!=private", - "access!=members" - ] - }, - "mappings": [ - { - "if": "reservation=required", - "then": { - "nl": "Reserveren is verplicht om gebruik te maken van dit sportterrein", - "fr": "Il est obligatoire de rÊserver pour utiliser ce terrain de sport", - "en": "Making an appointment is obligatory to use this sport pitch", - "it": "La prenotazione è obbligatoria per usare questo campo sportivo" - } - }, - { - "if": "reservation=recommended", - "then": { - "nl": "Reserveren is sterk aangeraden om gebruik te maken van dit sportterrein", - "fr": "Il est recommendÊ de rÊserver pour utiliser ce terrain de sport", - "en": "Making an appointment is recommended when using this sport pitch", - "it": "La prenotazione è consigliata per usare questo campo sportivo", - "ru": "ЖĐĩĐģĐ°Ņ‚ĐĩĐģŅŒĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ" - } - }, - { - "if": "reservation=yes", - "then": { - "nl": "Reserveren is mogelijk, maar geen voorwaarde", - "fr": "Il est possible de rÊserver, mais ce n'est pas nÊcÊssaire pour utiliser ce terrain de sport", - "en": "Making an appointment is possible, but not necessary to use this sport pitch", - "it": "La prenotazione è consentita, ma non è obbligatoria per usare questo campo sportivo", - "ru": "ПŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ вОСĐŧĐžĐļĐŊĐ°, ĐŊĐž ĐŊĐĩ ОйŅĐˇĐ°Ņ‚ĐĩĐģŅŒĐŊĐ°" - } - }, - { - "if": "reservation=no", - "then": { - "nl": "Reserveren is niet mogelijk", - "fr": "On ne peut pas rÊserver", - "en": "Making an appointment is not possible", - "it": "Non è possibile prenotare", - "ru": "НĐĩвОСĐŧĐžĐļĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ", - "de": "Termine nach Vereinbarung nicht mÃļglich" - } - } - ] - }, - { - "question": { - "nl": "Wat is het telefoonnummer van de bevoegde dienst of uitbater?", - "fr": "Quel est le numÊro de tÊlÊphone du gÊrant ?", - "en": "What is the phone number of the operator?", - "it": "Qual è il numero di telefono del gestore?" - }, - "freeform": { - "key": "phone", - "type": "phone" - }, - "render": "{phone}", - "id": "sport_pitch-phone" - }, - { - "question": { - "nl": "Wat is het email-adres van de bevoegde dienst of uitbater?", - "fr": "Quelle est l'adresse courriel du gÊrant ?", - "en": "What is the email address of the operator?", - "it": "Qual è l'indirizzo email del gestore?" - }, - "freeform": { - "key": "email", - "type": "email" - }, - "render": "{email}", - "id": "sport_pitch-email" - }, - { - "question": { - "nl": "Wanneer is dit sportveld toegankelijk?", - "fr": "Quand ce terrain est-il accessible ?", - "en": "When is this pitch accessible?", - "it": "Quando è aperto questo campo sportivo?", - "ru": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?", - "de": "Wann ist dieser Sportplatz zugänglich?" - }, - "render": "Openingsuren: {opening_hours_table()}", - "freeform": { - "key": "opening_hours", - "type": "opening_hours" - }, - "mappings": [ - { - "if": "opening_hours=", - "then": "24/7 toegankelijk", - "hideInAnswer": true - }, - { - "if": "opening_hours=24/7", - "then": { - "nl": "24/7 toegankelijk", - "fr": "Accessible en permanence", - "en": "Always accessible", - "ru": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ", - "it": "Sempre aperto", - "de": "Immer zugänglich" - } - } - ], - "condition": "access~*", - "id": "sport_pitch-opening_hours" - }, - "questions", - { - "id": "sport-pitch-reviews", - "render": "{reviews(name, sportpitch)}" - } - ], - "icon": { + "it": "Campo sportivo", + "de": "Sportplatz" + }, + "tags": [ + "leisure=pitch", + "fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen" + ] + } + ], + "mapRendering": [ + { + "icon": { "render": "circle:white;./assets/layers/sport_pitch/sport_pitch.svg", "mappings": [ - { - "if": { - "or": [ - "sport=baseball", - "sport=basketball", - "sport=beachvolleyball", - "sport=boules", - "sport=skateboard", - "sport=soccer", - "sport=table_tennis", - "sport=tennis", - "sport=volleyball" - ] - }, - "then": "circle:white;./assets/layers/sport_pitch/{sport}.svg" - } - ] - }, - "iconOverlays": [ - { + { "if": { - "and": [ - "opening_hours!=24/7", - "opening_hours~*" - ] + "or": [ + "sport=baseball", + "sport=basketball", + "sport=beachvolleyball", + "sport=boules", + "sport=skateboard", + "sport=soccer", + "sport=table_tennis", + "sport=tennis", + "sport=volleyball" + ] }, - "then": "isOpen" + "then": "circle:white;./assets/layers/sport_pitch/{sport}.svg" + } + ] + }, + "iconBadges": [ + { + "if": { + "and": [ + "opening_hours!=24/7", + "opening_hours~*" + ] + }, + "then": "isOpen" }, { - "if": { - "or": [ - "access=customers", - "access=private", - "access=no" - ] - }, - "then": "circle:white;./assets/layers/sport_pitch/lock.svg" + "if": { + "or": [ + "access=customers", + "access=private", + "access=no" + ] + }, + "then": "circle:white;./assets/layers/sport_pitch/lock.svg" } - ], - "width": { - "render": "1" - }, - "iconSize": { + ], + "iconSize": { "render": "25,25,center", "mappings": [ - { - "if": { - "or": [ - "_size_classification=medium", - "id~node/.*" - ] - }, - "then": "40,40,center" + { + "if": { + "or": [ + "_size_classification=medium", + "id~node/.*" + ] }, - { - "if": "_size_classification=small", - "then": "25,25,center" - }, - { - "if": "_size_classification=large", - "then": "50,50,center" - } + "then": "32,32,center" + }, + { + "if": "_size_classification=small", + "then": "25,25,center" + }, + { + "if": "_size_classification=large", + "then": "40,40,center" + } ] + }, + "location": [ + "point", + "centroid" + ] }, - "color": { - "render": "#7cb82f" - }, - "presets": [ - { - "title": { - "nl": "Ping-pong tafel", - "fr": "Table de ping-pong", - "en": "Tabletennis table", - "it": "Tavolo da tennistavolo", - "ru": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŊĐ°ŅŅ‚ĐžĐģŅŒĐŊĐžĐŗĐž Ņ‚ĐĩĐŊĐŊиŅĐ°", - "de": "Tischtennisplatte" - }, - "tags": [ - "leisure=pitch", - "sport=table_tennis" - ] - }, - { - "title": { - "nl": "Sportterrein", - "fr": "Terrain de sport", - "en": "Sport pitch", - "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "it": "Campo sportivo", - "de": "Sportplatz" - }, - "tags": [ - "leisure=pitch", - "fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen" - ] - } - ], - "mapRendering": [ - { - "icon": { - "render": "circle:white;./assets/layers/sport_pitch/sport_pitch.svg", - "mappings": [ - { - "if": { - "or": [ - "sport=baseball", - "sport=basketball", - "sport=beachvolleyball", - "sport=boules", - "sport=skateboard", - "sport=soccer", - "sport=table_tennis", - "sport=tennis", - "sport=volleyball" - ] - }, - "then": "circle:white;./assets/layers/sport_pitch/{sport}.svg" - } - ] - }, - "iconBadges": [ - { - "if": { - "and": [ - "opening_hours!=24/7", - "opening_hours~*" - ] - }, - "then": "isOpen" - }, - { - "if": { - "or": [ - "access=customers", - "access=private", - "access=no" - ] - }, - "then": "circle:white;./assets/layers/sport_pitch/lock.svg" - } - ], - "iconSize": { - "render": "25,25,center", - "mappings": [ - { - "if": { - "or": [ - "_size_classification=medium", - "id~node/.*" - ] - }, - "then": "40,40,center" - }, - { - "if": "_size_classification=small", - "then": "25,25,center" - }, - { - "if": "_size_classification=large", - "then": "50,50,center" - } - ] - }, - "location": [ - "point" - ] - } - ] + { + "color": "#00cc00", + "width": "1", + "fill": "false" + } + ] } \ No newline at end of file diff --git a/assets/layers/street_lamps/bent_pole_1.svg b/assets/layers/street_lamps/bent_pole_1.svg index ed33e232b..c702d8b44 100644 --- a/assets/layers/street_lamps/bent_pole_1.svg +++ b/assets/layers/street_lamps/bent_pole_1.svg @@ -1,100 +1,99 @@ - - - - - - - - image/svg+xml - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="400" + height="400" + viewBox="0 0 105.83333 105.83334" + version="1.1" + id="svg8" + sodipodi:docname="bent-pole-1.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + + + + + + + + image/svg+xml + + + + + - + inkscape:label="Laag 1" + inkscape:groupmode="layer" + id="layer1"> - - - - - + id="g864" + transform="translate(-9.1324516,-2.7737965)"> + + + + + + + + + - - diff --git a/assets/layers/street_lamps/bent_pole_2.svg b/assets/layers/street_lamps/bent_pole_2.svg index f41cdeaf9..f015028aa 100644 --- a/assets/layers/street_lamps/bent_pole_2.svg +++ b/assets/layers/street_lamps/bent_pole_2.svg @@ -1,138 +1,137 @@ - - - - - - - - image/svg+xml - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="400" + height="400" + viewBox="0 0 105.83333 105.83334" + version="1.1" + id="svg8" + sodipodi:docname="bent-pole-2.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + + + + + + + + image/svg+xml + + + + + - + inkscape:label="Laag 1" + inkscape:groupmode="layer" + id="layer1"> - + id="g864" + transform="translate(-9.1324516,-2.7737965)"> - - - - - - - - + id="g969" + transform="translate(11.842268)"> - - + id="g1568" + transform="matrix(1.75,0,0,1.75,-37.655138,-41.767847)"> + + + + + + + + + + + + + + + + + - - - - diff --git a/assets/layers/street_lamps/straight_pole.svg b/assets/layers/street_lamps/straight_pole.svg index c59f755d6..38c030041 100644 --- a/assets/layers/street_lamps/straight_pole.svg +++ b/assets/layers/street_lamps/straight_pole.svg @@ -1,160 +1,159 @@ - - - - - - - - image/svg+xml - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="100mm" + height="100mm" + viewBox="0 0 99.999987 99.999992" + version="1.1" + id="svg8" + sodipodi:docname="straight_pole.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + + + + + + + + image/svg+xml + + + + + - + inkscape:label="Laag 1" + inkscape:groupmode="layer" + id="layer1"> - + id="g864" + transform="translate(-9.1324516,-2.7737965)"> - + id="g869"> - - + id="g1550" + transform="matrix(1.75,0,0,1.75,-46.536839,-41.767847)"> + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - diff --git a/assets/layers/street_lamps/street_lamp.svg b/assets/layers/street_lamps/street_lamp.svg index 72602af3d..2942456b4 100644 --- a/assets/layers/street_lamps/street_lamp.svg +++ b/assets/layers/street_lamps/street_lamp.svg @@ -1,4 +1,6 @@ - - + + diff --git a/assets/layers/street_lamps/street_lamps.json b/assets/layers/street_lamps/street_lamps.json index 96a64b76f..a880d499b 100644 --- a/assets/layers/street_lamps/street_lamps.json +++ b/assets/layers/street_lamps/street_lamps.json @@ -1,371 +1,374 @@ { - "id": "street_lamps", - "name": { - "en": "Street Lamps", - "nl": "Straatlantaarns" + "id": "street_lamps", + "name": { + "en": "Street Lamps", + "nl": "Straatlantaarns" + }, + "source": { + "osmTags": "highway=street_lamp" + }, + "minZoom": 16, + "title": { + "render": { + "en": "Street Lamp", + "nl": "Straatlantaarn" }, - "source": { - "osmTags": "highway=street_lamp" - }, - "minZoom": 16, - "title": { - "render": { - "en": "Street Lamp", - "nl": "Straatlantaarn" - }, - "mappings": [ - { - "if": "ref~*", - "then": { - "en": "Street Lamp {ref}", - "nl": "Straatlantaarn {ref}" - } - } - ] - }, - "mapRendering": [ - { - "location": "point", - "icon": "./assets/layers/street_lamps/street_lamp.svg", - "iconBadges": [ - { - "if": "light:colour~*", - "then": "circle:{light:colour}" - } - ], - "iconSize": "40,40,bottom" + "mappings": [ + { + "if": "ref~*", + "then": { + "en": "Street Lamp {ref}", + "nl": "Straatlantaarn {ref}" } - ], - "presets": [ + } + ] + }, + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": "./assets/layers/street_lamps/street_lamp.svg", + "iconBadges": [ { - "title": { - "en": "street lamp", - "nl": "straatlantaarn" - }, - "tags": [ - "highway=street_lamp" - ], - "preciseInput": true + "if": "light:colour~*", + "then": "circle:{light:colour}" } - ], - "tagRenderings": [ - { - "id": "ref", - "render": { - "en": "This street lamp has the reference number {ref}", - "nl": "Deze straatlantaarn heeft het nummer {ref}" - }, - "question": { - "en": "What is the reference number of this street lamp?", - "nl": "Wat is het nummer van deze straatlantaarn?" - }, - "freeform": { - "key": "ref" - } - }, - { - "id": "support", - "question": { - "en": "How is this street lamp mounted?", - "nl": "Hoe is deze straatlantaarn gemonteerd?" - }, - "mappings": [ - { - "if": "support=catenary", - "then": { - "en": "This lamp is suspended using cables", - "nl": "Deze lantaarn hangt aan kabels" - } - }, - { - "if": "support=ceiling", - "then": { - "en": "This lamp is mounted on a ceiling", - "nl": "Deze lantaarn hangt aan een plafond" - } - }, - { - "if": "support=ground", - "then": { - "en": "This lamp is mounted in the ground", - "nl": "Deze lantaarn zit in de grond" - } - }, - { - "if": "support=pedestal", - "then": { - "en": "This lamp is mounted on a short pole (mostly < 1.5m)", - "nl": "Deze lantaarn zit op een korte paal (meestal < 1.5m)" - } - }, - { - "if": "support=pole", - "then": { - "en": "This lamp is mounted on a pole", - "nl": "Deze lantaarn zit op een paal" - } - }, - { - "if": "support=wall", - "then": { - "en": "This lamp is mounted directly to the wall", - "nl": "Deze lantaarn hangt direct aan de muur" - } - }, - { - "if": "support=wall_mount", - "then": { - "en": "This lamp is mounted to the wall using a metal bar", - "nl": "Deze lantaarn hangt aan de muur met een metalen balk" - } - } - ] - }, - { - "id": "lamp_mount", - "question": { - "en": "How is this lamp mounted to the pole?", - "nl": "Hoe zit deze lantaarn aan de paal?" - }, - "condition": "support=pole", - "mappings": [ - { - "if": "lamp_mount=straight_mast", - "then": { - "en": "This lamp sits atop of a straight mast", - "nl": "Deze lantaarn zit boven op een rechte paal" - } - }, - { - "if": "lamp_mount=bent_mast", - "then": { - "en": "This lamp sits at the end of a bent mast", - "nl": "Deze lantaarn zit aan het eind van een gebogen paal" - } - } - ] - }, - { - "id": "method", - "question": { - "en": "What kind of lighting does this lamp use?", - "nl": "Wat voor verlichting gebruikt deze lantaarn?" - }, - "mappings": [ - { - "if": "light:method=electric", - "then": { - "en": "This lamp is lit electrically", - "nl": "Deze lantaarn is elektrisch verlicht" - }, - "hideInAnswer": true - }, - { - "if": "light:method=LED", - "then": { - "en": "This lamp uses LEDs", - "nl": "Deze lantaarn gebruikt LEDs" - } - }, - { - "if": "light:method=incandescent", - "then": { - "en": "This lamp uses incandescent lighting", - "nl": "Deze lantaarn gebruikt gloeilampen" - } - }, - { - "if": "light:method=halogen", - "then": { - "en": "This lamp uses halogen lighting", - "nl": "Deze lantaarn gebruikt halogeen verlichting" - } - }, - { - "if": "light:method=discharge", - "then": { - "en": "This lamp uses discharge lamps (unknown type)", - "nl": "Deze lantaarn gebruikt gasontladingslampen (onbekend type)" - } - }, - { - "if": "light:method=mercury", - "then": { - "en": "This lamp uses a mercury-vapour lamp (lightly blueish)", - "nl": "Deze lantaarn gebruikt een kwiklamp (enigszins blauwachtig)" - } - }, - { - "if": "light:method=metal-halide", - "then": { - "en": "This lamp uses metal-halide lamps (bright white)", - "nl": "Deze lantaarn gebruikt metaalhalidelampen" - } - }, - { - "if": "light:method=fluorescent", - "then": { - "en": "This lamp uses fluorescent lighting", - "nl": "Deze lantaarn gebruikt fluorescentieverlichting (TL en spaarlamp)" - } - }, - { - "if": "light:method=sodium", - "then": { - "en": "This lamp uses sodium lamps (unknown type)", - "nl": "Deze lantaarn gebruikt natriumlampen (onbekend type)" - } - }, - { - "if": "light:method=low_pressure_sodium", - "then": { - "en": "This lamp uses low pressure sodium lamps (monochrome orange)", - "nl": "Deze lantaarn gebruikt lagedruknatriumlampen (monochroom oranje)" - } - }, - { - "if": "light:method=high_pressure_sodium", - "then": { - "en": "This lamp uses high pressure sodium lamps (orange with white)", - "nl": "Deze lantaarn gebruikt hogedruknatriumlampen (oranje met wit)" - } - }, - { - "if": "light:method=gas", - "then": { - "en": "This lamp is lit using gas", - "nl": "Deze lantaarn wordt verlicht met gas" - } - } - ] - }, - { - "id": "colour", - "question": { - "en": "What colour light does this lamp emit?", - "nl": "Wat voor kleur licht geeft deze lantaarn?" - }, - "render": { - "en": "This lamp emits {light:colour} light", - "nl": "Deze lantaarn geeft {light:colour} licht" - }, - "freeform": { - "key": "light:colour", - "type": "color" - }, - "mappings": [ - { - "if": "light:colour=white", - "then": { - "en": "This lamp emits white light", - "nl": "Deze lantaarn geeft wit licht" - } - }, - { - "if": "light:colour=green", - "then": { - "en": "This lamp emits green light", - "nl": "Deze lantaarn geeft groen licht" - } - }, - { - "if": "light:colour=orange", - "then": { - "en": "This lamp emits orange light", - "nl": "Deze lantaarn geeft oranje licht" - } - } - ] - }, - { - "id": "count", - "render": { - "en": "This lamp has {light:count} fixtures", - "nl": "Deze lantaarn heeft {light:count} lampen" - }, - "question": { - "en": "How many fixtures does this light have?", - "nl": "Hoeveel lampen heeft deze lantaarn?" - }, - "condition": "support=pole", - "freeform": { - "key": "light:count", - "type": "pnat" - }, - "mappings": [ - { - "if": "light:count=1", - "then": { - "en": "This lamp has 1 fixture", - "nl": "Deze lantaarn heeft 1 lamp" - } - }, - { - "if": "light:count=2", - "then": { - "en": "This lamp has 2 fixtures", - "nl": "Deze lantaarn heeft 2 lampen" - } - } - ] - }, - { - "id": "lit", - "question": { - "en": "When is this lamp lit?", - "nl": "Wanneer is deze lantaarn verlicht?" - }, - "mappings": [ - { - "if": "light:lit=dusk-dawn", - "then": { - "en": "This lamp is lit at night", - "nl": "Deze lantaarn is 's nachts verlicht" - } - }, - { - "if": "light:lit=24/7", - "then": { - "en": "This lamp is lit 24/7", - "nl": "Deze lantaarn is 24/7 verlicht" - } - }, - { - "if": "light:lit=motion", - "then": { - "en": "This lamp is lit based on motion", - "nl": "Deze lantaarn is verlicht op basis van beweging" - } - }, - { - "if": "light:lit=demand", - "then": { - "en": "This lamp is lit based on demand (e.g. with a pushbutton)", - "nl": "Deze lantaarn is verlicht op verzoek (bijv. met een drukknop)" - } - } - ] - }, - { - "id": "direction", - "render": { - "en": "This lamp points towards {light:direction}", - "nl": "Deze lantaarn is gericht naar {light:direction}" - }, - "question": { - "en": "Where does this lamp point to?", - "nl": "Waar is deze lamp heengericht?" - }, - "condition": "light:count=1", - "freeform": { - "key": "light:direction", - "type": "direction" - } - } - ], - "deletion": true, - "allowMove": { - "enableImproveAccuracy": true, - "enableRelocation": false + ], + "iconSize": "40,40,bottom" } + ], + "presets": [ + { + "title": { + "en": "street lamp", + "nl": "straatlantaarn" + }, + "tags": [ + "highway=street_lamp" + ], + "preciseInput": true + } + ], + "tagRenderings": [ + { + "id": "ref", + "render": { + "en": "This street lamp has the reference number {ref}", + "nl": "Deze straatlantaarn heeft het nummer {ref}" + }, + "question": { + "en": "What is the reference number of this street lamp?", + "nl": "Wat is het nummer van deze straatlantaarn?" + }, + "freeform": { + "key": "ref" + } + }, + { + "id": "support", + "question": { + "en": "How is this street lamp mounted?", + "nl": "Hoe is deze straatlantaarn gemonteerd?" + }, + "mappings": [ + { + "if": "support=catenary", + "then": { + "en": "This lamp is suspended using cables", + "nl": "Deze lantaarn hangt aan kabels" + } + }, + { + "if": "support=ceiling", + "then": { + "en": "This lamp is mounted on a ceiling", + "nl": "Deze lantaarn hangt aan een plafond" + } + }, + { + "if": "support=ground", + "then": { + "en": "This lamp is mounted in the ground", + "nl": "Deze lantaarn zit in de grond" + } + }, + { + "if": "support=pedestal", + "then": { + "en": "This lamp is mounted on a short pole (mostly < 1.5m)", + "nl": "Deze lantaarn zit op een korte paal (meestal < 1.5m)" + } + }, + { + "if": "support=pole", + "then": { + "en": "This lamp is mounted on a pole", + "nl": "Deze lantaarn zit op een paal" + } + }, + { + "if": "support=wall", + "then": { + "en": "This lamp is mounted directly to the wall", + "nl": "Deze lantaarn hangt direct aan de muur" + } + }, + { + "if": "support=wall_mount", + "then": { + "en": "This lamp is mounted to the wall using a metal bar", + "nl": "Deze lantaarn hangt aan de muur met een metalen balk" + } + } + ] + }, + { + "id": "lamp_mount", + "question": { + "en": "How is this lamp mounted to the pole?", + "nl": "Hoe zit deze lantaarn aan de paal?" + }, + "condition": "support=pole", + "mappings": [ + { + "if": "lamp_mount=straight_mast", + "then": { + "en": "This lamp sits atop of a straight mast", + "nl": "Deze lantaarn zit boven op een rechte paal" + } + }, + { + "if": "lamp_mount=bent_mast", + "then": { + "en": "This lamp sits at the end of a bent mast", + "nl": "Deze lantaarn zit aan het eind van een gebogen paal" + } + } + ] + }, + { + "id": "method", + "question": { + "en": "What kind of lighting does this lamp use?", + "nl": "Wat voor verlichting gebruikt deze lantaarn?" + }, + "mappings": [ + { + "if": "light:method=electric", + "then": { + "en": "This lamp is lit electrically", + "nl": "Deze lantaarn is elektrisch verlicht" + }, + "hideInAnswer": true + }, + { + "if": "light:method=LED", + "then": { + "en": "This lamp uses LEDs", + "nl": "Deze lantaarn gebruikt LEDs" + } + }, + { + "if": "light:method=incandescent", + "then": { + "en": "This lamp uses incandescent lighting", + "nl": "Deze lantaarn gebruikt gloeilampen" + } + }, + { + "if": "light:method=halogen", + "then": { + "en": "This lamp uses halogen lighting", + "nl": "Deze lantaarn gebruikt halogeen verlichting" + } + }, + { + "if": "light:method=discharge", + "then": { + "en": "This lamp uses discharge lamps (unknown type)", + "nl": "Deze lantaarn gebruikt gasontladingslampen (onbekend type)" + } + }, + { + "if": "light:method=mercury", + "then": { + "en": "This lamp uses a mercury-vapour lamp (lightly blueish)", + "nl": "Deze lantaarn gebruikt een kwiklamp (enigszins blauwachtig)" + } + }, + { + "if": "light:method=metal-halide", + "then": { + "en": "This lamp uses metal-halide lamps (bright white)", + "nl": "Deze lantaarn gebruikt metaalhalidelampen" + } + }, + { + "if": "light:method=fluorescent", + "then": { + "en": "This lamp uses fluorescent lighting", + "nl": "Deze lantaarn gebruikt fluorescentieverlichting (TL en spaarlamp)" + } + }, + { + "if": "light:method=sodium", + "then": { + "en": "This lamp uses sodium lamps (unknown type)", + "nl": "Deze lantaarn gebruikt natriumlampen (onbekend type)" + } + }, + { + "if": "light:method=low_pressure_sodium", + "then": { + "en": "This lamp uses low pressure sodium lamps (monochrome orange)", + "nl": "Deze lantaarn gebruikt lagedruknatriumlampen (monochroom oranje)" + } + }, + { + "if": "light:method=high_pressure_sodium", + "then": { + "en": "This lamp uses high pressure sodium lamps (orange with white)", + "nl": "Deze lantaarn gebruikt hogedruknatriumlampen (oranje met wit)" + } + }, + { + "if": "light:method=gas", + "then": { + "en": "This lamp is lit using gas", + "nl": "Deze lantaarn wordt verlicht met gas" + } + } + ] + }, + { + "id": "colour", + "question": { + "en": "What colour light does this lamp emit?", + "nl": "Wat voor kleur licht geeft deze lantaarn?" + }, + "render": { + "en": "This lamp emits {light:colour} light", + "nl": "Deze lantaarn geeft {light:colour} licht" + }, + "freeform": { + "key": "light:colour", + "type": "color" + }, + "mappings": [ + { + "if": "light:colour=white", + "then": { + "en": "This lamp emits white light", + "nl": "Deze lantaarn geeft wit licht" + } + }, + { + "if": "light:colour=green", + "then": { + "en": "This lamp emits green light", + "nl": "Deze lantaarn geeft groen licht" + } + }, + { + "if": "light:colour=orange", + "then": { + "en": "This lamp emits orange light", + "nl": "Deze lantaarn geeft oranje licht" + } + } + ] + }, + { + "id": "count", + "render": { + "en": "This lamp has {light:count} fixtures", + "nl": "Deze lantaarn heeft {light:count} lampen" + }, + "question": { + "en": "How many fixtures does this light have?", + "nl": "Hoeveel lampen heeft deze lantaarn?" + }, + "condition": "support=pole", + "freeform": { + "key": "light:count", + "type": "pnat" + }, + "mappings": [ + { + "if": "light:count=1", + "then": { + "en": "This lamp has 1 fixture", + "nl": "Deze lantaarn heeft 1 lamp" + } + }, + { + "if": "light:count=2", + "then": { + "en": "This lamp has 2 fixtures", + "nl": "Deze lantaarn heeft 2 lampen" + } + } + ] + }, + { + "id": "lit", + "question": { + "en": "When is this lamp lit?", + "nl": "Wanneer is deze lantaarn verlicht?" + }, + "mappings": [ + { + "if": "light:lit=dusk-dawn", + "then": { + "en": "This lamp is lit at night", + "nl": "Deze lantaarn is 's nachts verlicht" + } + }, + { + "if": "light:lit=24/7", + "then": { + "en": "This lamp is lit 24/7", + "nl": "Deze lantaarn is 24/7 verlicht" + } + }, + { + "if": "light:lit=motion", + "then": { + "en": "This lamp is lit based on motion", + "nl": "Deze lantaarn is verlicht op basis van beweging" + } + }, + { + "if": "light:lit=demand", + "then": { + "en": "This lamp is lit based on demand (e.g. with a pushbutton)", + "nl": "Deze lantaarn is verlicht op verzoek (bijv. met een drukknop)" + } + } + ] + }, + { + "id": "direction", + "render": { + "en": "This lamp points towards {light:direction}", + "nl": "Deze lantaarn is gericht naar {light:direction}" + }, + "question": { + "en": "Where does this lamp point to?", + "nl": "Waar is deze lamp heengericht?" + }, + "condition": "light:count=1", + "freeform": { + "key": "light:direction", + "type": "direction" + } + } + ], + "deletion": true, + "allowMove": { + "enableImproveAccuracy": true, + "enableRelocation": false + } } \ 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 ab2a0b380..637192b72 100644 --- a/assets/layers/surveillance_camera/surveillance_camera.json +++ b/assets/layers/surveillance_camera/surveillance_camera.json @@ -1,575 +1,525 @@ { - "id": "surveillance_camera", - "name": { - "en": "Surveillance camera's", - "nl": "Bewakingscamera's", - "ru": "КаĐŧĐĩŅ€Ņ‹ ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ", - "fr": "CamÊras de surveillance", - "it": "Videocamere di sorveglianza", - "de": "Überwachungskameras" - }, - "minzoom": 12, - "source": { - "osmTags": { + "id": "surveillance_camera", + "name": { + "en": "Surveillance camera's", + "nl": "Bewakingscamera's", + "ru": "КаĐŧĐĩŅ€Ņ‹ ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ", + "fr": "CamÊras de surveillance", + "it": "Videocamere di sorveglianza", + "de": "Überwachungskameras" + }, + "minzoom": 12, + "source": { + "osmTags": { + "and": [ + "man_made=surveillance", + { + "or": [ + "surveillance:type=camera", + "surveillance:type=ALPR", + "surveillance:type=ANPR" + ] + } + ] + } + }, + "title": { + "render": { + "en": "Surveillance Camera", + "nl": "Bewakingscamera", + "ru": "КаĐŧĐĩŅ€Đ° ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ", + "fr": "CamÊra de surveillance", + "it": "Videocamera di sorveglianza", + "de": "Überwachungskamera" + } + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "What kind of camera is this?", + "nl": "Wat voor soort camera is dit?", + "fr": "Quel genre de camÊra est-ce ?", + "it": "Di che tipo di videocamera si tratta?", + "ru": "КаĐēĐ°Ņ ŅŅ‚Đž ĐēĐ°ĐŧĐĩŅ€Đ°?", + "de": "Um welche Kameratyp handelt se sich?" + }, + "mappings": [ + { + "if": { "and": [ - "man_made=surveillance", - { - "or": [ - "surveillance:type=camera", - "surveillance:type=ALPR", - "surveillance:type=ANPR" - ] - } + "camera:type=fixed" ] + }, + "then": { + "en": "A fixed (non-moving) camera", + "nl": "Een vaste camera", + "fr": "Une camÊra fixe (non mobile)", + "it": "Una videocamera fissa (non semovente)", + "de": "Eine fest montierte (nicht bewegliche) Kamera" + } + }, + { + "if": { + "and": [ + "camera:type=dome" + ] + }, + "then": { + "en": "A dome camera (which can turn)", + "nl": "Een dome (bolvormige camera die kan draaien)", + "fr": "Une camÊra dôme (qui peut tourner)", + "it": "Una videocamera a cupola (che puÃ˛ ruotare)", + "ru": "КаĐŧĐĩŅ€Đ° Ņ ĐŋОвОŅ€ĐžŅ‚ĐŊŅ‹Đŧ ĐŧĐĩŅ…Đ°ĐŊиСĐŧĐžĐŧ", + "de": "Eine Kuppelkamera (drehbar)" + } + }, + { + "if": { + "and": [ + "camera:type=panning" + ] + }, + "then": { + "en": "A panning camera", + "nl": "Een camera die (met een motor) van links naar rechts kan draaien", + "ru": "ПаĐŊĐžŅ€Đ°ĐŧĐŊĐ°Ņ ĐēĐ°ĐŧĐĩŅ€Đ°", + "fr": "Une camÊra panoramique", + "it": "Una videocamera panoramica", + "de": "Eine bewegliche Kamera" + } } + ], + "id": "Camera type: fixed; panning; dome" }, - "title": { - "render": { - "en": "Surveillance Camera", - "nl": "Bewakingscamera", - "ru": "КаĐŧĐĩŅ€Đ° ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ", - "fr": "CamÊra de surveillance", - "it": "Videocamera di sorveglianza", - "de": "Überwachungskamera" + { + "question": { + "en": "In which geographical direction does this camera film?", + "nl": "In welke geografische richting filmt deze camera?", + "fr": "Dans quelle direction gÊographique cette camÊra filme-t-elle ?", + "it": "In quale direzione geografica punta questa videocamera?", + "de": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?" + }, + "render": { + "en": "Films to a compass heading of {camera:direction}", + "nl": "Filmt in kompasrichting {camera:direction}", + "fr": "Filme dans une direction {camera:direction}", + "it": "Punta in direzione {camera:direction}" + }, + "condition": { + "or": [ + "camera:direction~*", + "direction~*", + "camera:type!=dome", + { + "and": [ + "camera:type=dome", + "camera:mount=wall" + ] + } + ] + }, + "freeform": { + "key": "camera:direction", + "type": "direction" + }, + "mappings": [ + { + "if": { + "and": [ + "camera:direction=", + "direction~*" + ] + }, + "then": { + "en": "Films to a compass heading of {direction}", + "nl": "Filmt in kompasrichting {direction}", + "fr": "Filme dans une direction {direction}", + "it": "Punta in direzione {direction}" + }, + "hideInAnswer": true } + ], + "id": "camera_direction" }, - "tagRenderings": [ - "images", + { + "freeform": { + "key": "operator" + }, + "question": { + "en": "Who operates this CCTV?", + "nl": "Wie beheert deze bewakingscamera?", + "fr": "Qui exploite ce système de vidÊosurveillance ?", + "it": "Chi gestisce questa videocamera a circuito chiuso?", + "de": "Wer betreibt diese CCTV Kamera?" + }, + "render": { + "en": "Operated by {operator}", + "nl": "Beheer door {operator}", + "fr": "ExploitÊ par {operator}", + "it": "È gestita da {operator}", + "de": "Betrieben von {operator}" + }, + "id": "Operator" + }, + { + "question": { + "en": "What kind of surveillance is this camera", + "nl": "Wat soort bewaking wordt hier uitgevoerd?", + "fr": "Quel genre de surveillance est cette camÊra", + "it": "Che cosa sorveglia questa videocamera", + "de": "Um was fÃŧr eine Überwachungskamera handelt es sich" + }, + "mappings": [ { - "question": { - "en": "What kind of camera is this?", - "nl": "Wat voor soort camera is dit?", - "fr": "Quel genre de camÊra est-ce ?", - "it": "Di che tipo di videocamera si tratta?", - "ru": "КаĐēĐ°Ņ ŅŅ‚Đž ĐēĐ°ĐŧĐĩŅ€Đ°?", - "de": "Um welche Kameratyp handelt se sich?" - }, - "mappings": [ - { - "if": { - "and": [ - "camera:type=fixed" - ] - }, - "then": { - "en": "A fixed (non-moving) camera", - "nl": "Een vaste camera", - "fr": "Une camÊra fixe (non mobile)", - "it": "Una videocamera fissa (non semovente)", - "de": "Eine fest montierte (nicht bewegliche) Kamera" - } - }, - { - "if": { - "and": [ - "camera:type=dome" - ] - }, - "then": { - "en": "A dome camera (which can turn)", - "nl": "Een dome (bolvormige camera die kan draaien)", - "fr": "Une camÊra dôme (qui peut tourner)", - "it": "Una videocamera a cupola (che puÃ˛ ruotare)", - "ru": "КаĐŧĐĩŅ€Đ° Ņ ĐŋОвОŅ€ĐžŅ‚ĐŊŅ‹Đŧ ĐŧĐĩŅ…Đ°ĐŊиСĐŧĐžĐŧ", - "de": "Eine Kuppelkamera (drehbar)" - } - }, - { - "if": { - "and": [ - "camera:type=panning" - ] - }, - "then": { - "en": "A panning camera", - "nl": "Een camera die (met een motor) van links naar rechts kan draaien", - "ru": "ПаĐŊĐžŅ€Đ°ĐŧĐŊĐ°Ņ ĐēĐ°ĐŧĐĩŅ€Đ°", - "fr": "Une camÊra panoramique", - "it": "Una videocamera panoramica", - "de": "Eine bewegliche Kamera" - } - } - ], - "id": "Camera type: fixed; panning; dome" + "if": { + "and": [ + "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 ruilmte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel...", + "fr": "Une zone publique est surveillÊe, telle qu'une rue, un pont, une place, un parc, une gare, un couloir ou un tunnel publicâ€Ļ", + "it": "Sorveglia un'area pubblica, come una strada, un ponte, una piazza, un parco, una stazione, un passaggio o un sottopasso pubblico, ...", + "de": "Überwacht wird ein Ãļffentlicher Bereich, z. B. eine Straße, eine BrÃŧcke, ein Platz, ein Park, ein Bahnhof, ein Ãļffentlicher Korridor oder Tunnel,..." + } }, { - "question": { - "en": "In which geographical direction does this camera film?", - "nl": "In welke geografische richting filmt deze camera?", - "fr": "Dans quelle direction gÊographique cette camÊra filme-t-elle ?", - "it": "In quale direzione geografica punta questa videocamera?", - "de": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?" - }, - "render": { - "en": "Films to a compass heading of {camera:direction}", - "nl": "Filmt in kompasrichting {camera:direction}", - "fr": "Filme dans une direction {camera:direction}", - "it": "Punta in direzione {camera:direction}" - }, - "condition": { - "or": [ - "camera:direction~*", - "direction~*", - "camera:type!=dome", - { - "and": [ - "camera:type=dome", - "camera:mount=wall" - ] - } - ] - }, - "freeform": { - "key": "camera:direction", - "type": "direction" - }, - "mappings": [ - { - "if": { - "and": [ - "camera:direction=", - "direction~*" - ] - }, - "then": { - "en": "Films to a compass heading of {direction}", - "nl": "Filmt in kompasrichting {direction}", - "fr": "Filme dans une direction {direction}", - "it": "Punta in direzione {direction}" - }, - "hideInAnswer": true - } - ], - "id": "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view" + "if": { + "and": [ + "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, ...)", + "fr": "Une zone extÊrieure, mais privÊe, est surveillÊe (par exemple, un parking, une station-service, une cour, une entrÊe, une allÊe privÊe, etc.)", + "it": "Sorveglia un'area esterna di proprietà privata (un parcheggio, una stazione di servizio, un cortile, un ingresso, un vialetto privato, ...)", + "de": "Ein privater Außenbereich wird Ãŧberwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" + } }, { - "freeform": { - "key": "operator" - }, - "question": { - "en": "Who operates this CCTV?", - "nl": "Wie beheert deze bewakingscamera?", - "fr": "Qui exploite ce système de vidÊosurveillance ?", - "it": "Chi gestisce questa videocamera a circuito chiuso?", - "de": "Wer betreibt diese CCTV Kamera?" - }, - "render": { - "en": "Operated by {operator}", - "nl": "Beheer door {operator}", - "fr": "ExploitÊ par {operator}", - "it": "È gestita da {operator}", - "de": "Betrieben von {operator}" - }, - "id": "Operator" - }, - { - "question": { - "en": "What kind of surveillance is this camera", - "nl": "Wat soort bewaking wordt hier uitgevoerd?", - "fr": "Quel genre de surveillance est cette camÊra", - "it": "Che cosa sorveglia questa videocamera", - "de": "Um was fÃŧr eine Überwachungskamera handelt es sich" - }, - "mappings": [ - { - "if": { - "and": [ - "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 ruilmte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel...", - "fr": "Une zone publique est surveillÊe, telle qu'une rue, un pont, une place, un parc, une gare, un couloir ou un tunnel publicâ€Ļ", - "it": "Sorveglia un'area pubblica, come una strada, un ponte, una piazza, un parco, una stazione, un passaggio o un sottopasso pubblico, ..." - } - }, - { - "if": { - "and": [ - "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, ...)", - "fr": "Une zone extÊrieure, mais privÊe, est surveillÊe (par exemple, un parking, une station-service, une cour, une entrÊe, une allÊe privÊe, etc.)", - "it": "Sorveglia un'area esterna di proprietà privata (un parcheggio, una stazione di servizio, un cortile, un ingresso, un vialetto privato, ...)", - "de": "Ein privater Außenbereich wird Ãŧberwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" - } - }, - { - "if": { - "and": [ - "surveillance=indoor" - ] - }, - "then": { - "nl": "Een private binnenruimte wordt bewaakt, bv. een winkel, een parkeergarage, ...", - "en": "A private indoor area is surveilled, e.g. a shop, a private underground parking, ...", - "fr": "Une zone intÊrieure privÊe est surveillÊe, par exemple un magasin, un parking souterrain privÊâ€Ļ", - "it": "Sorveglia un ambiente interno di proprietà privata, per esempio un negozio, un parcheggio sotterraneo privato, ...", - "de": "Ein privater Innenbereich wird Ãŧberwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." - } - } - ], - "id": "Surveillance type: public, outdoor, indoor" - }, - { - "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?" - }, - "condition": { - "and": [ - "surveillance:type=public" - ] - }, - "mappings": [ - { - "if": "indoor=yes", - "then": { - "en": "This camera is located indoors", - "nl": "Deze camera bevindt zich binnen", - "fr": "Cette camÊra est situÊe à l'intÊrieur", - "it": "Questa videocamera si trova al chiuso", - "de": "Diese Kamera befindet sich im Innenraum" - } - }, - { - "if": "indoor=no", - "then": { - "en": "This camera is located outdoors", - "nl": "Deze camera bevindt zich buiten", - "fr": "Cette camÊra est situÊe à l'extÊrieur", - "it": "Questa videocamera si trova all'aperto", - "ru": "Đ­Ņ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи", - "de": "Diese Kamera befindet sich im Freien" - } - }, - { - "if": "indoor=", - "then": { - "en": "This camera is probably located outdoors", - "nl": "Deze camera bevindt zich waarschijnlijk buiten", - "fr": "Cette camÊra est probablement situÊe à l'extÊrieur", - "it": "Questa videocamera si trova probabilmente all'esterno", - "ru": "ВозĐŧĐžĐļĐŊĐž, ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи", - "de": "Diese Kamera ist mÃļglicherweise im Freien" - }, - "hideInAnswer": true - } - ], - "id": "Indoor camera? This isn't clear for 'public'-cameras" - }, - { - "question": { - "en": "On which level is this camera located?", - "nl": "Op welke verdieping bevindt deze camera zich?", - "fr": "À quel niveau se trouve cette camÊra ?", - "it": "A che piano si trova questa videocamera?", - "de": "Auf welcher Ebene befindet sich diese Kamera?" - }, - "render": { - "en": "Located on level {level}", - "nl": "Bevindt zich op verdieping {level}", - "fr": "SituÊ au niveau {level}", - "it": "Si trova al piano {level}", - "de": "Befindet sich auf Ebene {level}" - }, - "freeform": { - "key": "level", - "type": "nat" - }, - "condition": { - "or": [ - "indoor=yes", - "surveillance:type=ye" - ] - }, - "id": "Level" - }, - { - "question": { - "en": "What exactly is surveilled here?", - "nl": "Wat wordt hier precies bewaakt?", - "fr": "Qu'est-ce qui est surveillÊ ici ?", - "it": "Che cosa è sorvegliato qui?", - "de": "Was genau wird hier Ãŧberwacht?" - }, - "freeform": { - "key": "surveillance:zone" - }, - "render": { - "en": " Surveills a {surveillance:zone}", - "nl": "Bewaakt een {surveillance:zone}", - "fr": " Surveille un(e) {surveillance:zone}", - "it": " Sorveglia una {surveillance:zone}", - "de": " Überwacht ein/e {surveillance:zone}" - }, - "mappings": [ - { - "if": { - "and": [ - "surveillance:zone=parking" - ] - }, - "then": { - "en": "Surveills a parking", - "nl": "Bewaakt een parking", - "fr": "Surveille un parking", - "it": "Sorveglia un parcheggio", - "de": "Überwacht einen Parkplatz" - } - }, - { - "if": { - "and": [ - "surveillance:zone=traffic" - ] - }, - "then": { - "en": "Surveills the traffic", - "nl": "Bewaakt het verkeer", - "fr": "Surveille la circulation", - "it": "Sorveglia il traffico", - "de": "Überwacht den Verkehr" - } - }, - { - "if": { - "and": [ - "surveillance:zone=entrance" - ] - }, - "then": { - "en": "Surveills an entrance", - "nl": "Bewaakt een ingang", - "fr": "Surveille une entrÊe", - "it": "Sorveglia un ingresso", - "de": "Überwacht einen Eingang" - } - }, - { - "if": { - "and": [ - "surveillance:zone=corridor" - ] - }, - "then": { - "en": "Surveills a corridor", - "nl": "Bewaakt een gang", - "fr": "Surveille un couloir", - "it": "Sorveglia un corridoio", - "de": "Überwacht einen Gang" - } - }, - { - "if": { - "and": [ - "surveillance:zone=public_transport_platform" - ] - }, - "then": { - "en": "Surveills a public tranport platform", - "nl": "Bewaakt een perron of bushalte", - "fr": "Surveille un quai de transport public", - "it": "Sorveglia una pensilina del trasporto pubblico", - "de": "Überwacht eine Haltestelle" - } - }, - { - "if": { - "and": [ - "surveillance:zone=shop" - ] - }, - "then": { - "en": "Surveills a shop", - "nl": "Bewaakt een winkel", - "fr": "Surveille un magasin", - "it": "Sorveglia un negozio", - "de": "Überwacht ein Geschäft" - } - } - ], - "id": "Surveillance:zone" - }, - { - "question": { - "en": "How is this camera placed?", - "nl": "Hoe is deze camera geplaatst?", - "fr": "Comment cette camÊra est-elle placÊe ?", - "it": "Com'è posizionata questa telecamera?", - "ru": "КаĐē Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ°?", - "de": "Wie ist diese Kamera montiert?" - }, - "render": { - "en": "Mounting method: {mount}", - "nl": "Montage: {camera:mount}", - "fr": "MÊthode de montage : {mount}", - "it": "Metodo di montaggio: {mount}", - "de": "Montageart: {mount}" - }, - "freeform": { - "key": "camera:mount" - }, - "mappings": [ - { - "if": "camera:mount=wall", - "then": { - "en": "This camera is placed against a wall", - "nl": "Deze camera hangt aan een muur", - "fr": "Cette camÊra est placÊe contre un mur", - "it": "Questa telecamera è posizionata contro un muro", - "de": "Diese Kamera ist an einer Wand montiert" - } - }, - { - "if": "camera:mount=pole", - "then": { - "en": "This camera is placed one a pole", - "nl": "Deze camera staat op een paal", - "fr": "Cette camÊra est placÊe sur un poteau", - "it": "Questa telecamera è posizionata su un palo", - "de": "Diese Kamera ist an einer Stange montiert" - } - }, - { - "if": "camera:mount=ceiling", - "then": { - "en": "This camera is placed on the ceiling", - "nl": "Deze camera hangt aan het plafond", - "fr": "Cette camÊra est placÊe au plafond", - "it": "Questa telecamera è posizionata sul soffitto", - "de": "Diese Kamera ist an der Decke montiert" - } - } - ], - "id": "camera:mount" + "if": { + "and": [ + "surveillance=indoor" + ] + }, + "then": { + "nl": "Een private binnenruimte wordt bewaakt, bv. een winkel, een parkeergarage, ...", + "en": "A private indoor area is surveilled, e.g. a shop, a private underground parking, ...", + "fr": "Une zone intÊrieure privÊe est surveillÊe, par exemple un magasin, un parking souterrain privÊâ€Ļ", + "it": "Sorveglia un ambiente interno di proprietà privata, per esempio un negozio, un parcheggio sotterraneo privato, ...", + "de": "Ein privater Innenbereich wird Ãŧberwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." + } } - ], - "icon": { + ], + "id": "Surveillance type: public, outdoor, indoor" + }, + { + "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?" + }, + "condition": { + "and": [ + "surveillance:type=public" + ] + }, + "mappings": [ + { + "if": "indoor=yes", + "then": { + "en": "This camera is located indoors", + "nl": "Deze camera bevindt zich binnen", + "fr": "Cette camÊra est situÊe à l'intÊrieur", + "it": "Questa videocamera si trova al chiuso", + "de": "Diese Kamera befindet sich im Innenraum" + } + }, + { + "if": "indoor=no", + "then": { + "en": "This camera is located outdoors", + "nl": "Deze camera bevindt zich buiten", + "fr": "Cette camÊra est situÊe à l'extÊrieur", + "it": "Questa videocamera si trova all'aperto", + "ru": "Đ­Ņ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи", + "de": "Diese Kamera befindet sich im Freien" + } + }, + { + "if": "indoor=", + "then": { + "en": "This camera is probably located outdoors", + "nl": "Deze camera bevindt zich waarschijnlijk buiten", + "fr": "Cette camÊra est probablement situÊe à l'extÊrieur", + "it": "Questa videocamera si trova probabilmente all'esterno", + "ru": "ВозĐŧĐžĐļĐŊĐž, ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи", + "de": "Diese Kamera ist mÃļglicherweise im Freien" + }, + "hideInAnswer": true + } + ], + "id": "is_indoor" + }, + { + "question": { + "en": "On which level is this camera located?", + "nl": "Op welke verdieping bevindt deze camera zich?", + "fr": "À quel niveau se trouve cette camÊra ?", + "it": "A che piano si trova questa videocamera?", + "de": "Auf welcher Ebene befindet sich diese Kamera?" + }, + "render": { + "en": "Located on level {level}", + "nl": "Bevindt zich op verdieping {level}", + "fr": "SituÊ au niveau {level}", + "it": "Si trova al piano {level}", + "de": "Befindet sich auf Ebene {level}" + }, + "freeform": { + "key": "level", + "type": "nat" + }, + "condition": { + "or": [ + "indoor=yes", + "surveillance:type=ye" + ] + }, + "id": "Level" + }, + { + "question": { + "en": "What exactly is surveilled here?", + "nl": "Wat wordt hier precies bewaakt?", + "fr": "Qu'est-ce qui est surveillÊ ici ?", + "it": "Che cosa è sorvegliato qui?", + "de": "Was genau wird hier Ãŧberwacht?" + }, + "freeform": { + "key": "surveillance:zone" + }, + "render": { + "en": " Surveills a {surveillance:zone}", + "nl": "Bewaakt een {surveillance:zone}", + "fr": " Surveille un(e) {surveillance:zone}", + "it": " Sorveglia una {surveillance:zone}", + "de": " Überwacht ein/e {surveillance:zone}" + }, + "mappings": [ + { + "if": { + "and": [ + "surveillance:zone=parking" + ] + }, + "then": { + "en": "Surveills a parking", + "nl": "Bewaakt een parking", + "fr": "Surveille un parking", + "it": "Sorveglia un parcheggio", + "de": "Überwacht einen Parkplatz" + } + }, + { + "if": { + "and": [ + "surveillance:zone=traffic" + ] + }, + "then": { + "en": "Surveills the traffic", + "nl": "Bewaakt het verkeer", + "fr": "Surveille la circulation", + "it": "Sorveglia il traffico", + "de": "Überwacht den Verkehr" + } + }, + { + "if": { + "and": [ + "surveillance:zone=entrance" + ] + }, + "then": { + "en": "Surveills an entrance", + "nl": "Bewaakt een ingang", + "fr": "Surveille une entrÊe", + "it": "Sorveglia un ingresso", + "de": "Überwacht einen Eingang" + } + }, + { + "if": { + "and": [ + "surveillance:zone=corridor" + ] + }, + "then": { + "en": "Surveills a corridor", + "nl": "Bewaakt een gang", + "fr": "Surveille un couloir", + "it": "Sorveglia un corridoio", + "de": "Überwacht einen Gang" + } + }, + { + "if": { + "and": [ + "surveillance:zone=public_transport_platform" + ] + }, + "then": { + "en": "Surveills a public tranport platform", + "nl": "Bewaakt een perron of bushalte", + "fr": "Surveille un quai de transport public", + "it": "Sorveglia una pensilina del trasporto pubblico", + "de": "Überwacht eine Haltestelle" + } + }, + { + "if": { + "and": [ + "surveillance:zone=shop" + ] + }, + "then": { + "en": "Surveills a shop", + "nl": "Bewaakt een winkel", + "fr": "Surveille un magasin", + "it": "Sorveglia un negozio", + "de": "Überwacht ein Geschäft" + } + } + ], + "id": "Surveillance:zone" + }, + { + "question": { + "en": "How is this camera placed?", + "nl": "Hoe is deze camera geplaatst?", + "fr": "Comment cette camÊra est-elle placÊe ?", + "it": "Com'è posizionata questa telecamera?", + "ru": "КаĐē Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ°?", + "de": "Wie ist diese Kamera montiert?" + }, + "render": { + "en": "Mounting method: {camera:mount}", + "nl": "Montage: {camera:mount}", + "fr": "MÊthode de montage : {camera:mount}", + "it": "Metodo di montaggio: {camera:mount}", + "de": "Montageart: {camera:mount}" + }, + "freeform": { + "key": "camera:mount" + }, + "mappings": [ + { + "if": "camera:mount=wall", + "then": { + "en": "This camera is placed against a wall", + "nl": "Deze camera hangt aan een muur", + "fr": "Cette camÊra est placÊe contre un mur", + "it": "Questa telecamera è posizionata contro un muro", + "de": "Diese Kamera ist an einer Wand montiert" + } + }, + { + "if": "camera:mount=pole", + "then": { + "en": "This camera is placed one a pole", + "nl": "Deze camera staat op een paal", + "fr": "Cette camÊra est placÊe sur un poteau", + "it": "Questa telecamera è posizionata su un palo", + "de": "Diese Kamera ist an einer Stange montiert" + } + }, + { + "if": "camera:mount=ceiling", + "then": { + "en": "This camera is placed on the ceiling", + "nl": "Deze camera hangt aan het plafond", + "fr": "Cette camÊra est placÊe au plafond", + "it": "Questa telecamera è posizionata sul soffitto", + "de": "Diese Kamera ist an der Decke montiert" + } + } + ], + "id": "camera:mount" + } + ], + "presets": [ + { + "tags": [ + "man_made=surveillance", + "surveillance:type=camera" + ], + "title": "Surveillance camera" + } + ], + "mapRendering": [ + { + "icon": { "render": "./assets/themes/surveillance/logo.svg", "mappings": [ - { - "if": "camera:type=dome", - "then": "./assets/themes/surveillance/dome.svg" - }, - { - "if": "_direction:leftright=right", - "then": "./assets/themes/surveillance/cam_right.svg" - }, - { - "if": "_direction:leftright=left", - "then": "./assets/themes/surveillance/cam_left.svg" - } + { + "if": "camera:type=dome", + "then": "./assets/themes/surveillance/dome.svg" + }, + { + "if": "_direction:leftright=right", + "then": "./assets/themes/surveillance/cam_right.svg" + }, + { + "if": "_direction:leftright=left", + "then": "./assets/themes/surveillance/cam_left.svg" + } ] - }, - "rotation": { + }, + "iconSize": { + "mappings": [ + { + "if": "camera:type=dome", + "then": "50,50,center" + }, + { + "if": "_direction:leftright~*", + "then": "100,35,center" + } + ], + "render": "50,50,center" + }, + "location": [ + "point", + "centroid" + ], + "rotation": { "#": "Note: {camera:direction} is substituted by a number, giving the string 'calc(123deg + 90deg)' ; it is this string that is used as css property, which interprets the calc", "render": "calc({_direction:numerical}deg + 90deg)", "mappings": [ - { - "if": "camera:type=dome", - "then": "0" - }, - { - "if": "_direction:leftright=right", - "then": "calc({_direction:numerical}deg - 90deg)" - } + { + "if": "camera:type=dome", + "then": "0" + }, + { + "if": "_direction:leftright=right", + "then": "calc({_direction:numerical}deg - 90deg)" + } ] + } }, - "width": { - "render": "8" - }, - "iconSize": { - "mappings": [ - { - "if": "camera:type=dome", - "then": "50,50,center" - }, - { - "if": "_direction:leftright~*", - "then": "100,35,center" - } - ], - "render": "50,50,center" - }, - "color": { + { + "color": { "render": "#f00" - }, - "presets": [ - { - "tags": [ - "man_made=surveillance", - "surveillance:type=camera" - ], - "title": "Surveillance camera" - } - ], - "wayHandling": 2, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/surveillance/logo.svg", - "mappings": [ - { - "if": "camera:type=dome", - "then": "./assets/themes/surveillance/dome.svg" - }, - { - "if": "_direction:leftright=right", - "then": "./assets/themes/surveillance/cam_right.svg" - }, - { - "if": "_direction:leftright=left", - "then": "./assets/themes/surveillance/cam_left.svg" - } - ] - }, - "iconSize": { - "mappings": [ - { - "if": "camera:type=dome", - "then": "50,50,center" - }, - { - "if": "_direction:leftright~*", - "then": "100,35,center" - } - ], - "render": "50,50,center" - }, - "location": [ - "point", - "centroid" - ], - "rotation": { - "#": "Note: {camera:direction} is substituted by a number, giving the string 'calc(123deg + 90deg)' ; it is this string that is used as css property, which interprets the calc", - "render": "calc({_direction:numerical}deg + 90deg)", - "mappings": [ - { - "if": "camera:type=dome", - "then": "0" - }, - { - "if": "_direction:leftright=right", - "then": "calc({_direction:numerical}deg - 90deg)" - } - ] - } - }, - { - "color": { - "render": "#f00" - }, - "width": { - "render": "8" - } - } - ] + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/toilet/toilet.json b/assets/layers/toilet/toilet.json index 0ac8e08e4..b6b280bf3 100644 --- a/assets/layers/toilet/toilet.json +++ b/assets/layers/toilet/toilet.json @@ -1,543 +1,585 @@ { - "id": "toilet", - "name": { - "en": "Toilets", - "de": "Toiletten", - "fr": "Toilettes", - "nl": "Toiletten", - "ru": "ĐĸŅƒĐ°ĐģĐĩŅ‚Ņ‹", - "it": "Servizi igienici" + "id": "toilet", + "name": { + "en": "Toilets", + "de": "Toiletten", + "fr": "Toilettes", + "nl": "Toiletten", + "ru": "ĐĸŅƒĐ°ĐģĐĩŅ‚Ņ‹", + "it": "Servizi igienici" + }, + "minzoom": 12, + "source": { + "osmTags": "amenity=toilets" + }, + "title": { + "render": { + "en": "Toilet", + "de": "Toilette", + "fr": "Toilettes", + "nl": "Toilet", + "ru": "ĐĸŅƒĐ°ĐģĐĩŅ‚", + "it": "Servizi igienici" + } + }, + "presets": [ + { + "title": { + "en": "toilet", + "de": "toilette", + "fr": "toilettes", + "nl": "toilet", + "ru": "tŅƒĐ°ĐģĐĩŅ‚", + "it": "servizi igienici" + }, + "tags": [ + "amenity=toilets" + ], + "description": { + "en": "A publicly accessible toilet or restroom", + "de": "Eine Ãļffentlich zugängliche Toilette", + "fr": "Des toilettes", + "nl": "Een publieke toilet", + "it": "Servizi igienici aperti al pubblico", + "ru": "ĐĸŅƒĐ°ĐģĐĩŅ‚ иĐģи ĐēĐžĐŧĐŊĐ°Ņ‚Đ° ĐžŅ‚Đ´Ņ‹Ņ…Đ° ŅĐž ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đŧ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ" + } }, - "minzoom": 12, - "source": { - "osmTags": "amenity=toilets" - }, - "title": { - "render": { - "en": "Toilet", - "de": "Toilette", - "fr": "Toilettes", - "nl": "Toilet", - "ru": "ĐĸŅƒĐ°ĐģĐĩŅ‚", - "it": "Servizi igienici" + { + "title": { + "en": "toilets with wheelchair accessible toilet", + "de": "toiletten mit rollstuhlgerechter Toilette", + "fr": "toilettes accessible aux personnes à mobilitÊ rÊduite", + "nl": "een rolstoeltoegankelijke toilet", + "it": "servizi igienici accessibili per persone in sedia a rotelle", + "ru": "tŅƒĐ°ĐģĐĩŅ‚ Ņ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ Đ´ĐģŅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + }, + "tags": [ + "amenity=toilets", + "wheelchair=yes" + ], + "description": { + "en": "A restroom which has at least one wheelchair-accessible toilet", + "de": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette", + "fr": "Toilettes avec au moins un WC accessible aux personnes à mobilitÊ rÊduite", + "nl": "Deze toiletten hebben op zijn minst ÊÊn rolstoeltoegankelijke WC", + "it": "Servizi igienici che hanno almeno una toilette accessibile a persone in sedia a rotelle" + } + } + ], + "tagRenderings": [ + "images", + { + "question": { + "en": "Are these toilets publicly accessible?", + "de": "Sind diese Toiletten Ãļffentlich zugänglich?", + "fr": "Ces toilettes sont-elles accessibles au public ?", + "nl": "Zijn deze toiletten publiek toegankelijk?", + "it": "Questi servizi igienici sono aperti al pubblico?", + "ru": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚иĐŧ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°Đŧ?" + }, + "render": { + "en": "Access is {access}", + "de": "Zugang ist {access}", + "fr": "L'accès est {access}", + "nl": "Toegankelijkheid is {access}", + "it": "L'accesso è {access}" + }, + "freeform": { + "key": "access", + "addExtraTags": [ + "fixme=the tag access was filled out by the user and might need refinement" + ] + }, + "mappings": [ + { + "if": "access=yes", + "then": { + "en": "Public access", + "de": "Öffentlicher Zugang", + "fr": "Accès publique", + "nl": "Publiek toegankelijk", + "it": "Accesso pubblico", + "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" + } + }, + { + "if": "access=customers", + "then": { + "en": "Only access to customers", + "de": "Nur Zugang fÃŧr Kunden", + "fr": "Accès rÊservÊ aux clients", + "nl": "Enkel toegang voor klanten", + "it": "Accesso riservato ai clienti e alle clienti" + } + }, + { + "if": "access=no", + "then": { + "en": "Not accessible", + "de": "Nicht zugänglich", + "fr": "Toilettes privÊes", + "nl": "Niet toegankelijk", + "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž", + "it": "Non accessibile" + } + }, + { + "if": "access=key", + "then": { + "en": "Accessible, but one has to ask a key to enter", + "de": "Zugänglich, aber man muss einen SchlÃŧssel fÃŧr die Eingabe verlangen", + "fr": "Accessible, mais vous devez demander la clÊ", + "nl": "Toegankelijk na het vragen van de sleutel", + "it": "Accessibile, ma occorre chiedere una chiave per accedere" + } + }, + { + "if": "access=public", + "then": { + "en": "Public access", + "de": "Öffentlicher Zugang", + "fr": "Accès publique", + "nl": "Publiek toegankelijk", + "it": "Accesso pubblico", + "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" + }, + "hideInAnswer": true } + ], + "id": "toilet-access" }, - "icon": { + { + "id": "toilets-fee", + "question": { + "en": "Are these toilets free to use?", + "de": "KÃļnnen diese Toiletten kostenlos benutzt werden?", + "fr": "Ces toilettes sont-elles payantes ?", + "nl": "Zijn deze toiletten gratis te gebruiken?", + "it": "Questi servizi igienici sono gratuiti?" + }, + "mappings": [ + { + "then": { + "en": "These are paid toilets", + "de": "Dies sind bezahlte Toiletten", + "fr": "Toilettes payantes", + "nl": "Men moet betalen om deze toiletten te gebruiken", + "ru": "Đ­Ņ‚Đž ĐŋĐģĐ°Ņ‚ĐŊŅ‹Đĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹", + "it": "Questi servizi igienici sono a pagamento" + }, + "if": "fee=yes" + }, + { + "if": "fee=no", + "then": { + "en": "Free to use", + "de": "Kostenlose Nutzung", + "fr": "Toilettes gratuites", + "nl": "Gratis te gebruiken", + "it": "Gratis" + } + } + ] + }, + { + "question": { + "en": "How much does one have to pay for these toilets?", + "de": "Wie viel muss man fÃŧr diese Toiletten bezahlen?", + "fr": "Quel est le prix d'accès de ces toilettes ?", + "nl": "Hoeveel moet men betalen om deze toiletten te gebruiken?", + "it": "Quanto costa l'accesso a questi servizi igienici?", + "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋĐžŅĐĩŅ‰ĐĩĐŊиĐĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°?" + }, + "render": { + "en": "The fee is {charge}", + "de": "Die GebÃŧhr beträgt {charge}", + "fr": "Le prix est {charge}", + "nl": "De toiletten gebruiken kost {charge}", + "it": "La tariffa è {charge}", + "ru": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ {charge}" + }, + "condition": "fee=yes", + "freeform": { + "key": "charge", + "type": "string" + }, + "id": "toilet-charge" + }, + { + "builtin": "payment-options", + "override": { + "condition": "fee=yes" + } + }, + { + "id": "Opening-hours", + "question": { + "en": "When are these toilets opened?", + "nl": "Wanneer zijn deze toiletten open?" + }, + "render": "{opening_hours_table()}", + "freeform": { + "key": "opening_hours", + "type": "opening_hours" + }, + "mappings": [ + { + "if": "opening_hours=24/7", + "then": { + "en": "Opened 24/7", + "nl": "Altijd open" + } + } + ] + }, + { + "id": "toilets-wheelchair", + "question": { + "en": "Is there a dedicated toilet for wheelchair users", + "de": "Gibt es eine Toilette fÃŧr Rollstuhlfahrer?", + "fr": "Y a-t-il des toilettes rÊservÊes aux personnes en fauteuil roulant ?", + "nl": "Is er een rolstoeltoegankelijke toilet voorzien?", + "it": "C'è un WC riservato alle persone in sedia a rotelle" + }, + "mappings": [ + { + "then": { + "en": "There is a dedicated toilet for wheelchair users", + "de": "Es gibt eine Toilette fÃŧr Rollstuhlfahrer", + "fr": "Il y a des toilettes rÊservÊes pour les personnes à mobilitÊ rÊduite", + "nl": "Er is een toilet voor rolstoelgebruikers", + "it": "C'è un WC riservato alle persone in sedia a rotelle" + }, + "if": "wheelchair=yes" + }, + { + "if": "wheelchair=no", + "then": { + "en": "No wheelchair access", + "de": "Kein Zugang fÃŧr Rollstuhlfahrer", + "fr": "Non accessible aux personnes à mobilitÊ rÊduite", + "nl": "Niet toegankelijk voor rolstoelgebruikers", + "it": "Non accessibile in sedia a rotelle", + "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + } + } + ] + }, + { + "id": "toilets-type", + "question": { + "en": "Which kind of toilets are this?", + "de": "Welche Art von Toiletten sind das?", + "fr": "De quel type sont ces toilettes ?", + "nl": "Welke toiletten zijn dit?", + "it": "Di che tipo di servizi igienici si tratta?", + "ru": "КаĐēиĐĩ ŅŅ‚Đž Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹?" + }, + "mappings": [ + { + "if": "toilets:position=seated", + "then": { + "en": "There are only seated toilets", + "de": "Es gibt nur Sitztoiletten", + "fr": "Il y a uniquement des sièges de toilettes", + "nl": "Er zijn enkel WC's om op te zitten", + "it": "Ci sono solo WC con sedile" + } + }, + { + "if": "toilets:position=urinal", + "then": { + "en": "There are only urinals here", + "de": "Hier gibt es nur Pissoirs", + "fr": "Il y a uniquement des urinoirs", + "nl": "Er zijn enkel urinoirs", + "it": "Ci sono solo urinali" + } + }, + { + "if": "toilets:position=squat", + "then": { + "en": "There are only squat toilets here", + "de": "Es gibt hier nur Hocktoiletten", + "fr": "Il y a uniquement des toilettes turques", + "nl": "Er zijn enkel hurktoiletten", + "it": "Ci sono solo turche" + } + }, + { + "if": "toilets:position=seated;urinal", + "then": { + "en": "Both seated toilets and urinals are available here", + "de": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfÃŧgbar", + "fr": "Il y a des sièges de toilettes et des urinoirs", + "nl": "Er zijn zowel urinoirs als zittoiletten", + "it": "Ci sono sia sedili, sia urinali" + } + } + ] + }, + { + "id": "toilets-changing-table", + "question": { + "en": "Is a changing table (to change diapers) available?", + "de": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?", + "fr": "Ces toilettes disposent-elles d'une table à langer ?", + "nl": "Is er een luiertafel beschikbaar?", + "it": "È disponibile un fasciatoio (per cambiare i pannolini)?" + }, + "mappings": [ + { + "then": { + "en": "A changing table is available", + "de": "Ein Wickeltisch ist verfÃŧgbar", + "fr": "Une table à langer est disponible", + "nl": "Er is een luiertafel", + "it": "È disponibile un fasciatoio" + }, + "if": "changing_table=yes" + }, + { + "if": "changing_table=no", + "then": { + "en": "No changing table is available", + "de": "Es ist kein Wickeltisch verfÃŧgbar", + "fr": "Aucune table à langer", + "nl": "Geen luiertafel", + "it": "Non è disponibile un fasciatoio" + } + } + ] + }, + { + "question": { + "en": "Where is the changing table located?", + "de": "Wo befindet sich der Wickeltisch?", + "fr": "OÚ se situe la table à langer ?", + "nl": "Waar bevindt de luiertafel zich?", + "it": "Dove si trova il fasciatoio?" + }, + "render": { + "en": "The changing table is located at {changing_table:location}", + "de": "Die Wickeltabelle befindet sich in {changing_table:location}", + "fr": "Emplacement de la table à langer : {changing_table:location}", + "nl": "De luiertafel bevindt zich in {changing_table:location}", + "it": "Il fasciatoio si trova presso {changing_table:location}" + }, + "condition": "changing_table=yes", + "freeform": { + "key": "changing_table:location" + }, + "mappings": [ + { + "then": { + "en": "The changing table is in the toilet for women. ", + "de": "Der Wickeltisch befindet sich in der Damentoilette. ", + "fr": "La table à langer est dans les toilettes pour femmes. ", + "nl": "De luiertafel bevindt zich in de vrouwentoiletten ", + "it": "Il fasciatoio è nei servizi igienici femminili. " + }, + "if": "changing_table:location=female_toilet" + }, + { + "then": { + "en": "The changing table is in the toilet for men. ", + "de": "Der Wickeltisch befindet sich in der Herrentoilette. ", + "fr": "La table à langer est dans les toilettes pour hommes. ", + "nl": "De luiertafel bevindt zich in de herentoiletten ", + "it": "Il fasciatoio è nei servizi igienici maschili. " + }, + "if": "changing_table:location=male_toilet" + }, + { + "if": "changing_table:location=wheelchair_toilet", + "then": { + "en": "The changing table is in the toilet for wheelchair users. ", + "de": "Der Wickeltisch befindet sich in der Toilette fÃŧr Rollstuhlfahrer. ", + "fr": "La table à langer est dans les toilettes pour personnes à mobilitÊ rÊduite. ", + "nl": "De luiertafel bevindt zich in de rolstoeltoegankelijke toilet ", + "it": "Il fasciatoio è nei servizi igienici per persone in sedia a rotelle. " + } + }, + { + "if": "changing_table:location=dedicated_room", + "then": { + "en": "The changing table is in a dedicated room. ", + "de": "Der Wickeltisch befindet sich in einem eigenen Raum. ", + "fr": "La table à langer est dans un espace dÊdiÊ. ", + "nl": "De luiertafel bevindt zich in een daartoe voorziene kamer ", + "it": "Il fasciatoio è in una stanza dedicata. " + } + } + ], + "id": "toilet-changing_table:location" + }, + { + "id": "toilet-handwashing", + "question": { + "en": "Do these toilets have a sink to wash your hands?", + "nl": "Hebben deze toiletten een lavabo om de handen te wassen?", + "de": "VerfÃŧgt diese Toilette Ãŧber ein Waschbecken?" + }, + "mappings": [ + { + "if": "toilets:handwashing=yes", + "then": { + "en": "This toilets have a sink to wash your hands", + "nl": "Deze toiletten hebben een lavabo waar men de handen kan wassen", + "de": "Diese Toilette verfÃŧgt Ãŧber ein Waschbecken" + } + }, + { + "if": "toilets:handwashing=no", + "then": { + "en": "This toilets don't have a sink to wash your hands", + "nl": "Deze toiletten hebben geen lavabo waar men de handen kan wassen", + "de": "Diese Toilette verfÃŧgt Ãŧber kein Waschbecken" + } + } + ] + }, + { + "id": "toilet-has-paper", + "question": { + "en": "Does one have to bring their own toilet paper to this toilet?", + "nl": "Moet je je eigen toiletpapier meenemen naar deze toilet?", + "de": "Muss man fÃŧr diese Toilette sein eigenes Toilettenpapier mitbringen?" + }, + "mappings": [ + { + "if": "toilets:paper_supplied=yes", + "then": { + "en": "This toilet is equipped with toilet paper", + "nl": "Deze toilet is voorzien van toiletpapier" + } + }, + { + "if": "toilets:paper_supplied=no", + "then": { + "en": "You have to bring your own toilet paper to this toilet", + "nl": "Je moet je eigen toiletpapier meebrengen naar deze toilet", + "de": "FÃŧr diese Toilette mÃŧssen Sie Ihr eigenes Toilettenpapier mitbringen" + } + } + ], + "condition": { + "#": "Urinals normally don't have toilet paper", + "and": [ + "toilets:position!=urinal" + ] + } + }, +"level", +"description" + ], + "filter": [ + { + "id": "wheelchair", + "options": [ + { + "question": { + "en": "Wheelchair accessible", + "nl": "Rolstoel toegankelijk", + "de": "Rollstuhlgerecht" + }, + "osmTags": "wheelchair=yes" + } + ] + }, + { + "id": "changing_table", + "options": [ + { + "question": { + "en": "Has a changing table", + "nl": "Heeft een luiertafel", + "de": "Hat einen Wickeltisch" + }, + "osmTags": "changing_table=yes" + } + ] + }, + { + "id": "free", + "options": [ + { + "question": { + "en": "Free to use", + "nl": "Gratis toegankelijk", + "de": "Nutzung kostenlos" + }, + "osmTags": { + "or": [ + "fee=no", + "fee=0", + "charge=0" + ] + } + } + ] + }, + { + "id": "is_open", + "options": [ + { + "question": { + "nl": "Nu geopened", + "en": "Opened now" + }, + "osmTags": { + "or": [ + "opening_hours=", + "_isOpen=yes" + ] + } + } + ] + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] + }, + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/toilet/toilets.svg", "mappings": [ - { - "if": "wheelchair=yes", - "then": "circle:white;./assets/layers/toilet/wheelchair.svg" + { + "if": "wheelchair=yes", + "then": "circle:white;./assets/layers/toilet/wheelchair.svg" + }, + { + "if": { + "or": [ + "toilets:position=urinals", + "toilets:position=urinal" + ] }, - { - "if": { - "or": [ - "toilets:position=urinals", - "toilets:position=urinal" - ] - }, - "then": "./assets/layers/toilet/urinal.svg" - } + "then": "./assets/layers/toilet/urinal.svg" + } ] - }, - "color": { - "render": "#0000ff" - }, - "wayHandling": 1, - "presets": [ + }, + "iconBadges": [ { - "title": { - "en": "toilet", - "de": "toilette", - "fr": "toilettes", - "nl": "toilet", - "ru": "tŅƒĐ°ĐģĐĩŅ‚", - "it": "servizi igienici" - }, - "tags": [ - "amenity=toilets" - ], - "description": { - "en": "A publicly accessible toilet or restroom", - "de": "Eine Ãļffentlich zugängliche Toilette", - "fr": "Des toilettes", - "nl": "Een publieke toilet", - "it": "Servizi igienici aperti al pubblico", - "ru": "ĐĸŅƒĐ°ĐģĐĩŅ‚ иĐģи ĐēĐžĐŧĐŊĐ°Ņ‚Đ° ĐžŅ‚Đ´Ņ‹Ņ…Đ° ŅĐž ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đŧ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ" - } - }, - { - "title": { - "en": "toilets with wheelchair accessible toilet", - "de": "toiletten mit rollstuhlgerechter Toilette", - "fr": "toilettes accessible aux personnes à mobilitÊ rÊduite", - "nl": "een rolstoeltoegankelijke toilet", - "it": "servizi igienici accessibili per persone in sedia a rotelle", - "ru": "tŅƒĐ°ĐģĐĩŅ‚ Ņ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ Đ´ĐģŅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - }, - "tags": [ - "amenity=toilets", - "wheelchair=yes" - ], - "description": { - "en": "A restroom which has at least one wheelchair-accessible toilet", - "de": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette", - "fr": "Toilettes avec au moins un WC accessible aux personnes à mobilitÊ rÊduite", - "nl": "Deze toiletten hebben op zijn minst ÊÊn rolstoeltoegankelijke WC", - "it": "Servizi igienici che hanno almeno una toilette accessibile a persone in sedia a rotelle" - } + "if": "opening_hours~*", + "then": "isOpen" } - ], - "tagRenderings": [ - "images", - { - "question": { - "en": "Are these toilets publicly accessible?", - "de": "Sind diese Toiletten Ãļffentlich zugänglich?", - "fr": "Ces toilettes sont-elles accessibles au public ?", - "nl": "Zijn deze toiletten publiek toegankelijk?", - "it": "Questi servizi igienici sono aperti al pubblico?", - "ru": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚иĐŧ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°Đŧ?" - }, - "render": { - "en": "Access is {access}", - "de": "Zugang ist {access}", - "fr": "L'accès est {access}", - "nl": "Toegankelijkheid is {access}", - "it": "L'accesso è {access}" - }, - "freeform": { - "key": "access", - "addExtraTags": [ - "fixme=the tag access was filled out by the user and might need refinement" - ] - }, - "mappings": [ - { - "if": "access=yes", - "then": { - "en": "Public access", - "de": "Öffentlicher Zugang", - "fr": "Accès publique", - "nl": "Publiek toegankelijk", - "it": "Accesso pubblico", - "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" - } - }, - { - "if": "access=customers", - "then": { - "en": "Only access to customers", - "de": "Nur Zugang fÃŧr Kunden", - "fr": "Accès rÊservÊ aux clients", - "nl": "Enkel toegang voor klanten", - "it": "Accesso riservato ai clienti e alle clienti" - } - }, - { - "if": "access=no", - "then": { - "en": "Not accessible", - "de": "Nicht zugänglich", - "fr": "Toilettes privÊes", - "nl": "Niet toegankelijk", - "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž", - "it": "Non accessibile" - } - }, - { - "if": "access=key", - "then": { - "en": "Accessible, but one has to ask a key to enter", - "de": "Zugänglich, aber man muss einen SchlÃŧssel fÃŧr die Eingabe verlangen", - "fr": "Accessible, mais vous devez demander la clÊ", - "nl": "Toegankelijk na het vragen van de sleutel", - "it": "Accessibile, ma occorre chiedere una chiave per accedere" - } - }, - { - "if": "access=public", - "then": { - "en": "Public access", - "de": "Öffentlicher Zugang", - "fr": "Accès publique", - "nl": "Publiek toegankelijk", - "it": "Accesso pubblico", - "ru": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" - }, - "hideInAnswer": true - } - ], - "id": "toilet-access" - }, - { - "id": "toilets-fee", - "question": { - "en": "Are these toilets free to use?", - "de": "KÃļnnen diese Toiletten kostenlos benutzt werden?", - "fr": "Ces toilettes sont-elles payantes ?", - "nl": "Zijn deze toiletten gratis te gebruiken?", - "it": "Questi servizi igienici sono gratuiti?" - }, - "mappings": [ - { - "then": { - "en": "These are paid toilets", - "de": "Dies sind bezahlte Toiletten", - "fr": "Toilettes payantes", - "nl": "Men moet betalen om deze toiletten te gebruiken", - "ru": "Đ­Ņ‚Đž ĐŋĐģĐ°Ņ‚ĐŊŅ‹Đĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹", - "it": "Questi servizi igienici sono a pagamento" - }, - "if": "fee=yes" - }, - { - "if": "fee=no", - "then": { - "en": "Free to use", - "de": "Kostenlose Nutzung", - "fr": "Toilettes gratuites", - "nl": "Gratis te gebruiken", - "it": "Gratis" - } - } - ] - }, - { - "question": { - "en": "How much does one have to pay for these toilets?", - "de": "Wie viel muss man fÃŧr diese Toiletten bezahlen?", - "fr": "Quel est le prix d'accès de ces toilettes ?", - "nl": "Hoeveel moet men betalen om deze toiletten te gebruiken?", - "it": "Quanto costa l'accesso a questi servizi igienici?", - "ru": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋĐžŅĐĩŅ‰ĐĩĐŊиĐĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°?" - }, - "render": { - "en": "The fee is {charge}", - "de": "Die GebÃŧhr beträgt {charge}", - "fr": "Le prix est {charge}", - "nl": "De toiletten gebruiken kost {charge}", - "it": "La tariffa è {charge}", - "ru": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ {charge}" - }, - "condition": "fee=yes", - "freeform": { - "key": "charge", - "type": "string" - }, - "id": "toilet-charge" - }, - { - "id": "toilets-wheelchair", - "question": { - "en": "Is there a dedicated toilet for wheelchair users", - "de": "Gibt es eine Toilette fÃŧr Rollstuhlfahrer?", - "fr": "Y a-t-il des toilettes rÊservÊes aux personnes en fauteuil roulant ?", - "nl": "Is er een rolstoeltoegankelijke toilet voorzien?", - "it": "C'è un WC riservato alle persone in sedia a rotelle" - }, - "mappings": [ - { - "then": { - "en": "There is a dedicated toilet for wheelchair users", - "de": "Es gibt eine Toilette fÃŧr Rollstuhlfahrer", - "fr": "Il y a des toilettes rÊservÊes pour les personnes à mobilitÊ rÊduite", - "nl": "Er is een toilet voor rolstoelgebruikers", - "it": "C'è un WC riservato alle persone in sedia a rotelle" - }, - "if": "wheelchair=yes" - }, - { - "if": "wheelchair=no", - "then": { - "en": "No wheelchair access", - "de": "Kein Zugang fÃŧr Rollstuhlfahrer", - "fr": "Non accessible aux personnes à mobilitÊ rÊduite", - "nl": "Niet toegankelijk voor rolstoelgebruikers", - "it": "Non accessibile in sedia a rotelle", - "ru": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - } - } - ] - }, - { - "id": "toilets-type", - "question": { - "en": "Which kind of toilets are this?", - "de": "Welche Art von Toiletten sind das?", - "fr": "De quel type sont ces toilettes ?", - "nl": "Welke toiletten zijn dit?", - "it": "Di che tipo di servizi igienici si tratta?", - "ru": "КаĐēиĐĩ ŅŅ‚Đž Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹?" - }, - "mappings": [ - { - "if": "toilets:position=seated", - "then": { - "en": "There are only seated toilets", - "de": "Es gibt nur Sitztoiletten", - "fr": "Il y a uniquement des sièges de toilettes", - "nl": "Er zijn enkel WC's om op te zitten", - "it": "Ci sono solo WC con sedile" - } - }, - { - "if": "toilets:position=urinal", - "then": { - "en": "There are only urinals here", - "de": "Hier gibt es nur Pissoirs", - "fr": "Il y a uniquement des urinoirs", - "nl": "Er zijn enkel urinoirs", - "it": "Ci sono solo urinali" - } - }, - { - "if": "toilets:position=squat", - "then": { - "en": "There are only squat toilets here", - "de": "Es gibt hier nur Hocktoiletten", - "fr": "Il y a uniquement des toilettes turques", - "nl": "Er zijn enkel hurktoiletten", - "it": "Ci sono solo turche" - } - }, - { - "if": "toilets:position=seated;urinal", - "then": { - "en": "Both seated toilets and urinals are available here", - "de": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfÃŧgbar", - "fr": "Il y a des sièges de toilettes et des urinoirs", - "nl": "Er zijn zowel urinoirs als zittoiletten", - "it": "Ci sono sia sedili, sia urinali" - } - } - ] - }, - { - "id": "toilets-changing-table", - "question": { - "en": "Is a changing table (to change diapers) available?", - "de": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?", - "fr": "Ces toilettes disposent-elles d'une table à langer ?", - "nl": "Is er een luiertafel beschikbaar?", - "it": "È disponibile un fasciatoio (per cambiare i pannolini)?" - }, - "mappings": [ - { - "then": { - "en": "A changing table is available", - "de": "Ein Wickeltisch ist verfÃŧgbar", - "fr": "Une table à langer est disponible", - "nl": "Er is een luiertafel", - "it": "È disponibile un fasciatoio" - }, - "if": "changing_table=yes" - }, - { - "if": "changing_table=no", - "then": { - "en": "No changing table is available", - "de": "Es ist kein Wickeltisch verfÃŧgbar", - "fr": "Aucune table à langer", - "nl": "Geen luiertafel", - "it": "Non è disponibile un fasciatoio" - } - } - ] - }, - { - "question": { - "en": "Where is the changing table located?", - "de": "Wo befindet sich der Wickeltisch?", - "fr": "OÚ se situe la table à langer ?", - "nl": "Waar bevindt de luiertafel zich?", - "it": "Dove si trova il fasciatoio?" - }, - "render": { - "en": "The changing table is located at {changing_table:location}", - "de": "Die Wickeltabelle befindet sich in {changing_table:location}", - "fr": "Emplacement de la table à langer : {changing_table:location}", - "nl": "De luiertafel bevindt zich in {changing_table:location}", - "it": "Il fasciatoio si trova presso {changing_table:location}" - }, - "condition": "changing_table=yes", - "freeform": { - "key": "changing_table:location" - }, - "mappings": [ - { - "then": { - "en": "The changing table is in the toilet for women. ", - "de": "Der Wickeltisch befindet sich in der Damentoilette. ", - "fr": "La table à langer est dans les toilettes pour femmes. ", - "nl": "De luiertafel bevindt zich in de vrouwentoiletten ", - "it": "Il fasciatoio è nei servizi igienici femminili. " - }, - "if": "changing_table:location=female_toilet" - }, - { - "then": { - "en": "The changing table is in the toilet for men. ", - "de": "Der Wickeltisch befindet sich in der Herrentoilette. ", - "fr": "La table à langer est dans les toilettes pour hommes. ", - "nl": "De luiertafel bevindt zich in de herentoiletten ", - "it": "Il fasciatoio è nei servizi igienici maschili. " - }, - "if": "changing_table:location=male_toilet" - }, - { - "if": "changing_table:location=wheelchair_toilet", - "then": { - "en": "The changing table is in the toilet for wheelchair users. ", - "de": "Der Wickeltisch befindet sich in der Toilette fÃŧr Rollstuhlfahrer. ", - "fr": "La table à langer est dans les toilettes pour personnes à mobilitÊ rÊduite. ", - "nl": "De luiertafel bevindt zich in de rolstoeltoegankelijke toilet ", - "it": "Il fasciatoio è nei servizi igienici per persone in sedia a rotelle. " - } - }, - { - "if": "changing_table:location=dedicated_room", - "then": { - "en": "The changing table is in a dedicated room. ", - "de": "Der Wickeltisch befindet sich in einem eigenen Raum. ", - "fr": "La table à langer est dans un espace dÊdiÊ. ", - "nl": "De luiertafel bevindt zich in een daartoe voorziene kamer ", - "it": "Il fasciatoio è in una stanza dedicata. " - } - } - ], - "id": "toilet-changing_table:location" - }, - { - "id": "toilet-handwashing", - "question": { - "en": "Do these toilets have a sink to wash your hands?", - "nl": "Hebben deze toiletten een lavabo om de handen te wassen?" - }, - "mappings": [ - { - "if": "toilets:handwashing=yes", - "then": { - "en": "This toilets have a sink to wash your hands", - "nl": "Deze toiletten hebben een lavabo waar men de handen kan wassen" - } - }, - { - "if": "toilets:handwashing=no", - "then": { - "en": "This toilets don't have a sink to wash your hands", - "nl": "Deze toiletten hebben geen lavabo waar men de handen kan wassen" - } - } - ] - }, - { - "id": "toilet-has-paper", - "question": { - "en": "Does one have to bring their own toilet paper to this toilet?", - "nl": "Moet je je eigen toiletpappier meenemen naar deze toilet?" - }, - "mappings": [ - { - "if": "toilets:paper_supplied=yes", - "then": { - "en": "Toilet paper is equipped with toilet paper", - "nl": "Deze toilet is voorzien van toiletpapier" - } - }, - { - "if": "toilets:paper_supplied=no", - "then": { - "en": "You have to bring your own toilet paper to this toilet", - "nl": "Je moet je eigen toiletpapier meebrengen naar deze toilet" - } - } - ] - } - ], - "filter": [ - { - "id": "wheelchair", - "options": [ - { - "question": { - "en": "Wheelchair accessible", - "nl": "Rolstoel toegankelijk", - "de": "Rollstuhlgerecht" - }, - "osmTags": "wheelchair=yes" - } - ] - }, - { - "id": "changing_table", - "options": [ - { - "question": { - "en": "Has a changing table", - "nl": "Heeft een luiertafel", - "de": "Hat einen Wickeltisch" - }, - "osmTags": "changing_table=yes" - } - ] - }, - { - "id": "free", - "options": [ - { - "question": { - "en": "Free to use", - "nl": "Gratis toegankelijk", - "de": "Nutzung kostenlos" - }, - "osmTags": { - "or": [ - "fee=no", - "fee=0", - "charge=0" - ] - } - } - ] - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 - }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/toilet/toilets.svg", - "mappings": [ - { - "if": "wheelchair=yes", - "then": "circle:white;./assets/layers/toilet/wheelchair.svg" - }, - { - "if": { - "or": [ - "toilets:position=urinals", - "toilets:position=urinal" - ] - }, - "then": "./assets/layers/toilet/urinal.svg" - } - ] - }, - "location": [ - "point" - ] - } - ] -} \ No newline at end of file + ], + "location": [ + "point", + "centroid" + ] + } + ] +} diff --git a/assets/layers/toilet/wheelchair.svg b/assets/layers/toilet/wheelchair.svg index d113492ad..2c191b190 100644 --- a/assets/layers/toilet/wheelchair.svg +++ b/assets/layers/toilet/wheelchair.svg @@ -2,54 +2,53 @@ image/svg+xml + rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + id="defs9"/> + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="999" + id="namedview7" + showgrid="false" + inkscape:zoom="0.8559553" + inkscape:cx="-16.568588" + inkscape:cy="292.29436" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer2"/> \ No newline at end of file + inkscape:connector-curvature="0" + style="clip-rule:evenodd;fill:#000000;fill-rule:evenodd;stroke-width:0.66635805" + d="m 310.84431,395.24795 c -20.28873,40.10642 -62.75413,66.52908 -108.0502,66.52908 -66.52908,0 -120.790412,-54.26133 -120.790412,-120.79041 0,-46.71209 28.310452,-90.1207 70.555212,-109.36341 l 2.73376,35.67521 c -24.98647,15.74498 -40.3895,44.15435 -40.3895,73.93288 0,48.26215 39.36263,87.62413 87.62413,87.62413 44.15407,0 81.80523,-33.88535 86.93958,-77.35545 z" + id="path4"/> \ No newline at end of file diff --git a/assets/layers/trail/trail.json b/assets/layers/trail/trail.json index 9f36afb2d..4ff87d105 100644 --- a/assets/layers/trail/trail.json +++ b/assets/layers/trail/trail.json @@ -1,252 +1,225 @@ { - "id": "trail", - "name": { - "en": "Trails", - "nl": "Wandeltochten", - "ru": "ĐĸŅ€ĐžĐŋŅ‹", - "de": "Wanderwege" + "id": "trail", + "name": { + "en": "Trails", + "nl": "Wandeltochten", + "ru": "ĐĸŅ€ĐžĐŋŅ‹", + "de": "Wanderwege" + }, + "minzoom": 12, + "source": { + "osmTags": { + "and": [ + { + "or": [ + "route=hiking", + "route=bycicle", + "route=horse" + ] + } + ] + } + }, + "title": { + "render": { + "en": "Trail", + "nl": "Wandeltocht", + "ru": "ĐĸŅ€ĐžĐŋĐ°", + "de": "Wanderweg" }, - "minzoom": 12, - "source": { - "osmTags": { + "mappings": [ + { + "if": "name~*", + "then": "{name}" + } + ] + }, + "tagRenderings": [ + "images", + { + "id": "trail-length", + "render": { + "en": "The trail is {_length:km} kilometers long", + "nl": "Deze wandeling is {_length:km} kilometer lang", + "de": "Der Wanderweg ist {_length:km} Kilometer lang" + } + }, + { + "question": { + "nl": "Wat is de naam van deze wandeling?" + }, + "render": { + "nl": "Deze wandeling heet {name}" + }, + "freeform": { + "key": "name" + }, + "id": "Name" + }, + { + "render": { + "nl": "Beheer door {operator}" + }, + "question": { + "nl": "Wie beheert deze wandeltocht?" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": { "and": [ - { - "or": [ - "route=hiking", - "route=bycicle", - "route=horse" - ] - } + "operator=Natuurpunt" ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door Natuurpunt" + } + }, + { + "if": { + "and": [ + "operator~(n|N)atuurpunt.*" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door {operator}" + }, + "hideInAnswer": true } + ], + "id": "Operator tag" }, - "title": { - "render": { - "en": "Trail", - "nl": "Wandeltocht", - "ru": "ĐĸŅ€ĐžĐŋĐ°", - "de": "Wanderweg" - }, - "mappings": [ - { - "if": "name~*", - "then": "{name}" - } - ] - }, - "tagRenderings": [ - "images", + { + "question": { + "nl": "Welke kleur heeft deze wandeling?" + }, + "render": { + "nl": "Deze wandeling heeft kleur {colour}" + }, + "freeform": { + "key": "colour", + "type": "color" + }, + "mappings": [ { - "id": "trail-length", - "render": { - "en": "The trail is {_length:km} kilometers long", - "nl": "Deze wandeling is {_length:km} kilometer lang" - } + "if": "colour=blue", + "then": { + "nl": "Blauwe wandeling", + "en": "Blue trail", + "de": "Blauer Weg" + } }, { - "question": { - "nl": "Wat is de naam van deze wandeling?" - }, - "render": { - "nl": "Deze wandeling heet {name}" - }, - "freeform": { - "key": "name" - }, - "id": "Name" + "if": "colour=red", + "then": { + "nl": "Rode wandeling", + "en": "Red trail", + "de": "Roter Weg" + } }, { - "render": { - "nl": "Beheer door {operator}" - }, - "question": { - "nl": "Wie beheert deze wandeltocht?" - }, - "freeform": { - "key": "operator" - }, - "mappings": [ - { - "if": { - "and": [ - "operator=Natuurpunt" - ] - }, - "then": { - "nl": "Dit gebied wordt beheerd door Natuurpunt" - } - }, - { - "if": { - "and": [ - "operator~(n|N)atuurpunt.*" - ] - }, - "then": { - "nl": "Dit gebied wordt beheerd door {operator}" - }, - "hideInAnswer": true - } - ], - "id": "Operator tag" + "if": "colour=green", + "then": { + "nl": "Groene wandeling", + "en": "Green trail", + "de": "GrÃŧner Weg" + } }, { - "question": { - "nl": "Welke kleur heeft deze wandeling?" - }, - "render": { - "nl": "Deze wandeling heeft kleur {colour}" - }, - "freeform": { - "key": "colour", - "type": "color" - }, - "mappings": [ - { - "if": "colour=blue", - "then": { - "nl": "Blauwe wandeling", - "en": "Blue trail" - } - }, - { - "if": "colour=red", - "then": { - "nl": "Rode wandeling", - "en": "Red trail" - } - }, - { - "if": "colour=green", - "then": { - "nl": "Groene wandeling", - "en": "Green trail" - } - }, - { - "if": "colour=yellow", - "then": { - "nl": "Gele wandeling", - "en": "Yellow trail" - } - } - ], - "id": "Color" - }, - { - "question": { - "nl": "Is deze wandeling toegankelijk met de rolstoel?" - }, - "mappings": [ - { - "then": { - "nl": "deze wandeltocht is toegankelijk met de rolstoel" - }, - "if": "wheelchair=yes" - }, - { - "then": { - "nl": "deze wandeltocht is niet toegankelijk met de rolstoel" - }, - "if": "wheelchair=no" - } - ], - "id": "Wheelchair access" - }, - { - "question": { - "nl": "Is deze wandeltocht toegankelijk met de buggy?" - }, - "mappings": [ - { - "then": { - "nl": "deze wandeltocht is toegankelijk met de buggy" - }, - "if": "pushchair=yes" - }, - { - "then": { - "nl": "deze wandeltocht is niet toegankelijk met de buggy" - }, - "if": "pushchair=no" - } - ], - "id": "pushchair access" + "if": "colour=yellow", + "then": { + "nl": "Gele wandeling", + "en": "Yellow trail", + "de": "Gelber Weg" + } } - ], - "icon": { + ], + "id": "Color" + }, + { + "question": { + "nl": "Is deze wandeling toegankelijk met de rolstoel?" + }, + "mappings": [ + { + "then": { + "nl": "deze wandeltocht is toegankelijk met de rolstoel" + }, + "if": "wheelchair=yes" + }, + { + "then": { + "nl": "deze wandeltocht is niet toegankelijk met de rolstoel" + }, + "if": "wheelchair=no" + } + ], + "id": "Wheelchair access" + }, + { + "question": { + "nl": "Is deze wandeltocht toegankelijk met de buggy?" + }, + "mappings": [ + { + "then": { + "nl": "deze wandeltocht is toegankelijk met de buggy" + }, + "if": "pushchair=yes" + }, + { + "then": { + "nl": "deze wandeltocht is niet toegankelijk met de buggy" + }, + "if": "pushchair=no" + } + ], + "id": "pushchair access" + } + ], + "description": { + "nl": "Aangeduide wandeltochten" + }, + "mapRendering": [ + { + "icon": { "render": "./assets/layers/trail/trail.svg", "mappings": [ - { - "if": "wheelchair=yes", - "then": "./assets/layers/trail/wheelchair.svg" - }, - { - "if": "pushchair=yes", - "then": "./assets/layers/trail/pushchair.svg" - } + { + "if": "wheelchair=yes", + "then": "./assets/layers/trail/wheelchair.svg" + }, + { + "if": "pushchair=yes", + "then": "./assets/layers/trail/pushchair.svg" + } ] - }, - "description": { - "nl": "Aangeduide wandeltochten" - }, - "wayHandling": 0, - "width": { - "render": "3" - }, - "iconSize": { + }, + "iconSize": { "render": "35,35,center" + }, + "location": [ + "point" + ] }, - "color": { + { + "color": { "render": "#335D9F", "mappings": [ - { - "if": "colour~*", - "then": "{colour}" - } + { + "if": "colour~*", + "then": "{colour}" + } ] - }, - "dashArray": { + }, + "width": { + "render": "3" + }, + "dashArray": { "render": "5 5" - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/trail/trail.svg", - "mappings": [ - { - "if": "wheelchair=yes", - "then": "./assets/layers/trail/wheelchair.svg" - }, - { - "if": "pushchair=yes", - "then": "./assets/layers/trail/pushchair.svg" - } - ] - }, - "iconSize": { - "render": "35,35,center" - }, - "location": [ - "point" - ] - }, - { - "color": { - "render": "#335D9F", - "mappings": [ - { - "if": "colour~*", - "then": "{colour}" - } - ] - }, - "width": { - "render": "3" - }, - "dashArray": { - "render": "5 5" - } - } - ] + } + } + ] } \ No newline at end of file diff --git a/assets/layers/tree_node/tree_node.json b/assets/layers/tree_node/tree_node.json index efefb746b..b7e2201a4 100644 --- a/assets/layers/tree_node/tree_node.json +++ b/assets/layers/tree_node/tree_node.json @@ -1,650 +1,623 @@ { - "id": "tree_node", - "name": { + "id": "tree_node", + "name": { + "nl": "Boom", + "en": "Tree", + "it": "Albero", + "ru": "ДĐĩŅ€ĐĩвО", + "fr": "Arbre", + "de": "Baum" + }, + "minzoom": 16, + "source": { + "osmTags": { + "and": [ + "natural=tree" + ] + } + }, + "title": { + "render": { + "nl": "Boom", + "en": "Tree", + "it": "Albero", + "ru": "ДĐĩŅ€ĐĩвО", + "fr": "Arbre", + "de": "Baum", + "eo": "Arbo" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "nl": "{name}", + "en": "{name}", + "ca": "{name}", + "de": "{name}", + "fr": "{name}", + "it": "{name}", + "ru": "{name}", + "id": "{name}", + "eo": "{name}" + } + } + ] + }, + "tagRenderings": [ + "images", + { + "id": "tree-height", + "render": { + "nl": "Hoogte: {height}", + "en": "Height: {height}", + "it": "Altezza: {height}", + "ru": "ВŅ‹ŅĐžŅ‚Đ°: {height}", + "fr": "Hauteur : {height}", + "de": "HÃļhe: {height}" + }, + "condition": { + "and": [ + "height~*" + ] + }, + "mappings": [ + { + "if": { + "and": [ + "height~^[0-9.]+$" + ] + }, + "then": { + "nl": "Hoogte: {height} m", + "en": "Height: {height} m", + "it": "Altezza: {height} m", + "ru": "ВŅ‹ŅĐžŅ‚Đ°: {height} Đŧ", + "fr": "Hauteur : {height} m", + "de": "HÃļhe: {height} m" + } + } + ] + }, + { + "id": "tree-leaf_type", + "question": { + "nl": "Is dit een naald- of loofboom?", + "en": "Is this a broadleaved or needleleaved tree?", + "it": "Si tratta di un albero latifoglia o aghifoglia?", + "fr": "Cet arbre est-il un feuillu ou un rÊsineux ?", + "de": "Ist dies ein Laub- oder Nadelbaum?" + }, + "mappings": [ + { + "if": { + "and": [ + "leaf_type=broadleaved" + ] + }, + "then": { + "nl": "\"\"/ Loofboom", + "en": "\"\"/ Broadleaved", + "it": "\"\"/ Latifoglia", + "fr": "\"\"/ Feuillu", + "de": "\"\"/ Laubbaum" + } + }, + { + "if": { + "and": [ + "leaf_type=needleleaved" + ] + }, + "then": { + "nl": "\"\"/ Naaldboom", + "en": "\"\"/ Needleleaved", + "it": "\"\"/ Aghifoglia", + "fr": "\"\"/ RÊsineux", + "de": "\"\"/ Nadelbaum" + } + }, + { + "if": { + "and": [ + "leaf_type=leafless" + ] + }, + "then": { + "nl": "\"\"/ Permanent bladloos", + "en": "\"\"/ Permanently leafless", + "it": "\"\"/ Privo di foglie (permanente)", + "fr": "\"\"/ Sans feuilles (Permanent)", + "de": "\"\"/ Dauerhaft blattlos" + }, + "hideInAnswer": true + } + ] + }, + { + "id": "tree-denotation", + "question": { + "nl": "Hoe significant is deze boom? Kies het eerste antwoord dat van toepassing is.", + "en": "How significant is this tree? Choose the first answer that applies.", + "it": "Quanto significativo è questo albero? Scegli la prima risposta che corrisponde.", + "fr": "Quelle est l'importance de cet arbre ? Choisissez la première rÊponse qui s'applique.", + "de": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." + }, + "mappings": [ + { + "if": { + "and": [ + "denotation=landmark" + ] + }, + "then": { + "nl": "De boom valt op door zijn grootte of prominente locatie. Hij is nuttig voor navigatie.", + "en": "The tree is remarkable due to its size or prominent location. It is useful for navigation.", + "it": "È un albero notevole per le sue dimensioni o per la posizione prominente. È utile alla navigazione.", + "fr": "L'arbre est remarquable en raison de sa taille ou de son emplacement proÊminent. Il est utile pour la navigation.", + "de": "Der Baum ist aufgrund seiner GrÃļße oder seiner markanten Lage bedeutsam. Er ist nÃŧtzlich zur Orientierung." + } + }, + { + "if": { + "and": [ + "denotation=natural_monument" + ] + }, + "then": { + "nl": "De boom is een natuurlijk monument, bijvoorbeeld doordat hij bijzonder oud of van een waardevolle soort is.", + "en": "The tree is a natural monument, e.g. because it is especially old, or of a valuable species.", + "it": "L’albero è un monumento naturale, ad esempio perchÊ specialmente antico o appartenente a specie importanti.", + "fr": "Cet arbre est un monument naturel (ex : Ãĸge, espèce, etcâ€Ļ)", + "de": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehÃļrt." + } + }, + { + "if": { + "and": [ + "denotation=agricultural" + ] + }, + "then": { + "nl": "De boom wordt voor landbouwdoeleinden gebruikt, bijvoorbeeld in een boomgaard.", + "en": "The tree is used for agricultural purposes, e.g. in an orchard.", + "it": "L’albero è usato per scopi agricoli, ad esempio in un frutteto.", + "fr": "Cet arbre est utilisÊ à but d’agriculture (ex : dans un verger)", + "de": "Der Baum wird fÃŧr landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." + } + }, + { + "if": { + "and": [ + "denotation=park" + ] + }, + "then": { + "nl": "De boom staat in een park of dergelijke (begraafplaats, schoolterrein, â€Ļ).", + "en": "The tree is in a park or similar (cemetery, school grounds, â€Ļ).", + "it": "L’albero è in un parco o qualcosa di simile (cimitero, aree didattiche, etc.).", + "fr": "Cet arbre est dans un parc ou une aire similaire (ex : cimetière, cour d’Êcole, â€Ļ).", + "de": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." + } + }, + { + "if": { + "and": [ + "denotation=garden" + ] + }, + "then": { + "nl": "De boom staat in de tuin bij een woning/flatgebouw.", + "en": "The tree is a residential garden.", + "it": "L’albero è un giardino residenziale.", + "fr": "Cet arbre est dans une cour rÊsidentielle." + } + }, + { + "if": { + "and": [ + "denotation=avenue" + ] + }, + "then": { + "nl": "Dit is een laanboom.", + "en": "This is a tree along an avenue.", + "it": "Fa parte di un viale alberato.", + "fr": "C'est un arbre le long d'une avenue.", + "de": "Dieser Baum steht entlang einer Straße." + } + }, + { + "if": { + "and": [ + "denotation=urban" + ] + }, + "then": { + "nl": "De boom staat in een woonkern.", + "en": "The tree is an urban area.", + "it": "L’albero si trova in un’area urbana.", + "fr": "L'arbre est une zone urbaine." + } + }, + { + "if": { + "and": [ + "denotation=none" + ] + }, + "then": { + "nl": "De boom staat buiten een woonkern.", + "en": "The tree is outside of an urban area.", + "it": "L’albero si trova fuori dall’area urbana.", + "fr": "Cet arbre est en zone rurale.", + "de": "Dieser Baum steht außerhalb eines städtischen Gebiets." + } + } + ] + }, + { + "id": "tree-decidouous", + "question": { + "nl": "Is deze boom groenblijvend of bladverliezend?", + "en": "Is this tree evergreen or deciduous?", + "it": "È un sempreverde o caduco?", + "ru": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвО вĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ иĐģи ĐģиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ?", + "fr": "L’arbre est-il à feuillage persistant ou caduc ?", + "de": "Ist dies ein Nadelbaum oder ein Laubbaum?" + }, + "mappings": [ + { + "if": { + "and": [ + "leaf_cycle=deciduous" + ] + }, + "then": { + "nl": "Bladverliezend: de boom is een periode van het jaar kaal.", + "en": "Deciduous: the tree loses its leaves for some time of the year.", + "it": "Caduco: l’albero perde le sue foglie per un periodo dell’anno.", + "ru": "ЛиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ: Ņƒ Đ´ĐĩŅ€Đĩва ĐžĐŋĐ°Đ´Đ°ŅŽŅ‚ ĐģиŅŅ‚ŅŒŅ в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐĩ вŅ€ĐĩĐŧŅ ĐŗОда.", + "fr": "Caduc : l’arbre perd son feuillage une partie de l’annÊe.", + "de": "Laubabwerfend: Der Baum verliert fÃŧr eine gewisse Zeit des Jahres seine Blätter." + } + }, + { + "if": { + "and": [ + "leaf_cycle=evergreen" + ] + }, + "then": { + "nl": "Groenblijvend.", + "en": "Evergreen.", + "it": "Sempreverde.", + "fr": "À feuilles persistantes.", + "ru": "ВĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ.", + "de": "immergrÃŧner Baum." + } + } + ], + "condition": { + "and": [ + "leaf_type!~^leafless$" + ] + } + }, + { + "render": { + "nl": "Naam: {name}", + "en": "Name: {name}", + "it": "Nome: {name}", + "ru": "НазваĐŊиĐĩ: {name}", + "fr": "Nom : {name}", + "id": "Nama: {name}", + "de": "Name: {name}", + "eo": "Nomo: {name}" + }, + "question": { + "nl": "Heeft de boom een naam?", + "en": "Does the tree have a name?", + "it": "L’albero ha un nome?", + "fr": "L'arbre a-t-il un nom ?", + "ru": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊаСваĐŊиĐĩ?", + "de": "Hat der Baum einen Namen?" + }, + "freeform": { + "key": "name", + "addExtraTags": [ + "noname=" + ] + }, + "mappings": [ + { + "if": { + "and": [ + "name=", + "noname=yes" + ] + }, + "then": { + "nl": "De boom heeft geen naam.", + "en": "The tree does not have a name.", + "it": "L’albero non ha un nome.", + "fr": "L'arbre n'a pas de nom.", + "ru": "ĐŖ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ.", + "de": "Der Baum hat keinen Namen." + } + } + ], + "condition": { + "or": [ + "denotation=landmark", + "denotation=natural_monument", + "name~*" + ] + }, + "id": "tree_node-name" + }, + { + "id": "tree-heritage", + "question": { + "nl": "Is deze boom erkend als erfgoed?", + "en": "Is this tree registered heritage?", + "it": "Quest’albero è registrato come patrimonio?", + "fr": "Cet arbre est-il inscrit au patrimoine ?", + "de": "Ist dieser Baum ein Naturdenkmal?" + }, + "mappings": [ + { + "if": { + "and": [ + "heritage=4", + "heritage:operator=OnroerendErfgoed" + ] + }, + "then": { + "nl": "\"\"/ Erkend als houtig erfgoed door Onroerend Erfgoed Vlaanderen", + "en": "\"\"/ Registered as heritage by Onroerend Erfgoed Flanders", + "it": "\"\"/Registrato come patrimonio da Onroerend Erfgoed Flanders", + "fr": "\"\"/ Fait partie du patrimoine par Onroerend Erfgoed", + "de": "\"\"/ Als Denkmal registriert von der Onroerend Erfgoed Flandern" + } + }, + { + "if": { + "and": [ + "heritage=4", + "heritage:operator=aatl" + ] + }, + "then": { + "nl": "Erkend als natuurlijk erfgoed door Directie Cultureel Erfgoed Brussel", + "en": "Registered as heritage by Direction du Patrimoine culturel Brussels", + "it": "Registrato come patrimonio da Direction du Patrimoine culturel di Bruxelles", + "fr": "EnregistrÊ comme patrimoine par la Direction du Patrimoine culturel Bruxelles", + "de": "Als Denkmal registriert von der Direction du Patrimoine culturel BrÃŧssel" + } + }, + { + "if": { + "and": [ + "heritage=yes", + "heritage:operator=" + ] + }, + "then": { + "nl": "Erkend als erfgoed door een andere organisatie", + "en": "Registered as heritage by a different organisation", + "it": "Registrato come patrimonio da un’organizzazione differente", + "fr": "EnregistrÊ comme patrimoine par une autre organisation", + "de": "Von einer anderen Organisation als Denkmal registriert" + } + }, + { + "if": { + "and": [ + "heritage=no", + "heritage:operator=" + ] + }, + "then": { + "nl": "Niet erkend als erfgoed", + "en": "Not registered as heritage", + "it": "Non è registrato come patrimonio", + "fr": "Non enregistrÊ comme patrimoine", + "de": "Nicht als Denkmal registriert" + } + }, + { + "if": { + "and": [ + "heritage~*" + ] + }, + "then": { + "nl": "Erkend als erfgoed door een andere organisatie", + "en": "Registered as heritage by a different organisation", + "it": "Registrato come patrimonio da un’organizzazione differente", + "fr": "EnregistrÊ comme patrimoine par une autre organisation", + "de": "Von einer anderen Organisation als Denkmal registriert" + }, + "hideInAnswer": true + } + ], + "condition": { + "or": [ + "denotation=landmark", + "denotation=natural_monument" + ] + } + }, + { + "render": { + "nl": "\"\"/ Onroerend Erfgoed-ID: {ref:OnroerendErfgoed}", + "en": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}", + "it": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}", + "ru": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}", + "fr": "\"\"/ Identifiant Onroerend Erfgoed : {ref:OnroerendErfgoed}" + }, + "question": { + "nl": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?", + "en": "What is the ID issued by Onroerend Erfgoed Flanders?", + "it": "Qual è l’ID rilasciato da Onroerend Erfgoed Flanders?", + "fr": "Quel est son identifiant donnÊ par Onroerend Erfgoed ?", + "de": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?" + }, + "freeform": { + "key": "ref:OnroerendErfgoed", + "type": "nat" + }, + "condition": { + "and": [ + "heritage=4", + "heritage:operator=OnroerendErfgoed" + ] + }, + "id": "tree_node-ref:OnroerendErfgoed" + }, + { + "render": { + "nl": "\"\"/ Wikidata: {wikidata}", + "en": "\"\"/ Wikidata: {wikidata}", + "it": "\"\"/ Wikidata: {wikidata}", + "ru": "\"\"/ Wikidata: {wikidata}", + "fr": "\"\"/ Wikidata : {wikidata}", + "de": "\"\"/ Wikidata: {wikidata}" + }, + "question": { + "nl": "Wat is het Wikidata-ID van deze boom?", + "en": "What is the Wikidata ID for this tree?", + "it": "Qual è l’ID Wikidata per questo albero?", + "fr": "Quel est l'identifiant Wikidata de cet arbre ?", + "de": "Was ist das passende Wikidata Element zu diesem Baum?" + }, + "freeform": { + "key": "wikidata", + "type": "wikidata" + }, + "condition": { + "or": [ + "denotation=landmark", + "denotation=natural_monument", + "wikidata~*" + ] + }, + "id": "tree_node-wikidata" + } + ], + "presets": [ + { + "tags": [ + "natural=tree", + "leaf_type=broadleaved" + ], + "title": { + "nl": "Loofboom", + "en": "Broadleaved tree", + "it": "Albero latifoglia", + "fr": "Arbre feuillu", + "ru": "ЛиŅŅ‚вĐĩĐŊĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО", + "de": "Laubbaum" + }, + "description": { + "nl": "Een boom van een soort die blaadjes heeft, bijvoorbeeld eik of populier.", + "en": "A tree of a species with leaves, such as oak or populus.", + "it": "Un albero di una specie con foglie larghe come la quercia o il pioppo.", + "fr": "Un arbre d'une espèce avec de larges feuilles, comme le chÃĒne ou le peuplier.", + "de": "Ein Baum mit Blättern, z. B. Eiche oder Buche." + }, + "preciseInput": { + "preferredBackground": "photo" + } + }, + { + "tags": [ + "natural=tree", + "leaf_type=needleleaved" + ], + "title": { + "nl": "Naaldboom", + "en": "Needleleaved tree", + "it": "Albero aghifoglia", + "ru": "ĐĨвОКĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО", + "fr": "Arbre rÊsineux", + "de": "Nadelbaum" + }, + "description": { + "nl": "Een boom van een soort met naalden, bijvoorbeeld den of spar.", + "en": "A tree of a species with needles, such as pine or spruce.", + "it": "Un albero di una specie con aghi come il pino o l’abete.", + "ru": "ДĐĩŅ€ĐĩвО Ņ Ņ…вОĐĩĐš (иĐŗĐģĐ°Đŧи), ĐŊĐ°ĐŋŅ€Đ¸ĐŧĐĩŅ€, ŅĐžŅĐŊĐ° иĐģи ĐĩĐģŅŒ.", + "fr": "Une espèce d’arbre avec des Êpines comme le pin ou l’ÊpicÊa.", + "de": "Ein Baum mit Nadeln, z. B. Kiefer oder Fichte." + }, + "preciseInput": { + "preferredBackground": "photo" + } + }, + { + "tags": [ + "natural=tree" + ], + "title": { "nl": "Boom", "en": "Tree", "it": "Albero", "ru": "ДĐĩŅ€ĐĩвО", "fr": "Arbre", + "id": "Pohon", "de": "Baum" - }, - "minzoom": 16, - "source": { - "osmTags": { - "and": [ - "natural=tree" - ] - } - }, - "title": { - "render": { - "nl": "Boom", - "en": "Tree", - "it": "Albero", - "ru": "ДĐĩŅ€ĐĩвО", - "fr": "Arbre", - "de": "Baum", - "eo": "Arbo" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "nl": "{name}", - "en": "{name}", - "ca": "{name}", - "de": "{name}", - "fr": "{name}", - "it": "{name}", - "ru": "{name}", - "id": "{name}", - "eo": "{name}" - } - } - ] - }, - "tagRenderings": [ - "images", - { - "id": "tree-height", - "render": { - "nl": "Hoogte: {height}", - "en": "Height: {height}", - "it": "Altezza: {height}", - "ru": "ВŅ‹ŅĐžŅ‚Đ°: {height}", - "fr": "Hauteur : {height}", - "de": "HÃļhe: {height}" - }, - "condition": { - "and": [ - "height~*" - ] - }, - "mappings": [ - { - "if": { - "and": [ - "height~^[0-9.]+$" - ] - }, - "then": { - "nl": "Hoogte: {height} m", - "en": "Height: {height} m", - "it": "Altezza: {height} m", - "ru": "ВŅ‹ŅĐžŅ‚Đ°: {height} Đŧ", - "fr": "Hauteur : {height} m", - "de": "HÃļhe: {height} m" - } - } - ] - }, - { - "id": "tree-leaf_type", - "question": { - "nl": "Is dit een naald- of loofboom?", - "en": "Is this a broadleaved or needleleaved tree?", - "it": "Si tratta di un albero latifoglia o aghifoglia?", - "fr": "Cet arbre est-il un feuillu ou un rÊsineux ?", - "de": "Ist dies ein Laub- oder Nadelbaum?" - }, - "mappings": [ - { - "if": { - "and": [ - "leaf_type=broadleaved" - ] - }, - "then": { - "nl": "\"\"/ Loofboom", - "en": "\"\"/ Broadleaved", - "it": "\"\"/ Latifoglia", - "fr": "\"\"/ Feuillu", - "de": "\"\"/ Laubbaum" - } - }, - { - "if": { - "and": [ - "leaf_type=needleleaved" - ] - }, - "then": { - "nl": "\"\"/ Naaldboom", - "en": "\"\"/ Needleleaved", - "it": "\"\"/ Aghifoglia", - "fr": "\"\"/ RÊsineux", - "de": "\"\"/ Nadelbaum" - } - }, - { - "if": { - "and": [ - "leaf_type=leafless" - ] - }, - "then": { - "nl": "\"\"/ Permanent bladloos", - "en": "\"\"/ Permanently leafless", - "it": "\"\"/ Privo di foglie (permanente)", - "fr": "\"\"/ Sans feuilles (Permanent)", - "de": "\"\"/ Dauerhaft blattlos" - }, - "hideInAnswer": true - } - ] - }, - { - "id": "tree-denotation", - "question": { - "nl": "Hoe significant is deze boom? Kies het eerste antwoord dat van toepassing is.", - "en": "How significant is this tree? Choose the first answer that applies.", - "it": "Quanto significativo è questo albero? Scegli la prima risposta che corrisponde.", - "fr": "Quelle est l'importance de cet arbre ? Choisissez la première rÊponse qui s'applique.", - "de": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." - }, - "mappings": [ - { - "if": { - "and": [ - "denotation=landmark" - ] - }, - "then": { - "nl": "De boom valt op door zijn grootte of prominente locatie. Hij is nuttig voor navigatie.", - "en": "The tree is remarkable due to its size or prominent location. It is useful for navigation.", - "it": "È un albero notevole per le sue dimensioni o per la posizione prominente. È utile alla navigazione.", - "fr": "L'arbre est remarquable en raison de sa taille ou de son emplacement proÊminent. Il est utile pour la navigation.", - "de": "Der Baum ist aufgrund seiner GrÃļße oder seiner markanten Lage bedeutsam. Er ist nÃŧtzlich zur Orientierung." - } - }, - { - "if": { - "and": [ - "denotation=natural_monument" - ] - }, - "then": { - "nl": "De boom is een natuurlijk monument, bijvoorbeeld doordat hij bijzonder oud of van een waardevolle soort is.", - "en": "The tree is a natural monument, e.g. because it is especially old, or of a valuable species.", - "it": "L’albero è un monumento naturale, ad esempio perchÊ specialmente antico o appartenente a specie importanti.", - "fr": "Cet arbre est un monument naturel (ex : Ãĸge, espèce, etcâ€Ļ)", - "de": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehÃļrt." - } - }, - { - "if": { - "and": [ - "denotation=agricultural" - ] - }, - "then": { - "nl": "De boom wordt voor landbouwdoeleinden gebruikt, bijvoorbeeld in een boomgaard.", - "en": "The tree is used for agricultural purposes, e.g. in an orchard.", - "it": "L’albero è usato per scopi agricoli, ad esempio in un frutteto.", - "fr": "Cet arbre est utilisÊ à but d’agriculture (ex : dans un verger)", - "de": "Der Baum wird fÃŧr landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." - } - }, - { - "if": { - "and": [ - "denotation=park" - ] - }, - "then": { - "nl": "De boom staat in een park of dergelijke (begraafplaats, schoolterrein, â€Ļ).", - "en": "The tree is in a park or similar (cemetery, school grounds, â€Ļ).", - "it": "L’albero è in un parco o qualcosa di simile (cimitero, aree didattiche, etc.).", - "fr": "Cet arbre est dans un parc ou une aire similaire (ex : cimetière, cour d’Êcole, â€Ļ).", - "de": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." - } - }, - { - "if": { - "and": [ - "denotation=garden" - ] - }, - "then": { - "nl": "De boom staat in de tuin bij een woning/flatgebouw.", - "en": "The tree is a residential garden.", - "it": "L’albero è un giardino residenziale.", - "fr": "Cet arbre est dans une cour rÊsidentielle." - } - }, - { - "if": { - "and": [ - "denotation=avenue" - ] - }, - "then": { - "nl": "Dit is een laanboom.", - "en": "This is a tree along an avenue.", - "it": "Fa parte di un viale alberato.", - "fr": "C'est un arbre le long d'une avenue.", - "de": "Dieser Baum steht entlang einer Straße." - } - }, - { - "if": { - "and": [ - "denotation=urban" - ] - }, - "then": { - "nl": "De boom staat in een woonkern.", - "en": "The tree is an urban area.", - "it": "L’albero si trova in un’area urbana.", - "fr": "L'arbre est une zone urbaine." - } - }, - { - "if": { - "and": [ - "denotation=none" - ] - }, - "then": { - "nl": "De boom staat buiten een woonkern.", - "en": "The tree is outside of an urban area.", - "it": "L’albero si trova fuori dall’area urbana.", - "fr": "Cet arbre est en zone rurale.", - "de": "Dieser Baum steht außerhalb eines städtischen Gebiets." - } - } - ] - }, - { - "id": "tree-decidouous", - "question": { - "nl": "Is deze boom groenblijvend of bladverliezend?", - "en": "Is this tree evergreen or deciduous?", - "it": "È un sempreverde o caduco?", - "ru": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвО вĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ иĐģи ĐģиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ?", - "fr": "L’arbre est-il à feuillage persistant ou caduc ?", - "de": "Ist dies ein Nadelbaum oder ein Laubbaum?" - }, - "mappings": [ - { - "if": { - "and": [ - "leaf_cycle=deciduous" - ] - }, - "then": { - "nl": "Bladverliezend: de boom is een periode van het jaar kaal.", - "en": "Deciduous: the tree loses its leaves for some time of the year.", - "it": "Caduco: l’albero perde le sue foglie per un periodo dell’anno.", - "ru": "ЛиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ: Ņƒ Đ´ĐĩŅ€Đĩва ĐžĐŋĐ°Đ´Đ°ŅŽŅ‚ ĐģиŅŅ‚ŅŒŅ в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐĩ вŅ€ĐĩĐŧŅ ĐŗОда.", - "fr": "Caduc : l’arbre perd son feuillage une partie de l’annÊe.", - "de": "Laubabwerfend: Der Baum verliert fÃŧr eine gewisse Zeit des Jahres seine Blätter." - } - }, - { - "if": { - "and": [ - "leaf_cycle=evergreen" - ] - }, - "then": { - "nl": "Groenblijvend.", - "en": "Evergreen.", - "it": "Sempreverde.", - "fr": "À feuilles persistantes.", - "ru": "ВĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ.", - "de": "immergrÃŧner Baum." - } - } - ], - "condition": { - "and": [ - "leaf_type!~^leafless$" - ] - } - }, - { - "render": { - "nl": "Naam: {name}", - "en": "Name: {name}", - "it": "Nome: {name}", - "ru": "НазваĐŊиĐĩ: {name}", - "fr": "Nom : {name}", - "id": "Nama: {name}", - "de": "Name: {name}", - "eo": "Nomo: {name}" - }, - "question": { - "nl": "Heeft de boom een naam?", - "en": "Does the tree have a name?", - "it": "L’albero ha un nome?", - "fr": "L'arbre a-t-il un nom ?", - "ru": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊаСваĐŊиĐĩ?", - "de": "Hat der Baum einen Namen?" - }, - "freeform": { - "key": "name", - "addExtraTags": [ - "noname=" - ] - }, - "mappings": [ - { - "if": { - "and": [ - "name=", - "noname=yes" - ] - }, - "then": { - "nl": "De boom heeft geen naam.", - "en": "The tree does not have a name.", - "it": "L’albero non ha un nome.", - "fr": "L'arbre n'a pas de nom.", - "ru": "ĐŖ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ.", - "de": "Der Baum hat keinen Namen." - } - } - ], - "condition": { - "or": [ - "denotation=landmark", - "denotation=natural_monument", - "name~*" - ] - }, - "id": "tree_node-name" - }, - { - "id": "tree-heritage", - "question": { - "nl": "Is deze boom erkend als erfgoed?", - "en": "Is this tree registered heritage?", - "it": "Quest’albero è registrato come patrimonio?", - "fr": "Cet arbre est-il inscrit au patrimoine ?", - "de": "Ist dieser Baum ein Naturdenkmal?" - }, - "mappings": [ - { - "if": { - "and": [ - "heritage=4", - "heritage:operator=OnroerendErfgoed" - ] - }, - "then": { - "nl": "\"\"/ Erkend als houtig erfgoed door Onroerend Erfgoed Vlaanderen", - "en": "\"\"/ Registered as heritage by Onroerend Erfgoed Flanders", - "it": "\"\"/Registrato come patrimonio da Onroerend Erfgoed Flanders", - "fr": "\"\"/ Fait partie du patrimoine par Onroerend Erfgoed", - "de": "\"\"/ Als Denkmal registriert von der Onroerend Erfgoed Flandern" - } - }, - { - "if": { - "and": [ - "heritage=4", - "heritage:operator=aatl" - ] - }, - "then": { - "nl": "Erkend als natuurlijk erfgoed door Directie Cultureel Erfgoed Brussel", - "en": "Registered as heritage by Direction du Patrimoine culturel Brussels", - "it": "Registrato come patrimonio da Direction du Patrimoine culturel di Bruxelles", - "fr": "EnregistrÊ comme patrimoine par la Direction du Patrimoine culturel Bruxelles", - "de": "Als Denkmal registriert von der Direction du Patrimoine culturel BrÃŧssel" - } - }, - { - "if": { - "and": [ - "heritage=yes", - "heritage:operator=" - ] - }, - "then": { - "nl": "Erkend als erfgoed door een andere organisatie", - "en": "Registered as heritage by a different organisation", - "it": "Registrato come patrimonio da un’organizzazione differente", - "fr": "EnregistrÊ comme patrimoine par une autre organisation" - } - }, - { - "if": { - "and": [ - "heritage=no", - "heritage:operator=" - ] - }, - "then": { - "nl": "Niet erkend als erfgoed", - "en": "Not registered as heritage", - "it": "Non è registrato come patrimonio", - "fr": "Non enregistrÊ comme patrimoine", - "de": "Nicht als Denkmal registriert" - } - }, - { - "if": { - "and": [ - "heritage~*" - ] - }, - "then": { - "nl": "Erkend als erfgoed door een andere organisatie", - "en": "Registered as heritage by a different organisation", - "it": "Registrato come patrimonio da un’organizzazione differente", - "fr": "EnregistrÊ comme patrimoine par une autre organisation" - }, - "hideInAnswer": true - } - ], - "condition": { - "or": [ - "denotation=landmark", - "denotation=natural_monument" - ] - } - }, - { - "render": { - "nl": "\"\"/ Onroerend Erfgoed-ID: {ref:OnroerendErfgoed}", - "en": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}", - "it": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}", - "ru": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}", - "fr": "\"\"/ Identifiant Onroerend Erfgoed : {ref:OnroerendErfgoed}" - }, - "question": { - "nl": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?", - "en": "What is the ID issued by Onroerend Erfgoed Flanders?", - "it": "Qual è l’ID rilasciato da Onroerend Erfgoed Flanders?", - "fr": "Quel est son identifiant donnÊ par Onroerend Erfgoed ?", - "de": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?" - }, - "freeform": { - "key": "ref:OnroerendErfgoed", - "type": "nat" - }, - "condition": { - "and": [ - "heritage=4", - "heritage:operator=OnroerendErfgoed" - ] - }, - "id": "tree_node-ref:OnroerendErfgoed" - }, - { - "render": { - "nl": "\"\"/ Wikidata: {wikidata}", - "en": "\"\"/ Wikidata: {wikidata}", - "it": "\"\"/ Wikidata: {wikidata}", - "ru": "\"\"/ Wikidata: {wikidata}", - "fr": "\"\"/ Wikidata : {wikidata}" - }, - "question": { - "nl": "Wat is het Wikidata-ID van deze boom?", - "en": "What is the Wikidata ID for this tree?", - "it": "Qual è l’ID Wikidata per questo albero?", - "fr": "Quel est l'identifiant Wikidata de cet arbre ?", - "de": "Was ist das passende Wikidata Element zu diesem Baum?" - }, - "freeform": { - "key": "wikidata", - "type": "wikidata" - }, - "condition": { - "or": [ - "denotation=landmark", - "denotation=natural_monument", - "wikidata~*" - ] - }, - "id": "tree_node-wikidata" - } - ], - "icon": { + }, + "description": { + "nl": "Wanneer je niet zeker bent of het nu een loof- of naaldboom is.", + "en": "If you're not sure whether it's a broadleaved or needleleaved tree.", + "it": "Qualora non si sia sicuri se si tratta di un albero latifoglia o aghifoglia.", + "fr": "Si vous n'ÃĒtes pas sÃģr(e) de savoir s'il s'agit d'un arbre à feuilles larges ou à aiguilles.", + "ru": "ЕŅĐģи вŅ‹ ĐŊĐĩ ŅƒĐ˛ĐĩŅ€ĐĩĐŊŅ‹ в Ņ‚ĐžĐŧ, ĐģиŅŅ‚вĐĩĐŊĐŊĐžĐĩ ŅŅ‚Đž Đ´ĐĩŅ€ĐĩвО иĐģи Ņ…вОКĐŊĐžĐĩ.", + "de": "Wenn Sie nicht sicher sind, ob es sich um einen Laubbaum oder einen Nadelbaum handelt." + }, + "preciseInput": { + "preferredBackground": "photo" + } + } + ], + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "deletion": { + "minNeededChangesets": 5 + }, + "mapRendering": [ + { + "icon": { "render": "circle:#ffffff;./assets/themes/trees/unknown.svg", "mappings": [ - { - "if": { - "and": [ - "leaf_type=broadleaved" - ] - }, - "then": "circle:#ffffff;./assets/themes/trees/broadleaved.svg" - }, - { - "if": { - "and": [ - "leaf_type=needleleaved" - ] - }, - "then": "circle:#ffffff;./assets/themes/trees/needleleaved.svg" - } - ] - }, - "wayHandling": 1, - "width": { - "render": "8" - }, - "iconSize": { - "render": "40,40,bottom" - }, - "color": { - "render": "#00f" - }, - "presets": [ - { - "tags": [ - "natural=tree", + { + "if": { + "and": [ "leaf_type=broadleaved" - ], - "title": { - "nl": "Loofboom", - "en": "Broadleaved tree", - "it": "Albero latifoglia", - "fr": "Arbre feuillu", - "ru": "ЛиŅŅ‚вĐĩĐŊĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО", - "de": "Laubbaum" + ] }, - "description": { - "nl": "Een boom van een soort die blaadjes heeft, bijvoorbeeld eik of populier.", - "en": "A tree of a species with leaves, such as oak or populus.", - "it": "Un albero di una specie con foglie larghe come la quercia o il pioppo.", - "fr": "Un arbre d'une espèce avec de larges feuilles, comme le chÃĒne ou le peuplier.", - "de": "Ein Baum mit Blättern, z. B. Eiche oder Buche." - }, - "preciseInput": { - "preferredBackground": "photo" - } - }, - { - "tags": [ - "natural=tree", + "then": "circle:#ffffff;./assets/themes/trees/broadleaved.svg" + }, + { + "if": { + "and": [ "leaf_type=needleleaved" - ], - "title": { - "nl": "Naaldboom", - "en": "Needleleaved tree", - "it": "Albero aghifoglia", - "ru": "ĐĨвОКĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО", - "fr": "Arbre rÊsineux", - "de": "Nadelbaum" + ] }, - "description": { - "nl": "Een boom van een soort met naalden, bijvoorbeeld den of spar.", - "en": "A tree of a species with needles, such as pine or spruce.", - "it": "Un albero di una specie con aghi come il pino o l’abete.", - "ru": "ДĐĩŅ€ĐĩвО Ņ Ņ…вОĐĩĐš (иĐŗĐģĐ°Đŧи), ĐŊĐ°ĐŋŅ€Đ¸ĐŧĐĩŅ€, ŅĐžŅĐŊĐ° иĐģи ĐĩĐģŅŒ.", - "fr": "Une espèce d’arbre avec des Êpines comme le pin ou l’ÊpicÊa.", - "de": "Ein Baum mit Nadeln, z. B. Kiefer oder Fichte." - }, - "preciseInput": { - "preferredBackground": "photo" - } - }, - { - "tags": [ - "natural=tree" - ], - "title": { - "nl": "Boom", - "en": "Tree", - "it": "Albero", - "ru": "ДĐĩŅ€ĐĩвО", - "fr": "Arbre", - "id": "Pohon", - "de": "Baum" - }, - "description": { - "nl": "Wanneer je niet zeker bent of het nu een loof- of naaldboom is.", - "en": "If you're not sure whether it's a broadleaved or needleleaved tree.", - "it": "Qualora non si sia sicuri se si tratta di un albero latifoglia o aghifoglia.", - "fr": "Si vous n'ÃĒtes pas sÃģr(e) de savoir s'il s'agit d'un arbre à feuilles larges ou à aiguilles.", - "ru": "ЕŅĐģи вŅ‹ ĐŊĐĩ ŅƒĐ˛ĐĩŅ€ĐĩĐŊŅ‹ в Ņ‚ĐžĐŧ, ĐģиŅŅ‚вĐĩĐŊĐŊĐžĐĩ ŅŅ‚Đž Đ´ĐĩŅ€ĐĩвО иĐģи Ņ…вОКĐŊĐžĐĩ.", - "de": "Wenn Sie nicht sicher sind, ob es sich um einen Laubbaum oder einen Nadelbaum handelt." - }, - "preciseInput": { - "preferredBackground": "photo" - } - } - ], - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "deletion": { - "minNeededChangesets": 5 - }, - "mapRendering": [ - { - "icon": { - "render": "circle:#ffffff;./assets/themes/trees/unknown.svg", - "mappings": [ - { - "if": { - "and": [ - "leaf_type=broadleaved" - ] - }, - "then": "circle:#ffffff;./assets/themes/trees/broadleaved.svg" - }, - { - "if": { - "and": [ - "leaf_type=needleleaved" - ] - }, - "then": "circle:#ffffff;./assets/themes/trees/needleleaved.svg" - } - ] - }, - "iconSize": { - "render": "40,40,bottom" - }, - "location": [ - "point" - ] - } - ] + "then": "circle:#ffffff;./assets/themes/trees/needleleaved.svg" + } + ] + }, + "iconSize": { + "render": "40,40,bottom" + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/type_node/type_node.json b/assets/layers/type_node/type_node.json index 4a61d8232..4609041ed 100644 --- a/assets/layers/type_node/type_node.json +++ b/assets/layers/type_node/type_node.json @@ -1,12 +1,12 @@ { - "id": "type_node", - "description": "This is a special meta_layer which exports _every_ point in OSM. This only works if zoomed below the point that the full tile is loaded (and not loaded via Overpass). Note that this point will also contain a property `parent_ways` which contains all the ways this node is part of as a list", - "minzoom": 18, - "source": { - "osmTags": "id~node/.*" - }, - "mapRendering": [], - "name": "All OSM Nodes", - "title": "OSM node {id}", - "tagRendering": [] + "id": "type_node", + "description": "This is a priviliged meta_layer which exports _every_ point in OSM. This only works if zoomed below the point that the full tile is loaded (and not loaded via Overpass). Note that this point will also contain a property `parent_ways` which contains all the ways this node is part of as a list. This is mainly used for extremely specialized themes, which do advanced conflations. Expert use only.", + "minzoom": 18, + "source": { + "osmTags": "id~node/.*" + }, + "mapRendering": null, + "name": "All OSM Nodes", + "title": "OSM node {id}", + "tagRendering": [] } \ No newline at end of file diff --git a/assets/layers/viewpoint/viewpoint.json b/assets/layers/viewpoint/viewpoint.json index e56b69c37..b3f077b74 100644 --- a/assets/layers/viewpoint/viewpoint.json +++ b/assets/layers/viewpoint/viewpoint.json @@ -1,89 +1,85 @@ { - "id": "viewpoint", - "name": { + "id": "viewpoint", + "name": { + "en": "Viewpoint", + "nl": "Uitzicht", + "de": "Aussichtspunkt", + "fr": "Point de vue", + "it": "Punto panoramico", + "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "id": "Sudut pandang", + "eo": "Vidpunkto" + }, + "description": { + "en": "A nice viewpoint or nice view. Ideal to add an image if no other category fits", + "nl": "Een mooi uitzicht - ideaal om een foto toe te voegen wanneer iets niet in een andere categorie past", + "de": "Ein schÃļner Aussichtspunkt oder eine schÃļne Aussicht. Ideal zum HinzufÃŧgen eines Bildes, wenn keine andere Kategorie passt", + "fr": "Un beau point de vue ou une belle vue. IdÊal pour ajouter une image si aucune autre catÊgorie ne convient", + "it": "Un punto panoramico che offre una bella vista. L'ideale è aggiungere un'immagine, se nessun'altra categoria è appropriata" + }, + "source": { + "osmTags": "tourism=viewpoint" + }, + "minzoom": 14, + "wayhandling": 2, + "presets": [ + { + "title": { "en": "Viewpoint", "nl": "Uitzicht", "de": "Aussichtspunkt", "fr": "Point de vue", - "it": "Punto panoramico", "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "id": "Sudut pandang", - "eo": "Vidpunkto" + "it": "Punto panoramico", + "id": "Sudut pandang" + }, + "tags": [ + "tourism=viewpoint" + ] + } + ], + "title": { + "render": { + "en": "Viewpoint", + "nl": "Uitzicht", + "de": "Aussichtspunkt", + "fr": "Point de vue", + "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "it": "Punto panoramico", + "id": "Sudut pandang", + "eo": "Vidpunkto" + } + }, + "tagRenderings": [ + "images", + { + "question": { + "en": "Do you want to add a description?", + "nl": "Zijn er bijzonderheden die je wilt toevoegen?", + "de": "MÃļchten Sie eine Beschreibung hinzufÃŧgen?", + "ru": "ВŅ‹ Ņ…ĐžŅ‚иŅ‚Đĩ дОйавиŅ‚ŅŒ ĐžĐŋиŅĐ°ĐŊиĐĩ?", + "fr": "Voulez-vous ajouter une description ?", + "it": "Vuoi aggiungere una descrizione?", + "id": "Apakah Anda ingin menambahkan deskripsi?" + }, + "render": "{description}", + "freeform": { + "key": "description" + }, + "id": "viewpoint-description" + } + ], + "mapRendering": [ + { + "icon": "./assets/layers/viewpoint/viewpoint.svg", + "iconSize": "20,20,center", + "location": [ + "point" + ] }, - "description": { - "en": "A nice viewpoint or nice view. Ideal to add an image if no other category fits", - "nl": "Een mooi uitzicht - ideaal om een foto toe te voegen wanneer iets niet in een andere categorie past", - "de": "Ein schÃļner Aussichtspunkt oder eine schÃļne Aussicht. Ideal zum HinzufÃŧgen eines Bildes, wenn keine andere Kategorie passt", - "fr": "Un beau point de vue ou une belle vue. IdÊal pour ajouter une image si aucune autre catÊgorie ne convient", - "it": "Un punto panoramico che offre una bella vista. L'ideale è aggiungere un'immagine, se nessun'altra categoria è appropriata" - }, - "source": { - "osmTags": "tourism=viewpoint" - }, - "minzoom": 14, - "icon": "./assets/layers/viewpoint/viewpoint.svg", - "iconSize": "20,20,center", - "color": "#ffffff", - "width": "5", - "wayhandling": 2, - "presets": [ - { - "title": { - "en": "Viewpoint", - "nl": "Uitzicht", - "de": "Aussichtspunkt", - "fr": "Point de vue", - "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "it": "Punto panoramico", - "id": "Sudut pandang" - }, - "tags": [ - "tourism=viewpoint" - ] - } - ], - "title": { - "render": { - "en": "Viewpoint", - "nl": "Uitzicht", - "de": "Aussichtspunkt", - "fr": "Point de vue", - "ru": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "it": "Punto panoramico", - "id": "Sudut pandang", - "eo": "Vidpunkto" - } - }, - "tagRenderings": [ - "images", - { - "question": { - "en": "Do you want to add a description?", - "nl": "Zijn er bijzonderheden die je wilt toevoegen?", - "de": "MÃļchten Sie eine Beschreibung hinzufÃŧgen?", - "ru": "ВŅ‹ Ņ…ĐžŅ‚иŅ‚Đĩ дОйавиŅ‚ŅŒ ĐžĐŋиŅĐ°ĐŊиĐĩ?", - "fr": "Voulez-vous ajouter une description ?", - "it": "Vuoi aggiungere una descrizione?", - "id": "Apakah Anda ingin menambahkan deskripsi?" - }, - "render": "{description}", - "freeform": { - "key": "description" - }, - "id": "viewpoint-description" - } - ], - "mapRendering": [ - { - "icon": "./assets/layers/viewpoint/viewpoint.svg", - "iconSize": "20,20,center", - "location": [ - "point" - ] - }, - { - "color": "#ffffff", - "width": "5" - } - ] + { + "color": "#ffffff", + "width": "5" + } + ] } \ No newline at end of file diff --git a/assets/layers/village_green/village_green.json b/assets/layers/village_green/village_green.json index 24b12263c..061ea1612 100644 --- a/assets/layers/village_green/village_green.json +++ b/assets/layers/village_green/village_green.json @@ -1,53 +1,48 @@ { - "id": "village_green", - "name": { - "nl": "Speelweide" + "id": "village_green", + "name": { + "nl": "Speelweide" + }, + "source": { + "osmTags": "landuse=village_green" + }, + "minzoom": 0, + "title": { + "render": { + "nl": "Speelweide" }, - "source": { - "osmTags": "landuse=village_green" - }, - "minzoom": 0, - "title": { - "render": { - "nl": "Speelweide" - }, - "mappings": [ - { - "if": "name~*", - "then": { - "nl": "{name}" - } - } - ] - }, - "icon": "./assets/themes/playgrounds/playground.svg", - "iconSize": "40,40,center", - "width": "1", - "color": "#937f20", - "wayHandling": 2, - "tagRenderings": [ - "images", - { - "id": "village_green-explanation", - "render": "Dit is een klein stukje openbaar groen waar je mag spelen, picnicken, zitten, ..." - }, - { - "id": "village_green-reviews", - "render": "{reviews(name, landuse=village_green )}" - } - ], - "mapRendering": [ - { - "icon": "./assets/themes/playgrounds/playground.svg", - "iconSize": "40,40,center", - "location": [ - "point", - "centroid" - ] - }, - { - "color": "#937f20", - "width": "1" + "mappings": [ + { + "if": "name~*", + "then": { + "nl": "{name}" } + } ] + }, + "tagRenderings": [ + "images", + { + "id": "village_green-explanation", + "render": "Dit is een klein stukje openbaar groen waar je mag spelen, picnicken, zitten, ..." + }, + { + "id": "village_green-reviews", + "render": "{reviews(name, landuse=village_green )}" + } + ], + "mapRendering": [ + { + "icon": "./assets/themes/playgrounds/playground.svg", + "iconSize": "40,40,center", + "location": [ + "point", + "centroid" + ] + }, + { + "color": "#937f20", + "width": "1" + } + ] } \ No newline at end of file diff --git a/assets/layers/visitor_information_centre/visitor_information_centre.json b/assets/layers/visitor_information_centre/visitor_information_centre.json index bbc51fc20..8275a78c6 100644 --- a/assets/layers/visitor_information_centre/visitor_information_centre.json +++ b/assets/layers/visitor_information_centre/visitor_information_centre.json @@ -1,86 +1,77 @@ { - "id": "visitor_information_centre", - "name": { - "en": "Visitor Information Centre", - "nl": "Bezoekerscentrum", - "de": "Besucherinformationszentrum" - }, - "minzoom": 12, - "source": { - "osmTags": { - "and": [ - { - "or": [ - "information=visitor_centre", - "information=office" - ] - } - ] - } - }, - "title": { - "render": { - "nl": "{name}", - "en": "{name}", - "de": "{name}", - "ru": "{name}", - "eo": "{name}" - }, - "mappings": [ - { - "if": { - "and": [ - "name:nl~*" - ] - }, - "then": { - "nl": "{name:nl}" - } - }, - { - "if": { - "and": [ - "name~*" - ] - }, - "then": { - "nl": "{name}", - "en": "{name}", - "de": "{name}", - "ru": "{name}", - "eo": "{name}" - } - } - ] - }, - "description": { - "en": "A visitor center offers information about a specific attraction or place of interest where it is located.", - "nl": "Een bezoekerscentrum biedt informatie over een specifieke attractie of bezienswaardigheid waar het is gevestigd.", - "de": "Ein Besucherzentrum bietet Informationen Ãŧber eine bestimmte Attraktion oder SehenswÃŧrdigkeit, an der es sich befindet." - }, - "tagRenderings": [], - "icon": { - "render": "./assets/layers/visitor_information_centre/information.svg" - }, - "iconSize": { - "render": "40,40,center" - }, - "color": { - "render": "#E64C00" - }, - "presets": [], - "wayHandling": 1, - "mapRendering": [ + "id": "visitor_information_centre", + "name": { + "en": "Visitor Information Centre", + "nl": "Bezoekerscentrum", + "de": "Besucherinformationszentrum" + }, + "minzoom": 12, + "source": { + "osmTags": { + "and": [ { - "icon": { - "render": "./assets/layers/visitor_information_centre/information.svg" - }, - "iconSize": { - "render": "40,40,center" - }, - "location": [ - "point" - ] + "or": [ + "information=visitor_centre", + "information=office" + ] } + ] + } + }, + "title": { + "render": { + "nl": "{name}", + "en": "{name}", + "de": "{name}", + "ru": "{name}", + "eo": "{name}" + }, + "mappings": [ + { + "if": { + "and": [ + "name:nl~*" + ] + }, + "then": { + "nl": "{name:nl}" + } + }, + { + "if": { + "and": [ + "name~*" + ] + }, + "then": { + "nl": "{name}", + "en": "{name}", + "de": "{name}", + "ru": "{name}", + "eo": "{name}" + } + } ] + }, + "description": { + "en": "A visitor center offers information about a specific attraction or place of interest where it is located.", + "nl": "Een bezoekerscentrum biedt informatie over een specifieke attractie of bezienswaardigheid waar het is gevestigd.", + "de": "Ein Besucherzentrum bietet Informationen Ãŧber eine bestimmte Attraktion oder SehenswÃŧrdigkeit, an der es sich befindet." + }, + "tagRenderings": [], + "presets": [], + "mapRendering": [ + { + "icon": { + "render": "./assets/layers/visitor_information_centre/information.svg" + }, + "iconSize": { + "render": "40,40,center" + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/layers/waste_basket/waste_basket.json b/assets/layers/waste_basket/waste_basket.json index bed215af4..49a365d2b 100644 --- a/assets/layers/waste_basket/waste_basket.json +++ b/assets/layers/waste_basket/waste_basket.json @@ -1,238 +1,211 @@ { - "id": "waste_basket", - "name": { + "id": "waste_basket", + "name": { + "en": "Waste Basket", + "nl": "Vuilnisbak", + "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", + "de": "Abfalleimer", + "eo": "Rubujo" + }, + "minzoom": 17, + "source": { + "osmTags": { + "and": [ + "amenity=waste_basket" + ] + } + }, + "title": { + "render": { + "en": "Waste Basket", + "nl": "Vuilnisbak", + "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", + "de": "Abfalleimer" + } + }, + "description": { + "en": "This is a public waste basket, thrash can, where you can throw away your thrash.", + "nl": "Dit is een publieke vuilnisbak waar je je afval kan weggooien.", + "de": "Dies ist ein Ãļffentlicher Abfalleimer, in den Sie Ihren MÃŧll entsorgen kÃļnnen." + }, + "tagRenderings": [ + { + "id": "waste-basket-waste-types", + "question": { + "en": "What kind of waste basket is this?", + "nl": "Wat voor soort vuilnisbak is dit?", + "de": "Um was fÃŧr einen Abfalleimer handelt es sich?" + }, + "multiAnswer": true, + "mappings": [ + { + "if": "waste=", + "then": { + "en": "A waste basket for general waste", + "nl": "Een vuilnisbak voor zwerfvuil", + "de": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" + }, + "hideInAnswer": true + }, + { + "if": "waste=trash", + "then": { + "en": "A waste basket for general waste", + "nl": "Een vuilnisbak voor zwerfvuil", + "de": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" + } + }, + { + "if": "waste=dog_excrement", + "then": { + "en": "A waste basket for dog excrements", + "nl": "Een vuilnisbak specifiek voor hondenuitwerpselen", + "de": "Ein Abfalleimer fÃŧr Hundekot" + } + }, + { + "if": "waste=cigarettes", + "then": { + "en": "A waste basket for cigarettes", + "nl": "Een vuilnisbak voor sigarettenpeuken", + "de": "MÃŧlleimer fÃŧr Zigaretten" + } + }, + { + "if": "waste=drugs", + "then": { + "en": "A waste basket for drugs", + "nl": "Een vuilnisbak voor (vervallen) medicatie en drugs", + "de": "MÃŧlleimer fÃŧr Drogen" + } + }, + { + "if": "waste=sharps", + "then": { + "en": "A waste basket for needles and other sharp objects", + "nl": "Een vuilnisbak voor injectienaalden en andere scherpe voorwerpen", + "de": "Ein Abfalleimer fÃŧr Nadeln und andere scharfe Gegenstände" + } + } + ] + }, + { + "id": "dispensing_dog_bags", + "question": { + "en": "Does this waste basket have a dispenser for dog excrement bags?", + "nl": "Heeft deze vuilnisbak een verdeler voor hondenpoepzakjes?", + "de": "VerfÃŧgt dieser Abfalleimer Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel?" + }, + "condition": { + "or": [ + "waste=dog_excrement", + "waste=trash", + "waste=" + ] + }, + "mappings": [ + { + "if": { + "and": [ + "vending=dog_excrement_bag", + "not:vending=" + ] + }, + "then": { + "en": "This waste basket has a dispenser for (dog) excrement bags", + "nl": "Deze vuilnisbak heeft een verdeler voor hondenpoepzakjes", + "de": "Dieser Abfalleimer verfÃŧgt Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel" + } + }, + { + "if": { + "and": [ + "not:vending=dog_excrement_bag", + "vending=" + ] + }, + "then": { + "en": "This waste basket does not have a dispenser for (dog) excrement bags", + "nl": "Deze vuilnisbak heeft geenverdeler voor hondenpoepzakjes", + "de": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" + } + }, + { + "if": "vending=", + "then": { + "en": "This waste basket does not have a dispenser for (dog) excrement bags", + "nl": "Deze vuilnisbaak heeft waarschijnlijk geen verdeler voor hondenpoepzakjes", + "de": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" + }, + "hideInAnwer": true + } + ] + } + ], + "presets": [ + { + "tags": [ + "amenity=waste_basket" + ], + "title": { "en": "Waste Basket", "nl": "Vuilnisbak", "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", "de": "Abfalleimer", "eo": "Rubujo" + }, + "presiceInput": { + "preferredBackground": "photo" + } + } + ], + "deletion": { + "softDeletionTags": { + "and": [ + "disused:amenity:={amenity}", + "amenity=" + ] }, - "minzoom": 17, - "source": { - "osmTags": { - "and": [ - "amenity=waste_basket" - ] - } - }, - "title": { - "render": { - "en": "Waste Basket", - "nl": "Vuilnisbak", - "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", - "de": "Abfalleimer" - } - }, - "description": { - "en": "This is a public waste basket, thrash can, where you can throw away your thrash.", - "nl": "Dit is een publieke vuilnisbak waar je je afval kan weggooien.", - "de": "Dies ist ein Ãļffentlicher Abfalleimer, in den Sie Ihren MÃŧll entsorgen kÃļnnen." - }, - "tagRenderings": [ - { - "id": "waste-basket-waste-types", - "question": { - "en": "What kind of waste basket is this?", - "nl": "Wat voor soort vuilnisbak is dit?", - "de": "Um was fÃŧr einen Abfalleimer handelt es sich?" - }, - "multiAnswer": true, - "mappings": [ - { - "if": "waste=", - "then": { - "en": "A waste basket for general waste", - "nl": "Een vuilnisbak voor zwerfvuil", - "de": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" - }, - "hideInAnswer": true - }, - { - "if": "waste=trash", - "then": { - "en": "A waste basket for general waste", - "nl": "Een vuilnisbak voor zwerfvuil", - "de": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" - } - }, - { - "if": "waste=dog_excrement", - "then": { - "en": "A waste basket for dog excrements", - "nl": "Een vuilnisbak specifiek voor hondenuitwerpselen", - "de": "Ein Abfalleimer fÃŧr Hundekot" - } - }, - { - "if": "waste=cigarettes", - "then": { - "en": "A waste basket for cigarettes", - "nl": "Een vuilnisbak voor sigarettenpeuken", - "de": "MÃŧlleimer fÃŧr Zigaretten" - } - }, - { - "if": "waste=drugs", - "then": { - "en": "A waste basket for drugs", - "nl": "Een vuilnisbak voor (vervallen) medicatie en drugs", - "de": "MÃŧlleimer fÃŧr Drogen" - } - }, - { - "if": "waste=sharps", - "then": { - "en": "A waste basket for needles and other sharp objects", - "nl": "Een vuilnisbak voor injectienaalden en andere scherpe voorwerpen" - } - } - ] - }, - { - "id": "dispensing_dog_bags", - "question": { - "en": "Does this waste basket have a dispenser for dog excrement bags?", - "nl": "Heeft deze vuilnisbak een verdeler voor hondenpoepzakjes?", - "de": "VerfÃŧgt dieser Abfalleimer Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel?" - }, - "condition": { - "or": [ - "waste=dog_excrement", - "waste=trash", - "waste=" - ] - }, - "mappings": [ - { - "if": { - "and": [ - "vending=dog_excrement_bag", - "not:vending=" - ] - }, - "then": { - "en": "This waste basket has a dispenser for (dog) excrement bags", - "nl": "Deze vuilnisbak heeft een verdeler voor hondenpoepzakjes", - "de": "Dieser Abfalleimer verfÃŧgt Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel" - } - }, - { - "if": { - "and": [ - "not:vending=dog_excrement_bag", - "vending=" - ] - }, - "then": { - "en": "This waste basket does not have a dispenser for (dog) excrement bags", - "nl": "Deze vuilnisbak heeft geenverdeler voor hondenpoepzakjes", - "de": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" - } - }, - { - "if": "vending=", - "then": { - "en": "This waste basket does not have a dispenser for (dog) excrement bags", - "nl": "Deze vuilnisbaak heeft waarschijnlijk geen verdeler voor hondenpoepzakjes", - "de": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" - }, - "hideInAnwer": true - } - ] - } - ], - "icon": { + "neededChangesets": 1 + }, + "allowMove": { + "enableRelocation": false, + "enableImproveAccuraccy": true + }, + "mapRendering": [ + { + "icon": { "render": "./assets/themes/waste_basket/waste_basket.svg" - }, - "width": { - "render": "8" - }, - "iconSize": { + }, + "iconSize": { "render": "40,40,center", "mappings": [ - { - "if": { - "and": [ - "amenity=waste_basket" - ] - }, - "then": { - "en": "Waste Basket", - "nl": "Vuilnisbak", - "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", - "de": "Abfalleimer", - "eo": "Rubujo" - } - } - ] - }, - "color": { - "render": "#00f" - }, - "presets": [ - { - "tags": [ + { + "if": { + "and": [ "amenity=waste_basket" - ], - "title": { - "en": "Waste Basket", - "nl": "Vuilnisbak", - "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", - "de": "Abfalleimer", - "eo": "Rubujo" + ] }, - "presiceInput": { - "preferredBackground": "photo" + "then": { + "en": "Waste Basket", + "nl": "Vuilnisbak", + "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", + "de": "Abfalleimer" } - } - ], - "deletion": { - "softDeletionTags": { - "and": [ - "disused:amenity:={amenity}", - "amenity=" - ] - }, - "neededChangesets": 1 + } + ] + }, + "location": [ + "point" + ] }, - "allowMove": { - "enableRelocation": false, - "enableImproveAccuraccy": true - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/themes/waste_basket/waste_basket.svg" - }, - "iconSize": { - "render": "40,40,center", - "mappings": [ - { - "if": { - "and": [ - "amenity=waste_basket" - ] - }, - "then": { - "en": "Waste Basket", - "nl": "Vuilnisbak", - "ru": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", - "de": "Abfalleimer" - } - } - ] - }, - "location": [ - "point" - ] - }, - { - "color": { - "render": "#00f" - }, - "width": { - "render": "8" - } - } - ] + { + "color": { + "render": "#00f" + }, + "width": { + "render": "8" + } + } + ] } \ No newline at end of file diff --git a/assets/layers/watermill/watermill.json b/assets/layers/watermill/watermill.json index 1764ccc4f..2654f8232 100644 --- a/assets/layers/watermill/watermill.json +++ b/assets/layers/watermill/watermill.json @@ -1,188 +1,180 @@ { - "id": "watermill", - "name": { - "nl": "Watermolens", - "en": "Watermill", - "de": "WassermÃŧhle", - "ru": "ВодŅĐŊĐ°Ņ ĐŧĐĩĐģŅŒĐŊиŅ†Đ°" + "id": "watermill", + "name": { + "nl": "Watermolens", + "en": "Watermill", + "de": "WassermÃŧhle", + "ru": "ВодŅĐŊĐ°Ņ ĐŧĐĩĐģŅŒĐŊиŅ†Đ°", + "id": "Kincir Air" + }, + "minzoom": 12, + "source": { + "osmTags": { + "and": [ + "man_made=watermill" + ] + } + }, + "title": { + "render": { + "nl": "Watermolens" }, - "minzoom": 12, - "source": { - "osmTags": { - "and": [ - "man_made=watermill" - ] - } - }, - "title": { - "render": { - "nl": "Watermolens" + "mappings": [ + { + "if": { + "and": [ + "name:nl~*" + ] }, - "mappings": [ - { - "if": { - "and": [ - "name:nl~*" - ] - }, - "then": { - "nl": "{name:nl}" - } - }, - { - "if": { - "and": [ - "name~*" - ] - }, - "then": { - "nl": "{name}" - } - } - ] - }, - "description": { - "nl": "Watermolens" - }, - "tagRenderings": [ - "images", - { - "render": { - "nl": "De toegankelijkheid van dit gebied is: {access:description}" - }, - "question": { - "nl": "Is dit gebied toegankelijk?" - }, - "freeform": { - "key": "access:description" - }, - "mappings": [ - { - "if": { - "and": [ - "access=yes", - "fee=" - ] - }, - "then": { - "nl": "Vrij toegankelijk" - } - }, - { - "if": { - "and": [ - "access=no", - "fee=" - ] - }, - "then": { - "nl": "Niet toegankelijk" - } - }, - { - "if": { - "and": [ - "access=private", - "fee=" - ] - }, - "then": { - "nl": "Niet toegankelijk, want privÊgebied" - } - }, - { - "if": { - "and": [ - "access=permissive", - "fee=" - ] - }, - "then": { - "nl": "Toegankelijk, ondanks dat het privegebied is" - } - }, - { - "if": { - "and": [ - "access=guided", - "fee=" - ] - }, - "then": { - "nl": "Enkel toegankelijk met een gids of tijdens een activiteit" - } - }, - { - "if": { - "and": [ - "access=yes", - "fee=yes" - ] - }, - "then": { - "nl": "Toegankelijk mits betaling" - } - } - ], - "id": "Access tag" + "then": { + "nl": "{name:nl}" + } + }, + { + "if": { + "and": [ + "name~*" + ] }, - { - "render": { - "nl": "Beheer door {operator}" - }, - "question": { - "nl": "Wie beheert dit pad?" - }, - "freeform": { - "key": "operator" - }, - "mappings": [ - { - "if": { - "and": [ - "operator=Natuurpunt" - ] - }, - "then": { - "nl": "Dit gebied wordt beheerd door Natuurpunt" - } - }, - { - "if": { - "and": [ - "operator~(n|N)atuurpunt.*" - ] - }, - "then": { - "nl": "Dit gebied wordt beheerd door {operator}" - }, - "hideInAnswer": true - } - ], - "id": "Operator tag" - } - ], - "wayHandling": 1, - "icon": { - "render": "./assets/layers/watermill/watermill.svg" - }, - "iconSize": { - "render": "50,50,center" - }, - "color": { - "render": "#FFC0CB" - }, - "mapRendering": [ - { - "icon": { - "render": "./assets/layers/watermill/watermill.svg" - }, - "iconSize": { - "render": "50,50,center" - }, - "location": [ - "point" - ] + "then": { + "nl": "{name}" } + } ] + }, + "description": { + "nl": "Watermolens" + }, + "tagRenderings": [ + "images", + { + "render": { + "nl": "De toegankelijkheid van dit gebied is: {access:description}" + }, + "question": { + "nl": "Is dit gebied toegankelijk?" + }, + "freeform": { + "key": "access:description" + }, + "mappings": [ + { + "if": { + "and": [ + "access=yes", + "fee=" + ] + }, + "then": { + "nl": "Vrij toegankelijk" + } + }, + { + "if": { + "and": [ + "access=no", + "fee=" + ] + }, + "then": { + "nl": "Niet toegankelijk" + } + }, + { + "if": { + "and": [ + "access=private", + "fee=" + ] + }, + "then": { + "nl": "Niet toegankelijk, want privÊgebied" + } + }, + { + "if": { + "and": [ + "access=permissive", + "fee=" + ] + }, + "then": { + "nl": "Toegankelijk, ondanks dat het privegebied is" + } + }, + { + "if": { + "and": [ + "access=guided", + "fee=" + ] + }, + "then": { + "nl": "Enkel toegankelijk met een gids of tijdens een activiteit" + } + }, + { + "if": { + "and": [ + "access=yes", + "fee=yes" + ] + }, + "then": { + "nl": "Toegankelijk mits betaling" + } + } + ], + "id": "Access tag" + }, + { + "render": { + "nl": "Beheer door {operator}" + }, + "question": { + "nl": "Wie beheert dit pad?" + }, + "freeform": { + "key": "operator" + }, + "mappings": [ + { + "if": { + "and": [ + "operator=Natuurpunt" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door Natuurpunt" + } + }, + { + "if": { + "and": [ + "operator~(n|N)atuurpunt.*" + ] + }, + "then": { + "nl": "Dit gebied wordt beheerd door {operator}" + }, + "hideInAnswer": true + } + ], + "id": "Operator tag" + } + ], + "mapRendering": [ + { + "icon": { + "render": "./assets/layers/watermill/watermill.svg" + }, + "iconSize": { + "render": "50,50,center" + }, + "location": [ + "point", + "centroid" + ] + } + ] } \ No newline at end of file diff --git a/assets/svg/blocked.svg b/assets/svg/blocked.svg index 36ac431e6..b55236407 100644 --- a/assets/svg/blocked.svg +++ b/assets/svg/blocked.svg @@ -2,828 +2,827 @@ - - - - - - image/svg+xml - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="86.927155mm" + height="94.009796mm" + viewBox="0 0 86.927157 94.009797" + version="1.1" + id="svg8" + sodipodi:docname="blocked.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + + + image/svg+xml + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-116.61719,-98.361256)"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/assets/svg/close.svg b/assets/svg/close.svg index ded2ef0e4..9ccf69a14 100644 --- a/assets/svg/close.svg +++ b/assets/svg/close.svg @@ -2,80 +2,79 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="100" + height="100" + viewBox="0 0 26.458333 26.458334" + version="1.1" + id="svg8" + sodipodi:docname="close.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/assets/svg/delete_not_allowed.svg b/assets/svg/delete_not_allowed.svg index 6f1b3a486..e6e9d9322 100644 --- a/assets/svg/delete_not_allowed.svg +++ b/assets/svg/delete_not_allowed.svg @@ -1,86 +1,85 @@ - - - - image/svg+xml - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 -256 2801.2319 2801.2319" + id="svg3741" + version="1.1" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + width="2801.2319" + height="2801.2319" + sodipodi:docname="delete_not_allowed.svg"> + + + + image/svg+xml + + + + + + + cx="1405.9852" + cy="1149.9852" + id="circle4-3" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:28.47442627;stroke-opacity:1" + r="1395.2467"/> - - + id="g881" + transform="matrix(1.255247,0,0,1.255247,149.11911,-316.26492)"> + + + + + + - diff --git a/assets/svg/gender_bi.svg b/assets/svg/gender_bi.svg index 9ae9cf5c1..033f83fad 100644 --- a/assets/svg/gender_bi.svg +++ b/assets/svg/gender_bi.svg @@ -1,10 +1,14 @@ - + Created with Fabric.js 1.7.22 - + - - - + + + \ No newline at end of file diff --git a/assets/svg/gender_female.svg b/assets/svg/gender_female.svg index 6af923135..57b9e57b7 100644 --- a/assets/svg/gender_female.svg +++ b/assets/svg/gender_female.svg @@ -1,10 +1,14 @@ - + Created with Fabric.js 1.7.22 - + - - - + + + \ No newline at end of file diff --git a/assets/svg/gender_inter.svg b/assets/svg/gender_inter.svg index 95f3932de..00be6806e 100644 --- a/assets/svg/gender_inter.svg +++ b/assets/svg/gender_inter.svg @@ -1,10 +1,14 @@ - + Created with Fabric.js 1.7.22 - + - - - + + + \ No newline at end of file diff --git a/assets/svg/gender_male.svg b/assets/svg/gender_male.svg index b70e6e50a..ff408991d 100644 --- a/assets/svg/gender_male.svg +++ b/assets/svg/gender_male.svg @@ -1,10 +1,14 @@ - + Created with Fabric.js 1.7.22 - + - - - + + + \ No newline at end of file diff --git a/assets/svg/gender_queer.svg b/assets/svg/gender_queer.svg index c8bcf16b7..7073042e4 100644 --- a/assets/svg/gender_queer.svg +++ b/assets/svg/gender_queer.svg @@ -1,10 +1,14 @@ - + Created with Fabric.js 1.7.22 - + - - - + + + \ No newline at end of file diff --git a/assets/svg/gender_trans.svg b/assets/svg/gender_trans.svg index d39540182..6d6d3d4f9 100644 --- a/assets/svg/gender_trans.svg +++ b/assets/svg/gender_trans.svg @@ -1,10 +1,14 @@ - + Created with Fabric.js 1.7.22 - + - - - + + + \ No newline at end of file diff --git a/assets/svg/hand.svg b/assets/svg/hand.svg index bbef4187a..9e2c50c2c 100644 --- a/assets/svg/hand.svg +++ b/assets/svg/hand.svg @@ -1,30 +1,29 @@ - - - - image/svg+xml - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://www.w3.org/2000/svg" + id="svg6" + height="39.557907" + width="28.561806" + version="1.1"> + + + + image/svg+xml + + + + + + + diff --git a/assets/svg/josm_logo.svg b/assets/svg/josm_logo.svg index 671e70fae..0922d7679 100644 --- a/assets/svg/josm_logo.svg +++ b/assets/svg/josm_logo.svg @@ -1,5 +1,6 @@ - JOSM Logotype 2019 diff --git a/assets/svg/liberapay.svg b/assets/svg/liberapay.svg index 23a0df206..0374269c9 100644 --- a/assets/svg/liberapay.svg +++ b/assets/svg/liberapay.svg @@ -1 +1,10 @@ - + + + + + + + + + diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json index a3e38008d..1adcb7e90 100644 --- a/assets/svg/license_info.json +++ b/assets/svg/license_info.json @@ -1,144 +1,4 @@ [ - { - "path": "Ornament-Horiz-0.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-0.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-1.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-1.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-2.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-2.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-3.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-3.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-4.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-4.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-5.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-5.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-6.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, - { - "path": "Ornament-Horiz-6.svg", - "license": "CC-BY", - "authors": [ - "Nightwolfdezines" - ], - "sources": [ - "https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes" - ] - }, { "path": "SocialImageForeground.svg", "license": "CC-BY-SA", @@ -715,12 +575,6 @@ "https://www.iconpacks.net/free-icon-pack/gender-107.html" ] }, - { - "path": "gender_intersekse.svg", - "license": "CC0", - "authors": [], - "sources": [] - }, { "path": "gender_male.svg", "license": "CC0", @@ -895,14 +749,6 @@ "authors": [], "sources": [] }, - { - "path": "location-circle.svg", - "license": "CC0", - "authors": [ - "Pol Labaut" - ], - "sources": [] - }, { "path": "location-empty.svg", "license": "CC0", @@ -1029,14 +875,6 @@ "https://www.mapillary.com/" ] }, - { - "path": "min-zoom.svg", - "license": "CC0", - "authors": [ - "Hannah Declerck" - ], - "sources": [] - }, { "path": "min.svg", "license": "CC0; trivial", @@ -1213,14 +1051,6 @@ "authors": [], "sources": [] }, - { - "path": "plus-zoom.svg", - "license": "CC0", - "authors": [ - "Hannah Declerck" - ], - "sources": [] - }, { "path": "plus.svg", "license": "CC0; trivial", @@ -1423,23 +1253,19 @@ }, { "path": "teardrop.svg", - "license": "CC-BY-SA 3.0 Unported", + "license": "CC0", "authors": [ - "Mono, derivated work User:Benoit Rochon" + "Pieter Vander Vennet" ], - "sources": [ - "https://commons.wikimedia.org/wiki/File:Map_pin_icon_green.svg" - ] + "sources": [] }, { "path": "teardrop_with_hole_green.svg", - "license": "CC-BY-SA 3.0 Unported", + "license": "CC0", "authors": [ - "Mono, derivated work User:Benoit Rochon" + "Pieter Vander Vennet" ], - "sources": [ - "https://commons.wikimedia.org/wiki/File:Map_pin_icon_green.svg" - ] + "sources": [] }, { "path": "translate.svg", @@ -1473,6 +1299,14 @@ "authors": [], "sources": [] }, + { + "path": "upload.svg", + "license": "CC0", + "authors": [ + "Pieter Vander Vennet" + ], + "sources": [] + }, { "path": "wikidata.svg", "license": "Logo; All rights reserved", diff --git a/assets/svg/loading.svg b/assets/svg/loading.svg index 27dc3ac6c..d06aa4471 100644 --- a/assets/svg/loading.svg +++ b/assets/svg/loading.svg @@ -1,78 +1,78 @@ - - - - image/svg+xml - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 24.022156 24.021992" + version="1.1" + id="svg9" + sodipodi:docname="loading.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + width="24.022156" + height="24.021992"> + + + + image/svg+xml + + + + + + + + + + + diff --git a/assets/svg/move-arrows.svg b/assets/svg/move-arrows.svg index d7a8333f4..d31f779ce 100644 --- a/assets/svg/move-arrows.svg +++ b/assets/svg/move-arrows.svg @@ -2,114 +2,113 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="150.52238" + height="150" + viewBox="0 0 39.825713 39.687501" + version="1.1" + id="svg8" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="move-arrows.svg"> + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/assets/svg/move.svg b/assets/svg/move.svg index 806cb7d63..097261675 100644 --- a/assets/svg/move.svg +++ b/assets/svg/move.svg @@ -1,7 +1,7 @@ - - move - - + + move + + diff --git a/assets/svg/move_confirm.svg b/assets/svg/move_confirm.svg index 5aa8ac888..f38038b63 100644 --- a/assets/svg/move_confirm.svg +++ b/assets/svg/move_confirm.svg @@ -1,281 +1,280 @@ - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg6" + sodipodi:docname="move_confirm.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + move + - + d="M19 10l-4-3v2h-4V5h2l-3-4-3 4h2v4H5V7l-4 3 4 3v-2h4v4H7l3 4 3-4h-2v-4h4v2l4-3z" + id="path4"/> + + + + diff --git a/assets/svg/move_not_allowed.svg b/assets/svg/move_not_allowed.svg index 1abd15a03..ace1ddd2a 100644 --- a/assets/svg/move_not_allowed.svg +++ b/assets/svg/move_not_allowed.svg @@ -1,285 +1,284 @@ - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="20" + height="20" + viewBox="0 0 20 20" + version="1.1" + id="svg6" + sodipodi:docname="move_not_allowed.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + move + - - + d="M19 10l-4-3v2h-4V5h2l-3-4-3 4h2v4H5V7l-4 3 4 3v-2h4v4H7l3 4 3-4h-2v-4h4v2l4-3z" + id="path4"/> + + + + + diff --git a/assets/svg/osm-logo.svg b/assets/svg/osm-logo.svg index 982a4fb32..246a82440 100644 --- a/assets/svg/osm-logo.svg +++ b/assets/svg/osm-logo.svg @@ -2,7 +2,8 @@ - - - - image/svg+xml - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="97.287025" + height="97.287033" + viewBox="0 0 97.287025 97.287033" + version="1.1" + id="svg132" + style="fill:none" + sodipodi:docname="plus.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + image/svg+xml + + + + + + + + diff --git a/assets/svg/relocation.svg b/assets/svg/relocation.svg index c9caaffcb..44ca579a1 100644 --- a/assets/svg/relocation.svg +++ b/assets/svg/relocation.svg @@ -1,61 +1,64 @@ image/svg+xml + rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + + - \ No newline at end of file + d="M 15.968433,9.4957631 14.991526,8.5195302 V 6.1271188 c 0,-0.3705509 -0.303177,-0.6737288 -0.673729,-0.6737288 h -0.673728 c -0.370553,0 -0.67373,0.3031779 -0.67373,0.6737288 v 0.372572 L 11.622881,5.1535806 C 11.438954,4.9797587 11.270522,4.7796611 10.949152,4.7796611 c -0.321369,0 -0.489801,0.2000976 -0.67373,0.3739195 L 5.9298726,9.4957631 c -0.2102033,0.21896 -0.3705508,0.378636 -0.3705508,0.6737279 0,0.379309 0.2910508,0.673729 0.6737289,0.673729 h 0.6737287 v 4.042372 c 0,0.370553 0.303178,0.67373 0.6737289,0.67373 h 2.0211871 v -3.368645 c 0,-0.37055 0.303178,-0.673727 0.6737266,-0.673727 h 1.347459 c 0.37055,0 0.673728,0.303177 0.673728,0.673727 v 3.368645 h 2.021188 c 0.370552,0 0.673729,-0.303177 0.673729,-0.67373 V 10.84322 h 0.673729 c 0.382678,0 0.673729,-0.29442 0.673729,-0.673729 0,-0.2950919 -0.160347,-0.4547679 -0.370551,-0.6737279 z" + id="path2" + inkscape:connector-curvature="0" + style="stroke-width:0.67372882"/> + + + \ No newline at end of file diff --git a/assets/svg/scissors.svg b/assets/svg/scissors.svg index 7c8df5cd0..584b51240 100644 --- a/assets/svg/scissors.svg +++ b/assets/svg/scissors.svg @@ -1 +1,6 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/assets/svg/teardrop.svg b/assets/svg/teardrop.svg index 1cc113c57..87cc9fc39 100644 --- a/assets/svg/teardrop.svg +++ b/assets/svg/teardrop.svg @@ -2,103 +2,102 @@ - - - - image/svg+xml - - - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + id="svg2816" + version="1.1" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + width="94" + height="128" + sodipodi:docname="teardrop.svg"> + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/assets/svg/teardrop_with_hole_green.svg b/assets/svg/teardrop_with_hole_green.svg index cc32242cd..88d908a60 100644 --- a/assets/svg/teardrop_with_hole_green.svg +++ b/assets/svg/teardrop_with_hole_green.svg @@ -2,129 +2,128 @@ - - - - image/svg+xml - - - - - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + id="svg2816" + version="1.1" + inkscape:version="0.91 r13725" + width="94" + height="128" + sodipodi:docname="Map_pin_icon_green.svg"> + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/assets/svg/upload.svg b/assets/svg/upload.svg new file mode 100644 index 000000000..2696fe992 --- /dev/null +++ b/assets/svg/upload.svg @@ -0,0 +1,72 @@ + + + +image/svg+xml + + + + + + + + + + \ No newline at end of file diff --git a/assets/tagRenderings/icons.json b/assets/tagRenderings/icons.json index c1b9d5e27..06b97f81a 100644 --- a/assets/tagRenderings/icons.json +++ b/assets/tagRenderings/icons.json @@ -1,4 +1,11 @@ { + "defaultIcons": ["phonelink", + "emaillink", + "wikipedialink", + "osmlink", + "sharelink" + ], + "wikipedialink": { "render": "WP", "condition": { diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index 89a178c67..4415089c4 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -1,7 +1,13 @@ { + "questions": { + "id": "questions" + }, "images": { "render": "{image_carousel()}{image_upload()}" }, + "export_as_gpx": { + "render": "{export_as_gpx()}" + }, "wikipedia": { "render": "{wikipedia():max-height:25rem}", "question": { @@ -361,6 +367,43 @@ "type": "opening_hours" } }, + "service:electricity": { + "#": "service:socket describes if a pub, restaurant or cafÊ offers electricity to their customers.", + "question": { + "en": "Does this amenity have electrical outlets, available to customers when they are inside?", + "nl": "Zijn er stekkers beschikbaar voor klanten die binnen zitten?" + }, + "mappings": [ + { + "then": { + "en": "There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics", + "nl": "Er zijn binnen veel stekkers beschikbaar voor klanten die electronica wensen op te laden" + }, + "if": "service:electricity=yes" + }, + { + "then": { + "en": "There are a few domestic sockets available to customers seated indoors, where they can charge their electronics", + "nl": "Er zijn binnen enkele stekkers beschikbaar voor klanten die electronica wensen op te laden" + }, + "if": "service:electricity=limited" + }, + { + "then": { + "en": "There are no sockets available indoors to customers, but charging might be possible if the staff is asked", + "nl": "Er zijn binnen geen stekkers beschikbaar, maar electronica opladen kan indien men dit aan het personeel vraagt" + }, + "if": "service:electricity=ask" + }, + { + "then": { + "en": "There are a no domestic sockets available to customers seated indoors", + "nl": "Er zijn binnen geen stekkers beschikbaar" + }, + "if": "service:electricity=no" + } + ] + }, "payment-options": { "question": { "en": "Which methods of payment are accepted here?", @@ -444,7 +487,7 @@ "fr": "Étage {level}", "pl": "Znajduje się na {level} piętrze", "sv": "Ligger pÃĨ {level}:e vÃĨningen", - "pt": "EstÃĄ no {nível}Âē andar", + "pt": "EstÃĄ no {level}Âē andar", "eo": "En la {level}a etaĝo", "hu": "{level}. emeleten talÃĄlhatÃŗ", "it": "Si trova al piano numero {level}" diff --git a/assets/themes/aed/aed_brugge.json b/assets/themes/aed/aed_brugge.json index 0de0fcb89..c71b6f3f0 100644 --- a/assets/themes/aed/aed_brugge.json +++ b/assets/themes/aed/aed_brugge.json @@ -30,16 +30,6 @@ "_has_closeby_feature=Number(feat.properties._closest_osm_aed_distance) < 25 ? 'yes' : 'no'" ], "title": "AED in Brugse dataset", - "icon": { - "render": "circle:red", - "mappings": [ - { - "if": "_has_closeby_feature=yes", - "then": "circle:#008000aa" - } - ] - }, - "iconSize": "20,20,center", "tagRenderings": [ "all_tags" ], diff --git a/assets/themes/benches/benches.json b/assets/themes/benches/benches.json index eef8c2dc5..4aa4a6627 100644 --- a/assets/themes/benches/benches.json +++ b/assets/themes/benches/benches.json @@ -10,7 +10,8 @@ "ja": "ベãƒŗチ", "zh_Hant": "é•ˇæ¤…", "nb_NO": "Benker", - "pt_BR": "Bancadas" + "pt_BR": "Bancadas", + "id": "Bangku" }, "shortDescription": { "en": "A map of benches", @@ -44,7 +45,8 @@ "ja", "zh_Hant", "nb_NO", - "pt_BR" + "pt_BR", + "id" ], "maintainer": "Florian Edelmann", "icon": "./assets/themes/benches/bench_poi.svg", diff --git a/assets/themes/binoculars/binoculars.json b/assets/themes/binoculars/binoculars.json index 6e4f9a945..e995fac96 100644 --- a/assets/themes/binoculars/binoculars.json +++ b/assets/themes/binoculars/binoculars.json @@ -5,27 +5,31 @@ "nl": "Verrekijkers", "de": "Ferngläser", "it": "Binocoli", - "nb_NO": "Kikkerter" + "nb_NO": "Kikkerter", + "zh_Hant": "æœ›é éĄ" }, "shortDescription": { "en": "A map with fixed binoculars", "nl": "Een kaart met publieke verrekijker", "de": "Eine Karte mit festinstallierten Ferngläsern", "it": "Una cartina dei binocoli pubblici fissi", - "nb_NO": "Et kart over fastmonterte kikkerter" + "nb_NO": "Et kart over fastmonterte kikkerter", + "zh_Hant": "å›ēåŽšæœ›é éĄįš„地圖" }, "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", "de": "Eine Karte mit festinstallierten Ferngläsern. Man findet sie typischerweise an touristischen Orten, Aussichtspunkten, auf AussichtstÃŧrmen oder gelegentlich in einem Naturschutzgebiet.", - "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." + "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": "å›ē厚一地įš„æœ›é éĄåœ°åœ–īŧŒį‰šåˆĨ是čƒŊ夠在旅遊景éģžã€č§€æ™¯éģžã€åŸŽéŽŽį’°æ™¯éģžīŧŒæˆ–是č‡Ēį„ļäŋč­ˇå€æ‰žåˆ°ã€‚" }, "language": [ "en", "nl", "de", "it", - "nb_NO" + "nb_NO", + "zh_Hant" ], "maintainer": "", "icon": "./assets/layers/binocular/telescope.svg", diff --git a/assets/themes/buurtnatuur/buurtnatuur.json b/assets/themes/buurtnatuur/buurtnatuur.json index dde19b991..e331bdf60 100644 --- a/assets/themes/buurtnatuur/buurtnatuur.json +++ b/assets/themes/buurtnatuur/buurtnatuur.json @@ -74,42 +74,6 @@ "tagRenderings": [ "images" ], - "icon": { - "render": "circle:#ffffff;./assets/themes/buurtnatuur/nature_reserve.svg" - }, - "width": { - "render": "5" - }, - "iconSize": { - "render": "50,50,center" - }, - "color": { - "render": "#3c3", - "mappings": [ - { - "if": { - "and": [ - "name=", - "noname=", - "operator=", - "access=", - "access:description=", - "leisure=park" - ] - }, - "then": "#cc1100" - }, - { - "if": { - "and": [ - "name=", - "noname=" - ] - }, - "then": "#fccb37" - } - ] - }, "presets": [ { "tags": [ @@ -230,29 +194,6 @@ "tagRenderings": [ "images" ], - "icon": { - "render": "circle:#ffffff;./assets/themes/buurtnatuur/park.svg" - }, - "width": { - "render": "5" - }, - "iconSize": { - "render": "40,40,center" - }, - "color": { - "render": "#3c3", - "mappings": [ - { - "if": { - "and": [ - "name=", - "noname=" - ] - }, - "then": "#fccb37" - } - ] - }, "presets": [ { "tags": [ @@ -361,47 +302,6 @@ "tagRenderings": [ "images" ], - "icon": { - "render": "circle:#ffffff;./assets/themes/buurtnatuur/forest.svg" - }, - "width": { - "render": "5" - }, - "iconSize": { - "render": "40,40,center" - }, - "color": { - "render": "#3a3", - "mappings": [ - { - "if": { - "and": [ - "operator=", - "access=", - "access:description=" - ] - }, - "then": "#cc1100" - }, - { - "if": { - "and": [ - "operator=" - ] - }, - "then": "#cccc00" - }, - { - "if": { - "and": [ - "name=", - "noname=" - ] - }, - "then": "#fccb37" - } - ] - }, "presets": [ { "tags": [ @@ -658,7 +558,7 @@ } }, { - "id": "Non-editable description {description}", + "id": "Non-editable description", "render": { "nl": "Extra info: {description}" }, @@ -667,7 +567,7 @@ } }, { - "id": "Editable description {description:0}", + "id": "Editable description", "question": "Is er extra info die je kwijt wil?
De naam van het gebied wordt in de volgende vraag gesteld", "render": { "nl": "Extra info via buurtnatuur.be: {description:0}" diff --git a/assets/themes/cafes_and_pubs/cafes_and_pubs.json b/assets/themes/cafes_and_pubs/cafes_and_pubs.json index f9dc739a9..01035702e 100644 --- a/assets/themes/cafes_and_pubs/cafes_and_pubs.json +++ b/assets/themes/cafes_and_pubs/cafes_and_pubs.json @@ -5,7 +5,9 @@ "en": "CafÊs and pubs", "de": "CafÊs und Kneipen", "it": "Caffè e pub", - "nb_NO": "Kafeer og kneiper" + "nb_NO": "Kafeer og kneiper", + "id": "Kafe dan pub", + "zh_Hant": "å’–å•Ąåģŗčˆ‡é…’å§" }, "description": { "nl": "CafÊs, kroegen en drinkgelegenheden" @@ -15,7 +17,9 @@ "en", "de", "it", - "nb_NO" + "nb_NO", + "id", + "zh_Hant" ], "maintainer": "", "icon": "./assets/layers/cafe_pub/pub.svg", diff --git a/assets/themes/campersite/campersite.json b/assets/themes/campersite/campersite.json index f45403b00..84428eaaa 100644 --- a/assets/themes/campersite/campersite.json +++ b/assets/themes/campersite/campersite.json @@ -128,7 +128,7 @@ "it": "Questo luogo è chiamato {name}", "ru": "Đ­Ņ‚Đž ĐŧĐĩŅŅ‚Đž ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}", "ja": "こぎ場所は {name} とå‘ŧばれãĻいぞす", - "fr": "Cet endroit s'appelle {nom}", + "fr": "Cet endroit s'appelle {name}", "zh_Hant": "這個地斚åĢ做 {name}", "nl": "Deze plaats heet {name}", "pt_BR": "Este lugar Ê chamado de {name}", @@ -658,7 +658,8 @@ "it": "Aggiungi una nuova area di sosta ufficiale per camper. Si tratta di aree destinate alla sosta notturna dei camper. Potrebbe trattarsi di luoghi di campeggio o semplici parcheggi. Potrebbero anche non essere segnalati sul posto, ma semplicemente indicati in una delibera comunale. Un parcheggio destinato ai camper in cui non è perÃ˛ consentito trascorrere la notte -non- va considerato un'area di sosta per camper. ", "fr": "Ajouter une nouvelle aire de camping officielle, destinÊe à y passer la nuit avec un camping-car. Elle ne nÊcessite pas d’infrastructures particulières et peut ÃĒtre simplement dÊsignÊe sous arrÃĒtÊ municipal, un simple parking ne suffit pas à rentrer dans cette catÊgorie ", "de": "FÃŧgen Sie einen neuen offiziellen Wohnmobilstellplatz hinzu. Dies sind ausgewiesene Plätze, an denen Sie in Ihrem Wohnmobil Ãŧbernachten kÃļnnen. Sie kÃļnnen wie ein richtiger Campingplatz oder nur wie ein Parkplatz aussehen. MÃļglicherweise sind sie gar nicht ausgeschildert, sondern nur in einem Gemeindebeschluss festgelegt. Ein normaler Parkplatz fÃŧr Wohnmobile, auf dem Ãŧbernachten nicht zulässig ist, ist kein Wohnmobilstellplatz. ", - "nl": "Voeg een nieuwe officiÃĢle camperplaats toe. Dit zijn speciaal aangeduide plaatsen waar het toegestaan is om te overnachten met een camper. Ze kunnen er uitzien als een parking, of soms eerder als een camping. Soms staan ze niet ter plaatse aangeduid, maar heeft de gemeente wel degelijk beslist dat dit een camperplaats is. Een parking voor campers waar je niet mag overnachten is gÊÊn camperplaats. " + "nl": "Voeg een nieuwe officiÃĢle camperplaats toe. Dit zijn speciaal aangeduide plaatsen waar het toegestaan is om te overnachten met een camper. Ze kunnen er uitzien als een parking, of soms eerder als een camping. Soms staan ze niet ter plaatse aangeduid, maar heeft de gemeente wel degelijk beslist dat dit een camperplaats is. Een parking voor campers waar je niet mag overnachten is gÊÊn camperplaats. ", + "zh_Hant": "新åĸžæ­Ŗåŧéœ˛į‡Ÿåœ°éģžīŧŒé€šå¸¸æ˜¯č¨­č¨ˆįĩĻ過夜įš„éœ˛į‡Ÿč€…įš„地éģžã€‚įœ‹čĩˇäž†åƒæ˜¯įœŸįš„éœ˛į‡Ÿåœ°æˆ–是一čˆŦįš„停čģŠå ´īŧŒč€Œä¸”äšŸč¨ąæ˛’æœ‰äģģäŊ•æŒ‡æ¨™īŧŒäŊ†åœ¨åŸŽéŽŽčĸĢåŽšč­°åœ°éģžã€‚åĻ‚果一čˆŦįĩĻ露į‡Ÿč€…įš„停čģŠå ´ä¸Ļ不是į”¨äž†éŽå¤œīŧŒå‰‡ä¸æ˜¯éœ˛į‡Ÿåœ°éģž " } } ], @@ -704,7 +705,8 @@ "it": "Luoghi di sversamento delle acque reflue", "fr": "Site de vidange", "pt_BR": "EstaçÃĩes de despejo sanitÃĄrio", - "de": "Sanitäre Entsorgungsstationen" + "de": "Sanitäre Entsorgungsstationen", + "zh_Hant": "åžƒåœžč™•į†įĢ™" }, "minzoom": 10, "source": { @@ -751,7 +753,8 @@ "it": "Luoghi di sversamento delle acque reflue", "fr": "Site de vidange", "pt_BR": "EstaçÃĩes de despejo sanitÃĄrio", - "de": "Sanitäre Entsorgungsstationen" + "de": "Sanitäre Entsorgungsstationen", + "zh_Hant": "åžƒåœžč™•į†įĢ™" }, "tagRenderings": [ "images", @@ -764,7 +767,8 @@ "it": "Questo luogo è a pagamento?", "fr": "Ce site est-il payant ?", "pt_BR": "Este lugar cobra alguma taxa?", - "de": "Wird hier eine GebÃŧhr erhoben?" + "de": "Wird hier eine GebÃŧhr erhoben?", + "zh_Hant": "這個地斚需čĻäģ˜č˛ģ嗎īŧŸ" }, "mappings": [ { @@ -780,7 +784,8 @@ "it": "A pagamento", "fr": "Ce site demande un paiement", "pt_BR": "VocÃĒ precisa pagar pelo uso", - "de": "Sie mÃŧssen fÃŧr die Nutzung bezahlen" + "de": "Sie mÃŧssen fÃŧr die Nutzung bezahlen", + "zh_Hant": "äŊ éœ€čĻäģ˜č˛ģ才čƒŊäŊŋį”¨" } }, { @@ -796,7 +801,8 @@ "it": "È gratuito", "fr": "Ce site ne demande pas de paiement", "pt_BR": "Pode ser usado gratuitamente", - "de": "Nutzung kostenlos" + "de": "Nutzung kostenlos", + "zh_Hant": "這čŖĄå¯äģĨ免č˛ģäŊŋį”¨" } } ] @@ -809,7 +815,8 @@ "it": "Ha una tariffa di {charge}", "fr": "Ce site fait payer {charge}", "pt_BR": "Este lugar cobra {charge}", - "de": "Die GebÃŧhr beträgt {charge}" + "de": "Die GebÃŧhr beträgt {charge}", + "zh_Hant": "這個地斚æ”ļč˛ģ {charge}" }, "question": { "en": "How much does this place charge?", @@ -818,7 +825,8 @@ "it": "Qual è la tariffa di questo luogo?", "fr": "Combien ce site demande t’il de payer ?", "pt_BR": "Quanto este lugar cobra?", - "de": "Wie hoch ist die GebÃŧhr an diesem Ort?" + "de": "Wie hoch ist die GebÃŧhr an diesem Ort?", + "zh_Hant": "這個地斚æ”ļč˛ģ多少īŧŸ" }, "freeform": { "key": "charge" @@ -973,7 +981,8 @@ "it": "Chi puÃ˛ utilizzare questo luogo di sversamento?", "ru": "КŅ‚Đž ĐŧĐžĐļĐĩŅ‚ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ŅŅ‚Ņƒ ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŽ ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸?", "fr": "Qui peut utiliser le site de vidange ?", - "de": "Wer darf diese sanitäre Entsorgungsstation nutzen?" + "de": "Wer darf diese sanitäre Entsorgungsstation nutzen?", + "zh_Hant": "čĒ°å¯äģĨäŊŋį”¨é€™å€‹åžƒåœžįĢ™īŧŸ" }, "mappings": [ { @@ -987,7 +996,8 @@ "ja": "これをäŊŋį”¨ã™ã‚‹ãĢは、ネットワãƒŧクキãƒŧ/ã‚ŗãƒŧドがåŋ…čĻã§ã™", "it": "Servono una chiave o un codice di accesso", "fr": "Un code est nÊcessaire", - "de": "Sie benÃļtigen einen SchlÃŧssel/Code zur Benutzung" + "de": "Sie benÃļtigen einen SchlÃŧssel/Code zur Benutzung", + "zh_Hant": "äŊ éœ€čĻįļ˛čˇ¯é‘°åŒ™/密įĸŧ來äŊŋį”¨é€™å€‹č¨­æ–Ŋ" } }, { @@ -1001,7 +1011,8 @@ "ja": "こぎ場所をäŊŋį”¨ã™ã‚‹ãĢは、キãƒŖãƒŗプ/キãƒŖãƒŗプã‚ĩイトぎおåŽĸ様であるåŋ…čĻãŒã‚りぞす", "it": "È obbligatorio essere un cliente di questo campeggio o di questa area camper", "fr": "Le site est rÊservÊs aux clients", - "de": "Sie mÃŧssen Kunde des Campingplatzes sein, um diesen Ort nutzen zu kÃļnnen" + "de": "Sie mÃŧssen Kunde des Campingplatzes sein, um diesen Ort nutzen zu kÃļnnen", + "zh_Hant": "äŊ éœ€čĻæ˜¯éœ˛į‡Ÿ/露į‡Ÿåœ°įš„åŽĸæˆļ才čƒŊäŊŋį”¨é€™ä¸€åœ°æ–š" } }, { @@ -1016,7 +1027,8 @@ "it": "Chiunque puÃ˛ farne uso", "ru": "ЛŅŽĐąĐžĐš ĐŧĐžĐļĐĩŅ‚ вОŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК ŅŅ‚Đ°ĐŊŅ†Đ¸ĐĩĐš ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸", "fr": "Le site est en libre-service", - "de": "Jeder darf diese sanitäre Entsorgungsstation nutzen" + "de": "Jeder darf diese sanitäre Entsorgungsstation nutzen", + "zh_Hant": "äģģäŊ•äēēéƒŊ可äģĨäŊŋį”¨é€™å€‹čĄ›į”ŸåģĸæŖ„į‰ŠįĢ™" }, "hideInAnswer": true }, @@ -1032,7 +1044,8 @@ "it": "Chiunque puÃ˛ farne uso", "ru": "ЛŅŽĐąĐžĐš ĐŧĐžĐļĐĩŅ‚ вОŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК ŅŅ‚Đ°ĐŊŅ†Đ¸ĐĩĐš ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸", "fr": "Le site est en libre-service", - "de": "Jeder darf diese sanitäre Entsorgungsstation nutzen" + "de": "Jeder darf diese sanitäre Entsorgungsstation nutzen", + "zh_Hant": "äģģäŊ•äēēéƒŊ可äģĨäŊŋį”¨é€™å€‹åžƒåœžįĢ™" } } ] @@ -1070,14 +1083,16 @@ "ja": "衛į”Ÿã‚´ãƒŸæ¨ãĻå ´", "it": "luogo di sversamento delle acque reflue", "fr": "Site de vidange", - "de": "Sanitäre Entsorgungsstation" + "de": "Sanitäre Entsorgungsstation", + "zh_Hant": "垃圞丟æŖ„įĢ™" }, "description": { "en": "Add a new sanitary dump station. This is a place where camper drivers can dump waste water or chemical toilet waste. Often there's also drinking water and electricity.", "ja": "æ–°ã—ã„čĄ›į”Ÿã‚´ãƒŸæ¨ãĻ場をčŋŊ加しぞす。ここは、キãƒŖãƒŗピãƒŗグã‚Ģãƒŧぎ運čģĸ手が排水やæē帯トイãƒŦぎåģƒæŖ„į‰Šã‚’捨ãĻることができる場所です。éŖ˛æ–™æ°´ã‚„é›ģ気もあることが多いです。", "it": "Aggiungi un nuovo luogo di sversamento delle acque reflue. Si tratta di luoghi dove chi viaggia in camper puÃ˛ smaltire le acque grigie o le acque nere. Spesso forniscono anche acqua ed elettricità.", "fr": "Ajouter un nouveau site de vidange. Un espace oÚ Êvacuer ses eaux usÊes (grises et/ou noires) gÊnÊralement alimentÊ en eau potable et ÊlectricitÊ.", - "de": "FÃŧgen Sie eine neue sanitäre Entsorgungsstation hinzu. Hier kÃļnnen Camper Abwasser oder chemischen Toilettenabfälle entsorgen. Oft gibt es auch Trinkwasser und Strom." + "de": "FÃŧgen Sie eine neue sanitäre Entsorgungsstation hinzu. Hier kÃļnnen Camper Abwasser oder chemischen Toilettenabfälle entsorgen. Oft gibt es auch Trinkwasser und Strom.", + "zh_Hant": "新åĸžåžƒåœžįĢ™īŧŒé€™é€šå¸¸æ˜¯æäž›éœ˛į‡Ÿé§•é§›ä¸ŸæŖ„åģĸæ°´čˆ‡åŒ–å­¸æ€§åģæ‰€åģĸæ°´įš„地斚īŧŒäšŸæœƒæœ‰éŖ˛į”¨æ°´čˆ‡é›ģ力。" } } ], diff --git a/assets/themes/climbing/climbing.json b/assets/themes/climbing/climbing.json index 6a37b5e13..613f76d69 100644 --- a/assets/themes/climbing/climbing.json +++ b/assets/themes/climbing/climbing.json @@ -64,7 +64,8 @@ "ja": "クナイミãƒŗグクナブ", "zh_Hant": "æ”€å˛Šį¤žåœ˜", "nb_NO": "Klatreklubb", - "fr": "Club d’escalade" + "fr": "Club d’escalade", + "it": "Club di arrampicata" }, "minzoom": 10, "source": { @@ -94,7 +95,8 @@ "ja": "クナイミãƒŗグクナブ", "zh_Hant": "æ”€å˛Šį¤žåœ˜", "nb_NO": "Klatreklubb", - "fr": "Club d’escalade" + "fr": "Club d’escalade", + "it": "Club di arrampicata" }, "mappings": [ { @@ -105,7 +107,8 @@ "de": "Kletter-Organisation", "ja": "クナイミãƒŗグNGO", "zh_Hant": "æ”€å˛Š NGO", - "fr": "Association d’escalade" + "fr": "Association d’escalade", + "it": "Associazione di arrampicata" } } ] @@ -117,7 +120,8 @@ "ja": "クナイミãƒŗグクナブやå›ŖäŊ“", "zh_Hant": "æ”€å˛Šį¤žåœ˜æˆ–įĩ„įš”", "nb_NO": "En klatreklubb eller organisasjoner", - "fr": "Club ou association d’escalade" + "fr": "Club ou association d’escalade", + "it": "Un club o associazione di arrampacata" }, "tagRenderings": [ { @@ -130,14 +134,16 @@ "id": "{name}", "ru": "{name}", "ja": "{name}", - "zh_Hant": "{name}" + "zh_Hant": "{name}", + "it": "{name}" }, "question": { "en": "What is the name of this climbing club or NGO?", "de": "Wie lautet der Name dieses Vereins oder Organisation?", "nl": "Wat is de naam van deze klimclub?", "ja": "こぎį™ģåąąã‚¯ãƒŠãƒ–ã‚„NGOぎ名前はäŊ•ã§ã™ã‹?", - "fr": "Quel est le nom du club ou de l’association ?" + "fr": "Quel est le nom du club ou de l’association ?", + "it": "Qual è il nome di questo club o associazione di arrampicata?" }, "freeform": { "key": "name" @@ -166,7 +172,8 @@ "ja": "クナイミãƒŗグクナブ", "nb_NO": "Klatreklubb", "ru": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ", - "fr": "Club d’escalade" + "fr": "Club d’escalade", + "it": "Club di arrampicata" }, "description": { "de": "Ein Kletterverein", @@ -175,7 +182,8 @@ "ja": "クナイミãƒŗグクナブ", "nb_NO": "En klatreklubb", "ru": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ", - "fr": "Un club d’escalade" + "fr": "Un club d’escalade", + "it": "Un club di arrampicata" } }, { @@ -188,14 +196,16 @@ "en": "Climbing NGO", "nl": "Een klimorganisatie", "ja": "クナイミãƒŗグNGO", - "fr": "Association d’escalade" + "fr": "Association d’escalade", + "it": "Associazione di arrampicata" }, "description": { "de": "Eine Organisation, welche sich mit dem Klettern beschäftigt", "nl": "Een VZW die werkt rond klimmen", "en": "A NGO working around climbing", "ja": "į™ģåąąãĢé–ĸわるNGO", - "fr": "Une association d’escalade" + "fr": "Une association d’escalade", + "it": "Un’associazione che ha a che fare con l’arrampicata" } } ], @@ -214,7 +224,8 @@ "render": "40,40,center" }, "location": [ - "point" + "point", + "centroid" ] } ] @@ -226,7 +237,8 @@ "en": "Climbing gyms", "nl": "Klimzalen", "ja": "クナイミãƒŗグジム", - "fr": "Salle d’escalade" + "fr": "Salle d’escalade", + "it": "Palestre di arrampicata" }, "minzoom": 10, "source": { @@ -243,7 +255,8 @@ "de": "Kletterhalle", "en": "Climbing gym", "ja": "クナイミãƒŗグジム", - "fr": "Salle d’escalade" + "fr": "Salle d’escalade", + "it": "Palestra di arrampicata" }, "mappings": [ { @@ -253,7 +266,8 @@ "de": "Kletterhalle {name}", "en": "Climbing gym {name}", "ja": "クナイミãƒŗグジム{name}", - "fr": "Salle d’escalade {name}" + "fr": "Salle d’escalade {name}", + "it": "Palestra di arrampicata {name}" } } ] @@ -263,7 +277,8 @@ "en": "A climbing gym", "ja": "クナイミãƒŗグジム", "nl": "Een klimzaal", - "fr": "Une salle d’escalade" + "fr": "Une salle d’escalade", + "it": "Una palestra di arrampicata" }, "tagRenderings": [ "images", @@ -281,14 +296,16 @@ "fr": "{name}", "id": "{name}", "ru": "{name}", - "ja": "{name}" + "ja": "{name}", + "it": "{name}" }, "question": { "en": "What is the name of this climbing gym?", "nl": "Wat is de naam van dit Klimzaal?", "de": "Wie heißt diese Kletterhalle?", "ja": "こぎクナイミãƒŗグジムはäŊ•ã¨ã„う名前ですか?", - "fr": "Quel est le nom de la salle d’escalade ?" + "fr": "Quel est le nom de la salle d’escalade ?", + "it": "Qual è il nome di questa palestra di arrampicata?" }, "freeform": { "key": "name" @@ -316,7 +333,8 @@ "render": "40,40,center" }, "location": [ - "point" + "point", + "centroid" ] } ] @@ -329,7 +347,8 @@ "nl": "Klimroute", "ja": "į™ģ坂ãƒĢãƒŧト", "nb_NO": "Klatreruter", - "fr": "Voies d’escalade" + "fr": "Voies d’escalade", + "it": "Vie di arrampicata" }, "minzoom": 18, "source": { @@ -380,7 +399,8 @@ "id": "{name}", "ru": "{name}", "ja": "{name}", - "it": "{name}" + "it": "{name}", + "nb_NO": "{name}" }, "question": { "en": "What is the name of this climbing route?", @@ -388,7 +408,8 @@ "nl": "Hoe heet deze klimroute?", "ja": "こぎį™ģ坂ãƒĢãƒŧトぎ名前はäŊ•ã§ã™ã‹?", "it": "Come si chiama questa via di arrampicata?", - "fr": "Quel est le nom de cette voie d’escalade ?" + "fr": "Quel est le nom de cette voie d’escalade ?", + "nb_NO": "Hva er navnet pÃĨ denne klatreruten?" }, "freeform": { "key": "name" @@ -407,7 +428,8 @@ "nl": "Deze klimroute heeft geen naam", "ja": "こぎį™ģ坂ãƒĢãƒŧトãĢは名前がありぞせん", "it": "Questa via di arrampicata non ha un nome", - "fr": "Cette voie n’a pas de nom" + "fr": "Cette voie n’a pas de nom", + "nb_NO": "Denne klatreruten har ikke noe navn" } } ], @@ -419,7 +441,8 @@ "nl": "Hoe lang is deze klimroute (in meters)?", "it": "Quanto è lunga questa via di arrampicata (in metri)?", "fr": "Quelle est la longueur de cette voie (en mètres) ?", - "de": "Wie lang ist diese Kletterroute (in Metern)?" + "de": "Wie lang ist diese Kletterroute (in Metern)?", + "nb_NO": "Hvor mange meter er klatreruten?" }, "render": { "de": "Diese Route ist {canonical(climbing:length)} lang", @@ -461,12 +484,14 @@ "question": { "en": "How much bolts does this route have before reaching the moulinette?", "fr": "Combien de prises cette voie possède avant d’atteindre la moulinette ?", - "de": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?" + "de": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?", + "it": "Quanti bulloni sono presenti in questo percorso prima di arrivare alla moulinette?" }, "render": { "en": "This route has {climbing:bolts} bolts", "fr": "Cette voie a {climbing:bolts} prises", - "de": "Diese Kletterroute hat {climbing:bolts} Haken" + "de": "Diese Kletterroute hat {climbing:bolts} Haken", + "it": "Questo percorso ha {climbing:bolts} bulloni" }, "freeform": { "key": "climbing:bolts", @@ -481,7 +506,8 @@ "then": { "en": "This route is not bolted", "fr": "Cette voie n’a pas de prises", - "de": "Auf dieser Kletterroute sind keine Haken vorhanden" + "de": "Auf dieser Kletterroute sind keine Haken vorhanden", + "it": "In questo percorso non sono presenti bulloni" }, "hideInAnswer": true }, @@ -490,7 +516,8 @@ "then": { "en": "This route is not bolted", "fr": "Cette voie n’a pas de prises", - "de": "Auf dieser Kletterroute sind keine Haken vorhanden" + "de": "Auf dieser Kletterroute sind keine Haken vorhanden", + "it": "In questo percorso non sono presenti bulloni" } } ], @@ -507,7 +534,8 @@ { "render": { "en": "The rock type is {_embedding_features_with_rock:rock} as stated on the surrounding crag", - "fr": "Le type de roche est {_embedding_features_with_rock:rock} selon le mur" + "fr": "Le type de roche est {_embedding_features_with_rock:rock} selon le mur", + "it": "Il tipo di roccia è {_embedding_features_with_rock:rock} come dichiarato sul muro circostante" }, "freeform": { "key": "_embedding_features_with_rock:rock" @@ -522,7 +550,8 @@ "en": "Climbing route", "nl": "Klimroute", "fr": "Voie d’escalade", - "de": "Kletterroute" + "de": "Kletterroute", + "it": "Via di arrampicata" }, "tags": [ "sport=climbing", @@ -560,7 +589,8 @@ "de": "KlettermÃļglichkeiten", "en": "Climbing opportunities", "ja": "į™ģ坂教厤", - "fr": "OpportunitÊ d’escalade" + "fr": "OpportunitÊ d’escalade", + "it": "Opportunità di arrampicata" }, "minzoom": 10, "source": { @@ -581,14 +611,16 @@ "de": "KlettermÃļglichkeit", "ja": "į™ģ坂教厤", "nb_NO": "Klatremulighet", - "fr": "OpportunitÊ d’escalade" + "fr": "OpportunitÊ d’escalade", + "it": "Opportunità di arrampicata" }, "mappings": [ { "if": "climbing=crag", "then": { "en": "Climbing crag {name}", - "fr": "Mur d’escalade {name}" + "fr": "Mur d’escalade {name}", + "it": "Muro da arrampicata {name}" } }, { @@ -607,7 +639,8 @@ "en": "Climbing area {name}", "nl": "Klimsite {name}", "fr": "Zone d’escalade {name}", - "de": "Klettergebiet {name}" + "de": "Klettergebiet {name}", + "it": "Area di arrampicata {name}" } }, { @@ -621,7 +654,8 @@ "en": "Climbing site", "nl": "Klimsite", "fr": "Site d’escalade", - "de": "Klettergebiet" + "de": "Klettergebiet", + "it": "Sito di arrampicata" } }, { @@ -630,7 +664,8 @@ "nl": "Klimgelegenheid {name}", "en": "Climbing opportunity {name}", "fr": "OpportunitÊ d’escalade {name}", - "de": "KlettermÃļglichkeit {name}" + "de": "KlettermÃļglichkeit {name}", + "it": "Opportunità di arrampicata {name}" } } ] @@ -641,7 +676,8 @@ "en": "A climbing opportunity", "ja": "į™ģ坂教厤", "nb_NO": "En klatremulighet", - "fr": "OpportunitÊ d’escalade" + "fr": "OpportunitÊ d’escalade", + "it": "Un’opportunità di arrampicata" }, "tagRenderings": [ "images", @@ -654,7 +690,8 @@ "render": { "en": "

Length overview

{histogram(_length_hist)}", "fr": "

RÊsumÊ de longueur

{histogram(_length_hist)}", - "de": "

LängenÃŧbersicht

{histogramm(_length_hist)}" + "de": "

LängenÃŧbersicht

{histogramm(_length_hist)}", + "it": "

Riassunto della lunghezza

{histogram(_length_hist)}" }, "condition": "_length_hist!~\\[\\]", "id": "Contained routes length hist" @@ -663,7 +700,8 @@ "render": { "en": "

Difficulties overview

{histogram(_difficulty_hist)}", "fr": "

RÊsumÊ des difficultÊs

{histogram(_difficulty_hist)}", - "de": "

SchwierigkeitsÃŧbersicht

{histogram(_difficulty_hist)}" + "de": "

SchwierigkeitsÃŧbersicht

{histogram(_difficulty_hist)}", + "it": "

Riassunto delle difficoltà

{histogram(_difficulty_hist)}" }, "condition": "_difficulty_hist!~\\[\\]", "id": "Contained routes hist" @@ -671,10 +709,11 @@ { "render": { "en": "

Contains {_contained_climbing_routes_count} routes

    {_contained_climbing_routes}
", - "fr": "

Contient {_contained_climbing_routes_count} voies

    {_contained_climbing_routes}
" + "fr": "

Contient {_contained_climbing_routes_count} voies

    {_contained_climbing_routes}
", + "it": "

Contiene {_contained_climbing_routes_count} vie

    {_contained_climbing_routes}
" }, "condition": "_contained_climbing_routes~*", - "id": "Containe {_contained_climbing_routes_count} routes" + "id": "Contained_climbing_routes" }, { "render": { @@ -685,14 +724,16 @@ "fr": "{name}", "id": "{name}", "ru": "{name}", - "ja": "{name}" + "ja": "{name}", + "it": "{name}" }, "question": { "en": "What is the name of this climbing opportunity?", "nl": "Wat is de naam van dit Klimgelegenheid?", "de": "Wie heißt diese Klettergelegenheit?", "ja": "こぎį™ģ坂教厤ぎ名前はäŊ•ã§ã™ã‹?", - "fr": "Quel est le nom de ce site ?" + "fr": "Quel est le nom de ce site ?", + "it": "Qual è il nome di questa opportunità di arrampicata?" }, "freeform": { "key": "name" @@ -710,7 +751,8 @@ "nl": "Dit Klimgelegenheid heeft geen naam", "de": "Diese Klettergelegenheit hat keinen Namen", "ja": "こぎį™ģ坂教厤ãĢは名前がついãĻいãĒい", - "fr": "Ce site n’a pas de nom" + "fr": "Ce site n’a pas de nom", + "it": "Questa opportunità di arrampicata non ha un nome" } } ], @@ -724,14 +766,16 @@ "then": { "en": "A climbing boulder - a single rock or cliff with one or a few climbing routes which can be climbed safely without rope", "fr": "Rocher d’escalade, rocher avec une ou peu de voie permettant d’escalader sans corde", - "de": "Ein Kletterfelsen - ein einzelner Felsen oder eine Klippe mit einer oder wenigen Kletterrouten, die ohne Seil sicher bestiegen werden kÃļnnen" + "de": "Ein Kletterfelsen - ein einzelner Felsen oder eine Klippe mit einer oder wenigen Kletterrouten, die ohne Seil sicher bestiegen werden kÃļnnen", + "it": "Un masso per arrampicata (una singola roccia o falesia con una o poche vie di arrampicata che possono essere scalate in sicurezza senza una corda)" } }, { "if": "climbing=crag", "then": { "en": "A climbing crag - a single rock or cliff with at least a few climbing routes", - "fr": "Mur d’escalade, rocher avec plusieurs voies d’escalades" + "fr": "Mur d’escalade, rocher avec plusieurs voies d’escalades", + "it": "Un muro da arrampicata (un singolo masso o falesia con almeno qualche via per arrampicata)" } }, { @@ -745,12 +789,14 @@ "question": { "en": "What is the rock type here?", "fr": "Quel est le type de roche ?", - "de": "Welchen Gesteinstyp gibt es hier?" + "de": "Welchen Gesteinstyp gibt es hier?", + "it": "Qual è il tipo di roccia qua?" }, "render": { "en": "The rock type is {rock}", "fr": "La roche est du {rock}", - "de": "Der Gesteinstyp ist {rock}" + "de": "Der Gesteinstyp ist {rock}", + "it": "Il tipo di roccia è {rock}" }, "freeform": { "key": "rock" @@ -762,7 +808,8 @@ "en": "Limestone", "nl": "Kalksteen", "fr": "Calcaire", - "de": "Kalkstein" + "de": "Kalkstein", + "it": "Calcare" } } ], @@ -788,7 +835,8 @@ "de": "KlettermÃļglichkeit", "ja": "į™ģ坂教厤", "nb_NO": "Klatremulighet", - "fr": "OpportunitÊ d’escalade" + "fr": "OpportunitÊ d’escalade", + "it": "Opportunità di arrampicata" }, "description": { "nl": "Een klimgelegenheid", @@ -796,7 +844,8 @@ "en": "A climbing opportunity", "ja": "į™ģ坂教厤", "nb_NO": "En klatremulighet", - "fr": "OpportunitÊ d’escalade" + "fr": "OpportunitÊ d’escalade", + "it": "Un’opportunità di arrampicata" } } ], @@ -839,7 +888,8 @@ "en": "Climbing opportunities?", "ja": "į™ģ坂教厤īŧŸ", "nb_NO": "Klatremuligheter?", - "fr": "OpportunitÊs d’escalade ?" + "fr": "OpportunitÊs d’escalade ?", + "it": "Opportunità di arrampicata?" }, "minzoom": 19, "source": { @@ -866,7 +916,8 @@ "de": "KlettermÃļglichkeit?", "ja": "į™ģ坂教厤īŧŸ", "nb_NO": "Klatremulighet?", - "fr": "OpportunitÊ d’escalade ?" + "fr": "OpportunitÊ d’escalade ?", + "it": "Opportunità di arrampicata?" } }, "description": { @@ -875,7 +926,8 @@ "en": "A climbing opportunity?", "ja": "į™ģ坂教厤īŧŸ", "nb_NO": "En klatremulighet?", - "fr": "OpportunitÊ d’escalade ?" + "fr": "OpportunitÊ d’escalade ?", + "it": "Un’opportunità di arrampicata?" }, "tagRenderings": [ { @@ -892,7 +944,8 @@ "id": "{name}", "ru": "{name}", "ja": "{name}", - "nl": "{name}" + "nl": "{name}", + "it": "{name}" }, "condition": "name~*" }, @@ -903,7 +956,8 @@ "de": "Kann hier geklettert werden?", "ja": "ここでį™ģ坂はできぞすか?", "nb_NO": "Er klatring mulig her?", - "fr": "Est-il possible d’escalader ici ?" + "fr": "Est-il possible d’escalader ici ?", + "it": "È possibile arrampicarsi qua?" }, "mappings": [ { @@ -918,7 +972,8 @@ "ja": "ここではį™ģることができãĒい", "nb_NO": "Klatring er ikke mulig her", "nl": "Klimmen is hier niet mogelijk", - "fr": "Escalader n’est pas possible" + "fr": "Escalader n’est pas possible", + "it": "Non è possibile arrampicarsi qua" }, "hideInAnswer": true }, @@ -934,7 +989,8 @@ "ja": "ここではį™ģることができる", "nb_NO": "Klatring er mulig her", "nl": "Klimmen is hier niet toegelaten", - "fr": "Escalader est possible" + "fr": "Escalader est possible", + "it": "È possibile arrampicarsi qua" } }, { @@ -945,7 +1001,8 @@ "ja": "ここではį™ģることができãĒい", "nb_NO": "Klatring er ikke mulig her", "nl": "Klimmen is hier niet toegelaten", - "fr": "Escalader n’est pas possible" + "fr": "Escalader n’est pas possible", + "it": "Non è possibile arrampicarsi qua" } } ] @@ -955,7 +1012,8 @@ { "icon": "./assets/themes/climbing/climbing_unknown.svg", "location": [ - "point" + "point", + "centroid" ] }, { @@ -1021,7 +1079,8 @@ "nl": " meter", "fr": " mètres", "de": " Meter", - "eo": " metro" + "eo": " metro", + "it": " metri" }, "default": true }, @@ -1036,7 +1095,8 @@ "nl": " voet", "fr": " pieds", "de": " Fuß", - "eo": " futo" + "eo": " futo", + "it": " piedi" } } ] @@ -1051,7 +1111,8 @@ "ja": "もãŖã¨æƒ…å ąãŽã‚ã‚‹(非å…ŦåŧãŽ)ã‚Ļェブã‚ĩイトはありぞすか(䞋えば、topos)?", "nl": "Is er een (onofficiÃĢle) website met meer informatie (b.v. met topos)?", "ru": "ЕŅŅ‚ŅŒ Đģи (ĐŊĐĩĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅ‹Đš) вĐĩĐą-ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš (ĐŊĐ°ĐŋŅ€., topos)?", - "fr": "Existe-t’il un site avec plus d’informations (ex : topographie) ?" + "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)?" }, "condition": { "and": [ @@ -1075,7 +1136,8 @@ "then": { "en": "The containing feature states that this is publicly accessible
{_embedding_feature:access:description}", "nl": "Een omvattend element geeft aan dat dit publiek toegangkelijk is
{_embedding_feature:access:description}", - "fr": "L’ÊlÊment englobant indique un accès libre
{_embedding_feature:access:description}" + "fr": "L’ÊlÊment englobant indique un accès libre
{_embedding_feature:access:description}", + "it": "L’ elemento in cui è contenuto indica che è pubblicamente accessibile
{_embedding_feature:access:description}" } }, { @@ -1083,21 +1145,24 @@ "then": { "en": "The containing feature states that a permit is needed to access
{_embedding_feature:access:description}", "nl": "Een omvattend element geeft aan dat een toelating nodig is om hier te klimmen
{_embedding_feature:access:description}", - "fr": "L’ÊlÊment englobant indique qu’ une autorisation d’accès est nÊcessaire
{_embedding_feature:access:description}" + "fr": "L’ÊlÊment englobant indique qu’ une autorisation d’accès est nÊcessaire
{_embedding_feature:access:description}", + "it": "L’elemento che lo contiene indica che è richiesto un’autorizzazione per accedervi
{_embedding_feature:access:description}" } }, { "if": "_embedding_feature:access=customers", "then": { "en": "The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}", - "fr": "L’ÊlÊment englobant indique que l’accès est rÊservÊs aux clients
{_embedding_feature:access:description}" + "fr": "L’ÊlÊment englobant indique que l’accès est rÊservÊs aux clients
{_embedding_feature:access:description}", + "it": "L’ elemento che lo contiene indica che è accessibile solo ai clienti
{_embedding_feature:access:description}" } }, { "if": "_embedding_feature:access=members", "then": { "en": "The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}", - "fr": "L’ÊlÊment englobant indique que l’accès est rÊservÊ aux membres
{_embedding_feature:access:description}" + "fr": "L’ÊlÊment englobant indique que l’accès est rÊservÊ aux membres
{_embedding_feature:access:description}", + "it": "L’ elemento che lo contiene indica che è accessibile solamente ai membri del club
{_embedding_feature:access:description}" } }, { @@ -1112,7 +1177,8 @@ "question": { "en": "Who can access here?", "fr": "Qui peut y accÊder ?", - "de": "Wer hat hier Zugang?" + "de": "Wer hat hier Zugang?", + "it": "Chi puÃ˛ accedervi?" }, "mappings": [ { @@ -1120,7 +1186,8 @@ "then": { "en": "Publicly accessible to anyone", "fr": "Libre d’accès", - "de": "Öffentlich zugänglich fÃŧr jedermann" + "de": "Öffentlich zugänglich fÃŧr jedermann", + "it": "Pubblicamente accessibile a chiunque" } }, { @@ -1128,7 +1195,8 @@ "then": { "en": "You need a permit to access here", "fr": "Une autorisation est nÊcessaire", - "de": "Zugang nur mit Genehmigung" + "de": "Zugang nur mit Genehmigung", + "it": "È necessario avere un’autorizzazione per entrare" } }, { @@ -1136,7 +1204,8 @@ "then": { "en": "Only custumers", "fr": "RÊservÊ aux clients", - "de": "Nur fÃŧr Kunden" + "de": "Nur fÃŧr Kunden", + "it": "Riservato ai clienti" } }, { @@ -1145,7 +1214,8 @@ "en": "Only club members", "ru": "ĐĸĐžĐģŅŒĐēĐž Ņ‡ĐģĐĩĐŊĐ°Đŧ ĐēĐģŅƒĐąĐ°", "fr": "RÊservÊ aux membres", - "de": "Nur fÃŧr Vereinsmitglieder" + "de": "Nur fÃŧr Vereinsmitglieder", + "it": "Riservato ai membri del club" } }, { @@ -1187,7 +1257,8 @@ "en": "The routes are {canonical(climbing:length)} long on average", "nl": "De klimroutes zijn gemiddeld {canonical(climbing:length)} lang", "ja": "ãƒĢãƒŧãƒˆãŽé•ˇã•ã¯åšŗ均で{canonical(climbing:length)}です", - "fr": "Les voies font {canonical(climbing:length)} de long en moyenne" + "fr": "Les voies font {canonical(climbing:length)} de long en moyenne", + "it": "Le vie sono lunghe mediamente {canonical(climbing:length)}" }, "condition": { "and": [ @@ -1210,7 +1281,8 @@ "en": "What is the (average) length of the routes in meters?", "nl": "Wat is de (gemiddelde) lengte van de klimroutes, in meter?", "ja": "ãƒĢãƒŧトぎ(åšŗ均)é•ˇã•ã¯ãƒĄãƒŧトãƒĢ単äŊã§ã„くつですか?", - "fr": "Quelle est la longueur moyenne des voies en mètres ?" + "fr": "Quelle est la longueur moyenne des voies en mètres ?", + "it": "Quale è la lunghezza (media) delle vie in metri?" }, "freeform": { "key": "climbing:length", @@ -1224,14 +1296,16 @@ "en": "What is the level of the easiest route here, accoring to the french classification system?", "nl": "Wat is het niveau van de makkelijkste route, volgens het Franse classificatiesysteem?", "ja": "ここで一į•Ēį°Ąå˜ãĒãƒĢãƒŧトぎãƒŦベãƒĢは、フナãƒŗ゚ぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§äŊ•ã§ã™ã‹?", - "fr": "Quel est le niveau de la voie la plus simple selon la classification franco-belge ?" + "fr": "Quel est le niveau de la voie la plus simple selon la classification franco-belge ?", + "it": "Qual è il livello della via piÚ facile qua, secondo il sistema di classificazione francese?" }, "render": { "de": "Die leichteste Route hat hier die Schwierigkeit {climbing:grade:french:min} (franzÃļsisch/belgisches System)", "en": "The minimal difficulty is {climbing:grade:french:min} according to the french/belgian system", "nl": "De minimale klimmoeilijkheid is {climbing:grade:french:min} volgens het Franse/Belgische systeem", "ja": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§ã¯ã€æœ€å°ãŽé›Ŗ易åēĻは{climbing:grade:french:min}です", - "fr": "La difficultÊ minimale est {climbing:grade:french:min} selon la classification franco-belge" + "fr": "La difficultÊ minimale est {climbing:grade:french:min} selon la classification franco-belge", + "it": "Il minimo livello di difficoltà è {climbing:grade:french:min} secondo il sistema francese/belga" }, "freeform": { "key": "climbing:grade:french:min" @@ -1257,14 +1331,16 @@ "en": "What is the level of the most difficult route here, accoring to the french classification system?", "nl": "Wat is het niveau van de moeilijkste route, volgens het Franse classificatiesysteem?", "ja": "フナãƒŗ゚ぎナãƒŗã‚¯čŠ•äžĄãĢよると、ここで一į•Ēé›ŖしいãƒĢãƒŧトぎãƒŦベãƒĢはおれくらいですか?", - "fr": "Quel est le niveau de la voie la plus difficile selon la classification franco-belge ?" + "fr": "Quel est le niveau de la voie la plus difficile selon la classification franco-belge ?", + "it": "Qual è il livello della via piÚ difficile qua, secondo il sistema di classificazione francese?" }, "render": { - "de": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:min} (franzÃļsisch/belgisches System)", + "de": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:max} (franzÃļsisch/belgisches System)", "en": "The maximal difficulty is {climbing:grade:french:max} according to the french/belgian system", "nl": "De maximale klimmoeilijkheid is {climbing:grade:french:max} volgens het Franse/Belgische systeem", "ja": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§ã¯ã€æœ€å¤§ãŽé›Ŗ易åēĻは{climbing:grade:french:max}です", - "fr": "La difficultÊ maximale est {climbing:grade:french:max} selon la classification franco-belge" + "fr": "La difficultÊ maximale est {climbing:grade:french:max} selon la classification franco-belge", + "it": "Il massimo livello di difficoltà è {climbing:grade:french:max} secondo il sistema francese/belga" }, "freeform": { "key": "climbing:grade:french:max" @@ -1291,7 +1367,8 @@ "nl": "Is het mogelijk om hier te bolderen?", "ja": "ここでボãƒĢダãƒĒãƒŗグはできぞすか?", "nb_NO": "Er buldring mulig her?", - "fr": "L’escalade de bloc est-elle possible ici ?" + "fr": "L’escalade de bloc est-elle possible ici ?", + "it": "È possibile praticare ‘bouldering’ qua?" }, "mappings": [ { @@ -1302,7 +1379,8 @@ "nl": "Bolderen kan hier", "ja": "ボãƒĢダãƒĒãƒŗグはここで可čƒŊです", "nb_NO": "Buldring er mulig her", - "fr": "L’escalade de bloc est possible" + "fr": "L’escalade de bloc est possible", + "it": "L’arrampicata su massi è possibile qua" } }, { @@ -1313,7 +1391,8 @@ "nl": "Bolderen kan hier niet", "ja": "ここではボãƒĢダãƒĒãƒŗグはできぞせん", "nb_NO": "Buldring er ikke mulig her", - "fr": "L’escalade de bloc n’est pas possible" + "fr": "L’escalade de bloc n’est pas possible", + "it": "L’arrampicata su massi non è possibile qua" } }, { @@ -1323,7 +1402,8 @@ "en": "Bouldering is possible, allthough there are only a few routes", "nl": "Bolderen kan hier, maar er zijn niet zoveel routes", "ja": "ボãƒĢダãƒĒãƒŗグは可čƒŊですが、少しぎãƒĢãƒŧトしかありぞせん", - "fr": "L’escalade de bloc est possible sur des voies prÊcises" + "fr": "L’escalade de bloc est possible sur des voies prÊcises", + "it": "L’arrampicata su massi è possibile anche se su poche vie" } }, { @@ -1333,7 +1413,8 @@ "en": "There are {climbing:boulder} boulder routes", "nl": "Er zijn hier {climbing:boulder} bolderroutes", "ja": "{climbing:boulder} ボãƒĢダãƒŧãƒĢãƒŧトがある", - "fr": "Il y a {climbing:boulder} voies d’escalade de bloc" + "fr": "Il y a {climbing:boulder} voies d’escalade de bloc", + "it": "Sono presenti {climbing:boulder} vie di arrampicata su massi" }, "hideInAnswer": true } @@ -1358,7 +1439,8 @@ "en": "Is toprope climbing possible here?", "nl": "Is het mogelijk om hier te toprope-klimmen?", "ja": "ここでtopropeį™ģ坂はできぞすか?", - "fr": "Est-il possible d’escalader à la moulinette ?" + "fr": "Est-il possible d’escalader à la moulinette ?", + "it": "È possibile arrampicarsi con la corda dall’alto qua?" }, "mappings": [ { @@ -1368,7 +1450,8 @@ "en": "Toprope climbing is possible here", "nl": "Toprope-klimmen kan hier", "ja": "ここでTopropeį™ģ坂ができぞす", - "fr": "L’escalade à la moulinette est possible" + "fr": "L’escalade à la moulinette est possible", + "it": "È possibile arrampicarsi con moulinette qua" } }, { @@ -1378,7 +1461,8 @@ "en": "Toprope climbing is not possible here", "nl": "Toprope-klimmen kan hier niet", "ja": "ここではTopropeį™ģ坂はできぞせん", - "fr": "L’escalade à la moulinette n’est pas possible" + "fr": "L’escalade à la moulinette n’est pas possible", + "it": "Non è possibile arrampicarsi con moulinette qua" } }, { @@ -1388,7 +1472,8 @@ "en": "There are {climbing:toprope} toprope routes", "nl": "Er zijn hier {climbing:toprope} toprope routes", "ja": "{climbing:toprope} į™ģ坂ãƒĢãƒŧトがある", - "fr": "{climbing:toprope} voies sont ÊquipÊes de moulinettes" + "fr": "{climbing:toprope} voies sont ÊquipÊes de moulinettes", + "it": "Sono presenti {climbing:toprope} vie con moulinette" }, "hideInAnswer": true } @@ -1412,7 +1497,8 @@ "de": "Ist hier Sportklettern mÃļglich (feste Ankerpunkte)?", "en": "Is sport climbing possible here on fixed anchors?", "nl": "Is het mogelijk om hier te sportklimmen/voorklimmen op reeds aangebrachte haken?", - "ja": "ここではå›ē厚ã‚ĸãƒŗã‚ĢãƒŧåŧãŽã‚šãƒãƒŧツクナイミãƒŗグはできぞすか?" + "ja": "ここではå›ē厚ã‚ĸãƒŗã‚ĢãƒŧåŧãŽã‚šãƒãƒŧツクナイミãƒŗグはできぞすか?", + "it": "È possibile arrampicarsi qua con ancoraggi fissi?" }, "mappings": [ { @@ -1422,7 +1508,8 @@ "en": "Sport climbing is possible here", "nl": "Sportklimmen/voorklimmen kan hier", "ru": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž СаĐŊŅŅ‚ŅŒŅŅ ŅĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đŧ ŅĐēĐ°ĐģĐžĐģаСаĐŊиĐĩĐŧ", - "ja": "ここで゚ポãƒŧツクナイミãƒŗグができぞす" + "ja": "ここで゚ポãƒŧツクナイミãƒŗグができぞす", + "it": "L’arrampicata sportiva è possibile qua" } }, { @@ -1432,7 +1519,8 @@ "en": "Sport climbing is not possible here", "nl": "Sportklimmen/voorklimmen kan hier niet", "ru": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐžĐĩ ŅĐēĐ°ĐģĐžĐģаСаĐŊиĐĩ СдĐĩŅŅŒ ĐŊĐĩвОСĐŧĐžĐļĐŊĐž", - "ja": "ここでぱポãƒŧツクナイミãƒŗグはできぞせん" + "ja": "ここでぱポãƒŧツクナイミãƒŗグはできぞせん", + "it": "L’arrampicata sportiva non è possibile qua" } }, { @@ -1441,7 +1529,8 @@ "de": "Hier gibt es {climbing:sport} Sportkletter-Routen", "en": "There are {climbing:sport} sport climbing routes", "nl": "Er zijn hier {climbing:sport} sportklimroutes/voorklimroutes", - "ja": "゚ポãƒŧツクナイミãƒŗグぎ {climbing:sport} ãƒĢãƒŧトがある" + "ja": "゚ポãƒŧツクナイミãƒŗグぎ {climbing:sport} ãƒĢãƒŧトがある", + "it": "Sono presenti {climbing:sport} vie di arrampicata sportiva" }, "hideInAnswer": true } @@ -1465,7 +1554,8 @@ "de": "Ist hier traditionelles Klettern mÃļglich (eigene Sicherung z.B. mit Klemmkleilen)?", "en": "Is traditional climbing possible here (using own gear e.g. chocks)?", "nl": "Is het mogelijk om hier traditioneel te klimmen?
(Dit is klimmen met klemblokjes en friends)", - "ja": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§å¯čƒŊですか(䞋えば、チョックぎようãĒį‹Ŧč‡Ēぎゎã‚ĸをäŊŋį”¨ã—ãĻ)īŧŸ" + "ja": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§å¯čƒŊですか(䞋えば、チョックぎようãĒį‹Ŧč‡Ēぎゎã‚ĸをäŊŋį”¨ã—ãĻ)īŧŸ", + "it": "È possibile arrampicarsi in maniera tradizionale qua (usando attrezzi propri, ad es. dadi)?" }, "mappings": [ { @@ -1474,7 +1564,8 @@ "de": "Traditionelles Klettern ist hier mÃļglich", "en": "Traditional climbing is possible here", "nl": "Traditioneel klimmen kan hier", - "ja": "ここではäŧįĩąįš„ãĒį™ģåąąãŒå¯čƒŊです" + "ja": "ここではäŧįĩąįš„ãĒį™ģåąąãŒå¯čƒŊです", + "it": "L’arrampicata tradizionale è possibile qua" } }, { @@ -1483,7 +1574,8 @@ "de": "Traditionelles Klettern ist hier nicht mÃļglich", "en": "Traditional climbing is not possible here", "nl": "Traditioneel klimmen kan hier niet", - "ja": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§ã¯ã§ããĒい" + "ja": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§ã¯ã§ããĒい", + "it": "L’arrampicata tradizionale non è possibile qua" } }, { @@ -1492,7 +1584,8 @@ "de": "Hier gibt es {climbing:traditional} Routen fÃŧr traditionelles Klettern", "en": "There are {climbing:traditional} traditional climbing routes", "nl": "Er zijn hier {climbing:traditional} traditionele klimroutes", - "ja": "{climbing:traditional} ぎäŧįĩąįš„ãĒį™ģåąąãƒĢãƒŧトがある" + "ja": "{climbing:traditional} ぎäŧįĩąįš„ãĒį™ģåąąãƒĢãƒŧトがある", + "it": "Sono presenti {climbing:traditional} vie di arrampicata tradizionale" }, "hideInAnswer": true } @@ -1516,7 +1609,8 @@ "de": "Gibt es hier eine Speedkletter-Wand?", "en": "Is there a speed climbing wall?", "nl": "Is er een snelklimmuur (speed climbing)?", - "ja": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢはありぞすか?" + "ja": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢはありぞすか?", + "it": "È presente una prete per l’arrampicata di velocità?" }, "condition": { "and": [ @@ -1538,7 +1632,8 @@ "de": "Hier gibt es eine Speedkletter-Wand", "en": "There is a speed climbing wall", "nl": "Er is een snelklimmuur voor speed climbing", - "ja": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある" + "ja": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある", + "it": "È presente una parete per l’arrampicata di velocità" } }, { @@ -1547,7 +1642,8 @@ "de": "Hier gibt es keine Speedkletter-Wand", "en": "There is no speed climbing wall", "nl": "Er is geen snelklimmuur voor speed climbing", - "ja": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがãĒい" + "ja": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがãĒい", + "it": "Non è presente una parete per l’arrampicata di velocità" } }, { @@ -1556,7 +1652,8 @@ "de": "Hier gibt es {climbing:speed} Speedkletter-Routen", "en": "There are {climbing:speed} speed climbing walls", "nl": "Er zijn hier {climbing:speed} snelklimmuren", - "ja": "{climbing:speed} ぎ゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある" + "ja": "{climbing:speed} ぎ゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある", + "it": "Sono presenti {climbing:speed} pareti per l’arrampicata di velocità" }, "hideInAnswer": true } diff --git a/assets/themes/cycle_infra/license_info.json b/assets/themes/cycle_infra/license_info.json index bdf527c7b..d750dfa3f 100644 --- a/assets/themes/cycle_infra/license_info.json +++ b/assets/themes/cycle_infra/license_info.json @@ -89,26 +89,6 @@ "https://commons.wikimedia.org/wiki/File:Belgian_traffic_sign_M7.svg" ] }, - { - "path": "Cycle_barrier_angular.png", - "license": "CC-BY-SA 4.0", - "authors": [ - "Supaplex030" - ], - "sources": [ - "https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_angular.png" - ] - }, - { - "path": "Cycle_barrier_double.png", - "license": "CC-BY-SA 4.0", - "authors": [ - "Supaplex030" - ], - "sources": [ - "https://wiki.openstreetmap.org/wiki/File:Cycle_barrier_double.png" - ] - }, { "path": "Cycle_barrier_double.svg", "license": "CC0", diff --git a/assets/themes/cyclestreets/cyclestreets.json b/assets/themes/cyclestreets/cyclestreets.json index 57e56a370..a91d3af70 100644 --- a/assets/themes/cyclestreets/cyclestreets.json +++ b/assets/themes/cyclestreets/cyclestreets.json @@ -7,8 +7,8 @@ "ja": "Cyclestreets", "zh_Hant": "å–ŽčģŠčĄ—道", "de": "Fahrradstraßen", - "nb_NO": "Sykkelgater", - "it": "Strade ciclabili" + "it": "Strade ciclabili", + "nb_NO": "Sykkelgater" }, "shortDescription": { "nl": "Een kaart met alle gekende fietsstraten", @@ -57,7 +57,8 @@ "ja": "Cyclestreets", "zh_Hant": "å–ŽčģŠčĄ—道", "it": "Strade ciclabili", - "de": "Fahrradstraßen" + "de": "Fahrradstraßen", + "nb_NO": "Sykkelgater" }, "minzoom": 7, "source": { @@ -116,7 +117,8 @@ "en": "This street will become a cyclestreet soon", "ja": "こぎ通りはぞもãĒくcyclestreetãĢãĒりぞす", "it": "Questa strada diventerà presto una strada ciclabile", - "de": "Diese Straße wird bald eine Fahrradstraße sein" + "de": "Diese Straße wird bald eine Fahrradstraße sein", + "nb_NO": "Denne gaten vil bli sykkelgate snart" }, "minzoom": 9, "source": { @@ -138,7 +140,8 @@ "en": "{name} will become a cyclestreet soon", "ja": "{name}は、もうすぐcyclestreetãĢãĒる", "it": "{name} diventerà presto una strada ciclabile", - "de": "{name} wird bald eine Fahrradstraße werden" + "de": "{name} wird bald eine Fahrradstraße werden", + "nb_NO": "{name} vil bli sykkelgate snart" }, "if": "name~*" } @@ -198,7 +201,8 @@ "it": "Strada", "ru": "ĐŖĐģиŅ†Đ°", "de": "Straße", - "eo": "Strato" + "eo": "Strato", + "nb_NO": "Gate" }, "mappings": [ { @@ -242,11 +246,12 @@ { "id": "is_cyclestreet", "question": { - "nl": "Is deze straat een fietsstraat?", - "en": "Is this street a cyclestreet?", + "nl": "Is de straat {name} een fietsstraat?", + "en": "Is the street {name} a cyclestreet?", "ja": "こぎ通りはcyclestreetですか?", "nb_NO": "Er denne gaten en sykkelvei?", - "de": "Ist diese Straße eine Fahrradstraße?" + "de": "Ist diese Straße eine Fahrradstraße?", + "it": "È una strada ciclabile?" }, "mappings": [ { @@ -263,7 +268,8 @@ "en": "This street is a cyclestreet (and has a speed limit of 30 km/h)", "ja": "cyclestreet(最éĢ˜é€ŸåēĻは30km/h)", "nb_NO": "Denne gaten er en sykkelvei (og har en fartsgrense pÃĨ 30 km/t)", - "de": "Diese Straße ist eine Fahrradstraße (mit einer Geschwindigkeitsbegrenzung von 30 km/h)" + "de": "Diese Straße ist eine Fahrradstraße (mit einer Geschwindigkeitsbegrenzung von 30 km/h)", + "it": "Questa è una strada ciclabile (e ha un limite di velocità massima di 30 km/h)" } }, { @@ -274,11 +280,12 @@ ] }, "then": { - "nl": "Deze straat i een fietsstraat", + "nl": "Deze straat is een fietsstraat", "en": "This street is a cyclestreet", "ja": "こぎ通りはcyclestreetだ", "nb_NO": "Denne gaten er en sykkelvei", - "de": "Diese Straße ist eine Fahrradstraße" + "de": "Diese Straße ist eine Fahrradstraße", + "it": "Questa è una strada ciclabile" }, "hideInAnswer": true }, @@ -294,7 +301,8 @@ "en": "This street will become a cyclstreet soon", "ja": "こぎ通りはぞもãĒくcyclstreetãĢãĒるだろう", "nb_NO": "Denne gaten vil bli sykkelvei ganske snart", - "de": "Diese Straße wird bald eine Fahrradstraße sein" + "de": "Diese Straße wird bald eine Fahrradstraße sein", + "it": "Diverrà tra poco una strada ciclabile" } }, { diff --git a/assets/themes/facadegardens/facadegardens.json b/assets/themes/facadegardens/facadegardens.json index 955b17ae4..2ec4c03bf 100644 --- a/assets/themes/facadegardens/facadegardens.json +++ b/assets/themes/facadegardens/facadegardens.json @@ -23,8 +23,8 @@ "en": "Facade gardens, green facades and trees in the city not only bring peace and quiet, but also a more beautiful city, greater biodiversity, a cooling effect and better air quality.
Klimaan VZW and Mechelen Klimaatneutraal want to map existing and new facade gardens as an example for people who want to build their own garden or for city walkers who love nature.
More info about the project at klimaan.be.", "ja": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’、éƒŊ市ぎįˇ‘ãŽãƒ•ã‚Ąã‚ĩãƒŧドと樚木は、åšŗ和と静けさをもたらすだけでãĒく、よりįžŽã—いéƒŊ市、より大きãĒį”Ÿį‰Šå¤šæ§˜æ€§ã€å†ˇå´åŠšæžœã€ã‚ˆã‚Šč‰¯ã„大気čŗĒをもたらす。
KlimaanぎVZWとMechelenぎKlimaatneutraalは、č‡Ē分でåē­ã‚’äŊœã‚ŠãŸã„äēēやč‡Ēį„ļを愛するéƒŊå¸‚ãŽæ­ŠčĄŒč€…ãŽãŸã‚ãĢ、æ—ĸå­˜ãŽãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ã¨æ–°ã—ã„ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ぎマッピãƒŗã‚°ã—ãŸã„ã¨č€ƒãˆãĻいぞす。
こぎプロジェクトãĢé–ĸするčŠŗį´°æƒ…å ąã¯klimaanãĢありぞす。", "fr": "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.", - "it": "I giardini veritcali e gli alberi in città non solo portano pace e tranquillità ma creano anche un ambiente piÚ bello, aumentano la biodiversità, rendono il clima piÚ fresco e migliorano la qualità dell’aria.
Klimaan VZW e Mechelen Klimaatneutraal vogliono mappare sia i giardini verticali esistenti che quelli nuovi per mostrarli a quanti vogliono costruire un loro proprio giardino o per quelli che amano la natura e vogliono camminare per la città.
Per ulteriori informazioni visita klimaan.be.", - "de": "Fassadengärten, grÃŧne Fassaden und Bäume in der Stadt bringen nicht nur Ruhe und Frieden, sondern auch eine schÃļnere Stadt, eine grÃļßere Artenvielfalt, einen KÃŧhleffekt und eine bessere Luftqualität.
Klimaan VZW und Mechelen Klimaatneutraal wollen bestehende und neue Fassadengärten als Beispiel fÃŧr Menschen, die ihren eigenen Garten anlegen wollen, oder fÃŧr naturverbundene Stadtspaziergänger kartieren.
Mehr Informationen Ãŧber das Projekt unter klimaan.be." + "de": "Fassadengärten, grÃŧne Fassaden und Bäume in der Stadt bringen nicht nur Ruhe und Frieden, sondern auch eine schÃļnere Stadt, eine grÃļßere Artenvielfalt, einen KÃŧhleffekt und eine bessere Luftqualität.
Klimaan VZW und Mechelen Klimaatneutraal wollen bestehende und neue Fassadengärten als Beispiel fÃŧr Menschen, die ihren eigenen Garten anlegen wollen, oder fÃŧr naturverbundene Stadtspaziergänger kartieren.
Mehr Informationen Ãŧber das Projekt unter klimaan.be.", + "it": "I giardini veritcali e gli alberi in città non solo portano pace e tranquillità ma creano anche un ambiente piÚ bello, aumentano la biodiversità, rendono il clima piÚ fresco e migliorano la qualità dell’aria.
Klimaan VZW e Mechelen Klimaatneutraal vogliono mappare sia i giardini verticali esistenti che quelli nuovi per mostrarli a quanti vogliono costruire un loro proprio giardino o per quelli che amano la natura e vogliono camminare per la città.
Per ulteriori informazioni visita klimaan.be." }, "language": [ "nl", @@ -55,7 +55,8 @@ "ja": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’", "zh_Hant": "įĢ‹éĸčŠąåœ’", "fr": "Jardins muraux", - "de": "Fassadengärten" + "de": "Fassadengärten", + "it": "Giardini verticali" }, "minzoom": 12, "source": { @@ -73,7 +74,8 @@ "ja": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’", "zh_Hant": "įĢ‹éĸčŠąåœ’", "fr": "Jardin mural", - "de": "Fassadengarten" + "de": "Fassadengarten", + "it": "Giardino verticale" } }, "description": { @@ -82,7 +84,8 @@ "ja": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’", "zh_Hant": "įĢ‹éĸčŠąåœ’", "fr": "Jardins muraux", - "de": "Fassadengärten" + "de": "Fassadengärten", + "it": "Giardini verticali" }, "tagRenderings": [ "images", @@ -92,14 +95,16 @@ "en": "Orientation: {direction} (where 0=N and 90=O)", "ja": "斚向: {direction} (0=N で 90=O)", "fr": "Orientation : {direction} (0 pour le Nord et 90 pour l’Ouest)", - "de": "Ausrichtung: {direction} (wobei 0=N und 90=O)" + "de": "Ausrichtung: {direction} (wobei 0=N und 90=O)", + "it": "Orientamento: {direction} (0 per il Nord e 90 per l’Est)" }, "question": { "nl": "Hoe is de tuin georiÃĢnteerd?", "en": "What is the orientation of the garden?", "ja": "åē­ãŽå‘きはおうãĒãŖãĻいぞすか?", "fr": "Quelle est l’orientation du jardin ?", - "de": "Wie ist der Garten ausgerichtet?" + "de": "Wie ist der Garten ausgerichtet?", + "it": "Com’è orientato questo giardino?" }, "freeform": { "type": "direction", @@ -174,7 +179,8 @@ "en": "Is there a water barrel installed for the garden?", "ja": "åē­ãĢæ°´æĄļãŒč¨­įŊŽã•ã‚ŒãĻいるぎですか?", "fr": "Des rÊserves d’eau ont-elles ÊtÊ installÊes pour le jardin ?", - "de": "Gibt es ein Wasserfass fÃŧr den Garten?" + "de": "Gibt es ein Wasserfass fÃŧr den Garten?", + "it": "È stata installata una riserva d’acqua per il giardino?" }, "mappings": [ { @@ -449,7 +455,8 @@ "render": "50,50,center" }, "location": [ - "point" + "point", + "centroid" ] } ] diff --git a/assets/themes/fruit_trees/fruit_trees.json b/assets/themes/fruit_trees/fruit_trees.json index b6af011b1..6e93dabe5 100644 --- a/assets/themes/fruit_trees/fruit_trees.json +++ b/assets/themes/fruit_trees/fruit_trees.json @@ -43,18 +43,6 @@ "tagRenderings": [ "images" ], - "icon": { - "render": "./assets/themes/buurtnatuur/forest.svg" - }, - "width": { - "render": "8" - }, - "iconSize": { - "render": "40,40,center" - }, - "color": { - "render": "#00f" - }, "presets": [ { "tags": [ @@ -167,18 +155,6 @@ "id": "fruitboom-ref" } ], - "icon": { - "render": "./assets/themes/fruit_trees/fruit_tree.svg" - }, - "width": { - "render": "8" - }, - "iconSize": { - "render": "40,40,center" - }, - "color": { - "render": "#00f" - }, "presets": [ { "tags": [ diff --git a/assets/themes/grb_import/README.md b/assets/themes/grb_import/README.md index 2ed7bfbbf..8481ce379 100644 --- a/assets/themes/grb_import/README.md +++ b/assets/themes/grb_import/README.md @@ -1,4 +1,4 @@ - GRB Import helper +GRB Import helper =================== diff --git a/assets/themes/grb_import/grb.json b/assets/themes/grb_import/grb.json index 2d487ab3d..0d6bd41bf 100644 --- a/assets/themes/grb_import/grb.json +++ b/assets/themes/grb_import/grb.json @@ -396,7 +396,8 @@ "mapRendering": [ { "location": [ - "point" + "point", + "centroid" ], "icon": "circle:#bb3322", "iconSize": "15,15,center" diff --git a/assets/themes/hailhydrant/hailhydrant.json b/assets/themes/hailhydrant/hailhydrant.json index 4fd07734b..bd398f508 100644 --- a/assets/themes/hailhydrant/hailhydrant.json +++ b/assets/themes/hailhydrant/hailhydrant.json @@ -6,8 +6,8 @@ "zh_Hant": "æļˆé˜˛æ “、æģ…įĢ器、æļˆé˜˛éšŠã€äģĨ及æ€Ĩ救įĢ™ã€‚", "ru": "ПоĐļĐ°Ņ€ĐŊŅ‹Đĩ ĐŗидŅ€Đ°ĐŊŅ‚Ņ‹, ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи, ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸ и ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸.", "fr": "Bornes incendies, extincteurs, casernes de pompiers et ambulanciers.", - "nb_NO": "Hydranter, brannslukkere, brannstasjoner, og ambulansestasjoner.", - "it": "Idranti, estintori, caserme dei vigili del fuoco e stazioni delle ambulanze." + "it": "Idranti, estintori, caserme dei vigili del fuoco e stazioni delle ambulanze.", + "nb_NO": "Hydranter, brannslukkere, brannstasjoner, og ambulansestasjoner." }, "shortDescription": { "en": "Map to show hydrants, extinguishers, fire stations, and ambulance stations.", @@ -15,8 +15,8 @@ "zh_Hant": "éĄ¯į¤ēæļˆé˜˛æ “、æģ…įĢ器、æļˆé˜˛éšŠčˆ‡æ€Ĩ救įĢ™įš„地圖。", "ru": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ĐŗидŅ€Đ°ĐŊŅ‚Ов, ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģĐĩĐš, ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ŅŅ‚Đ°ĐŊŅ†Đ¸Đš и ŅŅ‚Đ°ĐŊŅ†Đ¸Đš ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸.", "fr": "Carte indiquant les bornes incendies, extincteurs, casernes de pompiers et ambulanciers.", - "it": "Carta che mostra gli idranti, gli estintori, le caserme dei vigili del fuoco e le stazioni delle ambulanze.", - "de": "Hydranten, FeuerlÃļscher, Feuerwachen und Rettungswachen." + "de": "Hydranten, FeuerlÃļscher, Feuerwachen und Rettungswachen.", + "it": "Carta che mostra gli idranti, gli estintori, le caserme dei vigili del fuoco e le stazioni delle ambulanze." }, "description": { "en": "On this map you can find and update hydrants, fire stations, ambulance stations, and extinguishers in your favorite neighborhoods.\n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions.\n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others.", @@ -56,7 +56,8 @@ "nb_NO": "Kart over brannhydranter", "ru": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ĐŗидŅ€Đ°ĐŊŅ‚Ов", "fr": "Carte des bornes incendie", - "de": "Karte der Hydranten" + "de": "Karte der Hydranten", + "it": "Mappa degli idranti" }, "minzoom": 14, "source": { @@ -73,7 +74,8 @@ "ja": "æļˆįĢ栓", "nb_NO": "Brannhydrant", "fr": "Bornes incendie", - "de": "Hydrant" + "de": "Hydrant", + "it": "Idrante" } }, "description": { @@ -83,7 +85,8 @@ "nb_NO": "Kartlag for ÃĨ vise brannhydranter.", "ru": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ ĐŗидŅ€Đ°ĐŊŅ‚Ņ‹.", "fr": "Couche des bornes incendie.", - "de": "Kartenebene zur Anzeige von Hydranten." + "de": "Kartenebene zur Anzeige von Hydranten.", + "it": "Livello della mappa che mostra gli idranti antincendio." }, "tagRenderings": [ { @@ -94,15 +97,17 @@ "nb_NO": "Hvilken farge har brannhydranten?", "ru": "КаĐēĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ° ĐŗидŅ€Đ°ĐŊŅ‚?", "fr": "Quelle est la couleur de la borne ?", - "de": "Welche Farbe hat der Hydrant?" + "de": "Welche Farbe hat der Hydrant?", + "it": "Qual è il colore dell’idrante?" }, "render": { "en": "The hydrant color is {colour}", - "ja": "æļˆįĢæ “ãŽč‰˛ã¯{color}です", + "ja": "æļˆįĢæ “ãŽč‰˛ã¯{colour}です", "nb_NO": "Brannhydranter er {colour}", "ru": "ĐĻвĐĩŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚Đ° {colour}", "fr": "La borne est {colour}", - "de": "Der Hydrant hat die Farbe {colour}" + "de": "Der Hydrant hat die Farbe {colour}", + "it": "Il colore dell’idrante è {colour}" }, "freeform": { "key": "colour" @@ -119,7 +124,8 @@ "ja": "æļˆįĢæ “ãŽč‰˛ã¯ä¸æ˜Žã§ã™ã€‚", "ru": "ĐĻвĐĩŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚Đ° ĐŊĐĩ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊ.", "fr": "La borne est de couleur inconnue.", - "de": "Die Farbe des Hydranten ist unbekannt." + "de": "Die Farbe des Hydranten ist unbekannt.", + "it": "Il colore dell’idrante è sconosciuto." }, "hideInAnswer": true }, @@ -134,7 +140,8 @@ "ja": "æļˆįĢæ “ãŽč‰˛ã¯éģ„č‰˛ã§ã™ã€‚", "ru": "ГидŅ€Đ°ĐŊŅ‚ ĐļŅ‘ĐģŅ‚ĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ°.", "fr": "La borne est jaune.", - "de": "Die Farbe des Hydranten ist gelb." + "de": "Die Farbe des Hydranten ist gelb.", + "it": "Il colore dell’idrante è giallo." } }, { @@ -202,7 +209,8 @@ "en": " Pillar type.", "ja": " ピナãƒŧ型。", "fr": " Pilier.", - "de": " Säulenart." + "de": " Säulenart.", + "it": " Soprasuolo." } }, { @@ -215,7 +223,8 @@ "en": " Pipe type.", "ja": " パイプ型。", "fr": " Tuyau.", - "de": " Rohrtyp." + "de": " Rohrtyp.", + "it": " Tubo." } }, { @@ -230,7 +239,8 @@ "ru": " ĐĸиĐŋ ŅŅ‚ĐĩĐŊŅ‹.", "ja": " åŖåž‹ã€‚", "fr": " Mural.", - "de": " Wandtyp." + "de": " Wandtyp.", + "it": " A muro." } }, { @@ -243,7 +253,8 @@ "en": " Underground type.", "ja": "地下åŧã€‚", "fr": " EnterrÊ.", - "de": " Untergrundtyp." + "de": " Untergrundtyp.", + "it": " Sottosuolo." } } ] @@ -251,19 +262,11 @@ { "id": "hydrant-state", "question": { - "en": "Update the lifecycle status of the hydrant.", + "en": "Is this hydrant still working?", "ja": "æļˆįĢ栓ぎナイフã‚ĩイクãƒĢ゚テãƒŧã‚ŋ゚を更新しぞす。", "fr": "Mettre à jour l’Êtat de la borne.", - "de": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten." - }, - "render": { - "en": "Lifecycle status", - "ja": "ナイフã‚ĩイクãƒĢ゚テãƒŧã‚ŋã‚š", - "fr": "État", - "de": "Lebenszyklus-Status" - }, - "freeform": { - "key": "disused:emergency" + "de": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten.", + "it": "Aggiorna lo stato di funzionamento dell’idrante." }, "mappings": [ { @@ -273,11 +276,12 @@ ] }, "then": { - "en": "The hydrant is (fully or partially) working.", + "en": "The hydrant is (fully or partially) working", "ja": "æļˆįĢ栓は(厌全ãĢぞたは部分įš„ãĢ)抟čƒŊしãĻいぞす。", "ru": "ГидŅ€Đ°ĐŊŅ‚ (ĐŋĐžĐģĐŊĐžŅŅ‚ŅŒŅŽ иĐģи Ņ‡Đ°ŅŅ‚иŅ‡ĐŊĐž) в Ņ€Đ°ĐąĐžŅ‡ĐĩĐŧ ŅĐžŅŅ‚ĐžŅĐŊии.", "fr": "La borne est en Êtat, ou partiellement en Êtat, de fonctionner.", - "de": "Der Hydrant ist (ganz oder teilweise) in Betrieb." + "de": "Der Hydrant ist (ganz oder teilweise) in Betrieb.", + "it": "L’idrante è (parzialmente o completamente) funzionante." } }, { @@ -288,10 +292,11 @@ ] }, "then": { - "en": "The hydrant is unavailable.", + "en": "The hydrant is unavailable", "ja": "æļˆįĢ栓はäŊŋį”¨ã§ããžã›ã‚“。", "fr": "La borne est hors-service.", - "de": "Der Hydrant ist nicht verfÃŧgbar." + "de": "Der Hydrant ist nicht verfÃŧgbar.", + "it": "L’idrante è fuori servizio." } }, { @@ -302,11 +307,12 @@ ] }, "then": { - "en": "The hydrant has been removed.", + "en": "The hydrant has been removed", "ja": "æļˆįĢ栓が撤åŽģされぞした。", "ru": "ГидŅ€Đ°ĐŊŅ‚ Đ´ĐĩĐŧĐžĐŊŅ‚иŅ€ĐžĐ˛Đ°ĐŊ.", "fr": "La borne a ÊtÊ retirÊe.", - "de": "Der Hydrant wurde entfernt." + "de": "Der Hydrant wurde entfernt.", + "it": "L’idrante è stato rimosso." } } ] @@ -324,13 +330,15 @@ "ja": "æļˆįĢ栓", "nb_NO": "Brannhydrant", "fr": "Borne incendie", - "de": "LÃļschwasser-Hydrant" + "de": "LÃļschwasser-Hydrant", + "it": "Idrante antincendio" }, "description": { "en": "A hydrant is a connection point where firefighters can tap water. It might be located underground.", "ja": "æļˆįĢ栓はæļˆé˜˛åŖĢãŒæ°´ã‚’æą˛ãŋ上げることができるæŽĨįļšį‚šã§ã™ã€‚地下ãĢあるかもしれぞせん。", "fr": "Une borne incendie est un point oÚ les pompiers peuvent s’alimenter en eau. Elle peut ÃĒtre enterrÊe.", - "de": "Ein Hydrant ist ein Anschlusspunkt, an dem die Feuerwehr Wasser zapfen kann. Er kann sich unterirdisch befinden." + "de": "Ein Hydrant ist ein Anschlusspunkt, an dem die Feuerwehr Wasser zapfen kann. Er kann sich unterirdisch befinden.", + "it": "Un idrante è un punto di collegamento dove i pompieri possono estrarre acqua. Potrebbe trovarsi sottoterra." } } ], @@ -365,7 +373,8 @@ "nb_NO": "Kart over brannhydranter", "ru": "КаŅ€Ņ‚Đ° ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģĐĩĐš.", "fr": "Couche des extincteurs.", - "de": "Karte mit FeuerlÃļschern." + "de": "Karte mit FeuerlÃļschern.", + "it": "Cartina degli estintori." }, "minzoom": 14, "source": { @@ -382,7 +391,8 @@ "ja": "æļˆįĢ器", "nb_NO": "Brannslokkere", "fr": "Exctincteurs", - "de": "FeuerlÃļscher" + "de": "FeuerlÃļscher", + "it": "Estintori" } }, "description": { @@ -392,7 +402,8 @@ "nb_NO": "Kartlag for ÃĨ vise brannslokkere.", "ru": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи.", "fr": "Couche des lances à incendie.", - "de": "Kartenebene zur Anzeige von Hydranten." + "de": "Kartenebene zur Anzeige von Hydranten.", + "it": "Livello della mappa che mostra gli idranti antincendio." }, "tagRenderings": [ { @@ -402,14 +413,17 @@ "ja": "場所:{location}", "ru": "МĐĩŅŅ‚ĐžĐŋĐžĐģĐžĐļĐĩĐŊиĐĩ: {location}", "fr": "Emplacement : {location}", - "de": "Standort: {location}" + "de": "Standort: {location}", + "eo": "Loko: {location}", + "it": "Posizione: {location}" }, "question": { "en": "Where is it positioned?", "ja": "おこãĢあるんですか?", "ru": "ГдĐĩ ŅŅ‚Đž Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž?", "fr": "OÚ est-elle positionnÊe ?", - "de": "Wo befindet er sich?" + "de": "Wo befindet er sich?", + "it": "Dove è posizionato?" }, "mappings": [ { @@ -423,7 +437,8 @@ "ja": "åą‹å†…ãĢある。", "ru": "ВĐŊŅƒŅ‚Ņ€Đ¸.", "fr": "IntÊrieur.", - "de": "Im Innenraum vorhanden." + "de": "Im Innenraum vorhanden.", + "it": "Si trova all’interno." } }, { @@ -437,7 +452,8 @@ "ja": "åą‹å¤–ãĢある。", "ru": "ĐĄĐŊĐ°Ņ€ŅƒĐļи.", "fr": "ExtÊrieur.", - "de": "Im Außenraum vorhanden." + "de": "Im Außenraum vorhanden.", + "it": "Si trova all’esterno." } } ], @@ -458,14 +474,16 @@ "nb_NO": "Brannslukker", "ru": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģŅŒ", "fr": "Extincteur", - "de": "FeuerlÃļscher" + "de": "FeuerlÃļscher", + "it": "Estintore" }, "description": { "en": "A fire extinguisher is a small, portable device used to stop a fire", "ja": "æļˆįĢ器は、įĢįŊをæ­ĸめるためãĢäŊŋį”¨ã•ã‚Œã‚‹å°åž‹ã§æē帯可čƒŊãĒčŖ…įŊŽã§ã‚ã‚‹", "ru": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģŅŒ - ĐŊĐĩйОĐģŅŒŅˆĐžĐĩ ĐŋĐĩŅ€ĐĩĐŊĐžŅĐŊĐžĐĩ ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚вО Đ´ĐģŅ Ņ‚ŅƒŅˆĐĩĐŊиŅ ĐžĐŗĐŊŅ", "fr": "Un extincteur est un appareil portatif servant à Êteindre un feu", - "de": "Ein FeuerlÃļscher ist ein kleines, tragbares Gerät, das dazu dient, ein Feuer zu lÃļschen" + "de": "Ein FeuerlÃļscher ist ein kleines, tragbares Gerät, das dazu dient, ein Feuer zu lÃļschen", + "it": "Un estintore è un dispositivo portatile di piccole dimensioni usato per spegnere un incendio" } } ], @@ -478,7 +496,8 @@ "render": "20,20,center" }, "location": [ - "point" + "point", + "centroid" ] } ] @@ -540,7 +559,8 @@ "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前は{name}です。", "it": "Questa caserma si chiama {name}.", "ru": "Đ­Ņ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}.", - "fr": "Cette station s’appelle {name}." + "fr": "Cette station s’appelle {name}.", + "nb_NO": "Denne stasjonen heter {name}." } }, { @@ -559,7 +579,8 @@ "en": "This station is along a highway called {addr:street}.", "ja": "{addr:street} æ˛ŋいãĢありぞす。", "ru": "ЧаŅŅ‚ŅŒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° вдОĐģŅŒ ŅˆĐžŅŅĐĩ {addr:street}.", - "fr": "La station fait partie de la {addr:street}." + "fr": "La station fait partie de la {addr:street}.", + "it": "La stazione si trova in una strada chiamata {addr:street}." } }, { @@ -568,7 +589,8 @@ "en": "Where is the station located? (e.g. name of neighborhood, villlage, or town)", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎäŊæ‰€ã¯?(例: 地åŒē、村、ぞたはį”ēぎ名į§°)", "ru": "ГдĐĩ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° Ņ‡Đ°ŅŅ‚ŅŒ? (ĐŊĐ°ĐŋŅ€., ĐŊаСваĐŊиĐĩ ĐŊĐ°ŅĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐŋŅƒĐŊĐēŅ‚Đ°)", - "fr": "Dans quelle localitÊ la station est-elle situÊe ?" + "fr": "Dans quelle localitÊ la station est-elle situÊe ?", + "it": "In che località si trova la stazione? (ad es. quartiere, paese o città)" }, "freeform": { "key": "addr:place" @@ -577,7 +599,8 @@ "en": "This station is found within {addr:place}.", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{addr:place}ãĢありぞす。", "ru": "Đ­Ņ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° в {addr:place}.", - "fr": "La station fait partie de {addr:place}." + "fr": "La station fait partie de {addr:place}.", + "it": "La stazione si trova a {addr:place}." } }, { @@ -585,12 +608,14 @@ "question": { "en": "What agency operates this station?", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗを運å–ļしãĻいるぎはおこですか?", - "fr": "Quel est l’exploitant de la station ?" + "fr": "Quel est l’exploitant de la station ?", + "it": "Quale agenzia gestisce questa stazione?" }, "render": { "en": "This station is operated by {operator}.", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{operator}ãĢよãŖãĻ運å–ļされãĻいぞす。", - "fr": "Cette station est opÊrÊe par {operator}." + "fr": "Cette station est opÊrÊe par {operator}.", + "it": "Questa stazione è gestita da {operator}." }, "freeform": { "key": "operator" @@ -606,7 +631,9 @@ "then": { "en": "Bureau of Fire Protection", "ja": "æļˆé˜˛åą€(æļˆé˜˛åē)", - "fr": "Brigade de Protection du Feu" + "fr": "Brigade de Protection du Feu", + "de": "BrandschutzbehÃļrde", + "it": "Servizio antincendio governativo" } } ] @@ -616,12 +643,14 @@ "question": { "en": "How is the station operator classified?", "ja": "゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļãŽåˆ†éĄžã¯?", - "fr": "Quel est le type d’exploitant ?" + "fr": "Quel est le type d’exploitant ?", + "it": "Com’è classificato il gestore di questa stazione?" }, "render": { "en": "The operator is a(n) {operator:type} entity.", "ja": "運å–ļč€…ã¯ã€{operator:type} です。", - "fr": "L’exploitant est de type {operator:type}." + "fr": "L’exploitant est de type {operator:type}.", + "it": "Il gestore è un ente {operator:type}." }, "freeform": { "key": "operator:type" @@ -636,7 +665,9 @@ "then": { "en": "The station is operated by the government.", "ja": "゚テãƒŧã‚ˇãƒ§ãƒŗはč‡Ēæ˛ģäŊ“が運å–ļする。", - "fr": "La station est opÊrÊe par le gouvernement." + "fr": "La station est opÊrÊe par le gouvernement.", + "it": "Questa stazione è gestita dal governo.", + "nb_NO": "Stasjonen drives av myndighetene." } }, { @@ -648,7 +679,8 @@ "then": { "en": "The station is operated by a community-based, or informal organization.", "ja": "äģģ意å›ŖäŊ“ã‚„ã‚ŗミãƒĨニテã‚Ŗが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。", - "fr": "La station est opÊrÊe par une organisation informelle." + "fr": "La station est opÊrÊe par une organisation informelle.", + "it": "Questa stazione è gestita dalla comunità oppure un’associazione informale." } }, { @@ -660,7 +692,8 @@ "then": { "en": "The station is operated by a formal group of volunteers.", "ja": "å…Ŧį›Šå›ŖäŊ“が運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。", - "fr": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles." + "fr": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles.", + "it": "Questa stazione è gestita da un gruppo di volontari ufficiale." } }, { @@ -672,7 +705,8 @@ "then": { "en": "The station is privately operated.", "ja": "個äēēが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。", - "fr": "La station est opÊrÊe par un groupe privÊ." + "fr": "La station est opÊrÊe par un groupe privÊ.", + "it": "Questa stazione è gestita da privati." } } ] @@ -689,13 +723,16 @@ "ja": "æļˆé˜˛įŊ˛", "ru": "ПоĐļĐ°Ņ€ĐŊĐ°Ņ Ņ‡Đ°ŅŅ‚ŅŒ", "fr": "Caserne de pompiers", - "de": "Feuerwache" + "de": "Feuerwache", + "it": "Caserma dei vigili del fuoco", + "nb_NO": "Brannstasjon" }, "description": { "en": "A fire station is a place where the fire trucks and firefighters are located when not in operation.", "ja": "æļˆé˜˛įŊ˛ã¯ã€é‹čģĸしãĻいãĒいときãĢæļˆé˜˛čģŠã‚„æļˆé˜˛åŖĢがいる場所です。", "fr": "Une caserne de pompiers est un lieu oÚ les pompiers et leur Êquipements sont situÊs en dehors des missions.", - "de": "Eine Feuerwache ist ein Ort, an dem die Feuerwehrfahrzeuge und die Feuerwehrleute untergebracht sind, wenn sie nicht im Einsatz sind." + "de": "Eine Feuerwache ist ein Ort, an dem die Feuerwehrfahrzeuge und die Feuerwehrleute untergebracht sind, wenn sie nicht im Einsatz sind.", + "it": "Una caserma dei pompieri è un luogo dove si trovano i mezzi antincendio e i pompieri tra una missione e l’altra." } } ], @@ -728,7 +765,9 @@ "en": "Map of ambulance stations", "ja": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ地å›ŗ", "ru": "КаŅ€Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Đš ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸", - "fr": "Couche des ambulances" + "fr": "Couche des ambulances", + "de": "Karte der Rettungswachen", + "it": "Carta delle stazioni delle ambulanze" }, "minzoom": 12, "source": { @@ -743,13 +782,17 @@ "en": "Ambulance Station", "ru": "ĐĄŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸", "ja": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ", - "fr": "Station d’ambulances" + "fr": "Station d’ambulances", + "de": "Rettungswache", + "it": "Stazione delle ambulanze" } }, "description": { "en": "An ambulance station is an area for storage of ambulance vehicles, medical equipment, personal protective equipment, and other medical supplies.", "ja": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗは、救æ€ĨčģŠã€åŒģį™‚抟器、個äēēį”¨äŋč­ˇå…ˇã€ãŠã‚ˆãŗそぎäģ–ぎåŒģį™‚į”¨å“ã‚’äŋįŽĄã™ã‚‹å ´æ‰€ã§ã™ã€‚", - "fr": "Une station d’ambulance est un lieu oÚ sont stockÊs les vÊhicules d’urgence ainsi que de l’Êquipement mÊdical." + "fr": "Une station d’ambulance est un lieu oÚ sont stockÊs les vÊhicules d’urgence ainsi que de l’Êquipement mÊdical.", + "de": "Eine Rettungswache ist ein Ort, an dem Rettungsfahrzeuge, medizinische AusrÃŧstung, persÃļnliche SchutzausrÃŧstung und anderes medizinisches Material untergebracht sind.", + "it": "La stazione delle ambulanze è un’area per lo stoccaggio delle ambulanze, dell’equipaggiamento medico, dei dispositivi di protezione individuale e di altre forniture medicali." }, "tagRenderings": [ { @@ -761,13 +804,15 @@ "en": "What is the name of this ambulance station?", "ja": "こぎ救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前はäŊ•ã§ã™ã‹?", "ru": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸?", - "fr": "Quel est le nom de cette station ?" + "fr": "Quel est le nom de cette station ?", + "it": "Qual è il nome di questa stazione delle ambulanze?" }, "render": { "en": "This station is called {name}.", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前は{name}です。", "ru": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}.", - "fr": "Cette station s’appelle {name}." + "fr": "Cette station s’appelle {name}.", + "it": "Questa stazione è chiamata {name}." } }, { @@ -779,13 +824,15 @@ "en": " What is the street name where the station located?", "ja": " 救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ所在地はおこですか?", "ru": " По ĐēĐ°ĐēĐžĐŧŅƒ Đ°Đ´Ņ€ĐĩŅŅƒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ?", - "fr": " Quel est le nom de la rue oÚ la station se situe ?" + "fr": " Quel est le nom de la rue oÚ la station se situe ?", + "it": " Come si chiama la strada in cui si trova questa stazione?" }, "render": { "en": "This station is along a highway called {addr:street}.", "ja": "{addr:street} æ˛ŋいãĢありぞす。", "ru": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° вдОĐģŅŒ ŅˆĐžŅŅĐĩ {addr:street}.", - "fr": "La station fait partie de {addr:street}." + "fr": "La station fait partie de {addr:street}.", + "it": "Questa stazione si trova in {addr:street}." } }, { @@ -794,7 +841,8 @@ "en": "Where is the station located? (e.g. name of neighborhood, villlage, or town)", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎäŊæ‰€ã¯?(例: 地åŒē、村、ぞたはį”ēぎ名į§°)", "ru": "ГдĐĩ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ? (ĐŊĐ°ĐŋŅ€., ĐŊаСваĐŊиĐĩ ĐŊĐ°ŅĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐŋŅƒĐŊĐēŅ‚Đ°)", - "fr": "Dans quelle localitÊ la station est-elle situÊe ?" + "fr": "Dans quelle localitÊ la station est-elle situÊe ?", + "it": "Dove si trova la stazione? (ad es. quartiere, paese o città)" }, "freeform": { "key": "addr:place" @@ -802,7 +850,8 @@ "render": { "en": "This station is found within {addr:place}.", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{addr:place}ãĢありぞす。", - "fr": "La station fait partie de {addr:place}." + "fr": "La station fait partie de {addr:place}.", + "it": "La stazione si trova a {addr:place}." } }, { @@ -810,12 +859,14 @@ "question": { "en": "What agency operates this station?", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗを運å–ļしãĻいるぎはおこですか?", - "fr": "Quel est l’exploitant de la station ?" + "fr": "Quel est l’exploitant de la station ?", + "it": "Quale agenzia gestisce questa stazione?" }, "render": { "en": "This station is operated by {operator}.", "ja": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{operator}ãĢよãŖãĻ運å–ļされãĻいぞす。", - "fr": "Cette station est opÊrÊe par {operator}." + "fr": "Cette station est opÊrÊe par {operator}.", + "it": "Questa stazione è gestita da {operator}." }, "freeform": { "key": "operator" @@ -827,12 +878,14 @@ "question": { "en": "How is the station operator classified?", "ja": "゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļãŽåˆ†éĄžã¯?", - "fr": "Quel est le type d’exploitant ?" + "fr": "Quel est le type d’exploitant ?", + "it": "Com’è classificato il gestore della stazione?" }, "render": { "en": "The operator is a(n) {operator:type} entity.", "ja": "運å–ļč€…ã¯ã€{operator:type} です。", - "fr": "L’exploitant est de type {operator:type}." + "fr": "L’exploitant est de type {operator:type}.", + "it": "L’operatore è un ente {operator:type}." }, "freeform": { "key": "operator:type" @@ -847,7 +900,8 @@ "then": { "en": "The station is operated by the government.", "ja": "゚テãƒŧã‚ˇãƒ§ãƒŗはč‡Ēæ˛ģäŊ“が運å–ļする。", - "fr": "La station est opÊrÊe par le gouvernement." + "fr": "La station est opÊrÊe par le gouvernement.", + "it": "La stazione è gestita dal governo." } }, { @@ -859,7 +913,8 @@ "then": { "en": "The station is operated by a community-based, or informal organization.", "ja": "äģģ意å›ŖäŊ“ã‚„ã‚ŗミãƒĨニテã‚Ŗが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。", - "fr": "La station est opÊrÊe par une organisation informelle." + "fr": "La station est opÊrÊe par une organisation informelle.", + "it": "La stazione è gestita dalla comunità o un’organizzazione non ufficiale." } }, { @@ -871,7 +926,8 @@ "then": { "en": "The station is operated by a formal group of volunteers.", "ja": "å…Ŧį›Šå›ŖäŊ“が運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。", - "fr": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles." + "fr": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles.", + "it": "La stazione è gestita da un gruppo ufficiale di volontari." } }, { @@ -883,7 +939,8 @@ "then": { "en": "The station is privately operated.", "ja": "個äēēが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。", - "fr": "La station est opÊrÊe par un groupe privÊ." + "fr": "La station est opÊrÊe par un groupe privÊ.", + "it": "La stazione è gestita da un privato." } } ] @@ -899,14 +956,17 @@ "en": "Ambulance station", "ru": "ĐĄŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸", "ja": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ(æļˆé˜˛įŊ˛)", - "fr": "Station d’ambulances" + "fr": "Station d’ambulances", + "de": "Rettungswache", + "it": "Stazione delle ambulanze" }, "description": { "en": "Add an ambulance station to the map", "ja": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ(æļˆé˜˛įŊ˛)をマップãĢčŋŊ加する", "ru": "ДобавиŅ‚ŅŒ ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŽ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸ ĐŊĐ° ĐēĐ°Ņ€Ņ‚Ņƒ", "fr": "Ajouter une station d’ambulances à la carte", - "de": "Eine Rettungsstation der Karte hinzufÃŧgen" + "de": "Eine Rettungsstation der Karte hinzufÃŧgen", + "it": "Aggiungi una stazione delle ambulanza alla mappa" } } ], diff --git a/assets/themes/hailhydrant/logo.svg b/assets/themes/hailhydrant/logo.svg index 359f5df65..0c153b65f 100644 --- a/assets/themes/hailhydrant/logo.svg +++ b/assets/themes/hailhydrant/logo.svg @@ -1,6 +1,7 @@ - diff --git a/assets/themes/natuurpunt/natuurpunt.json b/assets/themes/natuurpunt/natuurpunt.json index 3ed14ee9e..c1331540e 100644 --- a/assets/themes/natuurpunt/natuurpunt.json +++ b/assets/themes/natuurpunt/natuurpunt.json @@ -64,9 +64,13 @@ }, "minzoom": 13, "minzoomVisible": 0, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/nature_reserve.svg" - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/nature_reserve.svg" + } + } + ] } }, { @@ -84,10 +88,14 @@ "isOsmCache": "duplicate" }, "minzoom": 1, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/nature_reserve.svg" - }, - "presets": [] + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/nature_reserve.svg" + }, + "presets": [] + } + ] } }, { @@ -103,9 +111,13 @@ "isOsmCache": true }, "minzoom": 1, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/information.svg" - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/information.svg" + } + } + ] } }, { @@ -122,19 +134,23 @@ "isOsmCache": true }, "minzoom": 10, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/trail.svg", - "mappings": [ - { - "if": "wheelchair=yes", - "then": "circle:#FE6F32;./assets/themes/natuurpunt/walk_wheelchair.svg" - }, - { - "if": "pushchair=yes", - "then": "circle:#FE6F32;./assets/themes/natuurpunt/pushchair.svg" + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/trail.svg", + "mappings": [ + { + "if": "wheelchair=yes", + "then": "circle:#FE6F32;./assets/themes/natuurpunt/walk_wheelchair.svg" + }, + { + "if": "pushchair=yes", + "then": "circle:#FE6F32;./assets/themes/natuurpunt/pushchair.svg" + } + ] } - ] - } + } + ] } }, { @@ -146,19 +162,23 @@ "geoJsonZoomLevel": 12, "isOsmCache": true }, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/toilets.svg", - "mappings": [ - { - "if": "wheelchair=yes", - "then": "circle:#FE6F32;./assets/themes/natuurpunt/wheelchair.svg" - }, - { - "if": "toilets:position=urinals", - "then": "circle:#FE6F32;./assets/themes/natuurpunt/urinal.svg" + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/toilets.svg", + "mappings": [ + { + "if": "wheelchair=yes", + "then": "circle:#FE6F32;./assets/themes/natuurpunt/wheelchair.svg" + }, + { + "if": "toilets:position=urinals", + "then": "circle:#FE6F32;./assets/themes/natuurpunt/urinal.svg" + } + ] } - ] - } + } + ] } }, { @@ -170,10 +190,14 @@ "geoJsonZoomLevel": 12, "isOsmCache": true }, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/birdhide.svg", - "mappings": null - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/birdhide.svg", + "mappings": null + } + } + ] } }, { @@ -185,9 +209,13 @@ "geoJsonZoomLevel": 12, "isOsmCache": true }, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/picnic_table.svg" - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/picnic_table.svg" + } + } + ] } }, { @@ -199,35 +227,39 @@ "geoJsonZoomLevel": 12, "isOsmCache": true }, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/drips.svg" - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/drips.svg" + } + } + ] } }, { "builtin": "parking", "override": { "minzoom": "16", - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/parking.svg", - "mappings": [ - { - "if": "amenity=bicycle_parking", - "then": "circle:#FE6F32;./assets/themes/natuurpunt/parkingbike.svg" - } - ] - }, - "iconOverlays": [ + "mapRendering": [ { - "if": "amenity=motorcycle_parking", - "then": "circle:#335D9F;./assets/themes/natuurpunt/parkingmotor.svg", - "badge": true + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/parking.svg", + "mappings": [ + { + "if": "amenity=bicycle_parking", + "then": "circle:#FE6F32;./assets/themes/natuurpunt/parkingbike.svg" + } + ] + }, + "iconOverlays": [ + { + "if": "capacity:disabled=yes", + "then": "circle:#335D9F;./assets/themes/natuurpunt/parkingwheels.svg", + "badge": true + } + ] }, - { - "if": "capacity:disabled=yes", - "then": "circle:#335D9F;./assets/themes/natuurpunt/parkingwheels.svg", - "badge": true - } + null ] } }, @@ -240,9 +272,13 @@ "geoJsonZoomLevel": 12, "isOsmCache": true }, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/information_board.svg" - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/information_board.svg" + } + } + ] } }, { @@ -254,9 +290,13 @@ "geoJsonZoomLevel": 12, "isOsmCache": true }, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/bench.svg" - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/bench.svg" + } + } + ] } }, { @@ -268,9 +308,13 @@ "geoJsonZoomLevel": 12, "isOsmCache": true }, - "icon": { - "render": "circle:#FE6F32;./assets/themes/natuurpunt/watermill.svg" - } + "mapRendering": [ + { + "icon": { + "render": "circle:#FE6F32;./assets/themes/natuurpunt/watermill.svg" + } + } + ] } } ], diff --git a/assets/themes/openwindpowermap/openwindpowermap.json b/assets/themes/openwindpowermap/openwindpowermap.json index a6b9f2c5c..48d78c89b 100644 --- a/assets/themes/openwindpowermap/openwindpowermap.json +++ b/assets/themes/openwindpowermap/openwindpowermap.json @@ -37,7 +37,8 @@ "en": "wind turbine", "nl": "windturbine", "fr": "Éolienne", - "de": "Windrad" + "de": "Windrad", + "it": "pala eolica" }, "source": { "osmTags": "generator:source=wind" @@ -48,14 +49,17 @@ "en": "wind turbine", "nl": "windturbine", "fr": "Êolienne", - "de": "Windrad" + "de": "Windrad", + "it": "pala eolica" }, "mappings": [ { "if": "name~*", "then": { "en": "{name}", - "fr": "{name}" + "fr": "{name}", + "eo": "{name}", + "it": "{name}" } } ] @@ -65,11 +69,13 @@ "id": "turbine-output", "render": { "en": "The power output of this wind turbine is {generator:output:electricity}.", - "fr": "La puissance gÊnÊrÊe par cette Êolienne est de {generator:output:electricity}." + "fr": "La puissance gÊnÊrÊe par cette Êolienne est de {generator:output:electricity}.", + "it": "La potenza generata da questa pala eolica è {generator:output:electricity}." }, "question": { "en": "What is the power output of this wind turbine? (e.g. 2.3 MW)", - "fr": "Quel est la puissance gÊnÊrÊe par cette Êolienne ?" + "fr": "Quel est la puissance gÊnÊrÊe par cette Êolienne ?", + "it": "Quant’è la potenza generata da questa pala eolica? (ad es. 2.3 MW)" }, "freeform": { "key": "generator:output:electricity", @@ -80,11 +86,13 @@ "id": "turbine-operator", "render": { "en": "This wind turbine is operated by {operator}.", - "fr": "Cette Êolienne est opÊrÊe par {operator}." + "fr": "Cette Êolienne est opÊrÊe par {operator}.", + "it": "Questa pala eolica è gestita da {operator}." }, "question": { "en": "Who operates this wind turbine?", - "fr": "Qui est l’exploitant de cette Êolienne ?" + "fr": "Qui est l’exploitant de cette Êolienne ?", + "it": "Chi gestisce questa pala eolica?" }, "freeform": { "key": "operator" @@ -94,11 +102,13 @@ "id": "turbine-height", "render": { "en": "The total height (including rotor radius) of this wind turbine is {height} metres.", - "fr": "La hauteur totale, incluant les pales, est de {height} mètres." + "fr": "La hauteur totale, incluant les pales, est de {height} mètres.", + "it": "L’altezza totale (raggio del rotore incluso) di questa pala eolica è di {height} metri." }, "question": { "en": "What is the total height of this wind turbine (including rotor radius), in metres?", - "fr": "Quelle est la hauteur totale de l’Êolienne en mètres, pales incluses ?" + "fr": "Quelle est la hauteur totale de l’Êolienne en mètres, pales incluses ?", + "it": "Qual è l’altezza (in metri e raggio del rotore incluso) di questa pala eolica?" }, "freeform": { "key": "height", @@ -109,11 +119,13 @@ "id": "turbine-diameter", "render": { "en": "The rotor diameter of this wind turbine is {rotor:diameter} metres.", - "fr": "Le diamètre du rotor est de {rotor:diameter} mètres." + "fr": "Le diamètre du rotor est de {rotor:diameter} mètres.", + "it": "Il diametro del rotore di questa pala eolica è di {rotor:diameter} metri." }, "question": { "en": "What is the rotor diameter of this wind turbine, in metres?", - "fr": "Quel est le diamètre du rotor en mètres ?" + "fr": "Quel est le diamètre du rotor en mètres ?", + "it": "Qual è il diametro (in metri) del rotore di questa pala eolica?" }, "freeform": { "key": "rotor:diameter", @@ -124,11 +136,13 @@ "id": "turbine-start-date", "render": { "en": "This wind turbine went into operation on/in {start_date}.", - "fr": "L’Êolienne est active depuis {start_date}." + "fr": "L’Êolienne est active depuis {start_date}.", + "it": "Questa pala eolica è entrata in funzione in data {start_date}." }, "question": { "en": "When did this wind turbine go into operation?", - "fr": "Depuis quand l’Êolienne est-elle en fonctionnement ?" + "fr": "Depuis quand l’Êolienne est-elle en fonctionnement ?", + "it": "Quando è entrata in funzione questa pala eolica?" }, "freeform": { "key": "start_date", @@ -147,7 +161,8 @@ "en": "wind turbine", "nl": "windturbine", "fr": "Éolienne", - "de": "Windrad" + "de": "Windrad", + "it": "pala eolica" } } ], @@ -167,7 +182,9 @@ "en": " megawatts", "nl": " megawatt", "fr": " megawatts", - "de": " Megawatt" + "de": " Megawatt", + "eo": " megavatoj", + "it": " megawatt" } }, { @@ -180,7 +197,10 @@ "en": " kilowatts", "nl": " kilowatt", "fr": " kilowatts", - "de": " Kilowatt" + "de": " Kilowatt", + "eo": " kilovatoj", + "it": " kilowatt", + "nb_NO": " kilowatt" } }, { @@ -193,7 +213,9 @@ "en": " watts", "nl": " watt", "fr": " watts", - "de": " Watt" + "de": " Watt", + "eo": " vatoj", + "it": " watt" } }, { @@ -206,7 +228,9 @@ "en": " gigawatts", "nl": " gigawatt", "fr": " gigawatts", - "de": " Gigawatt" + "de": " Gigawatt", + "eo": " gigavatoj", + "it": " gigawatt" } } ], @@ -227,7 +251,9 @@ "en": " meter", "nl": " meter", "fr": " mètres", - "de": " Meter" + "de": " Meter", + "eo": " metro", + "it": " metri" } } ] @@ -246,7 +272,8 @@ }, "iconSize": "40, 40, bottom", "location": [ - "point" + "point", + "centroid" ] } ] diff --git a/assets/themes/postboxes/post_office.svg b/assets/themes/postboxes/post_office.svg index ebdd76b49..fbf0b1943 100644 --- a/assets/themes/postboxes/post_office.svg +++ b/assets/themes/postboxes/post_office.svg @@ -1 +1,28 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/themes/postboxes/postbox.svg b/assets/themes/postboxes/postbox.svg index 05e6d95d4..aaa8d5103 100644 --- a/assets/themes/postboxes/postbox.svg +++ b/assets/themes/postboxes/postbox.svg @@ -1,7 +1,7 @@ - + - + - - - - - - - + + + - - - - - - - - + - - - + + + diff --git a/assets/themes/sidewalks/sidewalks.json b/assets/themes/sidewalks/sidewalks.json index f48503f39..71f1baa3c 100644 --- a/assets/themes/sidewalks/sidewalks.json +++ b/assets/themes/sidewalks/sidewalks.json @@ -110,12 +110,13 @@ "end" ], "icon": "circle:#ccc", - "iconSize": "20,20,center" + "iconSize": "3,3,center" }, { "#": "The center line", "color": "#ffffff55", - "width": 8 + "width": 8, + "lineCap": "butt" }, { "#": "left", @@ -145,7 +146,8 @@ } ] }, - "offset": -6 + "offset": -6, + "lineCap": "butt" }, { "color": "#888", @@ -172,10 +174,11 @@ } ] }, + "lineCap": "butt", "offset": 6 } ], "allowSplit": true } ] -} +} \ No newline at end of file diff --git a/assets/themes/speelplekken/license_info.json b/assets/themes/speelplekken/license_info.json index fbdc72859..2bfa81a9c 100644 --- a/assets/themes/speelplekken/license_info.json +++ b/assets/themes/speelplekken/license_info.json @@ -73,17 +73,6 @@ "https://www.provincieantwerpen.be/" ] }, - { - "path": "walking_route.svg", - "license": "CC-BY-SA 4.0", - "authors": [ - "Gitte Loos (Createlli) in opdracht van Provincie Antwerpen " - ], - "sources": [ - "https://createlli.com/", - "https://www.provincieantwerpen.be/" - ] - }, { "path": "youtube.svg", "license": "Logo (all rights reserved)", diff --git a/assets/themes/speelplekken/speelplekken.json b/assets/themes/speelplekken/speelplekken.json index ad8255ed4..303c588a6 100644 --- a/assets/themes/speelplekken/speelplekken.json +++ b/assets/themes/speelplekken/speelplekken.json @@ -33,10 +33,6 @@ "osmTags": "shadow=yes", "isOsmCache": false }, - "color": "#444444", - "width": { - "render": "1" - }, "mapRendering": [ { "color": "#444444", @@ -146,7 +142,6 @@ }, { "id": "walking_routes", - "icon": "./assets/themes/speelplekken/walking_route.svg", "name": { "nl": "Wandelroutes van provincie Antwerpen" }, @@ -245,29 +240,7 @@ "questions", "reviews" ], - "color": { - "render": "#6d6", - "mappings": [ - { - "if": "color~*", - "then": "{color}" - }, - { - "if": "colour~*", - "then": "{colour}" - } - ] - }, - "width": { - "render": "9" - }, "mapRendering": [ - { - "icon": "./assets/themes/speelplekken/walking_route.svg", - "location": [ - "point" - ] - }, { "color": { "render": "#6d6", diff --git a/assets/themes/street_lighting/street_lighting.json b/assets/themes/street_lighting/street_lighting.json index 8ba9ebd51..586d26b68 100644 --- a/assets/themes/street_lighting/street_lighting.json +++ b/assets/themes/street_lighting/street_lighting.json @@ -104,7 +104,11 @@ }, "source": { "osmTags": { - "and": ["highway!=", "service!=driveway", "highway!=platform"] + "and": [ + "highway!=", + "service!=driveway", + "highway!=platform" + ] } }, "minZoom": 19, @@ -123,10 +127,10 @@ "mapRendering": [ { "color": { - "render":"#a9a9a9", + "render": "#a9a9a9", "mappings": [ { - "if":"lit=no", + "if": "lit=no", "then": "#303030" } ] diff --git a/assets/themes/street_lighting/street_lighting_assen.json b/assets/themes/street_lighting/street_lighting_assen.json index 695347f42..7f98cdcd7 100644 --- a/assets/themes/street_lighting/street_lighting_assen.json +++ b/assets/themes/street_lighting/street_lighting_assen.json @@ -36,7 +36,10 @@ "title": "Straatlantaarn in dataset", "mapRendering": [ { - "location": "point", + "location": [ + "point", + "centroid" + ], "icon": { "render": "circle:red", "mappings": [ diff --git a/assets/themes/toerisme_vlaanderen/custom.css b/assets/themes/toerisme_vlaanderen/custom.css new file mode 100644 index 000000000..e030e7ed1 --- /dev/null +++ b/assets/themes/toerisme_vlaanderen/custom.css @@ -0,0 +1,3 @@ +.technical.questions { + display: none +} \ No newline at end of file diff --git a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json index 911cf7ac9..9f5f0c3cc 100644 --- a/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json +++ b/assets/themes/toerisme_vlaanderen/toerisme_vlaanderen.json @@ -3,6 +3,7 @@ "credits": "Commissioned theme for Toerisme Vlaandere", "maintainer": "MapComplete", "version": "0.0.1", + "customCss": "./assets/themes/toerisme_vlaanderen/custom.css", "language": [ "en", "nl" @@ -28,52 +29,14 @@ "startLon": 4.433, "widenFactor": 1.5, "layers": [ - { - "builtin": [ - "food", - "cafe_pub" - ], - "override": { - "minzoom": 17 - } - }, - { - "builtin": [ - "bench", - "picnic_table", - "waste_basket" - ], - "override": { - "minzoom": 19 - } - }, { "builtin": [ "charging_station", - "toilet", - "bike_repair_station" + "toilet" ], "override": { "minzoom": 14 } - }, - { - "builtin": [ - "playground" - ], - "override": { - "minzoom": 14, - "iconSize": "25,25,center" - } - }, - { - "builtin": [ - "binocular", - "observation_tower" - ], - "override": { - "minzoom": 10 - } } ], "hideFromOverview": true diff --git a/assets/themes/trees/trees.json b/assets/themes/trees/trees.json index 4cb72281e..85b4a69be 100644 --- a/assets/themes/trees/trees.json +++ b/assets/themes/trees/trees.json @@ -10,7 +10,8 @@ "zh_Hant": "樚木", "pl": "Drzewa", "de": "Bäume", - "nb_NO": "TrÃĻr" + "nb_NO": "TrÃĻr", + "id": "Pohon" }, "shortDescription": { "nl": "Breng bomen in kaart", @@ -45,7 +46,8 @@ "zh_Hant", "pl", "de", - "nb_NO" + "nb_NO", + "id" ], "maintainer": "Midgard", "icon": "./assets/themes/trees/logo.svg", diff --git a/assets/themes/uk_addresses/housenumber_add.svg b/assets/themes/uk_addresses/housenumber_add.svg index e156438b1..526c2378c 100644 --- a/assets/themes/uk_addresses/housenumber_add.svg +++ b/assets/themes/uk_addresses/housenumber_add.svg @@ -1,289 +1,288 @@ - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + viewBox="0 0 94.602035 93.872619" + id="svg12" + sodipodi:docname="housenumber_add.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + width="94.602036" + height="93.87262"> + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + style="fill:none" + id="g912" + transform="matrix(0.45212065,0,0,0.45212065,50.29421,49.55511)"> + + + + - diff --git a/assets/themes/uk_addresses/housenumber_ok.svg b/assets/themes/uk_addresses/housenumber_ok.svg index bf5f1b9db..b3f9447d4 100644 --- a/assets/themes/uk_addresses/housenumber_ok.svg +++ b/assets/themes/uk_addresses/housenumber_ok.svg @@ -1,75 +1,74 @@ - - - - image/svg+xml - - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + viewBox="0 0 87.992996 87.883003" + id="svg12" + sodipodi:docname="housenumber_ok.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + width="87.992996" + height="87.883003"> + + + + image/svg+xml + + + + + + + + d="m 14.044,0 h 59.905 c 7.7801,0 14.044,6.2634 14.044,14.044 v 59.795 c 0,7.7801 -6.2634,14.044 -14.044,14.044 H 14.044 C 6.2639,87.883 0,81.6196 0,73.839 V 14.044 C 0,6.2639 6.2634,0 14.044,0 Z" + style="fill:#495aad;paint-order:normal" + id="path6" + inkscape:connector-curvature="0"/> - + d="m 8.747,22.773 v 42.233 c 7.0389,0 14.078,7.0389 14.078,14.078 h 42.233 c 0,-7.0389 7.0389,-14.078 14.078,-14.078 V 22.773 c -7.0389,0 -14.078,-7.0389 -14.078,-14.078 H 22.825 c 0,7.0389 -7.0389,14.078 -14.078,14.078 z" + id="path8" + inkscape:connector-curvature="0" + style="fill:none;stroke:#ffffff;stroke-width:5.01520014"/> + + + + diff --git a/assets/themes/uk_addresses/housenumber_text.svg b/assets/themes/uk_addresses/housenumber_text.svg index 56d57373e..4becd5d9b 100644 --- a/assets/themes/uk_addresses/housenumber_text.svg +++ b/assets/themes/uk_addresses/housenumber_text.svg @@ -1,72 +1,73 @@ - - - - image/svg+xml - - - - - - - - - + + + + image/svg+xml + + + + + + + + + OK + y="47.845253" /> + OK + diff --git a/assets/themes/uk_addresses/housenumber_unknown.svg b/assets/themes/uk_addresses/housenumber_unknown.svg index 0c6c0e5c4..1d39b086b 100644 --- a/assets/themes/uk_addresses/housenumber_unknown.svg +++ b/assets/themes/uk_addresses/housenumber_unknown.svg @@ -1,70 +1,69 @@ - - - - image/svg+xml - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + viewBox="0 0 87.992996 87.883003" + id="svg12" + sodipodi:docname="housenumber.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + width="87.992996" + height="87.883003"> + + + + image/svg+xml + + + + + + - + d="m 14.044,0 h 59.905 c 7.7801,0 14.044,6.2634 14.044,14.044 v 59.795 c 0,7.7801 -6.2634,14.044 -14.044,14.044 H 14.044 C 6.2639,87.883 0,81.6196 0,73.839 V 14.044 C 0,6.2639 6.2634,0 14.044,0 Z" + style="fill:#495aad;paint-order:normal" + id="path6" + inkscape:connector-curvature="0"/> + + + + diff --git a/assets/themes/uk_addresses/housenumber_unknown_small.svg b/assets/themes/uk_addresses/housenumber_unknown_small.svg index f02f8e643..ef3a91c53 100644 --- a/assets/themes/uk_addresses/housenumber_unknown_small.svg +++ b/assets/themes/uk_addresses/housenumber_unknown_small.svg @@ -1,65 +1,64 @@ - - - - image/svg+xml - - - - - - - - - + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + viewBox="0 0 87.992996 87.883003" + id="svg12" + sodipodi:docname="housenumber_unknown_small.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + width="87.992996" + height="87.883003"> + + + + image/svg+xml + + + + + + + + + diff --git a/assets/themes/uk_addresses/islington_small_piece.geojson b/assets/themes/uk_addresses/islington_small_piece.geojson index ced6a1fb1..b6c9c14b3 100644 --- a/assets/themes/uk_addresses/islington_small_piece.geojson +++ b/assets/themes/uk_addresses/islington_small_piece.geojson @@ -1,2163 +1,2162 @@ - { - "type": "FeatureCollection", - "generator": "JOSM", - "features": [ - { - "type": "Feature", - "properties": { - "inspireid": "44760782", - "uprn_count": "19" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08528530407, - 51.52103754846 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760166", - "uprn_count": "18" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08518862375, - 51.52302887251 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53875715", - "uprn_count": "176" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08768220681, - 51.52027207654 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "48199892", - "uprn_count": "32" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09051161088, - 51.52328524465 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760298", - "uprn_count": "21" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08519096645, - 51.52229137569 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760648", - "uprn_count": "43" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09039984580, - 51.52168966695 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760158", - "uprn_count": "4" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08979845152, - 51.52470373164 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760268", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08584518403, - 51.52362781792 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760606", - "uprn_count": "34" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08574285775, - 51.52447487890 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760147", - "uprn_count": "13" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08478417875, - 51.52230226544 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760181", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08597751642, - 51.52262480980 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "59756691", - "uprn_count": "68" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09000674703, - 51.52412334790 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53839893", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08632490840, - 51.51956380364 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760254", - "uprn_count": "5" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08445931332, - 51.52362994921 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760985", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08550522898, - 51.52481338112 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53517508", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08531729267, - 51.52055437518 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760172", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08621709906, - 51.52245066605 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53815743", - "uprn_count": "28" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08609559738, - 51.52000280555 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760229", - "uprn_count": "2" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08466859613, - 51.52247735237 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "52054693", - "uprn_count": "4" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08869160634, - 51.52496110557 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760329", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08610136910, - 51.52318693588 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760753", - "uprn_count": "9" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08538513949, - 51.52424009690 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760164", - "uprn_count": "13" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09008514341, - 51.52505292621 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760216", - "uprn_count": "190" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08700282926, - 51.52503663329 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760279", - "uprn_count": "3" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08530920735, - 51.52549852437 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613792", - "uprn_count": "72" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08833908631, - 51.52631952661 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760639", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08580868931, - 51.52429800891 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760153", - "uprn_count": "4" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08456440427, - 51.52329504288 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760200", - "uprn_count": "95" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08770188351, - 51.52407460026 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "47582675", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08892578863, - 51.52706921088 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760263", - "uprn_count": "5" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08583263531, - 51.52548367268 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613655", - "uprn_count": "18" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08843733386, - 51.52669877413 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760564", - "uprn_count": "4" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09046694451, - 51.52125764642 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760143", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08576039998, - 51.52479998964 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "57943078", - "uprn_count": "80" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08990077541, - 51.52590434415 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760178", - "uprn_count": "13" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08479378350, - 51.52288142387 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760247", - "uprn_count": "16" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08570423028, - 51.52383831047 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "60347715", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08913137569, - 51.52638282816 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760169", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08741982002, - 51.52232472527 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53876178", - "uprn_count": "14" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08848929384, - 51.51968662476 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "58831132", - "uprn_count": "120" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08811742827, - 51.52524678003 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760702", - "uprn_count": "17" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08626679662, - 51.52229285532 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "56996893", - "uprn_count": "5" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08961930563, - 51.52736429296 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760161", - "uprn_count": "30" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08903973308, - 51.52443351442 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "57212602", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09025128250, - 51.52349660479 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760214", - "uprn_count": "30" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08491766007, - 51.52195690215 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760274", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08710416098, - 51.52394294309 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613782", - "uprn_count": "11" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08630939921, - 51.52567781493 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760635", - "uprn_count": "5" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08591747289, - 51.52406421610 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760150", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08736624492, - 51.52184217908 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760190", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08950436522, - 51.52301269883 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53842347", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08629952517, - 51.51902467199 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760261", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08870422830, - 51.52481415717 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613643", - "uprn_count": "108" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08522752552, - 51.52590169102 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760506", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08680870061, - 51.52270885497 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53529840", - "uprn_count": "14" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08752332940, - 51.52076211974 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "55694053", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08582489157, - 51.52423214013 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760232", - "uprn_count": "5" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08460415534, - 51.52252827681 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "55841333", - "uprn_count": "23" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09046401124, - 51.52500845422 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760366", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08665901033, - 51.52347731730 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760167", - "uprn_count": "13" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08523817483, - 51.52199801036 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53875840", - "uprn_count": "21" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08790573136, - 51.52005170198 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760300", - "uprn_count": "3" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08523971621, - 51.52550166079 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760673", - "uprn_count": "13" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08740702488, - 51.52227145851 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760159", - "uprn_count": "37" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09015395806, - 51.52469077487 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760210", - "uprn_count": "10" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08735406455, - 51.52190815063 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760269", - "uprn_count": "3" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08517606458, - 51.52360663718 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613767", - "uprn_count": "38" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08894666543, - 51.52728330710 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760630", - "uprn_count": "9" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08596436686, - 51.52399163027 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760148", - "uprn_count": "90" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08559244253, - 51.52179703997 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53555715", - "uprn_count": "23" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09069974009, - 51.52099643929 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "54843927", - "uprn_count": "36" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08536900467, - 51.52258204957 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760186", - "uprn_count": "60" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08749154622, - 51.52123763708 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "59797478", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08460319625, - 51.52285695300 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53842288", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08651616784, - 51.51911374360 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760258", - "uprn_count": "5" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08880030229, - 51.52508388296 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760450", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08877219383, - 51.52489267275 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760989", - "uprn_count": "3" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09008638232, - 51.52338474772 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53523418", - "uprn_count": "36" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08833393118, - 51.52076103473 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760173", - "uprn_count": "17" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08907044601, - 51.52478857712 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "56354285", - "uprn_count": "41" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08708248675, - 51.51950432943 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53815989", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08712150084, - 51.52007985063 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760230", - "uprn_count": "3" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08459866660, - 51.52256307871 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53894914", - "uprn_count": "53" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08932705394, - 51.52020780589 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760340", - "uprn_count": "57" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08700821071, - 51.52470369200 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760757", - "uprn_count": "94" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08629573687, - 51.52185922605 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760165", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08568241478, - 51.52253231799 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760289", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08494465189, - 51.52548899801 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760645", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08589810776, - 51.52411473063 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "57797640", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08496788091, - 51.52179114697 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "56970529", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08673035105, - 51.52606173015 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760156", - "uprn_count": "11" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08743964400, - 51.52240633893 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53673626", - "uprn_count": "20" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08457962682, - 51.52315791127 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760202", - "uprn_count": "63" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08514280715, - 51.52153941124 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "47582725", - "uprn_count": "2" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08903179064, - 51.52700439325 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760266", - "uprn_count": "66" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08958919395, - 51.52486571171 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613662", - "uprn_count": "2" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09055456990, - 51.52704347329 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760589", - "uprn_count": "10" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08739339578, - 51.52221604989 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "47863432", - "uprn_count": "20" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08656652832, - 51.52377354927 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760179", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08735058986, - 51.52204111283 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760248", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08545068911, - 51.52547159555 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760404", - "uprn_count": "23" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08569047233, - 51.52316678822 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "60347880", - "uprn_count": "156" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08873887407, - 51.52589244765 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760981", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08508447894, - 51.52250703445 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53517488", - "uprn_count": "13" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08540249619, - 51.52063943555 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760170", - "uprn_count": "23" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08950340680, - 51.52518881505 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53815719", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08580214812, - 51.51976909788 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760228", - "uprn_count": "4" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08461864254, - 51.52260180398 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53877676", - "uprn_count": "29" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08850676500, - 51.52023902397 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760314", - "uprn_count": "15" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08872036555, - 51.52471439061 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760751", - "uprn_count": "180" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08677326589, - 51.52308738524 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760162", - "uprn_count": "3" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08893070202, - 51.52527974813 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760215", - "uprn_count": "13" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08750749576, - 51.52270832689 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760278", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08509855123, - 51.52550722342 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613787", - "uprn_count": "11" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09045829084, - 51.52773739133 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760638", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08587468014, - 51.52417859166 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760151", - "uprn_count": "15" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08738616252, - 51.52175540266 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760195", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08577241806, - 51.52228063806 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760262", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08881139622, - 51.52515946758 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613654", - "uprn_count": "30" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08841210101, - 51.52660740062 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760559", - "uprn_count": "2" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09036979446, - 51.52201621806 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760051", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08651408714, - 51.52230407716 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53530202", - "uprn_count": "21" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08558143776, - 51.52017053246 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760177", - "uprn_count": "115" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09011378562, - 51.52279114581 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760235", - "uprn_count": "41" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08631542933, - 51.52256625361 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760839", - "uprn_count": "19" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.09069863118, - 51.52235527530 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760168", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08591546179, - 51.52346670045 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53876171", - "uprn_count": "112" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08780026547, - 51.51966975438 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760301", - "uprn_count": "4" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08517005909, - 51.52550434483 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760686", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08683964335, - 51.52238336083 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760160", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08554780465, - 51.52227517161 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "54668028", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08868565970, - 51.52707814958 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760271", - "uprn_count": "9" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08511551871, - 51.52564108792 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613778", - "uprn_count": "4" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08556279304, - 51.52566116202 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "58775318", - "uprn_count": "5" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08476391706, - 51.52322955215 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760634", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08575556474, - 51.52523072818 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760149", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08736477713, - 51.52209660754 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "57099529", - "uprn_count": "14" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08747715586, - 51.52255778464 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760189", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08645676995, - 51.52485658336 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53842336", - "uprn_count": "16" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08644851873, - 51.51932417520 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "55728650", - "uprn_count": "15" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08606772431, - 51.51932747399 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760259", - "uprn_count": "7" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08879089932, - 51.52501718371 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "56517732", - "uprn_count": "16" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08537944456, - 51.52045732895 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44613640", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08508351171, - 51.52602201951 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760498", - "uprn_count": "9" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08737904118, - 51.52215533460 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "60457716", - "uprn_count": "12" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08741608314, - 51.52162504468 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "50741600", - "uprn_count": "11" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08601118306, - 51.52237364065 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53528831", - "uprn_count": "18" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08796303430, - 51.52075390699 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760174", - "uprn_count": "3" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08975339083, - 51.52521825973 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "53815990", - "uprn_count": "6" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08698937756, - 51.52000181841 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760231", - "uprn_count": "1" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08485451783, - 51.52255188290 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "51082874", - "uprn_count": "15" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08930634369, - 51.52701309542 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "44760352", - "uprn_count": "14" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08734604831, - 51.52197314390 - ] - } - }, - { - "type": "Feature", - "properties": { - "inspireid": "56669648", - "uprn_count": "8" - }, - "geometry": { - "type": "Point", - "coordinates": [ - -0.08851621061, - 51.52684922637 - ] - } - } - ] + "type": "FeatureCollection", + "generator": "JOSM", + "features": [ + { + "type": "Feature", + "properties": { + "inspireid": "44760782", + "uprn_count": "19" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08528530407, + 51.52103754846 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760166", + "uprn_count": "18" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08518862375, + 51.52302887251 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53875715", + "uprn_count": "176" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08768220681, + 51.52027207654 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "48199892", + "uprn_count": "32" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09051161088, + 51.52328524465 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760298", + "uprn_count": "21" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08519096645, + 51.52229137569 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760648", + "uprn_count": "43" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09039984580, + 51.52168966695 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760158", + "uprn_count": "4" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08979845152, + 51.52470373164 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760268", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08584518403, + 51.52362781792 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760606", + "uprn_count": "34" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08574285775, + 51.52447487890 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760147", + "uprn_count": "13" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08478417875, + 51.52230226544 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760181", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08597751642, + 51.52262480980 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "59756691", + "uprn_count": "68" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09000674703, + 51.52412334790 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53839893", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08632490840, + 51.51956380364 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760254", + "uprn_count": "5" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08445931332, + 51.52362994921 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760985", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08550522898, + 51.52481338112 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53517508", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08531729267, + 51.52055437518 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760172", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08621709906, + 51.52245066605 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53815743", + "uprn_count": "28" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08609559738, + 51.52000280555 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760229", + "uprn_count": "2" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08466859613, + 51.52247735237 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "52054693", + "uprn_count": "4" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08869160634, + 51.52496110557 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760329", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08610136910, + 51.52318693588 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760753", + "uprn_count": "9" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08538513949, + 51.52424009690 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760164", + "uprn_count": "13" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09008514341, + 51.52505292621 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760216", + "uprn_count": "190" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08700282926, + 51.52503663329 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760279", + "uprn_count": "3" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08530920735, + 51.52549852437 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613792", + "uprn_count": "72" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08833908631, + 51.52631952661 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760639", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08580868931, + 51.52429800891 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760153", + "uprn_count": "4" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08456440427, + 51.52329504288 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760200", + "uprn_count": "95" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08770188351, + 51.52407460026 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "47582675", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08892578863, + 51.52706921088 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760263", + "uprn_count": "5" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08583263531, + 51.52548367268 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613655", + "uprn_count": "18" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08843733386, + 51.52669877413 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760564", + "uprn_count": "4" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09046694451, + 51.52125764642 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760143", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08576039998, + 51.52479998964 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "57943078", + "uprn_count": "80" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08990077541, + 51.52590434415 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760178", + "uprn_count": "13" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08479378350, + 51.52288142387 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760247", + "uprn_count": "16" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08570423028, + 51.52383831047 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "60347715", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08913137569, + 51.52638282816 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760169", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08741982002, + 51.52232472527 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53876178", + "uprn_count": "14" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08848929384, + 51.51968662476 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "58831132", + "uprn_count": "120" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08811742827, + 51.52524678003 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760702", + "uprn_count": "17" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08626679662, + 51.52229285532 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "56996893", + "uprn_count": "5" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08961930563, + 51.52736429296 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760161", + "uprn_count": "30" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08903973308, + 51.52443351442 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "57212602", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09025128250, + 51.52349660479 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760214", + "uprn_count": "30" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08491766007, + 51.52195690215 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760274", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08710416098, + 51.52394294309 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613782", + "uprn_count": "11" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08630939921, + 51.52567781493 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760635", + "uprn_count": "5" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08591747289, + 51.52406421610 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760150", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08736624492, + 51.52184217908 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760190", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08950436522, + 51.52301269883 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53842347", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08629952517, + 51.51902467199 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760261", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08870422830, + 51.52481415717 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613643", + "uprn_count": "108" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08522752552, + 51.52590169102 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760506", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08680870061, + 51.52270885497 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53529840", + "uprn_count": "14" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08752332940, + 51.52076211974 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "55694053", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08582489157, + 51.52423214013 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760232", + "uprn_count": "5" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08460415534, + 51.52252827681 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "55841333", + "uprn_count": "23" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09046401124, + 51.52500845422 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760366", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08665901033, + 51.52347731730 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760167", + "uprn_count": "13" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08523817483, + 51.52199801036 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53875840", + "uprn_count": "21" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08790573136, + 51.52005170198 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760300", + "uprn_count": "3" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08523971621, + 51.52550166079 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760673", + "uprn_count": "13" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08740702488, + 51.52227145851 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760159", + "uprn_count": "37" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09015395806, + 51.52469077487 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760210", + "uprn_count": "10" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08735406455, + 51.52190815063 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760269", + "uprn_count": "3" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08517606458, + 51.52360663718 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613767", + "uprn_count": "38" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08894666543, + 51.52728330710 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760630", + "uprn_count": "9" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08596436686, + 51.52399163027 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760148", + "uprn_count": "90" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08559244253, + 51.52179703997 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53555715", + "uprn_count": "23" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09069974009, + 51.52099643929 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "54843927", + "uprn_count": "36" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08536900467, + 51.52258204957 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760186", + "uprn_count": "60" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08749154622, + 51.52123763708 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "59797478", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08460319625, + 51.52285695300 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53842288", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08651616784, + 51.51911374360 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760258", + "uprn_count": "5" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08880030229, + 51.52508388296 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760450", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08877219383, + 51.52489267275 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760989", + "uprn_count": "3" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09008638232, + 51.52338474772 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53523418", + "uprn_count": "36" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08833393118, + 51.52076103473 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760173", + "uprn_count": "17" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08907044601, + 51.52478857712 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "56354285", + "uprn_count": "41" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08708248675, + 51.51950432943 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53815989", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08712150084, + 51.52007985063 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760230", + "uprn_count": "3" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08459866660, + 51.52256307871 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53894914", + "uprn_count": "53" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08932705394, + 51.52020780589 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760340", + "uprn_count": "57" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08700821071, + 51.52470369200 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760757", + "uprn_count": "94" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08629573687, + 51.52185922605 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760165", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08568241478, + 51.52253231799 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760289", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08494465189, + 51.52548899801 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760645", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08589810776, + 51.52411473063 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "57797640", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08496788091, + 51.52179114697 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "56970529", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08673035105, + 51.52606173015 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760156", + "uprn_count": "11" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08743964400, + 51.52240633893 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53673626", + "uprn_count": "20" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08457962682, + 51.52315791127 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760202", + "uprn_count": "63" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08514280715, + 51.52153941124 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "47582725", + "uprn_count": "2" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08903179064, + 51.52700439325 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760266", + "uprn_count": "66" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08958919395, + 51.52486571171 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613662", + "uprn_count": "2" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09055456990, + 51.52704347329 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760589", + "uprn_count": "10" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08739339578, + 51.52221604989 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "47863432", + "uprn_count": "20" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08656652832, + 51.52377354927 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760179", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08735058986, + 51.52204111283 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760248", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08545068911, + 51.52547159555 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760404", + "uprn_count": "23" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08569047233, + 51.52316678822 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "60347880", + "uprn_count": "156" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08873887407, + 51.52589244765 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760981", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08508447894, + 51.52250703445 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53517488", + "uprn_count": "13" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08540249619, + 51.52063943555 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760170", + "uprn_count": "23" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08950340680, + 51.52518881505 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53815719", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08580214812, + 51.51976909788 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760228", + "uprn_count": "4" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08461864254, + 51.52260180398 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53877676", + "uprn_count": "29" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08850676500, + 51.52023902397 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760314", + "uprn_count": "15" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08872036555, + 51.52471439061 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760751", + "uprn_count": "180" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08677326589, + 51.52308738524 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760162", + "uprn_count": "3" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08893070202, + 51.52527974813 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760215", + "uprn_count": "13" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08750749576, + 51.52270832689 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760278", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08509855123, + 51.52550722342 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613787", + "uprn_count": "11" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09045829084, + 51.52773739133 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760638", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08587468014, + 51.52417859166 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760151", + "uprn_count": "15" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08738616252, + 51.52175540266 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760195", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08577241806, + 51.52228063806 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760262", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08881139622, + 51.52515946758 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613654", + "uprn_count": "30" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08841210101, + 51.52660740062 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760559", + "uprn_count": "2" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09036979446, + 51.52201621806 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760051", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08651408714, + 51.52230407716 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53530202", + "uprn_count": "21" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08558143776, + 51.52017053246 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760177", + "uprn_count": "115" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09011378562, + 51.52279114581 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760235", + "uprn_count": "41" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08631542933, + 51.52256625361 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760839", + "uprn_count": "19" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.09069863118, + 51.52235527530 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760168", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08591546179, + 51.52346670045 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53876171", + "uprn_count": "112" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08780026547, + 51.51966975438 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760301", + "uprn_count": "4" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08517005909, + 51.52550434483 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760686", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08683964335, + 51.52238336083 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760160", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08554780465, + 51.52227517161 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "54668028", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08868565970, + 51.52707814958 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760271", + "uprn_count": "9" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08511551871, + 51.52564108792 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613778", + "uprn_count": "4" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08556279304, + 51.52566116202 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "58775318", + "uprn_count": "5" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08476391706, + 51.52322955215 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760634", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08575556474, + 51.52523072818 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760149", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08736477713, + 51.52209660754 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "57099529", + "uprn_count": "14" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08747715586, + 51.52255778464 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760189", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08645676995, + 51.52485658336 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53842336", + "uprn_count": "16" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08644851873, + 51.51932417520 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "55728650", + "uprn_count": "15" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08606772431, + 51.51932747399 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760259", + "uprn_count": "7" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08879089932, + 51.52501718371 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "56517732", + "uprn_count": "16" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08537944456, + 51.52045732895 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44613640", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08508351171, + 51.52602201951 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760498", + "uprn_count": "9" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08737904118, + 51.52215533460 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "60457716", + "uprn_count": "12" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08741608314, + 51.52162504468 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "50741600", + "uprn_count": "11" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08601118306, + 51.52237364065 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53528831", + "uprn_count": "18" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08796303430, + 51.52075390699 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760174", + "uprn_count": "3" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08975339083, + 51.52521825973 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "53815990", + "uprn_count": "6" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08698937756, + 51.52000181841 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760231", + "uprn_count": "1" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08485451783, + 51.52255188290 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "51082874", + "uprn_count": "15" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08930634369, + 51.52701309542 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "44760352", + "uprn_count": "14" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08734604831, + 51.52197314390 + ] + } + }, + { + "type": "Feature", + "properties": { + "inspireid": "56669648", + "uprn_count": "8" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.08851621061, + 51.52684922637 + ] + } + } + ] } \ No newline at end of file diff --git a/assets/themes/uk_addresses/uk_addresses.json b/assets/themes/uk_addresses/uk_addresses.json index 2c4753068..6d3b5f6fc 100644 --- a/assets/themes/uk_addresses/uk_addresses.json +++ b/assets/themes/uk_addresses/uk_addresses.json @@ -3,7 +3,8 @@ "title": { "en": "UK Addresses", "de": "Adressen in Großbritannien", - "it": "Indirizzi UK" + "it": "Indirizzi UK", + "id": "Alamat Inggris" }, "shortDescription": { "en": "Help to build an open dataset of UK addresses", @@ -14,14 +15,15 @@ "en": "Contribute to OpenStreetMap by filling out address information", "nl": "Draag bij aan OpenStreetMap door adresinformatie in te vullen", "de": "Tragen Sie zu OpenStreetMap bei, indem Sie Adressinformationen ausfÃŧllen", - "it": "Contribuisci a OpenStreetMap inserendo le informazioni sull’indirizzo" + "it": "Contribuisci a OpenStreetMap inserendo le informazioni sull’indirizzo", + "id": "Berkontribusi untuk OpenStreetMap dengan mengisi informasi alamat" }, "language": [ "en", "de", "it", - "nl", - "nb_NO" + "id", + "nl" ], "maintainer": "Pieter Vander Vennet, Rob Nickerson, Russ Garrett", "icon": "./assets/themes/uk_addresses/housenumber_unknown.svg", @@ -77,7 +79,7 @@ } } ], - "mapRendering": [] + "mapRendering": null }, { "id": "to_import", @@ -90,12 +92,17 @@ "name": "Addresses to check", "minzoom": 14, "title": { - "render": "Address to be determined" + "render": { + "en": "Address to be determined", + "id": "Alamat yang diketahui" + } }, "tagRenderings": [ { "id": "uk_addresses_explanation", - "render": "There probably is an address here" + "render": { + "en": "There probably is an address here" + } }, { "id": "uk_addresses_embedding_outline", @@ -103,11 +110,15 @@ "mappings": [ { "if": "_embedding_object:id=true", - "then": "The INSPIRE-polygon containing this point has at least one address contained" + "then": { + "en": "The INSPIRE-polygon containing this point has at least one address contained" + } }, { "if": "_embedding_object:id=false", - "then": "The INSPIRE-polygon containing this point has no addresses contained" + "then": { + "en": "The INSPIRE-polygon containing this point has no addresses contained" + } } ], "condition": "_embedding_object:id~*" @@ -169,10 +180,12 @@ "render": "40,40,center" }, "location": [ - "point" + "point", + "centroid" ] } - ] + ], + "description": "Alamat" }, { "id": "addresses", @@ -312,7 +325,7 @@ }, { "id": "fixme", - "render": "Fixme description{render}", + "render": "Fixme description{fixme}", "question": { "en": "What should be fixed here? Please explain" }, diff --git a/assets/welcome_message.json b/assets/welcome_message.json index d2a3fc257..0d53ded19 100644 --- a/assets/welcome_message.json +++ b/assets/welcome_message.json @@ -29,9 +29,6 @@ "message": "In more normal circumstances, there would be a very cool gathering in Leipzig around this time with thousands of tech-minded people. However, due to some well-known circumstances, it is a virtual-only event this year as well. However, there might be a local hackerspace nearby to fill in this void", "featured_theme": "hackerspaces" }, - - - { "start_date": "2021-11-01", "end_date": "2021-11-07", diff --git a/css/index-tailwind-output.css b/css/index-tailwind-output.css index 658e97769..72f9f9cfb 100644 --- a/css/index-tailwind-output.css +++ b/css/index-tailwind-output.css @@ -1482,6 +1482,11 @@ video { line-height: 1.75rem; } +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + .text-sm { font-size: 0.875rem; line-height: 1.25rem; @@ -1497,11 +1502,6 @@ video { line-height: 1.5rem; } -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - .text-4xl { font-size: 2.25rem; line-height: 2.5rem; @@ -1998,12 +1998,6 @@ li::marker { padding: 0.15em 0.3em; } -.question form { - display: inline-block; - max-width: 90vw; - width: 100%; -} - .invalid { box-shadow: 0 0 10px #ff5353; height: -webkit-min-content; diff --git a/css/tagrendering.css b/css/tagrendering.css index 6e154e6c1..fa8106f58 100644 --- a/css/tagrendering.css +++ b/css/tagrendering.css @@ -11,8 +11,14 @@ color: var(--subtle-detail-color-contrast); padding: 1em; border-radius: 1em; - font-size: larger; + font-size: larger !important; + overflow-wrap: initial; +} +.question form { + display: inline-block; + max-width: 90vw; + width: 100%; } .question svg { diff --git a/index.css b/index.css index d72c0a3e6..6efe3035a 100644 --- a/index.css +++ b/index.css @@ -20,7 +20,7 @@ .z-above-controls { z-index: 10001 } - + .w-160 { width: 40rem; } @@ -289,12 +289,6 @@ li::marker { padding: 0.15em 0.3em; } -.question form { - display: inline-block; - max-width: 90vw; - width: 100%; -} - .invalid { box-shadow: 0 0 10px #ff5353; height: min-content; @@ -370,12 +364,12 @@ li::marker { opacity: 0; transform: rotate(-30deg); } - + 6% { opacity: 1; transform: rotate(-30deg); } - + 12% { opacity: 1; transform: rotate(-45deg); @@ -396,7 +390,7 @@ li::marker { opacity: 0; transform: rotate(-30deg); } - + 100% { opacity: 0; transform: rotate(-30deg); diff --git a/index.html b/index.html index 499018fe6..68e3f9fc4 100644 --- a/index.html +++ b/index.html @@ -11,8 +11,8 @@ - - + + diff --git a/index.ts b/index.ts index dcf030c48..6496e1cdc 100644 --- a/index.ts +++ b/index.ts @@ -35,11 +35,11 @@ if (location.href.startsWith("http://buurtnatuur.be")) { class Init { public static Init(layoutToUse: LayoutConfig, encoded: string) { - if(layoutToUse === null){ + if (layoutToUse === null) { // Something went wrong, error message is already on screen return; } - + if (layoutToUse === undefined) { // No layout found new AllThemesGui() @@ -69,7 +69,7 @@ class Init { // This 'leaks' the global state via the window object, useful for debugging // @ts-ignore window.mapcomplete_state = State.state; - + new DefaultGUI(State.state, guiState) if (encoded !== undefined && encoded.length > 10) { diff --git a/langs/de.json b/langs/de.json index 72539a730..6d0addc48 100644 --- a/langs/de.json +++ b/langs/de.json @@ -1,288 +1,288 @@ { - "image": { - "addPicture": "Bild hinzufÃŧgen", - "uploadingPicture": "Bild wird hochgeladenâ€Ļ", - "uploadingMultiple": "{count} Bilder hochladenâ€Ļ", - "pleaseLogin": "Bitte einloggen, um ein Bild hinzuzufÃŧgen", - "willBePublished": "Ihr Bild wird verÃļffentlicht: ", - "cco": "als 'Public Domain'", - "ccbs": "unter der 'CC-BY-SA-Lizenz'", - "ccb": "unter der 'CC-BY-Lizenz'", - "uploadFailed": "Wir konnten Ihr Bild nicht hochladen. Haben Sie eine aktive Internetverbindung und sind APIs von Dritten erlaubt? Der Brave Browser oder UMatrix blockieren diese eventuell.", - "respectPrivacy": "Bitte respektieren Sie die Privatsphäre. Fotografieren Sie weder Personen noch Nummernschilder. Benutzen Sie keine urheberrechtlich geschÃŧtzten Quellen wie z.B. Google Maps oder Google Streetview.", - "uploadDone": "Ihr Bild wurde hinzugefÃŧgt. Vielen Dank fÃŧr Ihre Hilfe!", - "dontDelete": "Abbrechen", - "doDelete": "Bild entfernen", - "isDeleted": "GelÃļscht", - "uploadMultipleDone": "{count} Bilder wurden hinzugefÃŧgt. Vielen Dank fÃŧr die Hilfe!", - "toBig": "Ihr Bild ist zu groß, da es {actual_size} ist. Bitte verwenden Sie Bilder von hÃļchstens {max_size}" + "image": { + "addPicture": "Bild hinzufÃŧgen", + "uploadingPicture": "Bild wird hochgeladenâ€Ļ", + "uploadingMultiple": "{count} Bilder hochladenâ€Ļ", + "pleaseLogin": "Bitte einloggen, um ein Bild hinzuzufÃŧgen", + "willBePublished": "Ihr Bild wird verÃļffentlicht: ", + "cco": "als 'Public Domain'", + "ccbs": "unter der 'CC-BY-SA-Lizenz'", + "ccb": "unter der 'CC-BY-Lizenz'", + "uploadFailed": "Wir konnten Ihr Bild nicht hochladen. Haben Sie eine aktive Internetverbindung und sind APIs von Dritten erlaubt? Der Brave Browser oder UMatrix blockieren diese eventuell.", + "respectPrivacy": "Bitte respektieren Sie die Privatsphäre. Fotografieren Sie weder Personen noch Nummernschilder. Benutzen Sie keine urheberrechtlich geschÃŧtzten Quellen wie z.B. Google Maps oder Google Streetview.", + "uploadDone": "Ihr Bild wurde hinzugefÃŧgt. Vielen Dank fÃŧr Ihre Hilfe!", + "dontDelete": "Abbrechen", + "doDelete": "Bild entfernen", + "isDeleted": "GelÃļscht", + "uploadMultipleDone": "{count} Bilder wurden hinzugefÃŧgt. Vielen Dank fÃŧr die Hilfe!", + "toBig": "Ihr Bild ist zu groß, da es {actual_size} ist. Bitte verwenden Sie Bilder von hÃļchstens {max_size}" + }, + "centerMessage": { + "loadingData": "Daten werden geladenâ€Ļ", + "zoomIn": "Ausschnitt vergrÃļßern, um Daten anzuzeigen oder zu bearbeiten", + "ready": "Erledigt!", + "retrying": "Laden von Daten fehlgeschlagen. Erneuter Versuch in {count} Sekunden â€Ļ" + }, + "index": { + "#": "Dieser Text wird Ãŧber die Thema-Auswahlschaltfläche gezeigt, wenn kein Thema geladen ist", + "title": "Willkommen bei MapComplete", + "intro": "MapComplete ist eine OpenStreetMap-Anwendung, mit der Informationen zu Objekten eines bestimmten Themas angezeigt und angepasst werden kÃļnnen.", + "pickTheme": "Wähle unten ein Thema, um zu starten.", + "featuredThemeTitle": "Diese Woche im Blickpunkt" + }, + "general": { + "loginWithOpenStreetMap": "Bei OpenStreetMap anmelden", + "welcomeBack": "Sie sind eingeloggt, willkommen zurÃŧck!", + "loginToStart": "Anmelden, um diese Frage zu beantworten", + "search": { + "search": "Einen Ort suchen", + "searching": "Suchen â€Ļ", + "nothing": "Nichts gefundenâ€Ļ", + "error": "Etwas ging schiefâ€Ļ" }, - "centerMessage": { - "loadingData": "Daten werden geladenâ€Ļ", - "zoomIn": "Ausschnitt vergrÃļßern, um Daten anzuzeigen oder zu bearbeiten", - "ready": "Erledigt!", - "retrying": "Laden von Daten fehlgeschlagen. Erneuter Versuch in {count} Sekunden â€Ļ" + "returnToTheMap": "ZurÃŧck zur Karte", + "save": "Speichern", + "cancel": "Abbrechen", + "skip": "Frage Ãŧberspringen", + "oneSkippedQuestion": "Eine Frage wurde Ãŧbersprungen", + "skippedQuestions": "Einige Fragen wurden Ãŧbersprungen", + "number": "Zahl", + "osmLinkTooltip": "Dieses Element auf OpenStreetMap durchsuchen fÃŧr den Verlauf und weitere BearbeitungsmÃļglichkeiten", + "add": { + "addNew": "Hier eine neue {category} hinzufÃŧgen", + "title": "Punkt hinzufÃŧgen?", + "intro": "Sie haben irgendwo geklickt, wo noch keine Daten bekannt sind.
", + "pleaseLogin": "Bitte loggen Sie sich ein, um einen neuen Punkt hinzuzufÃŧgen", + "zoomInFurther": "Weiter einzoomen, um einen Punkt hinzuzufÃŧgen.", + "stillLoading": "Die Daten werden noch geladen. Bitte warten Sie etwas, bevor Sie einen neuen Punkt hinzufÃŧgen.", + "confirmIntro": "

Hier einen {title} hinzufÃŧgen?

Der Punkt, den Sie hier anlegen, wird fÃŧr alle sichtbar sein. Bitte fÃŧgen Sie der Karte nur dann Dinge hinzu, wenn sie wirklich existieren. Viele Anwendungen verwenden diese Daten.", + "confirmButton": "FÃŧgen Sie hier eine {category} hinzu.
Ihre Ergänzung ist fÃŧr alle sichtbar
", + "openLayerControl": "Das Ebenen-Kontrollkästchen Ãļffnen", + "layerNotEnabled": "Die Ebene {layer} ist nicht aktiviert. Aktivieren Sie diese Ebene, um einen Punkt hinzuzufÃŧgen", + "addNewMapLabel": "Neues Element hinzufÃŧgen", + "presetInfo": "Der neue POI hat {tags}", + "disableFiltersExplanation": "Einige Elemente kÃļnnen durch einen Filter ausgeblendet sein", + "disableFilters": "Alle Filter deaktivieren", + "hasBeenImported": "Dieser Punkt wurde bereits importiert", + "zoomInMore": "VergrÃļßern Sie die Ansicht, um dieses Element zu importieren", + "warnVisibleForEveryone": "Ihre Ergänzung wird fÃŧr alle sichtbar sein" }, - "index": { - "#": "Dieser Text wird Ãŧber die Thema-Auswahlschaltfläche gezeigt, wenn kein Thema geladen ist", - "title": "Willkommen bei MapComplete", - "intro": "MapComplete ist eine OpenStreetMap-Anwendung, mit der Informationen zu Objekten eines bestimmten Themas angezeigt und angepasst werden kÃļnnen.", - "pickTheme": "Wähle unten ein Thema, um zu starten.", - "featuredThemeTitle": "Diese Woche im Blickpunkt" + "pickLanguage": "Sprache wählen: ", + "about": "OpenStreetMap fÃŧr ein bestimmtes Thema einfach bearbeiten und hinzufÃŧgen", + "nameInlineQuestion": "Der Name dieser {category} ist $$$", + "noNameCategory": "{category} ohne Namen", + "questions": { + "phoneNumberOf": "Wie lautet die Telefonnummer der {category}?", + "phoneNumberIs": "Die Telefonnummer der {category} lautet {phone}", + "websiteOf": "Was ist die Website der {category}?", + "websiteIs": "Webseite: {website}", + "emailOf": "Wie lautet die E-Mail-Adresse der {category}?", + "emailIs": "Die E-Mail-Adresse dieser {category} lautet {email}" }, - "general": { - "loginWithOpenStreetMap": "Bei OpenStreetMap anmelden", - "welcomeBack": "Sie sind eingeloggt, willkommen zurÃŧck!", - "loginToStart": "Anmelden, um diese Frage zu beantworten", - "search": { - "search": "Einen Ort suchen", - "searching": "Suchen â€Ļ", - "nothing": "Nichts gefundenâ€Ļ", - "error": "Etwas ging schiefâ€Ļ" - }, - "returnToTheMap": "ZurÃŧck zur Karte", - "save": "Speichern", - "cancel": "Abbrechen", - "skip": "Frage Ãŧberspringen", - "oneSkippedQuestion": "Eine Frage wurde Ãŧbersprungen", - "skippedQuestions": "Einige Fragen wurden Ãŧbersprungen", - "number": "Zahl", - "osmLinkTooltip": "Dieses Element auf OpenStreetMap durchsuchen fÃŧr den Verlauf und weitere BearbeitungsmÃļglichkeiten", - "add": { - "addNew": "Hier eine neue {category} hinzufÃŧgen", - "title": "Punkt hinzufÃŧgen?", - "intro": "Sie haben irgendwo geklickt, wo noch keine Daten bekannt sind.
", - "pleaseLogin": "Bitte loggen Sie sich ein, um einen neuen Punkt hinzuzufÃŧgen", - "zoomInFurther": "Weiter einzoomen, um einen Punkt hinzuzufÃŧgen.", - "stillLoading": "Die Daten werden noch geladen. Bitte warten Sie etwas, bevor Sie einen neuen Punkt hinzufÃŧgen.", - "confirmIntro": "

Hier einen {title} hinzufÃŧgen?

Der Punkt, den Sie hier anlegen, wird fÃŧr alle sichtbar sein. Bitte fÃŧgen Sie der Karte nur dann Dinge hinzu, wenn sie wirklich existieren. Viele Anwendungen verwenden diese Daten.", - "confirmButton": "FÃŧgen Sie hier eine {category} hinzu.
Ihre Ergänzung ist fÃŧr alle sichtbar
", - "openLayerControl": "Das Ebenen-Kontrollkästchen Ãļffnen", - "layerNotEnabled": "Die Ebene {layer} ist nicht aktiviert. Aktivieren Sie diese Ebene, um einen Punkt hinzuzufÃŧgen", - "addNewMapLabel": "Neues Element hinzufÃŧgen", - "presetInfo": "Der neue POI hat {tags}", - "disableFiltersExplanation": "Einige Elemente kÃļnnen durch einen Filter ausgeblendet sein", - "disableFilters": "Alle Filter deaktivieren", - "hasBeenImported": "Dieser Punkt wurde bereits importiert", - "zoomInMore": "VergrÃļßern Sie die Ansicht, um dieses Element zu importieren", - "warnVisibleForEveryone": "Ihre Ergänzung wird fÃŧr alle sichtbar sein" - }, - "pickLanguage": "Sprache wählen: ", - "about": "OpenStreetMap fÃŧr ein bestimmtes Thema einfach bearbeiten und hinzufÃŧgen", - "nameInlineQuestion": "Der Name dieser {category} ist $$$", - "noNameCategory": "{category} ohne Namen", - "questions": { - "phoneNumberOf": "Wie lautet die Telefonnummer der {category}?", - "phoneNumberIs": "Die Telefonnummer der {category} lautet {phone}", - "websiteOf": "Was ist die Website der {category}?", - "websiteIs": "Webseite: {website}", - "emailOf": "Wie lautet die E-Mail-Adresse der {category}?", - "emailIs": "Die E-Mail-Adresse dieser {category} lautet {email}" - }, - "openStreetMapIntro": "

Eine freie Karte

Wäre es nicht toll, wenn es eine freie Karte gäbe, die von jedem angepasst und genutzt werden kÃļnnte? Eine Karte, zu der jeder Informationen hinzufÃŧgen kann? Dann bräuchte man all diese Webseiten mit unterschiedlichen, eingeschränkten und veralteten Karten nicht mehr.

OpenStreetMap ist diese freie Karte. Alle Kartendaten kÃļnnen kostenlos verwendet werden (mit Attribution und VerÃļffentlichung von Änderungen an diesen Daten). DarÃŧber hinaus kÃļnnen Sie die Karte kostenlos ändern und Fehler beheben, wenn Sie ein Konto erstellen. Diese Webseite basiert ebenfalls auf OpenStreetMap. Wenn Sie eine Frage hier beantworten, geht die Antwort auch dorthin.

Viele Menschen und Anwendungen nutzen OpenStreetMap bereits: Maps.me, OsmAnd, verschiedene spezialisierte Routenplaner, die Hintergrundkarten auf Facebook, Instagram, ...<br/>Sogar Apple Maps und Bing Maps verwenden OpenStreetMap in ihren Karten!

Wenn Sie hier einen Punkt hinzufÃŧgen oder eine Frage beantworten, wird er nach einer Weile in all diesen Anwendungen sichtbar sein.

", - "sharescreen": { - "intro": "

Diese Karte teilen

Sie kÃļnnen diese Karte teilen, indem Sie den untenstehenden Link kopieren und an Freunde und Familie schicken:", - "addToHomeScreen": "

Zum Startbildschirm hinzufÃŧgen

Sie kÃļnnen diese Webseite zum Startbildschirm Ihres Smartphones hinzufÃŧgen, um ein natives GefÃŧhl zu erhalten. Klicken Sie dazu in der Adressleiste auf die Schaltfläche 'Zum Startbildschirm hinzufÃŧgen'.", - "embedIntro": "

Auf Ihrer Website einbetten

Bitte betten Sie diese Karte in Ihre Webseite ein.
Wir ermutigen Sie, es zu tun - Sie mÃŧssen nicht einmal um Erlaubnis fragen.
Es ist kostenlos und wird es immer sein. Je mehr Leute sie benutzen, desto wertvoller wird sie.", - "copiedToClipboard": "Link in die Zwischenablage kopiert", - "thanksForSharing": "Danke fÃŧr das Teilen!", - "editThisTheme": "Dieses Thema bearbeiten", - "editThemeDescription": "Fragen zu diesem Kartenthema hinzufÃŧgen oder ändern", - "fsUserbadge": "Anmelde-Knopf aktivieren", - "fsSearch": "Suchleiste aktivieren", - "fsWelcomeMessage": "Popup der BegrÃŧßungsnachricht und zugehÃļrige Registerkarten anzeigen", - "fsLayers": "Aktivieren der Layersteuerung", - "fsLayerControlToggle": "Mit der erweiterten Ebenenkontrolle beginnen", - "fsAddNew": "Schaltfläche 'neuen POI hinzufÃŧgen' aktivieren", - "fsGeolocation": "Die Schaltfläche 'Mich geolokalisieren' aktivieren (nur fÃŧr Mobil)", - "fsIncludeCurrentBackgroundMap": "Die aktuelle Hintergrundwahl einschließen {name}", - "fsIncludeCurrentLayers": "Die aktuelle Ebenenauswahl einbeziehen", - "fsIncludeCurrentLocation": "Aktuelle Position einbeziehen" - }, - "morescreen": { - "intro": "

Mehr thematische Karten?

Sammeln Sie gerne Geodaten?
Es sind weitere Themen verfÃŧgbar.", - "requestATheme": "Wenn Sie ein benutzerdefiniertes Thema wÃŧnschen, fordern Sie es im Issue Tracker an", - "streetcomplete": "Eine andere, ähnliche Anwendung ist StreetComplete.", - "createYourOwnTheme": "Erstellen Sie Ihr eigenes MapComplete-Thema von Grund auf neu", - "previouslyHiddenTitle": "Zuvor besuchte versteckte Themen", - "hiddenExplanation": "Diese Themen sind nur fÃŧr Personen zugänglich, die einen Link erhalten haben. Sie haben {hidden_discovered} von {total_hidden} versteckten Themen entdeckt." - }, - "readYourMessages": "Bitte lesen Sie alle Ihre OpenStreetMap-Nachrichten, bevor Sie einen neuen Punkt hinzufÃŧgen.", - "fewChangesBefore": "Bitte beantworten Sie ein paar Fragen zu bestehenden Punkten, bevor Sie einen neuen Punkt hinzufÃŧgen.", - "goToInbox": "Posteingang Ãļffnen", - "getStartedLogin": "Bei OpenStreetMap anmelden, um loszulegen", - "getStartedNewAccount": " oder ein neues Konto anlegen", - "noTagsSelected": "Keine Tags ausgewählt", - "customThemeIntro": "

Benutzerdefinierte Themes

Dies sind zuvor besuchte benutzergenerierte Themen.", - "aboutMapcomplete": "

Über MapComplete

Mit MapComplete kÃļnnen Sie OpenStreetMap mit Informationen zu einem einzigen Thema anreichern. Beantworten Sie ein paar Fragen, und innerhalb von Minuten werden Ihre Beiträge rund um den Globus verfÃŧgbar sein! Der Themen-Maintainer definiert Elemente, Fragen und Sprachen fÃŧr das Thema.

Mehr erfahren

MapComplete bietet immer den nächsten Schritt, um mehr Ãŧber OpenStreetMap zu erfahren.

  • Wenn es in eine Website eingebettet wird, verlinkt der Iframe zu einer Vollbildversion von MapComplete
  • Die Vollbildversion bietet Informationen Ãŧber OpenStreetMap
  • Das Betrachten funktioniert ohne Login, aber das Bearbeiten erfordert ein OSM-Login.
  • Wenn Sie nicht eingeloggt sind, werden Sie aufgefordert, sich anzumelden
  • Nach der Beantwortung einer einzelnen Frage kÃļnnen Sie der Karte neue Punkte hinzufÃŧgen
  • Nach einer Weile werden aktuelle OSM-Tags angezeigt, die später mit dem Wiki verlinkt sind


Haben Sie ein Problem bemerkt? Haben Sie einen Funktionswunsch? MÃļchten Sie bei der Übersetzung helfen? Besuchen Sie den Quellcode oder den Issue Tracker

MÃļchten Sie Ihren Fortschritt sehen? Verfolgen Sie die Anzahl der Änderungen auf OsmCha.

", - "backgroundMap": "Hintergrundkarte", - "layerSelection": { - "zoomInToSeeThisLayer": "Ausschnitt vergrÃļßern, um diese Ebene anzuzeigen", - "title": "Ebenen auswählen" - }, - "weekdays": { - "abbreviations": { - "monday": "Mo", - "tuesday": "Di", - "wednesday": "Mi", - "thursday": "Do", - "friday": "Fr", - "saturday": "Sa", - "sunday": "So" - }, - "monday": "Montag", - "tuesday": "Dienstag", - "wednesday": "Mittwoch", - "thursday": "Donnerstag", - "friday": "Freitag", - "saturday": "Samstag", - "sunday": "Sonntag" - }, - "opening_hours": { - "error_loading": "Fehler: Diese Öffnungszeiten kÃļnnen nicht angezeigt werden.", - "open_during_ph": "An Feiertagen ist diese Einrichtung", - "opensAt": "von", - "openTill": "bis", - "not_all_rules_parsed": "Die Öffnungszeiten dieses Geschäfts sind abweichend. Die folgenden Regeln werden im Eingabeelement ignoriert:", - "closed_until": "Geschlossen bis {date}", - "closed_permanently": "Geschlossen auf unbestimmte Zeit", - "open_24_7": "Durchgehend geÃļffnet", - "ph_not_known": " ", - "ph_closed": "geschlossen", - "ph_open": "geÃļffnet", - "loadingCountry": "Land ermittelnâ€Ļ", - "ph_open_as_usual": "geÃļffnet wie Ãŧblich" - }, - "attribution": { - "mapContributionsByAndHidden": "Die aktuell sichtbaren Daten wurden editiert durch {contributors} und {hiddenCount} weitere Beitragende", - "mapContributionsBy": "Die aktuell sichtbaren Daten wurden editiert durch {contributors}", - "iconAttribution": { - "title": "Verwendete Icons" - }, - "attributionTitle": "Danksagung", - "codeContributionsBy": "MapComplete wurde von {contributors} und {hiddenCount} weiteren Beitragenden erstellt", - "themeBy": "Thema betreut von {author}", - "attributionContent": "

Alle Daten wurden bereitgestellt von OpenStreetMap, frei verwendbar unter der Open Database License.

" - }, - "download": { - "downloadCSVHelper": "Kompatibel mit LibreOffice Calc, Excel, â€Ļ", - "downloadCSV": "Sichtbare Daten als CSV herunterladen", - "downloadAsPdfHelper": "Ideal zum Drucken der aktuellen Karte", - "downloadGeoJsonHelper": "Kompatibel mit QGIS, ArcGIS, ESRI, â€Ļ", - "downloadAsPdf": "PDF der aktuellen Karte herunterladen", - "downloadGeojson": "Sichtbare Daten als GeoJSON herunterladen", - "includeMetaData": "Metadaten Ãŧbernehmen (letzter Bearbeiter, berechnete Werte, ...)", - "noDataLoaded": "Noch keine Daten geladen. Download ist in KÃŧrze verfÃŧgbar", - "licenseInfo": "

Copyright-Hinweis

Die bereitgestellten Daten sind unter ODbL verfÃŧgbar. Die Wiederverwendung ist fÃŧr jeden Zweck frei, aber
  • die Namensnennung Š OpenStreetMap contributors ist erforderlich
  • Jede Änderung unter der gleichen Lizenz verÃļffentlicht werden
Bitte lesen Sie den vollständigen Copyright-Hinweis fÃŧr weitere Details.", - "title": "Sichtbare Daten herunterladen", - "exporting": "Exportierenâ€Ļ" - }, - "pdf": { - "versionInfo": "v{version} - erstellt am {date}", - "attr": "Kartendaten Š OpenStreetMap Contributors, wiederverwendbar unter ODbL", - "generatedWith": "Erstellt mit MapComplete.osm.be", - "attrBackground": "Hintergrund-Ebene: {background}" - }, - "loginOnlyNeededToEdit": "zum Bearbeiten der Karte", - "wikipedia": { - "wikipediaboxTitle": "Wikipedia", - "searchWikidata": "Suche auf Wikidata", - "loading": "Wikipedia laden...", - "noResults": "Nichts gefunden fÃŧr {search}", - "doSearch": "Suche oben, um Ergebnisse zu sehen", - "noWikipediaPage": "Dieses Wikidata-Element hat noch keine entsprechende Wikipedia-Seite.", - "createNewWikidata": "Einen neuen Wikidata-Eintrag erstellen", - "failed": "Laden des Wikipedia-Eintrags fehlgeschlagen" - }, - "testing": "Testen - Änderungen werden nicht gespeichert", - "openTheMap": "Karte Ãļffnen", - "loading": "Laden...", - "histogram": { - "error_loading": "Das Histogramm konnte nicht geladen werden" - } + "openStreetMapIntro": "

Eine offene Karte

Eine Karte, die jeder frei nutzen und bearbeiten kann. Ein einziger Ort, um alle Geoinformationen zu speichern. Unterschiedliche, kleine, inkompatible und veraltete Karten werden nirgendwo gebraucht.

OpenStreetMap ist nicht die feindliche Karte. Die Kartendaten kÃļnnen frei verwendet werden (mit Benennung und VerÃļffentlichung von Änderungen an diesen Daten). Jeder kann neue Daten hinzufÃŧgen und Fehler korrigieren. Diese Webseite nutzt OpenStreetMap. Alle Daten stammen von dort, und Ihre Antworten und Korrekturen werden Ãŧberall verwendet.

Viele Menschen und Anwendungen nutzen bereits OpenStreetMap: Organic Maps, OsmAnd, aber auch die Karten bei Facebook, Instagram, Apple-maps und Bing-maps werden (teilweise) von OpenStreetMap bereichert.

", + "sharescreen": { + "intro": "

Diese Karte teilen

Sie kÃļnnen diese Karte teilen, indem Sie den untenstehenden Link kopieren und an Freunde und Familie schicken:", + "addToHomeScreen": "

Zum Startbildschirm hinzufÃŧgen

Sie kÃļnnen diese Webseite zum Startbildschirm Ihres Smartphones hinzufÃŧgen, um ein natives GefÃŧhl zu erhalten. Klicken Sie dazu in der Adressleiste auf die Schaltfläche 'Zum Startbildschirm hinzufÃŧgen'.", + "embedIntro": "

Auf Ihrer Website einbetten

Bitte betten Sie diese Karte in Ihre Webseite ein.
Wir ermutigen Sie, es zu tun - Sie mÃŧssen nicht einmal um Erlaubnis fragen.
Es ist kostenlos und wird es immer sein. Je mehr Leute sie benutzen, desto wertvoller wird sie.", + "copiedToClipboard": "Link in die Zwischenablage kopiert", + "thanksForSharing": "Danke fÃŧr das Teilen!", + "editThisTheme": "Dieses Thema bearbeiten", + "editThemeDescription": "Fragen zu diesem Kartenthema hinzufÃŧgen oder ändern", + "fsUserbadge": "Anmelde-Knopf aktivieren", + "fsSearch": "Suchleiste aktivieren", + "fsWelcomeMessage": "Popup der BegrÃŧßungsnachricht und zugehÃļrige Registerkarten anzeigen", + "fsLayers": "Aktivieren der Layersteuerung", + "fsLayerControlToggle": "Mit der erweiterten Ebenenkontrolle beginnen", + "fsAddNew": "Schaltfläche 'neuen POI hinzufÃŧgen' aktivieren", + "fsGeolocation": "Die Schaltfläche 'Mich geolokalisieren' aktivieren (nur fÃŧr Mobil)", + "fsIncludeCurrentBackgroundMap": "Die aktuelle Hintergrundwahl einschließen {name}", + "fsIncludeCurrentLayers": "Die aktuelle Ebenenauswahl einbeziehen", + "fsIncludeCurrentLocation": "Aktuelle Position einbeziehen" }, - "favourite": { - "panelIntro": "

Ihr persÃļnliches Thema

Aktivieren Sie Ihre Lieblingsebenen aus allen offiziellen Themen", - "loginNeeded": "

Anmelden

Ein persÃļnliches Layout ist nur fÃŧr OpenStreetMap-Benutzer verfÃŧgbar", - "reload": "Daten neu laden" + "morescreen": { + "intro": "

Mehr thematische Karten?

Sammeln Sie gerne Geodaten?
Es sind weitere Themen verfÃŧgbar.", + "requestATheme": "Wenn Sie ein benutzerdefiniertes Thema wÃŧnschen, fordern Sie es im Issue Tracker an", + "streetcomplete": "Eine andere, ähnliche Anwendung ist StreetComplete.", + "createYourOwnTheme": "Erstellen Sie Ihr eigenes MapComplete-Thema von Grund auf neu", + "previouslyHiddenTitle": "Zuvor besuchte versteckte Themen", + "hiddenExplanation": "Diese Themen sind nur fÃŧr Personen zugänglich, die einen Link erhalten haben. Sie haben {hidden_discovered} von {total_hidden} versteckten Themen entdeckt." }, - "reviews": { - "title": "{count} Rezensionen", - "title_singular": "Eine Rezension", - "name_required": "Der Name des Objekts ist notwendig, um eine Bewertung erstellen zu kÃļnnen", - "no_reviews_yet": "Es gibt noch keine Bewertungen. Hilf mit der ersten Bewertung dem Geschäft und der Open Data Bewegung!", - "write_a_comment": "Schreibe einen Kommentarâ€Ļ", - "no_rating": "Keine Bewertung vorhanden", - "posting_as": "Angemeldet als", - "i_am_affiliated": "Ich bin angehÃļrig
ÜberprÃŧfe, ob du EigentÃŧmer, Ersteller, Angestellter etc. bist", - "saving_review": "Speichernâ€Ļ", - "saved": "Bewertung gespeichert. Danke fÃŧrs Teilen!", - "tos": "Mit deiner Rezension stimmst du den AGB und den Datenschutzrichtlinien von Mangrove.reviews zu", - "plz_login": "Anmelden, um eine Bewertung abzugeben", - "affiliated_reviewer_warning": "(Partner-Rezension)", - "attribution": "Rezensionen werden bereitgestellt von Mangrove Reviews und sind unter CC-BY 4.0 verfÃŧgbar." + "readYourMessages": "Bitte lesen Sie alle Ihre OpenStreetMap-Nachrichten, bevor Sie einen neuen Punkt hinzufÃŧgen.", + "fewChangesBefore": "Bitte beantworten Sie ein paar Fragen zu bestehenden Punkten, bevor Sie einen neuen Punkt hinzufÃŧgen.", + "goToInbox": "Posteingang Ãļffnen", + "getStartedLogin": "Bei OpenStreetMap anmelden, um loszulegen", + "getStartedNewAccount": " oder ein neues Konto anlegen", + "noTagsSelected": "Keine Tags ausgewählt", + "customThemeIntro": "

Benutzerdefinierte Themes

Dies sind zuvor besuchte benutzergenerierte Themen.", + "aboutMapcomplete": "

Über MapComplete

Nutzen Sie es, um OpenStreetMap-Informationen zu einem einzigen Thema hinzuzufÃŧgen. Beantworten Sie Fragen, und innerhalb weniger Minuten sind Ihre Beiträge Ãŧberall verfÃŧgbar. Der Theme-Maintainer definiert Elemente, Fragen und Sprachen dafÃŧr.

Mehr erfahren

MapComplete bietet immer den nächsten Schritt, um mehr Ãŧber OpenStreetMap zu erfahren.

  • Wenn es in eine Website eingebettet wird, verlinkt der iframe zu einer Vollbildversion von MapComplete
  • Die Vollbildversion bietet Infos Ãŧber OpenStreetMap
  • Das Betrachten funktioniert ohne Anmeldung, aber das Bearbeiten erfordert ein OSM-Konto.
  • Wenn Sie nicht angemeldet sind, werden Sie dazu aufgefordert
  • Sobald Sie eine Frage beantwortet haben, kÃļnnen Sie der Karte neue Punkte hinzufÃŧgen
  • Nach einer Weile werden aktuelle OSM-Tags angezeigt, die später mit dem Wiki verlinkt werden


Haben Sie ein Problem bemerkt? Haben Sie einen Funktionswunsch? MÃļchten Sie bei der Übersetzung helfen? Besuchen Sie den Quellcode oder den Issue Tracker

MÃļchten Sie Ihren Fortschritt sehen? Verfolgen Sie die Anzahl der Änderungen auf OsmCha.

", + "backgroundMap": "Hintergrundkarte", + "layerSelection": { + "zoomInToSeeThisLayer": "Ausschnitt vergrÃļßern, um diese Ebene anzuzeigen", + "title": "Ebenen auswählen" }, - "delete": { - "explanations": { - "selectReason": "Bitte wähle aus, warum dieses Element gelÃļscht werden soll", - "hardDelete": "Dieser Punkt wird in OpenStreetMap gelÃļscht. Er kann von einem erfahrenen Mitwirkenden wiederhergestellt werden", - "softDelete": "Dieses Element wird aktualisiert und in dieser Anwendung ausgeblendet. {reason}" - }, - "reasons": { - "test": "Dies war ein Testpunkt - das Element war nie wirklich vorhanden", - "notFound": "Dieses Element konnte nicht gefunden werden", - "disused": "Dieses Element wird nicht mehr verwendet oder entfernt", - "duplicate": "Dieser Punkt ist ein Duplikat eines anderen Elements" - }, - "readMessages": "Du hast ungelesene Nachrichten. Bitte beachte diese, bevor Du einen Punkt lÃļschst - vielleicht hat jemand eine RÃŧckmeldung", - "loginToDelete": "Sie mÃŧssen angemeldet sein, um einen Punkt zu lÃļschen", - "useSomethingElse": "Verwenden Sie zum LÃļschen stattdessen einen anderen OpenStreetMap-Editor", - "partOfOthers": "Dieser Punkt ist Teil eines Weges oder einer Relation und kann nicht direkt gelÃļscht werden.", - "loading": "Untersuchung der Eigenschaften, um zu prÃŧfen, ob dieses Element gelÃļscht werden kann.", - "onlyEditedByLoggedInUser": "Dieser Punkt wurde nur von Ihnen selbst bearbeitet, Sie kÃļnnen ihn sicher lÃļschen.", - "isntAPoint": "Es kÃļnnen nur Punkte gelÃļscht werden, das ausgewählte Element ist ein Weg, eine Fläche oder eine Relation.", - "cannotBeDeleted": "Dieses Element kann nicht gelÃļscht werden", - "delete": "LÃļschen", - "isDeleted": "Dieses Element wurde gelÃļscht", - "whyDelete": "Warum sollte dieser Punkt gelÃļscht werden?", - "cancel": "Abbrechen", - "safeDelete": "Dieser Punkt kann sicher gelÃļscht werden.", - "notEnoughExperience": "Dieser Punkt wurde von jemand anderem erstellt." + "weekdays": { + "abbreviations": { + "monday": "Mo", + "tuesday": "Di", + "wednesday": "Mi", + "thursday": "Do", + "friday": "Fr", + "saturday": "Sa", + "sunday": "So" + }, + "monday": "Montag", + "tuesday": "Dienstag", + "wednesday": "Mittwoch", + "thursday": "Donnerstag", + "friday": "Freitag", + "saturday": "Samstag", + "sunday": "Sonntag" }, - "move": { - "inviteToMove": { - "reasonRelocation": "Dieses Element an einen anderen Ort verschieben, weil es sich verlagert hat", - "generic": "Verschiebe diesen Punkt", - "reasonInaccurate": "Genauigkeit dieses Punktes verbessern" - }, - "partOfAWay": "Dieses Element ist Teil eines anderen Weges. Verwenden Sie einen anderen Editor, um es zu verschieben.", - "cannotBeMoved": "Dieses Element kann nicht verschoben werden.", - "cancel": "Verschieben abbrechen", - "whyMove": "Warum wollen Sie diesen Punkt verschieben?", - "pointIsMoved": "Der Punkt wurde verschoben", - "reasons": { - "reasonRelocation": "Das Element wurde an einen vÃļllig anderen Ort verlegt", - "reasonInaccurate": "Der Standort dieses Elements ist ungenau und sollte um einige Meter verschoben werden" - }, - "loginToMove": "Sie mÃŧssen eingeloggt sein, um einen Punkt zu verschieben", - "zoomInFurther": "Weiter vergrÃļßern, um die Verschiebung zu bestätigen", - "selectReason": "Warum verschieben Sie dieses Element?", - "inviteToMoveAgain": "Diesen Punkt erneut verschieben", - "moveTitle": "Diesen Punkt verschieben", - "confirmMove": "Hierhin verschieben", - "partOfRelation": "Dieses Element ist Teil einer Relation. Verwenden Sie einen anderen Editor, um es zu verschieben.", - "isWay": "Dieses Element ist ein Weg. Verwenden Sie einen anderen OpenStreetMap-Editor, um ihn zu verschieben.", - "isRelation": "Dieses Element ist eine Relation und kann nicht verschoben werden" + "opening_hours": { + "error_loading": "Fehler: Diese Öffnungszeiten kÃļnnen nicht angezeigt werden.", + "open_during_ph": "An Feiertagen ist diese Einrichtung", + "opensAt": "von", + "openTill": "bis", + "not_all_rules_parsed": "Die Öffnungszeiten dieses Geschäfts sind abweichend. Die folgenden Regeln werden im Eingabeelement ignoriert:", + "closed_until": "Geschlossen bis {date}", + "closed_permanently": "Geschlossen auf unbestimmte Zeit", + "open_24_7": "Durchgehend geÃļffnet", + "ph_not_known": " ", + "ph_closed": "geschlossen", + "ph_open": "geÃļffnet", + "loadingCountry": "Land ermittelnâ€Ļ", + "ph_open_as_usual": "geÃļffnet wie Ãŧblich" }, - "split": { - "split": "Teilen", - "cancel": "Abbrechen", - "loginToSplit": "Sie mÃŧssen angemeldet sein, um eine Straße aufzuteilen", - "splitTitle": "Wählen Sie auf der Karte aus, wo die Straße geteilt werden soll", - "hasBeenSplit": "Dieser Weg wurde geteilt", - "inviteToSplit": "Teilen Sie diese Straße in kleinere Segmente auf. Dies ermÃļglicht es, Straßenabschnitten unterschiedliche Eigenschaften zu geben." + "attribution": { + "mapContributionsByAndHidden": "Die aktuell sichtbaren Daten wurden editiert durch {contributors} und {hiddenCount} weitere Beitragende", + "mapContributionsBy": "Die aktuell sichtbaren Daten wurden editiert durch {contributors}", + "iconAttribution": { + "title": "Verwendete Icons" + }, + "attributionTitle": "Danksagung", + "codeContributionsBy": "MapComplete wurde von {contributors} und {hiddenCount} weiteren Beitragenden erstellt", + "themeBy": "Thema betreut von {author}", + "attributionContent": "

Alle Daten wurden bereitgestellt von OpenStreetMap, frei verwendbar unter der Open Database License.

" }, - "multi_apply": { - "autoApply": "Wenn Sie die Attribute {attr_names} ändern, werden diese Attribute automatisch auch auf {count} anderen Objekten geändert" + "download": { + "downloadCSVHelper": "Kompatibel mit LibreOffice Calc, Excel, â€Ļ", + "downloadCSV": "Sichtbare Daten als CSV herunterladen", + "downloadAsPdfHelper": "Ideal zum Drucken der aktuellen Karte", + "downloadGeoJsonHelper": "Kompatibel mit QGIS, ArcGIS, ESRI, â€Ļ", + "downloadAsPdf": "PDF der aktuellen Karte herunterladen", + "downloadGeojson": "Sichtbare Daten als GeoJSON herunterladen", + "includeMetaData": "Metadaten Ãŧbernehmen (letzter Bearbeiter, berechnete Werte, ...)", + "noDataLoaded": "Noch keine Daten geladen. Download ist in KÃŧrze verfÃŧgbar", + "licenseInfo": "

Copyright-Hinweis

Die bereitgestellten Daten sind unter ODbL verfÃŧgbar. Die Wiederverwendung ist fÃŧr jeden Zweck frei, aber
  • die Namensnennung Š OpenStreetMap contributors ist erforderlich
  • Jede Änderung unter der gleichen Lizenz verÃļffentlicht werden
Bitte lesen Sie den vollständigen Copyright-Hinweis fÃŧr weitere Details.", + "title": "Sichtbare Daten herunterladen", + "exporting": "Exportierenâ€Ļ" + }, + "pdf": { + "versionInfo": "v{version} - erstellt am {date}", + "attr": "Kartendaten Š OpenStreetMap Contributors, wiederverwendbar unter ODbL", + "generatedWith": "Erstellt mit MapComplete.osm.be", + "attrBackground": "Hintergrund-Ebene: {background}" + }, + "loginOnlyNeededToEdit": "zum Bearbeiten der Karte", + "wikipedia": { + "wikipediaboxTitle": "Wikipedia", + "searchWikidata": "Suche auf Wikidata", + "loading": "Wikipedia laden...", + "noResults": "Nichts gefunden fÃŧr {search}", + "doSearch": "Suche oben, um Ergebnisse zu sehen", + "noWikipediaPage": "Dieses Wikidata-Element hat noch keine entsprechende Wikipedia-Seite.", + "createNewWikidata": "Einen neuen Wikidata-Eintrag erstellen", + "failed": "Laden des Wikipedia-Eintrags fehlgeschlagen" + }, + "testing": "Testen - Änderungen werden nicht gespeichert", + "openTheMap": "Karte Ãļffnen", + "loading": "Laden...", + "histogram": { + "error_loading": "Das Histogramm konnte nicht geladen werden" } -} + }, + "favourite": { + "panelIntro": "

Ihr persÃļnliches Thema

Aktivieren Sie Ihre Lieblingsebenen aus allen offiziellen Themen", + "loginNeeded": "

Anmelden

Ein persÃļnliches Layout ist nur fÃŧr OpenStreetMap-Benutzer verfÃŧgbar", + "reload": "Daten neu laden" + }, + "reviews": { + "title": "{count} Rezensionen", + "title_singular": "Eine Rezension", + "name_required": "Der Name des Objekts ist notwendig, um eine Bewertung erstellen zu kÃļnnen", + "no_reviews_yet": "Es gibt noch keine Bewertungen. Hilf mit der ersten Bewertung dem Geschäft und der Open Data Bewegung!", + "write_a_comment": "Schreibe einen Kommentarâ€Ļ", + "no_rating": "Keine Bewertung vorhanden", + "posting_as": "Angemeldet als", + "i_am_affiliated": "Ich bin angehÃļrig
ÜberprÃŧfe, ob du EigentÃŧmer, Ersteller, Angestellter etc. bist", + "saving_review": "Speichernâ€Ļ", + "saved": "Bewertung gespeichert. Danke fÃŧrs Teilen!", + "tos": "Mit deiner Rezension stimmst du den AGB und den Datenschutzrichtlinien von Mangrove.reviews zu", + "plz_login": "Anmelden, um eine Bewertung abzugeben", + "affiliated_reviewer_warning": "(Partner-Rezension)", + "attribution": "Rezensionen werden bereitgestellt von Mangrove Reviews und sind unter CC-BY 4.0 verfÃŧgbar." + }, + "delete": { + "explanations": { + "selectReason": "Bitte wähle aus, warum dieses Element gelÃļscht werden soll", + "hardDelete": "Dieser Punkt wird in OpenStreetMap gelÃļscht. Er kann von einem erfahrenen Mitwirkenden wiederhergestellt werden", + "softDelete": "Dieses Element wird aktualisiert und in dieser Anwendung ausgeblendet. {reason}" + }, + "reasons": { + "test": "Dies war ein Testpunkt - das Element war nie wirklich vorhanden", + "notFound": "Dieses Element konnte nicht gefunden werden", + "disused": "Dieses Element wird nicht mehr verwendet oder entfernt", + "duplicate": "Dieser Punkt ist ein Duplikat eines anderen Elements" + }, + "readMessages": "Du hast ungelesene Nachrichten. Bitte beachte diese, bevor Du einen Punkt lÃļschst - vielleicht hat jemand eine RÃŧckmeldung", + "loginToDelete": "Sie mÃŧssen angemeldet sein, um einen Punkt zu lÃļschen", + "useSomethingElse": "Verwenden Sie zum LÃļschen stattdessen einen anderen OpenStreetMap-Editor", + "partOfOthers": "Dieser Punkt ist Teil eines Weges oder einer Relation und kann nicht direkt gelÃļscht werden.", + "loading": "Untersuchung der Eigenschaften, um zu prÃŧfen, ob dieses Element gelÃļscht werden kann.", + "onlyEditedByLoggedInUser": "Dieser Punkt wurde nur von Ihnen selbst bearbeitet, Sie kÃļnnen ihn sicher lÃļschen.", + "isntAPoint": "Es kÃļnnen nur Punkte gelÃļscht werden, das ausgewählte Element ist ein Weg, eine Fläche oder eine Relation.", + "cannotBeDeleted": "Dieses Element kann nicht gelÃļscht werden", + "delete": "LÃļschen", + "isDeleted": "Dieses Element wurde gelÃļscht", + "whyDelete": "Warum sollte dieser Punkt gelÃļscht werden?", + "cancel": "Abbrechen", + "safeDelete": "Dieser Punkt kann sicher gelÃļscht werden.", + "notEnoughExperience": "Dieser Punkt wurde von jemand anderem erstellt." + }, + "move": { + "inviteToMove": { + "reasonRelocation": "Dieses Element an einen anderen Ort verschieben, weil es sich verlagert hat", + "generic": "Verschiebe diesen Punkt", + "reasonInaccurate": "Genauigkeit dieses Punktes verbessern" + }, + "partOfAWay": "Dieses Element ist Teil eines anderen Weges. Verwenden Sie einen anderen Editor, um es zu verschieben.", + "cannotBeMoved": "Dieses Element kann nicht verschoben werden.", + "cancel": "Verschieben abbrechen", + "whyMove": "Warum wollen Sie diesen Punkt verschieben?", + "pointIsMoved": "Der Punkt wurde verschoben", + "reasons": { + "reasonRelocation": "Das Element wurde an einen vÃļllig anderen Ort verlegt", + "reasonInaccurate": "Der Standort dieses Elements ist ungenau und sollte um einige Meter verschoben werden" + }, + "loginToMove": "Sie mÃŧssen eingeloggt sein, um einen Punkt zu verschieben", + "zoomInFurther": "Weiter vergrÃļßern, um die Verschiebung zu bestätigen", + "selectReason": "Warum verschieben Sie dieses Element?", + "inviteToMoveAgain": "Diesen Punkt erneut verschieben", + "moveTitle": "Diesen Punkt verschieben", + "confirmMove": "Hierhin verschieben", + "partOfRelation": "Dieses Element ist Teil einer Relation. Verwenden Sie einen anderen Editor, um es zu verschieben.", + "isWay": "Dieses Element ist ein Weg. Verwenden Sie einen anderen OpenStreetMap-Editor, um ihn zu verschieben.", + "isRelation": "Dieses Element ist eine Relation und kann nicht verschoben werden" + }, + "split": { + "split": "Teilen", + "cancel": "Abbrechen", + "loginToSplit": "Sie mÃŧssen angemeldet sein, um eine Straße aufzuteilen", + "splitTitle": "Wählen Sie auf der Karte aus, wo die Straße geteilt werden soll", + "hasBeenSplit": "Dieser Weg wurde geteilt", + "inviteToSplit": "Teilen Sie diese Straße in kleinere Segmente auf. Dies ermÃļglicht es, Straßenabschnitten unterschiedliche Eigenschaften zu geben." + }, + "multi_apply": { + "autoApply": "Wenn Sie die Attribute {attr_names} ändern, werden diese Attribute automatisch auch auf {count} anderen Objekten geändert" + } +} \ No newline at end of file diff --git a/langs/en.json b/langs/en.json index e93a28ade..f4bc05634 100644 --- a/langs/en.json +++ b/langs/en.json @@ -1,301 +1,306 @@ { - "image": { - "addPicture": "Add picture", - "uploadingPicture": "Uploading your pictureâ€Ļ", - "uploadingMultiple": "Uploading {count} picturesâ€Ļ", - "pleaseLogin": "Please log in to add a picture", - "willBePublished": "Your picture will be published: ", - "cco": "in the public domain", - "ccbs": "under the CC-BY-SA-license", - "ccb": "under the CC-BY-license", - "uploadFailed": "Could not upload your picture. Are you connected to the Internet, and allow third party API's? The Brave browser or the uMatrix plugin might block them.", - "respectPrivacy": "Do not photograph people nor license plates. Do not upload Google Maps, Google Streetview or other copyrighted sources.", - "uploadDone": "Your picture has been added. Thanks for helping out!", - "uploadMultipleDone": "{count} pictures have been added. Thanks for helping out!", - "dontDelete": "Cancel", - "doDelete": "Remove image", - "isDeleted": "Deleted", - "toBig": "Your image is too large as it is {actual_size}. Please use images of at most {max_size}" + "image": { + "addPicture": "Add picture", + "uploadingPicture": "Uploading your pictureâ€Ļ", + "uploadingMultiple": "Uploading {count} picturesâ€Ļ", + "pleaseLogin": "Please log in to add a picture", + "willBePublished": "Your picture will be published: ", + "cco": "in the public domain", + "ccbs": "under the CC-BY-SA-license", + "ccb": "under the CC-BY-license", + "uploadFailed": "Could not upload your picture. Are you connected to the Internet, and allow third party API's? The Brave browser or the uMatrix plugin might block them.", + "respectPrivacy": "Do not photograph people nor license plates. Do not upload Google Maps, Google Streetview or other copyrighted sources.", + "uploadDone": "Your picture has been added. Thanks for helping out!", + "uploadMultipleDone": "{count} pictures have been added. Thanks for helping out!", + "dontDelete": "Cancel", + "doDelete": "Remove image", + "isDeleted": "Deleted", + "toBig": "Your image is too large as it is {actual_size}. Please use images of at most {max_size}" + }, + "centerMessage": { + "loadingData": "Loading dataâ€Ļ", + "zoomIn": "Zoom in to view or edit the data", + "ready": "Done!", + "retrying": "Loading data failed. Trying again in {count} secondsâ€Ļ" + }, + "index": { + "#": "These texts are shown above the theme buttons when no theme is loaded", + "title": "Welcome to MapComplete", + "featuredThemeTitle": "Featured this week", + "intro": "MapComplete is an OpenStreetMap-viewer and editor, which shows you information about features of a specific theme and allows to update it.", + "pickTheme": "Pick a theme below to get started." + }, + "split": { + "split": "Split", + "cancel": "Cancel", + "inviteToSplit": "Split this road in smaller segments. This allows to give different properties to parts of the road.", + "loginToSplit": "You must be logged in to split a road", + "splitTitle": "Choose on the map where to split this road", + "hasBeenSplit": "This way has been split" + }, + "delete": { + "delete": "Delete", + "cancel": "Cancel", + "isDeleted": "This feature is deleted", + "cannotBeDeleted": "This feature can not be deleted", + "loginToDelete": "You must be logged in to delete a point", + "safeDelete": "This point can be safely deleted.", + "isntAPoint": "Only points can be deleted, the selected feature is a way, area or relation.", + "onlyEditedByLoggedInUser": "This point has only be edited by yourself, you can safely delete it.", + "notEnoughExperience": "This point was made by someone else.", + "useSomethingElse": "Use another OpenStreetMap-editor to delete it instead", + "partOfOthers": "This point is part of some way or relation and can not be deleted directly.", + "loading": "Inspecting properties to check if this feature can be deleted.", + "whyDelete": "Why should this point be deleted?", + "reasons": { + "test": "This was a testing point - the feature was never actually there", + "disused": "This feature is disused or removed", + "notFound": "This feature couldn't be found", + "duplicate": "This point is a duplicate of another feature" }, - "centerMessage": { - "loadingData": "Loading dataâ€Ļ", - "zoomIn": "Zoom in to view or edit the data", - "ready": "Done!", - "retrying": "Loading data failed. Trying again in {count} secondsâ€Ļ" + "explanations": { + "selectReason": "Please, select why this feature should be deleted", + "hardDelete": "This point will be deleted in OpenStreetMap. It can be recovered by an experienced contributor", + "softDelete": "This feature will be updated and hidden from this application. {reason}" }, - "index": { - "#": "These texts are shown above the theme buttons when no theme is loaded", - "title": "Welcome to MapComplete", - "featuredThemeTitle": "Featured this week", - "intro": "MapComplete is an OpenStreetMap-viewer and editor, which shows you information about features of a specific theme and allows to update it.", - "pickTheme": "Pick a theme below to get started." + "readMessages": "You have unread messages. Read these before deleting a point - someone might have feedback" + }, + "general": { + "loading": "Loading...", + "pdf": { + "generatedWith": "Generated with MapComplete.osm.be", + "attr": "Map data Š OpenStreetMap Contributors, reusable under ODbL", + "attrBackground": "Background layer: {background}", + "versionInfo": "v{version} - generated on {date}" }, - "split": { - "split": "Split", - "cancel": "Cancel", - "inviteToSplit": "Split this road in smaller segments. This allows to give different properties to parts of the road.", - "loginToSplit": "You must be logged in to split a road", - "splitTitle": "Choose on the map where to split this road", - "hasBeenSplit": "This way has been split" + "loginWithOpenStreetMap": "Login with OpenStreetMap", + "welcomeBack": "You are logged in, welcome back!", + "loginToStart": "Log in to answer this question", + "openStreetMapIntro": "

An Open Map

One that everyone can use and edit freely. A single place to store all geo-info. Different, small, incompatible and outdated maps are not needed anywhere.

OpenStreetMap is not the enemy map. The map data can be used freely (with attribution and publication of changes to that data). Everyone can add new data and fix errors. This website uses OpenStreetMap. All the data is from there, and your answers and corrections are used all over.

Many people and apps already use OpenStreetMap: Organic Maps, OsmAnd, but also the maps at Facebook, Instagram, Apple-maps and Bing-maps are (partly) powered by OpenStreetMap.

", + "search": { + "search": "Search a location", + "searching": "Searchingâ€Ļ", + "nothing": "Nothing foundâ€Ļ", + "error": "Something went wrongâ€Ļ" }, - "delete": { - "delete": "Delete", - "cancel": "Cancel", - "isDeleted": "This feature is deleted", - "cannotBeDeleted": "This feature can not be deleted", - "loginToDelete": "You must be logged in to delete a point", - "safeDelete": "This point can be safely deleted.", - "isntAPoint": "Only points can be deleted, the selected feature is a way, area or relation.", - "onlyEditedByLoggedInUser": "This point has only be edited by yourself, you can safely delete it.", - "notEnoughExperience": "This point was made by someone else.", - "useSomethingElse": "Use another OpenStreetMap-editor to delete it instead", - "partOfOthers": "This point is part of some way or relation and can not be deleted directly.", - "loading": "Inspecting properties to check if this feature can be deleted.", - "whyDelete": "Why should this point be deleted?", - "reasons": { - "test": "This was a testing point - the feature was never actually there", - "disused": "This feature is disused or removed", - "notFound": "This feature couldn't be found", - "duplicate": "This point is a duplicate of another feature" - }, - "explanations": { - "selectReason": "Please, select why this feature should be deleted", - "hardDelete": "This point will be deleted in OpenStreetMap. It can be recovered by an experienced contributor", - "softDelete": "This feature will be updated and hidden from this application. {reason}" - }, - "readMessages": "You have unread messages. Read these before deleting a point - someone might have feedback" + "returnToTheMap": "Return to the map", + "save": "Save", + "cancel": "Cancel", + "skip": "Skip this question", + "oneSkippedQuestion": "One question is skipped", + "skippedQuestions": "Some questions are skipped", + "number": "number", + "osmLinkTooltip": "Browse this object on OpenStreetMap for history and more editing options", + "add": { + "addNewMapLabel": "Add new item", + "disableFiltersExplanation": "Some features might be hidden by a filter", + "disableFilters": "Disable all filters", + "addNew": "Add a new {category} here", + "presetInfo": "The new POI will have {tags}", + "warnVisibleForEveryone": "Your addition will be visible for everyone", + "title": "Add a new point?", + "intro": "You clicked somewhere where no data is known yet.
", + "pleaseLogin": "Please log in to add a new point", + "zoomInFurther": "Zoom in further to add a point.", + "stillLoading": "The data is still loading. Please wait a bit before you add a new point.", + "confirmIntro": "

Add a {title} here?

The point you create here will be visible for everyone. Please, only add things on to the map if they truly exist. A lot of applications use this data.", + "confirmButton": "Add a {category} here.
Your addition is visible for everyone
", + "openLayerControl": "Open the layer control box", + "layerNotEnabled": "The layer {layer} is not enabled. Enable this layer to add a point", + "hasBeenImported": "This point has already been imported", + "zoomInMore": "Zoom in more to import this feature", + "wrongType": "This element is not a point or a way and can not be imported" }, - "general": { - "loading": "Loading...", - "pdf": { - "generatedWith": "Generated with MapComplete.osm.be", - "attr": "Map data Š OpenStreetMap Contributors, reusable under ODbL", - "attrBackground": "Background layer: {background}", - "versionInfo": "v{version} - generated on {date}" - }, - "loginWithOpenStreetMap": "Login with OpenStreetMap", - "welcomeBack": "You are logged in, welcome back!", - "loginToStart": "Log in to answer this question", - "openStreetMapIntro": "

An Open Map

One that everyone can use and edit freely. A single place to store all geo-info. Different, small, incompatible and outdated maps are not needed anywhere.

OpenStreetMap is not the enemy map. The map data can be used freely (with attribution and publication of changes to that data). Everyone can add new data and fix errors. This website uses OpenStreetMap. All the data is from there, and your answers and corrections are used all over.

Many people and apps already use OpenStreetMap: Organic Maps, OsmAnd, but also the maps at Facebook, Instagram, Apple-maps and Bing-maps are (partly) powered by OpenStreetMap.

", - "search": { - "search": "Search a location", - "searching": "Searchingâ€Ļ", - "nothing": "Nothing foundâ€Ļ", - "error": "Something went wrongâ€Ļ" - }, - "returnToTheMap": "Return to the map", - "save": "Save", - "cancel": "Cancel", - "skip": "Skip this question", - "oneSkippedQuestion": "One question is skipped", - "skippedQuestions": "Some questions are skipped", - "number": "number", - "osmLinkTooltip": "Browse this object on OpenStreetMap for history and more editing options", - "add": { - "addNewMapLabel": "Add new item", - "disableFiltersExplanation": "Some features might be hidden by a filter", - "disableFilters": "Disable all filters", - "addNew": "Add a new {category} here", - "presetInfo": "The new POI will have {tags}", - "warnVisibleForEveryone": "Your addition will be visible for everyone", - "title": "Add a new point?", - "intro": "You clicked somewhere where no data is known yet.
", - "pleaseLogin": "Please log in to add a new point", - "zoomInFurther": "Zoom in further to add a point.", - "stillLoading": "The data is still loading. Please wait a bit before you add a new point.", - "confirmIntro": "

Add a {title} here?

The point you create here will be visible for everyone. Please, only add things on to the map if they truly exist. A lot of applications use this data.", - "confirmButton": "Add a {category} here.
Your addition is visible for everyone
", - "openLayerControl": "Open the layer control box", - "layerNotEnabled": "The layer {layer} is not enabled. Enable this layer to add a point", - "hasBeenImported": "This point has already been imported", - "zoomInMore": "Zoom in more to import this feature", - "wrongType": "This element is not a point or a way and can not be imported" - }, - "pickLanguage": "Choose a language: ", - "about": "Easily edit and add OpenStreetMap for a certain theme", - "nameInlineQuestion": "The name of this {category} is $$$", - "noNameCategory": "{category} without a name", - "questions": { - "phoneNumberOf": "What is the phone number of {category}?", - "phoneNumberIs": "The phone number of this {category} is {phone}", - "websiteOf": "What is the website of {category}?", - "websiteIs": "Website: {website}", - "emailOf": "What is the email address of {category}?", - "emailIs": "The email address of this {category} is {email}" - }, - "morescreen": { - "intro": "

More thematic maps?

Do you enjoy collecting geodata?
There are more themes available.", - "requestATheme": "If you want a custom-built theme, request it in the issue tracker", - "streetcomplete": "Another, similar application is StreetComplete.", - "createYourOwnTheme": "Create your own MapComplete theme from scratch", - "previouslyHiddenTitle": "Previously visited hidden themes", - "hiddenExplanation": "These themes are only accessible to those with the link. You have discovered {hidden_discovered} of {total_hidden} hidden themes." - }, - "sharescreen": { - "intro": "

Share this map

Share this map by copying the link below and sending it to friends and family:", - "addToHomeScreen": "

Add to your home screen

You can easily add this website to your smartphone home screen for a native feel. Click the 'Add to home screen' button in the URL bar to do this.", - "embedIntro": "

Embed on your website

Please, embed this map into your website.
We encourage you to do it - you don't even have to ask permission.
It is free, and always will be. The more people are using this, the more valuable it becomes.", - "copiedToClipboard": "Link copied to clipboard", - "thanksForSharing": "Thanks for sharing!", - "editThisTheme": "Edit this theme", - "editThemeDescription": "Add or change questions to this map theme", - "fsUserbadge": "Enable the login button", - "fsSearch": "Enable the search bar", - "fsWelcomeMessage": "Show the welcome message popup and associated tabs", - "fsLayers": "Enable the layer control", - "fsLayerControlToggle": "Start with the layer control expanded", - "fsAddNew": "Enable the 'add new POI' button", - "fsGeolocation": "Enable the 'geolocate-me' button (mobile only)", - "fsIncludeCurrentBackgroundMap": "Include the current background choice {name}", - "fsIncludeCurrentLayers": "Include the current layer choices", - "fsIncludeCurrentLocation": "Include current location" - }, - "attribution": { - "attributionTitle": "Attribution notice", - "attributionContent": "

All data is provided by OpenStreetMap, freely reusable under the Open DataBase License.

", - "themeBy": "Theme maintained by {author}", - "iconAttribution": { - "title": "Used icons" - }, - "mapContributionsBy": "The current visible data has edits made by {contributors}", - "mapContributionsByAndHidden": "The current visible data has edits made by {contributors} and {hiddenCount} more contributors", - "codeContributionsBy": "MapComplete has been built by {contributors} and {hiddenCount} more contributors", - "openOsmcha": "See latest edits made with {theme}", - "openMapillary": "Open Mapillary here", - "openIssueTracker": "File a bug", - "josmOpened": "JOSM is opened", - "josmNotOpened": "JOSM could not be reached. Make sure it is opened and remote control is enabled", - "editJosm": "Edit here with JOSM", - "editId": "Open the OpenStreetMap online editor here", - "donate": "Support MapComplete financially" - }, - "readYourMessages": "Please, read all your OpenStreetMap-messages before adding a new point.", - "fewChangesBefore": "Please, answer a few questions of existing points before adding a new point.", - "goToInbox": "Open inbox", - "getStartedLogin": "Log in with OpenStreetMap to get started", - "getStartedNewAccount": " or create a new account", - "noTagsSelected": "No tags selected", - "testing": "Testing - changes won't be saved", - "customThemeIntro": "

Custom themes

These are previously visited user-generated themes.", - "aboutMapcomplete": "

About MapComplete

Use it to add OpenStreetMap info on a single theme. Answer questions, and within minutes your contributions are available everywhere. The theme maintainer defines elements, questions and languages for it.

Find out more

MapComplete always offers the next step to learn more about OpenStreetMap.

  • When embedded in a website, the iframe links to a full-screen MapComplete
  • The fullscreen version offers info about OpenStreetMap
  • Viewing works without login, but editing requires an OSM account.
  • If you are not logged in, you are asked to do so
  • Once you answered a single question, you can add new points to the map
  • After a while, actual OSM-tags are shown, later linking to the wiki


Did you notice an issue? Do you have a feature request? Want to help translate? Head over to the source code or issue tracker.

Want to see your progress? Follow the edit count on OsmCha.

", - "backgroundMap": "Background map", - "openTheMap": "Open the map", - "loginOnlyNeededToEdit": "if you want to edit the map", - "layerSelection": { - "zoomInToSeeThisLayer": "Zoom in to see this layer", - "title": "Select layers" - }, - "download": { - "title": "Download visible data", - "downloadAsPdf": "Download a PDF of the current map", - "downloadAsPdfHelper": "Ideal to print the current map", - "downloadGeojson": "Download visible data as GeoJSON", - "exporting": "Exportingâ€Ļ", - "downloadGeoJsonHelper": "Compatible with QGIS, ArcGIS, ESRI, â€Ļ", - "downloadCSV": "Download visible data as CSV", - "downloadCSVHelper": "Compatible with LibreOffice Calc, Excel, â€Ļ", - "includeMetaData": "Include metadata (last editor, calculated values, â€Ļ)", - "licenseInfo": "

Copyright notice

The provided data is available under ODbL. Reusing it is gratis for any purpose, but
  • the attribution Š OpenStreetMap contributors is required
  • Any change must be use the license
Please read the full copyright notice for details.", - "noDataLoaded": "No data is loaded yet. Download will be available soon" - }, - "weekdays": { - "abbreviations": { - "monday": "Mon", - "tuesday": "Tue", - "wednesday": "Wed", - "thursday": "Thu", - "friday": "Fri", - "saturday": "Sat", - "sunday": "Sun" - }, - "monday": "Monday", - "tuesday": "Tuesday", - "wednesday": "Wednesday", - "thursday": "Thursday", - "friday": "Friday", - "saturday": "Saturday", - "sunday": "Sunday" - }, - "opening_hours": { - "error_loading": "Error: could not visualize these opening hours.", - "open_during_ph": "During a public holiday, this is", - "opensAt": "from", - "openTill": "till", - "not_all_rules_parsed": "These opening hours are complicated. The following rules are ignored in the input element:", - "closed_until": "Closed until {date}", - "closed_permanently": "Closed for an unkown duration", - "open_24_7": "Opened around the clock", - "ph_not_known": " ", - "ph_closed": "closed", - "ph_open": "opened", - "ph_open_as_usual": "opened as usual", - "loadingCountry": "Determining countryâ€Ļ" - }, - "histogram": { - "error_loading": "Could not load the histogram" - }, - "wikipedia": { - "wikipediaboxTitle": "Wikipedia", - "failed": "Loading the Wikipedia entry failed", - "loading": "Loading Wikipedia...", - "noWikipediaPage": "This Wikidata item has no corresponding Wikipedia page yet.", - "searchWikidata": "Search on Wikidata", - "noResults": "Nothing found for {search}", - "doSearch": "Search above to see results", - "createNewWikidata": "Create a new Wikidata item" - }, - "apply_button": { - "isApplied": "The changes are applied", - "appliedOnAnotherObject": "The object {id} will receive {tags}" - } + "pickLanguage": "Choose a language: ", + "about": "Easily edit and add OpenStreetMap for a certain theme", + "nameInlineQuestion": "The name of this {category} is $$$", + "noNameCategory": "{category} without a name", + "questions": { + "phoneNumberOf": "What is the phone number of {category}?", + "phoneNumberIs": "The phone number of this {category} is {phone}", + "websiteOf": "What is the website of {category}?", + "websiteIs": "Website: {website}", + "emailOf": "What is the email address of {category}?", + "emailIs": "The email address of this {category} is {email}" }, - "favourite": { - "panelIntro": "

Your personal theme

Activate your favourite layers from all the official themes", - "loginNeeded": "

Log in

A personal layout is only available for OpenStreetMap users", - "reload": "Reload the data" + "morescreen": { + "intro": "

More thematic maps?

Do you enjoy collecting geodata?
There are more themes available.", + "requestATheme": "If you want a custom-built theme, request it in the issue tracker", + "streetcomplete": "Another, similar application is StreetComplete.", + "createYourOwnTheme": "Create your own MapComplete theme from scratch", + "previouslyHiddenTitle": "Previously visited hidden themes", + "hiddenExplanation": "These themes are only accessible to those with the link. You have discovered {hidden_discovered} of {total_hidden} hidden themes." }, - "reviews": { - "title": "{count} reviews", - "title_singular": "One review", - "name_required": "A name is required in order to display and create reviews", - "no_reviews_yet": "There are no reviews yet. Be the first to write one and help open data and the business!", - "write_a_comment": "Leave a reviewâ€Ļ", - "no_rating": "No rating given", - "posting_as": "Posting as", - "i_am_affiliated": "I am affiliated with this object
Check if you are an owner, creator, employee, â€Ļ", - "affiliated_reviewer_warning": "(Affiliated review)", - "saving_review": "Savingâ€Ļ", - "saved": "Review saved. Thanks for sharing!", - "tos": "If you create a review, you agree to the TOS and privacy policy of Mangrove.reviews", - "attribution": "Reviews are powered by Mangrove Reviews and are available under CC-BY 4.0.", - "plz_login": "Log in to leave a review" + "sharescreen": { + "intro": "

Share this map

Share this map by copying the link below and sending it to friends and family:", + "addToHomeScreen": "

Add to your home screen

You can easily add this website to your smartphone home screen for a native feel. Click the 'Add to home screen' button in the URL bar to do this.", + "embedIntro": "

Embed on your website

Please, embed this map into your website.
We encourage you to do it - you don't even have to ask permission.
It is free, and always will be. The more people are using this, the more valuable it becomes.", + "copiedToClipboard": "Link copied to clipboard", + "thanksForSharing": "Thanks for sharing!", + "editThisTheme": "Edit this theme", + "editThemeDescription": "Add or change questions to this map theme", + "fsUserbadge": "Enable the login button", + "fsSearch": "Enable the search bar", + "fsWelcomeMessage": "Show the welcome message popup and associated tabs", + "fsLayers": "Enable the layer control", + "fsLayerControlToggle": "Start with the layer control expanded", + "fsAddNew": "Enable the 'add new POI' button", + "fsGeolocation": "Enable the 'geolocate-me' button (mobile only)", + "fsIncludeCurrentBackgroundMap": "Include the current background choice {name}", + "fsIncludeCurrentLayers": "Include the current layer choices", + "fsIncludeCurrentLocation": "Include current location" }, - "multi_apply": { - "autoApply": "When changing the attributes {attr_names}, these attributes will automatically be changed on {count} other objects too" + "attribution": { + "attributionTitle": "Attribution notice", + "attributionContent": "

All data is provided by OpenStreetMap, freely reusable under the Open DataBase License.

", + "themeBy": "Theme maintained by {author}", + "iconAttribution": { + "title": "Used icons" + }, + "mapContributionsBy": "The current visible data has edits made by {contributors}", + "mapContributionsByAndHidden": "The current visible data has edits made by {contributors} and {hiddenCount} more contributors", + "codeContributionsBy": "MapComplete has been built by {contributors} and {hiddenCount} more contributors", + "openOsmcha": "See latest edits made with {theme}", + "openMapillary": "Open Mapillary here", + "openIssueTracker": "File a bug", + "josmOpened": "JOSM is opened", + "josmNotOpened": "JOSM could not be reached. Make sure it is opened and remote control is enabled", + "editJosm": "Edit here with JOSM", + "editId": "Open the OpenStreetMap online editor here", + "donate": "Support MapComplete financially" }, - "move": { - "loginToMove": "You must be logged in to move a point", - "inviteToMoveAgain": "Move this point again", - "moveTitle": "Move this point", - "whyMove": "Why do you want to move this point?", - "confirmMove": "Move here", - "pointIsMoved": "The point has been moved", - "zoomInFurther": "Zoom in further to confirm this move", - "selectReason": "Why do you move this object?", - "reasons": { - "reasonRelocation": "The object has been relocated to a totally different location", - "reasonInaccurate": "The location of this object is inaccurate and should be moved a few meter" - }, - "inviteToMove": { - "generic": "Move this point", - "reasonInaccurate": "Improve the accuracy of this point", - "reasonRelocation": "Move this object to a another place because it has relocated" - }, - "cannotBeMoved": "This feature cannot be moved.", - "isWay": "This feature is a way. Use another OpenStreetMap editor to move it.", - "isRelation": "This feature is a relation and can not be moved", - "partOfAWay": "This feature is part of another way. Use another editor to move it.", - "partOfRelation": "This feature is part of a relation. Use another editor to move it.", - "cancel": "Cancel move" + "readYourMessages": "Please, read all your OpenStreetMap-messages before adding a new point.", + "fewChangesBefore": "Please, answer a few questions of existing points before adding a new point.", + "goToInbox": "Open inbox", + "removeLocationHistory": "Delete the location history", + "getStartedLogin": "Log in with OpenStreetMap to get started", + "getStartedNewAccount": " or create a new account", + "noTagsSelected": "No tags selected", + "testing": "Testing - changes won't be saved", + "customThemeIntro": "

Custom themes

These are previously visited user-generated themes.", + "aboutMapcomplete": "

About MapComplete

Use it to add OpenStreetMap info on a single theme. Answer questions, and within minutes your contributions are available everywhere. The theme maintainer defines elements, questions and languages for it.

Find out more

MapComplete always offers the next step to learn more about OpenStreetMap.

  • When embedded in a website, the iframe links to a full-screen MapComplete
  • The fullscreen version offers info about OpenStreetMap
  • Viewing works without login, but editing requires an OSM account.
  • If you are not logged in, you are asked to do so
  • Once you answered a single question, you can add new points to the map
  • After a while, actual OSM-tags are shown, later linking to the wiki


Did you notice an issue? Do you have a feature request? Want to help translate? Head over to the source code or issue tracker.

Want to see your progress? Follow the edit count on OsmCha.

", + "backgroundMap": "Background map", + "openTheMap": "Open the map", + "loginOnlyNeededToEdit": "if you want to edit the map", + "layerSelection": { + "zoomInToSeeThisLayer": "Zoom in to see this layer", + "title": "Select layers" + }, + "download": { + "title": "Download visible data", + "downloadAsPdf": "Download a PDF of the current map", + "downloadAsPdfHelper": "Ideal to print the current map", + "downloadGeojson": "Download visible data as GeoJSON", + "downloadGpx":"Download as GPX-file", + "downloadGpxHelper":"A GPX-file can be used with most navigation devices and applications", + "uploadGpx":"Upload your track to OpenStreetMap", + + "exporting": "Exportingâ€Ļ", + "downloadGeoJsonHelper": "Compatible with QGIS, ArcGIS, ESRI, â€Ļ", + "downloadCSV": "Download visible data as CSV", + "downloadCSVHelper": "Compatible with LibreOffice Calc, Excel, â€Ļ", + "includeMetaData": "Include metadata (last editor, calculated values, â€Ļ)", + "licenseInfo": "

Copyright notice

The provided data is available under ODbL. Reusing it is gratis for any purpose, but
  • the attribution Š OpenStreetMap contributors is required
  • Any change must be use the license
Please read the full copyright notice for details.", + "noDataLoaded": "No data is loaded yet. Download will be available soon" + }, + "weekdays": { + "abbreviations": { + "monday": "Mon", + "tuesday": "Tue", + "wednesday": "Wed", + "thursday": "Thu", + "friday": "Fri", + "saturday": "Sat", + "sunday": "Sun" + }, + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sunday": "Sunday" + }, + "opening_hours": { + "error_loading": "Error: could not visualize these opening hours.", + "open_during_ph": "During a public holiday, this is", + "opensAt": "from", + "openTill": "till", + "not_all_rules_parsed": "These opening hours are complicated. The following rules are ignored in the input element:", + "closed_until": "Closed until {date}", + "closed_permanently": "Closed for an unkown duration", + "open_24_7": "Opened around the clock", + "ph_not_known": " ", + "ph_closed": "closed", + "ph_open": "opened", + "ph_open_as_usual": "opened as usual", + "loadingCountry": "Determining countryâ€Ļ" + }, + "histogram": { + "error_loading": "Could not load the histogram" + }, + "wikipedia": { + "wikipediaboxTitle": "Wikipedia", + "failed": "Loading the Wikipedia entry failed", + "loading": "Loading Wikipedia...", + "noWikipediaPage": "This Wikidata item has no corresponding Wikipedia page yet.", + "searchWikidata": "Search on Wikidata", + "noResults": "Nothing found for {search}", + "doSearch": "Search above to see results", + "createNewWikidata": "Create a new Wikidata item" + }, + "apply_button": { + "isApplied": "The changes are applied", + "appliedOnAnotherObject": "The object {id} will receive {tags}" } + }, + "favourite": { + "panelIntro": "

Your personal theme

Activate your favourite layers from all the official themes", + "loginNeeded": "

Log in

A personal layout is only available for OpenStreetMap users", + "reload": "Reload the data" + }, + "reviews": { + "title": "{count} reviews", + "title_singular": "One review", + "name_required": "A name is required in order to display and create reviews", + "no_reviews_yet": "There are no reviews yet. Be the first to write one and help open data and the business!", + "write_a_comment": "Leave a reviewâ€Ļ", + "no_rating": "No rating given", + "posting_as": "Posting as", + "i_am_affiliated": "I am affiliated with this object
Check if you are an owner, creator, employee, â€Ļ", + "affiliated_reviewer_warning": "(Affiliated review)", + "saving_review": "Savingâ€Ļ", + "saved": "Review saved. Thanks for sharing!", + "tos": "If you create a review, you agree to the TOS and privacy policy of Mangrove.reviews", + "attribution": "Reviews are powered by Mangrove Reviews and are available under CC-BY 4.0.", + "plz_login": "Log in to leave a review" + }, + "multi_apply": { + "autoApply": "When changing the attributes {attr_names}, these attributes will automatically be changed on {count} other objects too" + }, + "move": { + "loginToMove": "You must be logged in to move a point", + "inviteToMoveAgain": "Move this point again", + "moveTitle": "Move this point", + "whyMove": "Why do you want to move this point?", + "confirmMove": "Move here", + "pointIsMoved": "The point has been moved", + "zoomInFurther": "Zoom in further to confirm this move", + "selectReason": "Why do you move this object?", + "reasons": { + "reasonRelocation": "The object has been relocated to a totally different location", + "reasonInaccurate": "The location of this object is inaccurate and should be moved a few meter" + }, + "inviteToMove": { + "generic": "Move this point", + "reasonInaccurate": "Improve the accuracy of this point", + "reasonRelocation": "Move this object to a another place because it has relocated" + }, + "cannotBeMoved": "This feature cannot be moved.", + "isWay": "This feature is a way. Use another OpenStreetMap editor to move it.", + "isRelation": "This feature is a relation and can not be moved", + "partOfAWay": "This feature is part of another way. Use another editor to move it.", + "partOfRelation": "This feature is part of a relation. Use another editor to move it.", + "cancel": "Cancel move" + } } diff --git a/langs/eo.json b/langs/eo.json index 9c6a1e92d..b2d149e7d 100644 --- a/langs/eo.json +++ b/langs/eo.json @@ -1,104 +1,104 @@ { - "image": { - "ccb": "laÅ­ la permesilo CC-BY", - "addPicture": "Aldoni bildon", - "uploadingPicture": "Alŝutante vian bildonâ€Ļ", - "dontDelete": "Nuligi", - "ccbs": "laÅ­ la permesilo CC-BY-SA", - "cco": "kiel publika havaÄĩo", - "pleaseLogin": "Bonvolu saluti por aldoni bildon", - "uploadingMultiple": "Alŝutante {count} bildojnâ€Ļ" + "image": { + "ccb": "laÅ­ la permesilo CC-BY", + "addPicture": "Aldoni bildon", + "uploadingPicture": "Alŝutante vian bildonâ€Ļ", + "dontDelete": "Nuligi", + "ccbs": "laÅ­ la permesilo CC-BY-SA", + "cco": "kiel publika havaÄĩo", + "pleaseLogin": "Bonvolu saluti por aldoni bildon", + "uploadingMultiple": "Alŝutante {count} bildojnâ€Ļ" + }, + "general": { + "opening_hours": { + "ph_open": "malfermita", + "opensAt": "ekde", + "openTill": "ĝis", + "ph_closed": "fermita", + "ph_not_known": " " }, - "general": { - "opening_hours": { - "ph_open": "malfermita", - "opensAt": "ekde", - "openTill": "ĝis", - "ph_closed": "fermita", - "ph_not_known": " " - }, - "questions": { - "websiteIs": "Retejo: {website}" - }, - "weekdays": { - "sunday": "dimanĉo", - "abbreviations": { - "friday": "ve", - "saturday": "sa", - "tuesday": "ma", - "wednesday": "me", - "thursday": "Äĩa", - "sunday": "di", - "monday": "lu" - }, - "thursday": "ÄĩaÅ­do", - "friday": "vendredo", - "saturday": "sabato", - "tuesday": "mardo", - "wednesday": "merkredo", - "monday": "lundo" - }, - "loading": "Ŝarganteâ€Ļ", - "pdf": { - "generatedWith": "Generita per MapComplete.osm.be", - "versionInfo": "v{version} - generita je {date}", - "attrBackground": "Fona tavolo: {background}", - "attr": "Mapaj datenoj Š Kontribuintoj al OpenStreetMap, reuzeblaj laÅ­ ODbL" - }, - "loginWithOpenStreetMap": "Saluti per OpenStreetMap", - "search": { - "search": "Serĉi lokon", - "nothing": "Nenio troviĝisâ€Ļ", - "error": "Io fiaskisâ€Ļ", - "searching": "Serĉanteâ€Ļ" - }, - "returnToTheMap": "Reen al la mapo", - "save": "Konservi", - "skip": "Preterpasi ĉi tiun demandon", - "add": { - "title": "Enmeti novan punkton?" - }, - "pickLanguage": "Elektu lingvon: ", - "noNameCategory": "{category} sen nomo", - "sharescreen": { - "editThisTheme": "Modifi ĉi tiun etoson", - "fsSearch": "Ŝalti la serĉbreton", - "fsUserbadge": "Ŝalti la salutbutonon" - }, - "backgroundMap": "Fona mapo", - "openTheMap": "Malfermi la mapon", - "wikipedia": { - "wikipediaboxTitle": "Vikipedio", - "loading": "Ŝargante Vikipedionâ€Ļ", - "searchWikidata": "Serĉi Vikidatumojn", - "noResults": "Nenio troviĝis pri {search}" - }, - "cancel": "Nuligi", - "attribution": { - "iconAttribution": { - "title": "Uzitaj piktogramoj" - } - }, - "download": { - "exporting": "Elportanteâ€Ļ" - } + "questions": { + "websiteIs": "Retejo: {website}" }, - "favourite": { - "reload": "Reŝargi la datenojn" + "weekdays": { + "sunday": "dimanĉo", + "abbreviations": { + "friday": "ve", + "saturday": "sa", + "tuesday": "ma", + "wednesday": "me", + "thursday": "Äĩa", + "sunday": "di", + "monday": "lu" + }, + "thursday": "ÄĩaÅ­do", + "friday": "vendredo", + "saturday": "sabato", + "tuesday": "mardo", + "wednesday": "merkredo", + "monday": "lundo" }, - "reviews": { - "saving_review": "Konservanteâ€Ļ", - "title": "{count} recenzoj", - "title_singular": "Unu recenzo" + "loading": "Ŝarganteâ€Ļ", + "pdf": { + "generatedWith": "Generita per MapComplete.osm.be", + "versionInfo": "v{version} - generita je {date}", + "attrBackground": "Fona tavolo: {background}", + "attr": "Mapaj datenoj Š Kontribuintoj al OpenStreetMap, reuzeblaj laÅ­ ODbL" }, - "centerMessage": { - "ready": "Farite!", - "loadingData": "Ŝargante datenojnâ€Ļ" + "loginWithOpenStreetMap": "Saluti per OpenStreetMap", + "search": { + "search": "Serĉi lokon", + "nothing": "Nenio troviĝisâ€Ļ", + "error": "Io fiaskisâ€Ļ", + "searching": "Serĉanteâ€Ļ" }, - "index": { - "title": "Bonvenon al MapComplete" + "returnToTheMap": "Reen al la mapo", + "save": "Konservi", + "skip": "Preterpasi ĉi tiun demandon", + "add": { + "title": "Enmeti novan punkton?" }, - "delete": { - "cancel": "Nuligi" + "pickLanguage": "Elektu lingvon: ", + "noNameCategory": "{category} sen nomo", + "sharescreen": { + "editThisTheme": "Modifi ĉi tiun etoson", + "fsSearch": "Ŝalti la serĉbreton", + "fsUserbadge": "Ŝalti la salutbutonon" + }, + "backgroundMap": "Fona mapo", + "openTheMap": "Malfermi la mapon", + "wikipedia": { + "wikipediaboxTitle": "Vikipedio", + "loading": "Ŝargante Vikipedionâ€Ļ", + "searchWikidata": "Serĉi Vikidatumojn", + "noResults": "Nenio troviĝis pri {search}" + }, + "cancel": "Nuligi", + "attribution": { + "iconAttribution": { + "title": "Uzitaj piktogramoj" + } + }, + "download": { + "exporting": "Elportanteâ€Ļ" } + }, + "favourite": { + "reload": "Reŝargi la datenojn" + }, + "reviews": { + "saving_review": "Konservanteâ€Ļ", + "title": "{count} recenzoj", + "title_singular": "Unu recenzo" + }, + "centerMessage": { + "ready": "Farite!", + "loadingData": "Ŝargante datenojnâ€Ļ" + }, + "index": { + "title": "Bonvenon al MapComplete" + }, + "delete": { + "cancel": "Nuligi" + } } diff --git a/langs/fr.json b/langs/fr.json index 82b456e72..45c9c2711 100644 --- a/langs/fr.json +++ b/langs/fr.json @@ -1,181 +1,181 @@ { - "image": { - "addPicture": "Ajoutez une photo", - "uploadingPicture": "Mise en ligne de votre photoâ€Ļ", - "uploadingMultiple": "Mise en ligne de {count} photosâ€Ļ", - "pleaseLogin": "Connectez-vous pour tÊlÊverser une photo", - "willBePublished": "Votre photo va ÃĒtre publiÊe : ", - "cco": "dans le domaine public", - "ccbs": "sous la license CC-BY-SA", - "ccb": "sous la license CC-BY", - "uploadFailed": "L'ajout de la photo a ÊchouÊ. Avez-vous accès à Internet ? Les API tierces sont-elles autorisÊes ? Le navigateur Brave ou UMatrix peuvent les bloquer.", - "respectPrivacy": "Merci de respecter la vie privÊe. Ne publiez pas les plaques d'immatriculation.", - "uploadDone": "Votre photo est ajoutÊe. Merci beaucoup !", - "dontDelete": "Annuler", - "doDelete": "Supprimer l'image", - "isDeleted": "SupprimÊ" + "image": { + "addPicture": "Ajoutez une photo", + "uploadingPicture": "Mise en ligne de votre photoâ€Ļ", + "uploadingMultiple": "Mise en ligne de {count} photosâ€Ļ", + "pleaseLogin": "Connectez-vous pour tÊlÊverser une photo", + "willBePublished": "Votre photo va ÃĒtre publiÊe : ", + "cco": "dans le domaine public", + "ccbs": "sous la license CC-BY-SA", + "ccb": "sous la license CC-BY", + "uploadFailed": "L'ajout de la photo a ÊchouÊ. Avez-vous accès à Internet ? Les API tierces sont-elles autorisÊes ? Le navigateur Brave ou UMatrix peuvent les bloquer.", + "respectPrivacy": "Merci de respecter la vie privÊe. Ne publiez pas les plaques d'immatriculation.", + "uploadDone": "Votre photo est ajoutÊe. Merci beaucoup !", + "dontDelete": "Annuler", + "doDelete": "Supprimer l'image", + "isDeleted": "SupprimÊ" + }, + "centerMessage": { + "loadingData": "Chargement des donnÊesâ€Ļ", + "zoomIn": "Rapprochez-vous sur la carte pour voir ou Êditer les donnÊes", + "ready": "Fini !", + "retrying": "Le chargement a ÊchouÊ. Nouvel essai dans {count} secondesâ€Ļ" + }, + "index": { + "#": "Ces textes sont affichÊs au dessus des boutons de thème quand aucun thème n'est chargÊ", + "title": "Bienvenue sur MapComplete", + "intro": "MapComplete est une application qui permet de voir des informations d'OpenStreetMap sur un thème spÊcifique et de les Êditer.", + "pickTheme": "Choisissez un thème ci-dessous pour commencer." + }, + "general": { + "loginWithOpenStreetMap": "Se connecter avec OpenStreeMap", + "welcomeBack": "Vous ÃĒtes connectÊ. Bienvenue !", + "loginToStart": "Connectez-vous pour rÊpondre à cette question", + "search": { + "search": "Chercher un lieu", + "searching": "Chargementâ€Ļ", + "nothing": "Rien n'a ÊtÊ trouvÊâ€Ļ", + "error": "Quelque chose n'a pas marchÊâ€Ļ" }, - "centerMessage": { - "loadingData": "Chargement des donnÊesâ€Ļ", - "zoomIn": "Rapprochez-vous sur la carte pour voir ou Êditer les donnÊes", - "ready": "Fini !", - "retrying": "Le chargement a ÊchouÊ. Nouvel essai dans {count} secondesâ€Ļ" + "returnToTheMap": "Retourner sur la carte", + "save": "Sauvegarder", + "cancel": "Annuler", + "skip": "Passer la question", + "oneSkippedQuestion": "Une question a ÊtÊ passÊe", + "skippedQuestions": "Questions passÊes", + "number": "nombre", + "osmLinkTooltip": "Voir l'historique de cet objet sur OpenStreetMap et plus d'options d'Êdition", + "add": { + "addNew": "Ajouter un/une {category} ici", + "title": "Ajouter un nouveau point ?", + "intro": "Vous avez cliquÊ sur un endroit oÚ il n'y a pas encore de donnÊes.
", + "pleaseLogin": "Vous devez vous connecter pour ajouter un point", + "zoomInFurther": "Rapprochez vous pour ajouter un point.", + "stillLoading": "Chargement des donnÊes en cours. Patientez un instant avant d'ajouter un nouveau point.", + "confirmIntro": "

Ajouter un/une {title} ici?

Le point que vous ajouterez sera visible par tout le monde. Merci de vous assurer que ce point existe rÊellement. Beaucoup d'autres applications utilisent ces donnÊes.", + "confirmButton": "Ajouter un/une {category} ici.
Votre ajout sera visible par tout le monde
", + "openLayerControl": "Ouvrir la panneau de contrôle", + "layerNotEnabled": "La couche {layer} est dÊsactivÊe. Activez-la pour ajouter un point" }, - "index": { - "#": "Ces textes sont affichÊs au dessus des boutons de thème quand aucun thème n'est chargÊ", - "title": "Bienvenue sur MapComplete", - "intro": "MapComplete est une application qui permet de voir des informations d'OpenStreetMap sur un thème spÊcifique et de les Êditer.", - "pickTheme": "Choisissez un thème ci-dessous pour commencer." + "pickLanguage": "Choisir la langue : ", + "about": "Éditer facilement et ajouter OpenStreetMap pour un certain thème", + "nameInlineQuestion": "Le nom de cet/cette {category} est $$$", + "noNameCategory": "{category} sans nom", + "questions": { + "phoneNumberOf": "Quel est le numÊro de tÊlÊphone de {category} ?", + "phoneNumberIs": "Le numÊro de tÊlÊphone de {category} est {phone}", + "websiteOf": "Quel est le site internet de {category} ?", + "websiteIs": "Site Web : {website}", + "emailOf": "Quelle est l'adresse Êlectronique de {category} ?", + "emailIs": "L'adresse Êlectronique de {category} est {email}" }, - "general": { - "loginWithOpenStreetMap": "Se connecter avec OpenStreeMap", - "welcomeBack": "Vous ÃĒtes connectÊ. Bienvenue !", - "loginToStart": "Connectez-vous pour rÊpondre à cette question", - "search": { - "search": "Chercher un lieu", - "searching": "Chargementâ€Ļ", - "nothing": "Rien n'a ÊtÊ trouvÊâ€Ļ", - "error": "Quelque chose n'a pas marchÊâ€Ļ" - }, - "returnToTheMap": "Retourner sur la carte", - "save": "Sauvegarder", - "cancel": "Annuler", - "skip": "Passer la question", - "oneSkippedQuestion": "Une question a ÊtÊ passÊe", - "skippedQuestions": "Questions passÊes", - "number": "nombre", - "osmLinkTooltip": "Voir l'historique de cet objet sur OpenStreetMap et plus d'options d'Êdition", - "add": { - "addNew": "Ajouter un/une {category} ici", - "title": "Ajouter un nouveau point ?", - "intro": "Vous avez cliquÊ sur un endroit oÚ il n'y a pas encore de donnÊes.
", - "pleaseLogin": "Vous devez vous connecter pour ajouter un point", - "zoomInFurther": "Rapprochez vous pour ajouter un point.", - "stillLoading": "Chargement des donnÊes en cours. Patientez un instant avant d'ajouter un nouveau point.", - "confirmIntro": "

Ajouter un/une {title} ici?

Le point que vous ajouterez sera visible par tout le monde. Merci de vous assurer que ce point existe rÊellement. Beaucoup d'autres applications utilisent ces donnÊes.", - "confirmButton": "Ajouter un/une {category} ici.
Votre ajout sera visible par tout le monde
", - "openLayerControl": "Ouvrir la panneau de contrôle", - "layerNotEnabled": "La couche {layer} est dÊsactivÊe. Activez-la pour ajouter un point" - }, - "pickLanguage": "Choisir la langue : ", - "about": "Éditer facilement et ajouter OpenStreetMap pour un certain thème", - "nameInlineQuestion": "Le nom de cet/cette {category} est $$$", - "noNameCategory": "{category} sans nom", - "questions": { - "phoneNumberOf": "Quel est le numÊro de tÊlÊphone de {category} ?", - "phoneNumberIs": "Le numÊro de tÊlÊphone de {category} est {phone}", - "websiteOf": "Quel est le site internet de {category} ?", - "websiteIs": "Site Web : {website}", - "emailOf": "Quelle est l'adresse Êlectronique de {category} ?", - "emailIs": "L'adresse Êlectronique de {category} est {email}" - }, - "openStreetMapIntro": "

Une carte ouverte

Ne serait-il pas gÊnial d'avoir sur une carte que tout le monde pourrait Êditer ouvertement ? Une seule et unique plateforme regroupant toutes les informations gÊographiques ? Ainsi nous n'aurons plus besoin de toutes ces cartes petites et incompatibles (souvent non mises à jour).

OpenStreetMap est la carte qu'il vous faut ! Toutes les donnÊes de cette carte peuvent ÃĒtre utilisÊ gratuitement (avec d'attribution et de publication des changements de donnÊes). De plus tout le monde est libre d'ajouter de nouvelles donnÊes et de corriger les erreurs. Ce site internet utilise Êgalement OpenStreetMap. Toutes les donnÊes en proviennent et tous les ajouts et modifications y seront Êgalement ajoutÊs.

De nombreux individus et applications utilisent dÊjà OpenStreetMap : Maps.me, OsmAnd, mais aussi les cartes de Facebook, Instagram, Apple-maps et Bing-maps sont (en partie) supportÊs par OpenStreetMap. Si vous modifiez quelque chose ici, ces changements seront incorporÊs dans ces applications dès leurs mises à jour !

", - "attribution": { - "attributionTitle": "CrÊdits", - "attributionContent": "

Toutes les donnÊes sont fournies par OpenStreetMap, librement rÊutilisables sous Open DataBase License.

", - "themeBy": "Thème maintenu par {author}", - "iconAttribution": { - "title": "Icônes utilisÊes" - }, - "mapContributionsByAndHidden": "La partie actuellement visible des donnÊes comporte des modifications par {contributors} et {hiddenCount} contributeurs de plus", - "mapContributionsBy": "La partie actuellement visible des donnÊes comporte des modifications par {contributors}", - "codeContributionsBy": "MapComplete a ÊtÊ construit par {contributors} et {hiddenCount} autres contributeurs" - }, - "sharescreen": { - "intro": "

Partager cette carte

Partagez cette carte en copiant le lien suivant et envoyez-le à vos amis :", - "addToHomeScreen": "

Ajouter à votre page d'accueil

Vous pouvez facilement ajouter la carte à votre Êcran d'accueil de tÊlÊphone. Cliquer sur le boutton 'ajouter à l'ecran d'accueil' dans la barre d'adresse pour Êffectuer cette tÃĸche.", - "embedIntro": "

Incorporer à votre site Web

Ajouter la carte à votre site Web.
Nous vous y encourageons – pas besoin de permission.
C'est gratuit et pour toujours. Plus des personnes l'utilisent, mieux c'est.", - "copiedToClipboard": "Lien copiÊ dans le presse-papier", - "thanksForSharing": "Merci d'avoir partagÊ !", - "editThisTheme": "Editer ce thème", - "editThemeDescription": "Ajouter ou modifier des questions à ce thème", - "fsUserbadge": "Activer le bouton de connexion", - "fsSearch": "Activer la barre de recherche", - "fsWelcomeMessage": "Afficher le message de bienvenue et les onglets associÊs", - "fsLayers": "Activer le contrôle des couches", - "fsLayerControlToggle": "DÊmarrer avec le contrôle des couches ouvert", - "fsAddNew": "Activer le bouton 'ajouter un POI'", - "fsGeolocation": "Activer le bouton 'Localisez-moi' (seulement sur mobile)", - "fsIncludeCurrentBackgroundMap": "Include le choix actuel d'arrière plan {name}", - "fsIncludeCurrentLayers": "Inclure la couche selectionnÊe", - "fsIncludeCurrentLocation": "Inclure l'emplacement actuel" - }, - "morescreen": { - "intro": "

Plus de thèmes ?

Vous aimez collecter des donnÊes gÊographiques ?
Il y a plus de thèmes disponibles.", - "requestATheme": "Si vous voulez une autre carte thÊmatique, demandez-la dans le suivi des problèmes", - "streetcomplete": "Une autre application similaire est StreetComplete.", - "createYourOwnTheme": "CrÊez votre propre MapComplete carte" - }, - "readYourMessages": "Merci de lire tous vos messages sur OpenStreetMap avant d'ajouter un nouveau point.", - "fewChangesBefore": "Merci de rÊpondre à quelques questions à propos de points dÊjà existants avant d'ajouter de nouveaux points.", - "goToInbox": "Ouvrir les messages", - "getStartedLogin": "Connectez-vous avec OpenStreetMap pour commencer", - "getStartedNewAccount": " ou crÊez un compte", - "noTagsSelected": "Aucune balise sÊlectionnÊe", - "customThemeIntro": "

Thèmes personnalisÊs

Vous avez dÊjà visitÊ ces thèmes personnalisÊs.", - "aboutMapcomplete": "

À propos de MapComplete

Avec MapComplete vous pouvez enrichir OpenStreetMap d'informations sur un thème unique. RÊpondez à quelques questions, et en quelques minutes vos contributions seront disponible dans le monde entier ! Le concepteur du thème dÊfinis les ÊlÊments, questions et langues pour le thème.

En savoir plus

MapComplete propose toujours l'Êtape suivante pour en apprendre plus sur OpenStreetMap.

  • Lorsqu'il est intÊgrÊ dans un site Web, l'<i>iframe</i> pointe vers MapComplete en plein Êcran
  • La version plein Êcran donne des informations sur OpenStreetMap
  • Il est possible de regarder sans se connecter, mais l'Êdition demande une connexion à OSM.
  • Si vous n'ÃĒtes pas connectÊ, il vous est demandÊ de le faire
  • Une fois que vous avez rÊpondu à une seule question, vous pouvez ajouter de nouveaux points à la carte
  • Au bout d'un moment, les vrais tags OSM sont montrÊs, qui pointent ensuite vers le wiki


Vous avez remarquÊ un problème ? Vous souhaitez demander une fonctionnalitÊ ? Vous voulez aider à traduire ? Allez voir le code source ou l'<i>issue tracker.</i>

Vous voulez visualiser votre progression ? Suivez le compteur d'Êdition sur OsmCha.

", - "backgroundMap": "Carte de fonds", - "layerSelection": { - "zoomInToSeeThisLayer": "Aggrandissez la carte pour voir cette couche", - "title": "Selectionner des couches" - }, - "weekdays": { - "abbreviations": { - "monday": "Lun", - "tuesday": "Mar", - "wednesday": "Mer", - "thursday": "Jeu", - "friday": "Ven", - "saturday": "Sam", - "sunday": "Dim" - }, - "monday": "Lundi", - "tuesday": "Mardi", - "wednesday": "Mercredi", - "thursday": "Jeudi", - "friday": "Vendredi", - "saturday": "Samedi", - "sunday": "Dimanche" - }, - "opening_hours": { - "error_loading": "Erreur : impossible de visualiser ces horaires d'ouverture.", - "open_during_ph": "Pendant les congÊs, ce lieu est", - "opensAt": "à partir de", - "openTill": "jusqu'à", - "not_all_rules_parsed": "Les heures d'ouvertures de ce magasin sont trop compliquÊes. Les heures suivantes ont ÊtÊ ignorÊes :", - "closed_until": "FermÊ jusqu'au {date}", - "closed_permanently": "FermÊ", - "open_24_7": "Ouvert en permanence", - "ph_closed": "fermÊ", - "ph_open": "ouvert", - "ph_not_known": " " - } + "openStreetMapIntro": "

Une carte ouverte

Ne serait-il pas gÊnial d'avoir sur une carte que tout le monde pourrait Êditer ouvertement ? Une seule et unique plateforme regroupant toutes les informations gÊographiques ? Ainsi nous n'aurons plus besoin de toutes ces cartes petites et incompatibles (souvent non mises à jour).

OpenStreetMap est la carte qu'il vous faut ! Toutes les donnÊes de cette carte peuvent ÃĒtre utilisÊ gratuitement (avec d'attribution et de publication des changements de donnÊes). De plus tout le monde est libre d'ajouter de nouvelles donnÊes et de corriger les erreurs. Ce site internet utilise Êgalement OpenStreetMap. Toutes les donnÊes en proviennent et tous les ajouts et modifications y seront Êgalement ajoutÊs.

De nombreux individus et applications utilisent dÊjà OpenStreetMap : Maps.me, OsmAnd, mais aussi les cartes de Facebook, Instagram, Apple-maps et Bing-maps sont (en partie) supportÊs par OpenStreetMap. Si vous modifiez quelque chose ici, ces changements seront incorporÊs dans ces applications dès leurs mises à jour !

", + "attribution": { + "attributionTitle": "CrÊdits", + "attributionContent": "

Toutes les donnÊes sont fournies par OpenStreetMap, librement rÊutilisables sous Open DataBase License.

", + "themeBy": "Thème maintenu par {author}", + "iconAttribution": { + "title": "Icônes utilisÊes" + }, + "mapContributionsByAndHidden": "La partie actuellement visible des donnÊes comporte des modifications par {contributors} et {hiddenCount} contributeurs de plus", + "mapContributionsBy": "La partie actuellement visible des donnÊes comporte des modifications par {contributors}", + "codeContributionsBy": "MapComplete a ÊtÊ construit par {contributors} et {hiddenCount} autres contributeurs" }, - "favourite": { - "panelIntro": "

Votre thème personnel

Activer vos couches favorites depuis les thèmes officiels", - "loginNeeded": "

Connexion

La mise en forme personnalisÊe requiert un compte OpenStreetMap", - "reload": "Recharger les donnÊes" + "sharescreen": { + "intro": "

Partager cette carte

Partagez cette carte en copiant le lien suivant et envoyez-le à vos amis :", + "addToHomeScreen": "

Ajouter à votre page d'accueil

Vous pouvez facilement ajouter la carte à votre Êcran d'accueil de tÊlÊphone. Cliquer sur le boutton 'ajouter à l'ecran d'accueil' dans la barre d'adresse pour Êffectuer cette tÃĸche.", + "embedIntro": "

Incorporer à votre site Web

Ajouter la carte à votre site Web.
Nous vous y encourageons – pas besoin de permission.
C'est gratuit et pour toujours. Plus des personnes l'utilisent, mieux c'est.", + "copiedToClipboard": "Lien copiÊ dans le presse-papier", + "thanksForSharing": "Merci d'avoir partagÊ !", + "editThisTheme": "Editer ce thème", + "editThemeDescription": "Ajouter ou modifier des questions à ce thème", + "fsUserbadge": "Activer le bouton de connexion", + "fsSearch": "Activer la barre de recherche", + "fsWelcomeMessage": "Afficher le message de bienvenue et les onglets associÊs", + "fsLayers": "Activer le contrôle des couches", + "fsLayerControlToggle": "DÊmarrer avec le contrôle des couches ouvert", + "fsAddNew": "Activer le bouton 'ajouter un POI'", + "fsGeolocation": "Activer le bouton 'Localisez-moi' (seulement sur mobile)", + "fsIncludeCurrentBackgroundMap": "Include le choix actuel d'arrière plan {name}", + "fsIncludeCurrentLayers": "Inclure la couche selectionnÊe", + "fsIncludeCurrentLocation": "Inclure l'emplacement actuel" }, - "reviews": { - "title": "{count} avis", - "title_singular": "Un avis", - "name_required": "Un nom est requis pour afficher et crÊer des avis", - "no_reviews_yet": "Il n'y a pas encore d'avis. Soyez le premier à en Êcrire un et aidez le lieu et les donnÊes ouvertes !", - "write_a_comment": "Laisser un avisâ€Ļ", - "no_rating": "Aucun score donnÊ", - "posting_as": "Envoi en tant que", - "i_am_affiliated": "Je suis affiliÊ à cet objet
Cochez si vous en ÃĒtes le propriÊtaire, crÊateur, employÊ, â€Ļ", - "affiliated_reviewer_warning": "(Avis affiliÊ)", - "saving_review": "Enregistrementâ€Ļ", - "saved": "Avis enregistrÊ. Merci du partage !", - "tos": "En publiant un avis, vous ÃĒtes d'accord avec les conditions d'utilisation et la politique de confidentialitÊ de Mangrove.reviews", - "attribution": "Les avis sont fournis par Mangrove Reviews et sont disponibles sous licence CC-BY 4.0.", - "plz_login": "Connectez vous pour laisser un avis" + "morescreen": { + "intro": "

Plus de thèmes ?

Vous aimez collecter des donnÊes gÊographiques ?
Il y a plus de thèmes disponibles.", + "requestATheme": "Si vous voulez une autre carte thÊmatique, demandez-la dans le suivi des problèmes", + "streetcomplete": "Une autre application similaire est StreetComplete.", + "createYourOwnTheme": "CrÊez votre propre MapComplete carte" }, - "split": { - "cancel": "Annuler" + "readYourMessages": "Merci de lire tous vos messages sur OpenStreetMap avant d'ajouter un nouveau point.", + "fewChangesBefore": "Merci de rÊpondre à quelques questions à propos de points dÊjà existants avant d'ajouter de nouveaux points.", + "goToInbox": "Ouvrir les messages", + "getStartedLogin": "Connectez-vous avec OpenStreetMap pour commencer", + "getStartedNewAccount": " ou crÊez un compte", + "noTagsSelected": "Aucune balise sÊlectionnÊe", + "customThemeIntro": "

Thèmes personnalisÊs

Vous avez dÊjà visitÊ ces thèmes personnalisÊs.", + "aboutMapcomplete": "

À propos de MapComplete

Avec MapComplete vous pouvez enrichir OpenStreetMap d'informations sur un thème unique. RÊpondez à quelques questions, et en quelques minutes vos contributions seront disponible dans le monde entier ! Le concepteur du thème dÊfinis les ÊlÊments, questions et langues pour le thème.

En savoir plus

MapComplete propose toujours l'Êtape suivante pour en apprendre plus sur OpenStreetMap.

  • Lorsqu'il est intÊgrÊ dans un site Web, l'<i>iframe</i> pointe vers MapComplete en plein Êcran
  • La version plein Êcran donne des informations sur OpenStreetMap
  • Il est possible de regarder sans se connecter, mais l'Êdition demande une connexion à OSM.
  • Si vous n'ÃĒtes pas connectÊ, il vous est demandÊ de le faire
  • Une fois que vous avez rÊpondu à une seule question, vous pouvez ajouter de nouveaux points à la carte
  • Au bout d'un moment, les vrais tags OSM sont montrÊs, qui pointent ensuite vers le wiki


Vous avez remarquÊ un problème ? Vous souhaitez demander une fonctionnalitÊ ? Vous voulez aider à traduire ? Allez voir le code source ou l'<i>issue tracker.</i>

Vous voulez visualiser votre progression ? Suivez le compteur d'Êdition sur OsmCha.

", + "backgroundMap": "Carte de fonds", + "layerSelection": { + "zoomInToSeeThisLayer": "Aggrandissez la carte pour voir cette couche", + "title": "Selectionner des couches" }, - "delete": { - "cancel": "Annuler" + "weekdays": { + "abbreviations": { + "monday": "Lun", + "tuesday": "Mar", + "wednesday": "Mer", + "thursday": "Jeu", + "friday": "Ven", + "saturday": "Sam", + "sunday": "Dim" + }, + "monday": "Lundi", + "tuesday": "Mardi", + "wednesday": "Mercredi", + "thursday": "Jeudi", + "friday": "Vendredi", + "saturday": "Samedi", + "sunday": "Dimanche" + }, + "opening_hours": { + "error_loading": "Erreur : impossible de visualiser ces horaires d'ouverture.", + "open_during_ph": "Pendant les congÊs, ce lieu est", + "opensAt": "à partir de", + "openTill": "jusqu'à", + "not_all_rules_parsed": "Les heures d'ouvertures de ce magasin sont trop compliquÊes. Les heures suivantes ont ÊtÊ ignorÊes :", + "closed_until": "FermÊ jusqu'au {date}", + "closed_permanently": "FermÊ", + "open_24_7": "Ouvert en permanence", + "ph_closed": "fermÊ", + "ph_open": "ouvert", + "ph_not_known": " " } + }, + "favourite": { + "panelIntro": "

Votre thème personnel

Activer vos couches favorites depuis les thèmes officiels", + "loginNeeded": "

Connexion

La mise en forme personnalisÊe requiert un compte OpenStreetMap", + "reload": "Recharger les donnÊes" + }, + "reviews": { + "title": "{count} avis", + "title_singular": "Un avis", + "name_required": "Un nom est requis pour afficher et crÊer des avis", + "no_reviews_yet": "Il n'y a pas encore d'avis. Soyez le premier à en Êcrire un et aidez le lieu et les donnÊes ouvertes !", + "write_a_comment": "Laisser un avisâ€Ļ", + "no_rating": "Aucun score donnÊ", + "posting_as": "Envoi en tant que", + "i_am_affiliated": "Je suis affiliÊ à cet objet
Cochez si vous en ÃĒtes le propriÊtaire, crÊateur, employÊ, â€Ļ", + "affiliated_reviewer_warning": "(Avis affiliÊ)", + "saving_review": "Enregistrementâ€Ļ", + "saved": "Avis enregistrÊ. Merci du partage !", + "tos": "En publiant un avis, vous ÃĒtes d'accord avec les conditions d'utilisation et la politique de confidentialitÊ de Mangrove.reviews", + "attribution": "Les avis sont fournis par Mangrove Reviews et sont disponibles sous licence CC-BY 4.0.", + "plz_login": "Connectez vous pour laisser un avis" + }, + "split": { + "cancel": "Annuler" + }, + "delete": { + "cancel": "Annuler" + } } diff --git a/langs/gl.json b/langs/gl.json index a5b2c73e8..13725975f 100644 --- a/langs/gl.json +++ b/langs/gl.json @@ -70,9 +70,9 @@ "emailIs": "O enderezo de correo electrÃŗnico de {category} Ê {email}" }, "index": { - "pickTheme": "Escolle un tema para comezar.", - "intro": "O MapComplete Ê un visor e editor do OpenStreetMap, que te amosa informaciÃŗn sobre un tema específico.", - "title": "Benvido ao MapComplete" + "pickTheme": "Escolle un tema para comezar.", + "intro": "O MapComplete Ê un visor e editor do OpenStreetMap, que te amosa informaciÃŗn sobre un tema específico.", + "title": "Benvido ao MapComplete" }, "openStreetMapIntro": "

Un mapa aberto

Non sería xenial se houbera un sÃŗ mapa, que todos puideran empregar e editar de xeito libre?Un sÃŗ lugar para almacenar toda a informaciÃŗn xeogrÃĄfica? EntÃŗn, todos eses sitios web con mapas diferentes, pequenos e incompatíbeis (que sempre estÃĄn desactualizados) xa non serían necesarios.

OpenStreetMap Ê ese mapa. Os datos do mapa pÃŗdense empregar de balde (con atribuciÃŗn e publicaciÃŗn de modificaciÃŗns neses datos). Ademais diso, todos poden engadir de xeito ceibe novos datos e corrixir erros. Este sitio web tamÊn emprega o OpenStreetMap. Todos os datos proveÃąen de alí, e as tÃēas respostas e correcciÃŗns tamÊn serÃĄn engadidas alí.

Moitas persoas e aplicaciÃŗns xa empregan o OpenStreetMap: Maps.me, OsmAnd, pero tamÊn os mapas do Facebook, Instagram, Apple e Bing son (en parte) impulsados ​​polo OpenStreetMap. Se mudas algo aquí, tamÊn serÃĄ reflexado nesas aplicaciÃŗns, na sÃēa seguinte actualizaciÃŗn!

", "sharescreen": { diff --git a/langs/id.json b/langs/id.json index 096cbf6ce..9c78ab6e7 100644 --- a/langs/id.json +++ b/langs/id.json @@ -1,109 +1,109 @@ { - "general": { - "questions": { - "phoneNumberOf": "Apakah nombor telepon {category} ini?", - "websiteIs": "Website: {website}", - "emailOf": "Apa alamat email {category}?" - }, - "nameInlineQuestion": "Name {category} ini adalah $$$", - "pickLanguage": "Pilih bahasa: ", - "layerSelection": { - "title": "Pilih lapisan" - }, - "backgroundMap": "Peta latar belakang", - "search": { - "searching": "Sdg mencariâ€Ļ" - }, - "opening_hours": { - "ph_not_known": " ", - "ph_open": "buka", - "ph_closed": "tutup", - "open_24_7": "Dibuka sekitar jam", - "closed_permanently": "Ditutup sampai pemberitahuan lebih lanjut", - "openTill": "sampai", - "opensAt": "dari", - "closed_until": "Ditutup sampai {date}" - }, - "noTagsSelected": "Tidak ada tag yang dipilih", - "getStartedNewAccount": " atau membuat akun baru", - "getStartedLogin": "Masuk dengan OpenStreetMap untuk memulai", - "sharescreen": { - "fsIncludeCurrentLocation": "Sertakan lokasi saat ini", - "fsIncludeCurrentLayers": "Sertakan pilihan lapisan saat ini", - "fsIncludeCurrentBackgroundMap": "Sertakan pilihan latar belakang saat ini {name}", - "fsGeolocation": "Aktifkan tombol 'geolocate-me' (hanya seluler)", - "fsAddNew": "Aktifkan tombol 'tambah POI baru'", - "fsLayers": "Aktifkan kontrol lapisan", - "fsWelcomeMessage": "Tampilkan popup pesan selamat datang dan tab terkait", - "fsSearch": "Aktifkan bilah pencarian", - "fsUserbadge": "Aktifkan tombol masuk", - "editThemeDescription": "Tambahkan atau ubah pertanyaan ke tema peta ini", - "editThisTheme": "Sunting tema ini", - "thanksForSharing": "Terima kasih telah berbagi!", - "copiedToClipboard": "Tautan disalin ke papan klip" - }, - "goToInbox": "Buka kotak masuk", - "weekdays": { - "abbreviations": { - "sunday": "Min", - "saturday": "Sab", - "friday": "Jum", - "thursday": "Kam", - "wednesday": "Rab", - "tuesday": "Sel", - "monday": "Sen" - }, - "sunday": "Minggu", - "saturday": "Sabtu", - "friday": "Jum'at", - "thursday": "Kamis", - "wednesday": "Rabu", - "tuesday": "Selasa", - "monday": "Senin" - }, - "cancel": "Batal" + "general": { + "questions": { + "phoneNumberOf": "Apakah nombor telepon {category} ini?", + "websiteIs": "Website: {website}", + "emailOf": "Apa alamat email {category}?" }, - "image": { - "doDelete": "Buang gambar", - "ccb": "di bawah lisensi CC-BY", - "ccbs": "di bawah lisensi CC-BY-SA", - "cco": "di domain publik", - "willBePublished": "Gambarmu akan dipublikasikan: ", - "pleaseLogin": "Silakan masuk untuk menambah gambar", - "uploadingMultiple": "Mengunggah {count} gambarâ€Ļ", - "uploadingPicture": "Mengunggah gambar Andaâ€Ļ", - "addPicture": "Tambahkan foto", - "isDeleted": "Dihapus", - "dontDelete": "Batal" + "nameInlineQuestion": "Name {category} ini adalah $$$", + "pickLanguage": "Pilih bahasa: ", + "layerSelection": { + "title": "Pilih lapisan" }, - "centerMessage": { - "ready": "Selesai!", - "loadingData": "Memuat dataâ€Ļ" + "backgroundMap": "Peta latar belakang", + "search": { + "searching": "Sdg mencariâ€Ļ" }, - "favourite": { - "reload": "Muat ulang data" + "opening_hours": { + "ph_not_known": " ", + "ph_open": "buka", + "ph_closed": "tutup", + "open_24_7": "Dibuka sekitar jam", + "closed_permanently": "Ditutup sampai pemberitahuan lebih lanjut", + "openTill": "sampai", + "opensAt": "dari", + "closed_until": "Ditutup sampai {date}" }, - "reviews": { - "attribution": "Ulasan didukung oleh Mangrove Reviews dan tersedia di bawah CC-BY 4.0.", - "tos": "Jika Anda membuat ulasan, Anda menyetujui TOS dan kebijakan privasi Mangrove.reviews", - "saved": " Ulasan disimpan. Terima kasih sudah berbagi! ", - "saving_review": "Menyimpanâ€Ļ", - "posting_as": "Posting sebagai", - "no_rating": "Tidak ada peringkat yang diberikan", - "write_a_comment": "Beri ulasanâ€Ļ", - "title_singular": "Satu ulasan", - "title": "{count} ulasan", - "plz_login": "Masuk untuk meninggalkan ulasan" + "noTagsSelected": "Tidak ada tag yang dipilih", + "getStartedNewAccount": " atau membuat akun baru", + "getStartedLogin": "Masuk dengan OpenStreetMap untuk memulai", + "sharescreen": { + "fsIncludeCurrentLocation": "Sertakan lokasi saat ini", + "fsIncludeCurrentLayers": "Sertakan pilihan lapisan saat ini", + "fsIncludeCurrentBackgroundMap": "Sertakan pilihan latar belakang saat ini {name}", + "fsGeolocation": "Aktifkan tombol 'geolocate-me' (hanya seluler)", + "fsAddNew": "Aktifkan tombol 'tambah POI baru'", + "fsLayers": "Aktifkan kontrol lapisan", + "fsWelcomeMessage": "Tampilkan popup pesan selamat datang dan tab terkait", + "fsSearch": "Aktifkan bilah pencarian", + "fsUserbadge": "Aktifkan tombol masuk", + "editThemeDescription": "Tambahkan atau ubah pertanyaan ke tema peta ini", + "editThisTheme": "Sunting tema ini", + "thanksForSharing": "Terima kasih telah berbagi!", + "copiedToClipboard": "Tautan disalin ke papan klip" }, - "index": { - "pickTheme": "Pilih tema di bawah ini untuk memulai.", - "intro": "MapComplete adalah penampil dan editor OpenStreetMap, yang menunjukkan informasi tentang tema tertentu.", - "title": "Selamat datang di MapComplete" + "goToInbox": "Buka kotak masuk", + "weekdays": { + "abbreviations": { + "sunday": "Min", + "saturday": "Sab", + "friday": "Jum", + "thursday": "Kam", + "wednesday": "Rab", + "tuesday": "Sel", + "monday": "Sen" + }, + "sunday": "Minggu", + "saturday": "Sabtu", + "friday": "Jum'at", + "thursday": "Kamis", + "wednesday": "Rabu", + "tuesday": "Selasa", + "monday": "Senin" }, - "split": { - "cancel": "Batal" - }, - "delete": { - "cancel": "Batal" - } + "cancel": "Batal" + }, + "image": { + "doDelete": "Buang gambar", + "ccb": "di bawah lisensi CC-BY", + "ccbs": "di bawah lisensi CC-BY-SA", + "cco": "di domain publik", + "willBePublished": "Gambarmu akan dipublikasikan: ", + "pleaseLogin": "Silakan masuk untuk menambah gambar", + "uploadingMultiple": "Mengunggah {count} gambarâ€Ļ", + "uploadingPicture": "Mengunggah gambar Andaâ€Ļ", + "addPicture": "Tambahkan foto", + "isDeleted": "Dihapus", + "dontDelete": "Batal" + }, + "centerMessage": { + "ready": "Selesai!", + "loadingData": "Memuat dataâ€Ļ" + }, + "favourite": { + "reload": "Muat ulang data" + }, + "reviews": { + "attribution": "Ulasan didukung oleh Mangrove Reviews dan tersedia di bawah CC-BY 4.0.", + "tos": "Jika Anda membuat ulasan, Anda menyetujui TOS dan kebijakan privasi Mangrove.reviews", + "saved": " Ulasan disimpan. Terima kasih sudah berbagi! ", + "saving_review": "Menyimpanâ€Ļ", + "posting_as": "Posting sebagai", + "no_rating": "Tidak ada peringkat yang diberikan", + "write_a_comment": "Beri ulasanâ€Ļ", + "title_singular": "Satu ulasan", + "title": "{count} ulasan", + "plz_login": "Masuk untuk meninggalkan ulasan" + }, + "index": { + "pickTheme": "Pilih tema di bawah ini untuk memulai.", + "intro": "MapComplete adalah penampil dan editor OpenStreetMap, yang menunjukkan informasi tentang tema tertentu.", + "title": "Selamat datang di MapComplete" + }, + "split": { + "cancel": "Batal" + }, + "delete": { + "cancel": "Batal" + } } diff --git a/langs/it.json b/langs/it.json index dee1190af..19d0394ed 100644 --- a/langs/it.json +++ b/langs/it.json @@ -1,288 +1,288 @@ { - "reviews": { - "attribution": "Le recensioni sono fornite da Mangrove Reviews e sono disponibili con licenza CC-BY 4.0.", - "tos": "Quando pubblichi una recensione, accetti i termini di utilizzo e la informativa sulla privacy di Mangrove.reviews", - "plz_login": "Accedi per lasciare una recensione", - "saved": "Recensione salvata. Grazie per averla condivisa!", - "saving_review": "Salvataggioâ€Ļ", - "affiliated_reviewer_warning": "(Recensione di un affiliato)", - "i_am_affiliated": "Sono associato con questo oggetto
Spunta se sei il proprietario, creatore, dipendente, etc.", - "posting_as": "Pubblica come", - "no_rating": "Nessun voto ricevuto", - "write_a_comment": "Lascia una recensioneâ€Ļ", - "no_reviews_yet": "Non ci sono ancora recensioni. Sii il primo a scriverne una aiutando cosÃŦ i dati liberi e l’attività!", - "name_required": "È richiesto un nome per poter mostrare e creare recensioni", - "title_singular": "Una recensione", - "title": "{count} recensioni" + "reviews": { + "attribution": "Le recensioni sono fornite da Mangrove Reviews e sono disponibili con licenza CC-BY 4.0.", + "tos": "Quando pubblichi una recensione, accetti i termini di utilizzo e la informativa sulla privacy di Mangrove.reviews", + "plz_login": "Accedi per lasciare una recensione", + "saved": "Recensione salvata. Grazie per averla condivisa!", + "saving_review": "Salvataggioâ€Ļ", + "affiliated_reviewer_warning": "(Recensione di un affiliato)", + "i_am_affiliated": "Sono associato con questo oggetto
Spunta se sei il proprietario, creatore, dipendente, etc.", + "posting_as": "Pubblica come", + "no_rating": "Nessun voto ricevuto", + "write_a_comment": "Lascia una recensioneâ€Ļ", + "no_reviews_yet": "Non ci sono ancora recensioni. Sii il primo a scriverne una aiutando cosÃŦ i dati liberi e l’attività!", + "name_required": "È richiesto un nome per poter mostrare e creare recensioni", + "title_singular": "Una recensione", + "title": "{count} recensioni" + }, + "general": { + "aboutMapcomplete": "

Informazioni su MapComplete

Con MapComplete puoi arricchire OpenStreetMap con informazioni su un singolo argomento. Rispondi a poche domande e in pochi minuti i tuoi contributi saranno disponibili a tutto il mondo! L’utente gestore del tema definisce gli elementi, le domande e le lingue per quel tema.

Scopri altro

MapComplete propone sempre un passo in piÚ per imparare qualcosa di nuovo su OpenStreetMap.

  • Quando viene incorporato in un sito web, il collegamento dell’iframe punta a MapComplete a tutto schermo
  • La versione a tutto schermo fornisce informazioni su OpenStreetMap
  • La visualizzazione non necessita di alcun accesso ma per modificare occorre aver effettuato l’accesso su OSM.
  • Se non hai effettuato l’accesso, ti verrà richiesto di farlo
  • Dopo aver risposto ad una sola domanda potrai aggiungere dei nuovi punti alla mappa
  • Dopo qualche momento verranno mostrate le etichette effettive, in seguito i collegamenti alla wiki


Hai trovato un errore? Vuoi richiedere nuove funzionalità? Vuoi aiutare con la traduzione? Dai un’occhiata al codice sorgente oppure al tracker degli errori.

Vuoi vedere i tuoi progressi?Segui il contatore delle modifiche su OsmCha.

", + "morescreen": { + "requestATheme": "Se hai bisogno di una mappa tematica personalizzata, puoi chiederla nel tracker degli errori", + "createYourOwnTheme": "Crea il tuo tema di MapComplete personalizzato da zero", + "streetcomplete": "Un’altra simile applicazione è StreetComplete.", + "intro": "

Altre mappe tematiche?

Ti diverti a raccogliere dati geografici?
Sono disponibili altri temi.", + "previouslyHiddenTitle": "Temi nascosti precedentemente visitati", + "hiddenExplanation": "Questi temi sono solo accessibili se si dispone del collegamento. Hai scoperto {hidden_discovered} su {total_hidden} temi nascosti." }, - "general": { - "aboutMapcomplete": "

Informazioni su MapComplete

Con MapComplete puoi arricchire OpenStreetMap con informazioni su un singolo argomento. Rispondi a poche domande e in pochi minuti i tuoi contributi saranno disponibili a tutto il mondo! L’utente gestore del tema definisce gli elementi, le domande e le lingue per quel tema.

Scopri altro

MapComplete propone sempre un passo in piÚ per imparare qualcosa di nuovo su OpenStreetMap.

  • Quando viene incorporato in un sito web, il collegamento dell’iframe punta a MapComplete a tutto schermo
  • La versione a tutto schermo fornisce informazioni su OpenStreetMap
  • La visualizzazione non necessita di alcun accesso ma per modificare occorre aver effettuato l’accesso su OSM.
  • Se non hai effettuato l’accesso, ti verrà richiesto di farlo
  • Dopo aver risposto ad una sola domanda potrai aggiungere dei nuovi punti alla mappa
  • Dopo qualche momento verranno mostrate le etichette effettive, in seguito i collegamenti alla wiki


Hai trovato un errore? Vuoi richiedere nuove funzionalità? Vuoi aiutare con la traduzione? Dai un’occhiata al codice sorgente oppure al tracker degli errori.

Vuoi vedere i tuoi progressi?Segui il contatore delle modifiche su OsmCha.

", - "morescreen": { - "requestATheme": "Se hai bisogno di una mappa tematica personalizzata, puoi chiederla nel tracker degli errori", - "createYourOwnTheme": "Crea il tuo tema di MapComplete personalizzato da zero", - "streetcomplete": "Un’altra simile applicazione è StreetComplete.", - "intro": "

Altre mappe tematiche?

Ti diverti a raccogliere dati geografici?
Sono disponibili altri temi.", - "previouslyHiddenTitle": "Temi nascosti precedentemente visitati", - "hiddenExplanation": "Questi temi sono solo accessibili se si dispone del collegamento. Hai scoperto {hidden_discovered} su {total_hidden} temi nascosti." - }, - "sharescreen": { - "embedIntro": "

Incorpora nel tuo sito web

Siamo lieti se vorrai includere questa cartina nel tuo sito web.
Ti incoraggiamo a farlo (non devi neanche chieder il permesso).
È gratuito e lo sarà per sempre. PiÚ persone lo useranno e piÚ valore acquisirà.", - "addToHomeScreen": "

Aggiungi alla tua schermata Home

Puoi aggiungere facilmente questo sito web alla schermata Home del tuo smartphone. Per farlo, clicca sul pulsante ‘Aggiungi a schermata Home’ nella barra degli indirizzi.", - "fsIncludeCurrentLocation": "Includi la posizione attuale", - "fsIncludeCurrentBackgroundMap": "Includi lo sfondo attualmente selezionato {name}", - "fsIncludeCurrentLayers": "Includi i livelli correntemente selezionati", - "fsGeolocation": "Abilita il pusante ‘geo-localizzami’ (solo da mobile)", - "fsAddNew": "Abilita il pulsante ‘aggiungi nuovo PDI’", - "fsLayerControlToggle": "Inizia con il pannello dei livelli aperto", - "fsLayers": "Abilita il controllo dei livelli", - "fsWelcomeMessage": "Mostra il messaggio di benvenuto e le schede associate", - "fsSearch": "Abilita la barra di ricerca", - "fsUserbadge": "Abilita il pulsante di accesso", - "editThemeDescription": "Aggiungi o modifica le domande a questo tema della mappa", - "editThisTheme": "Modifica questo tema", - "thanksForSharing": "Grazie per la condivisione!", - "copiedToClipboard": "Collegamento copiato negli appunti", - "intro": "

Condividi questa mappa

Condividi questa mappa copiando il collegamento qua sotto e inviandolo ad amici o parenti:" - }, - "attribution": { - "attributionContent": "

Tutti i dati sono forniti da OpenStreetMap, riutilizzabili liberamente con Open Database License

", - "attributionTitle": "Crediti", - "codeContributionsBy": "MapComplete è stato realizzato da {contributors} e {hiddenCount} altri collaboratori", - "mapContributionsByAndHidden": "I dati attualmente visibili sono stati modificati da {contributors} e {hiddenCount} altri contributori", - "mapContributionsBy": "I dati attualmente visibili sono stati creati da {contributors}", - "iconAttribution": { - "title": "Icone utilizzate" - }, - "themeBy": "Tema manutenuto da {author}" - }, - "openStreetMapIntro": "

Una mappa libera

Non sarebbe perfetto se esistesse una carta geografica che chiunque puÃ˛ modificare e utilizzare liberamente? Un unico posto in un cui conservare tutte le informazioni geografiche? In questo modo tutti questi siti web con mappe diverse, piccole e incompatibili (che sono sempre obsolete) diverrebbero istantaneamente inutili.

OpenStreetMap è proprio questa mappa. I dati geografici possono essere usati liberamente (rispettando l’attribuzione e la pubblicazione delle modifiche di quei dati). In piÚ, chiunque puÃ˛ aggiungere liberamente nuovi dati e correggere gli errori. Anche questo sito usa OpenStreetMap. Tutti i dati provengono da lÃŦ e le tue risposte e correzioni finiscono sempre lÃŦ.

Moltissime persone e applicazioni già usano OpenStreetmap: Maps.me, OsmAnd ma anche le cartine di Facebook, Instagram, Apple e Bing si basano (parzialmente) su OpenStreetMap. Tutto quello che cambi qua si rifletterà anche su quelle applicazioni (non appena avranno aggiornato i loro dati!)

", - "opening_hours": { - "ph_open": "aperto", - "ph_closed": "chiuso", - "ph_not_known": " ", - "open_24_7": "Sempre aperto", - "closed_permanently": "Chiuso per un periodo sconosciuto", - "closed_until": "Chiuso fino al {date}", - "not_all_rules_parsed": "Gli orari di apertura di questo negozio sono complicati. Le seguenti regole sono state ignorate per l’oggetto in ingresso:", - "openTill": "fino a", - "opensAt": "da", - "open_during_ph": "Durante le festività questo luogo è", - "error_loading": "Errore: impossibile visualizzare questi orari di apertura.", - "ph_open_as_usual": "aperto come di consueto", - "loadingCountry": "Determinazione del Paeseâ€Ļ" - }, - "weekdays": { - "sunday": "Domenica", - "saturday": "Sabato", - "friday": "VenerdÃŦ", - "thursday": "GiovedÃŦ", - "wednesday": "MercoledÃŦ", - "tuesday": "MartedÃŦ", - "monday": "LunedÃŦ", - "abbreviations": { - "sunday": "Dom", - "saturday": "Sab", - "friday": "Ven", - "thursday": "Gio", - "wednesday": "Mer", - "tuesday": "Mar", - "monday": "Lun" - } - }, - "layerSelection": { - "title": "Seleziona livelli", - "zoomInToSeeThisLayer": "Ingrandisci la mappa per vedere questo livello" - }, - "backgroundMap": "Mappa di sfondo", - "customThemeIntro": "

Temi personalizzati

Questi sono i temi degli utenti che hai già visitato.", - "noTagsSelected": "Nessuna etichetta selezionata", - "getStartedNewAccount": " oppure crea un nuovo account", - "getStartedLogin": "Accedi con OpenStreetMap per iniziare", - "goToInbox": "Apri posta in arrivo", - "fewChangesBefore": "Rispondi ad alcune domande di punti esistenti prima di aggiungere un nuovo punto.", - "readYourMessages": "Leggi tutti i tuoi messaggi OpenStreetMap prima di aggiungere un nuovo punto.", - "questions": { - "emailIs": "L’indirizzo email di questa {category} è {email}", - "emailOf": "Qual è l’indirizzo email di {category}?", - "websiteIs": "Sito web: {website}", - "websiteOf": "Qual è il sito web di {category}?", - "phoneNumberIs": "Il numero di telefono di questa {category} è {phone}", - "phoneNumberOf": "Qual è il numero di telefono di {category}?" - }, - "noNameCategory": "{category} senza nome", - "nameInlineQuestion": "Il nome di questa {category} è $$$", - "about": "Modifica e aggiungi con semplicità OpenStreetMap per un certo tema", - "pickLanguage": "Scegli una lingua: ", - "add": { - "layerNotEnabled": "Il livello {layer} non è abilitato. Abilita questo livello per aggiungere un punto", - "openLayerControl": "Apri il pannello di controllo dei livelli", - "confirmButton": "Aggiungi una {category} qua.
La tua aggiunta è visibile a chiunque
", - "confirmIntro": "

Aggiungere un {title} qua?

Il punto che hai creato qua sarà visibile da chiunque. Per favore, aggiungi sulla mappa solo oggetti realmente esistenti. Molte applicazioni usano questi dati.", - "stillLoading": "Caricamento dei dati ancora in corso. Attendi un po’ prima di aggiungere un nuovo punto.", - "zoomInFurther": "Ingrandisci la mappa per aggiungere un punto.", - "pleaseLogin": "Accedi per aggiungere un punto", - "intro": "Hai cliccato in un punto dove non ci sono ancora dei dati.
", - "title": "Aggiungi un nuovo punto?", - "addNew": "Aggiungi una nuova {category} qua", - "presetInfo": "Il nuovo PDI avrà {tags}", - "warnVisibleForEveryone": "La tua aggiunta sarà visibile a tutti", - "zoomInMore": "Ingrandisci ancora per importare questo oggetto", - "hasBeenImported": "Questo punto è stato già importato", - "disableFilters": "Disabilita tutti i filtri", - "addNewMapLabel": "Aggiungi nuovo elemento", - "disableFiltersExplanation": "Alcuni oggetti potrebbero essere nascosti da un filtro" - }, - "osmLinkTooltip": "Visita questo oggetto su OpenStreetMap per la cronologia o altre opzioni di modifica", - "number": "numero", - "skippedQuestions": "Alcune domande sono state scartate", - "oneSkippedQuestion": "Una domanda è stata scartata", - "skip": "Salta questa domanda", - "cancel": "Annulla", - "save": "Salva", - "returnToTheMap": "Ritorna alla mappa", - "search": { - "error": "Qualcosa è andato stortoâ€Ļ", - "nothing": "Non è stato trovato nullaâ€Ļ", - "searching": "Ricercaâ€Ļ", - "search": "Cerca un luogo" - }, - "loginToStart": "Accedi per rispondere alla domanda", - "welcomeBack": "Hai effettuato l’accesso. Bentornato/a!", - "loginWithOpenStreetMap": "Accedi con OpenStreetMap", - "loading": "Caricamentoâ€Ļ", - "download": { - "downloadAsPdf": "Scarica un PDF della mappa corrente", - "downloadCSV": "Scarica i dati visibili come CSV", - "noDataLoaded": "Nessun dato è stato ancora caricato. Lo scaricamento sarà disponibile a breve", - "downloadGeojson": "Scarica i dati visibili come GeoJSON", - "downloadAsPdfHelper": "Ideale per stampare la mappa corrente", - "downloadGeoJsonHelper": "Compatibile con QGIS, ArcGIS, ESRI, etc.", - "title": "Scarica i dati visibili", - "downloadCSVHelper": "Compatibile con LibreOffice Calc, Excel, etc.", - "includeMetaData": "Includi metadati (ultimo utente, valori calcolati, etc.)", - "licenseInfo": "

Informativa sul copyright

I dati forniti sono disponibili con licenza ODbL. Il riutilizzo di tali dati è libero per qualsiasi scopo ma
  • è richiesta l’attribuzione Š OpenStreetMap contributors
  • qualsiasi modifica di questi data deve essere rilasciata con la stessa licenza
Per ulteriori dettagli si prega di leggere l’informativa completa sul copyright", - "exporting": "Esportazione in corsoâ€Ļ" - }, - "testing": "Prova (le modifiche non verranno salvate)", - "pdf": { - "versionInfo": "v{version} - generato il {date}", - "attr": "Dati della mappa Š OpenStreetMap Contributors, riutilizzabile con licenza ODbL", - "generatedWith": "Generato con MapComplete.osm.be", - "attrBackground": "Livello di sfondo: {background}" - }, - "openTheMap": "Apri la mappa", - "histogram": { - "error_loading": "Impossibile caricare l'istogramma" - }, - "wikipedia": { - "loading": "Caricamento Wikipediaâ€Ļ", - "noResults": "Nessun elemento trovato per {search}", - "doSearch": "Cerca qui sopra per vedere i risultati", - "noWikipediaPage": "Questo elemento Wikidata non ha ancora una pagina Wikipedia corrispondente.", - "searchWikidata": "Cerca su Wikidata", - "createNewWikidata": "Crea un nuovo elemento Wikidata", - "wikipediaboxTitle": "Wikipedia", - "failed": "Caricamento della voce Wikipedia fallito" - }, - "loginOnlyNeededToEdit": "se vuoi modificare la mappa" + "sharescreen": { + "embedIntro": "

Incorpora nel tuo sito web

Siamo lieti se vorrai includere questa cartina nel tuo sito web.
Ti incoraggiamo a farlo (non devi neanche chieder il permesso).
È gratuito e lo sarà per sempre. PiÚ persone lo useranno e piÚ valore acquisirà.", + "addToHomeScreen": "

Aggiungi alla tua schermata Home

Puoi aggiungere facilmente questo sito web alla schermata Home del tuo smartphone. Per farlo, clicca sul pulsante ‘Aggiungi a schermata Home’ nella barra degli indirizzi.", + "fsIncludeCurrentLocation": "Includi la posizione attuale", + "fsIncludeCurrentBackgroundMap": "Includi lo sfondo attualmente selezionato {name}", + "fsIncludeCurrentLayers": "Includi i livelli correntemente selezionati", + "fsGeolocation": "Abilita il pusante ‘geo-localizzami’ (solo da mobile)", + "fsAddNew": "Abilita il pulsante ‘aggiungi nuovo PDI’", + "fsLayerControlToggle": "Inizia con il pannello dei livelli aperto", + "fsLayers": "Abilita il controllo dei livelli", + "fsWelcomeMessage": "Mostra il messaggio di benvenuto e le schede associate", + "fsSearch": "Abilita la barra di ricerca", + "fsUserbadge": "Abilita il pulsante di accesso", + "editThemeDescription": "Aggiungi o modifica le domande a questo tema della mappa", + "editThisTheme": "Modifica questo tema", + "thanksForSharing": "Grazie per la condivisione!", + "copiedToClipboard": "Collegamento copiato negli appunti", + "intro": "

Condividi questa mappa

Condividi questa mappa copiando il collegamento qua sotto e inviandolo ad amici o parenti:" }, - "index": { - "#": "Questi testi sono mostrati sopra ai pulsanti del tema quando nessun tema è stato caricato", - "pickTheme": "Scegli un tema qui sotto per iniziare.", - "intro": "MapComplete è un visualizzatore/editore di OpenStreetMap che mostra le informazioni riguardanti gli oggetti di uno specifico tema e permette di aggiornarle.", - "title": "Benvenuto/a su MapComplete", - "featuredThemeTitle": "Questa settimana in vetrina" + "attribution": { + "attributionContent": "

Tutti i dati sono forniti da OpenStreetMap, riutilizzabili liberamente con Open Database License

", + "attributionTitle": "Crediti", + "codeContributionsBy": "MapComplete è stato realizzato da {contributors} e {hiddenCount} altri collaboratori", + "mapContributionsByAndHidden": "I dati attualmente visibili sono stati modificati da {contributors} e {hiddenCount} altri contributori", + "mapContributionsBy": "I dati attualmente visibili sono stati creati da {contributors}", + "iconAttribution": { + "title": "Icone utilizzate" + }, + "themeBy": "Tema manutenuto da {author}" }, - "favourite": { - "reload": "Ricarica i dati", - "loginNeeded": "

Accedi

Il layout personale è disponibile soltanto per gli utenti OpenStreetMap", - "panelIntro": "

Il tuo tema personale

Attiva i tuoi livelli preferiti fra tutti i temi ufficiali" + "openStreetMapIntro": "

Una mappa libera

Non sarebbe perfetto se esistesse una carta geografica che chiunque puÃ˛ modificare e utilizzare liberamente? Un unico posto in un cui conservare tutte le informazioni geografiche? In questo modo tutti questi siti web con mappe diverse, piccole e incompatibili (che sono sempre obsolete) diverrebbero istantaneamente inutili.

OpenStreetMap è proprio questa mappa. I dati geografici possono essere usati liberamente (rispettando l’attribuzione e la pubblicazione delle modifiche di quei dati). In piÚ, chiunque puÃ˛ aggiungere liberamente nuovi dati e correggere gli errori. Anche questo sito usa OpenStreetMap. Tutti i dati provengono da lÃŦ e le tue risposte e correzioni finiscono sempre lÃŦ.

Moltissime persone e applicazioni già usano OpenStreetmap: Maps.me, OsmAnd ma anche le cartine di Facebook, Instagram, Apple e Bing si basano (parzialmente) su OpenStreetMap. Tutto quello che cambi qua si rifletterà anche su quelle applicazioni (non appena avranno aggiornato i loro dati!)

", + "opening_hours": { + "ph_open": "aperto", + "ph_closed": "chiuso", + "ph_not_known": " ", + "open_24_7": "Sempre aperto", + "closed_permanently": "Chiuso per un periodo sconosciuto", + "closed_until": "Chiuso fino al {date}", + "not_all_rules_parsed": "Gli orari di apertura di questo negozio sono complicati. Le seguenti regole sono state ignorate per l’oggetto in ingresso:", + "openTill": "fino a", + "opensAt": "da", + "open_during_ph": "Durante le festività questo luogo è", + "error_loading": "Errore: impossibile visualizzare questi orari di apertura.", + "ph_open_as_usual": "aperto come di consueto", + "loadingCountry": "Determinazione del Paeseâ€Ļ" }, - "centerMessage": { - "retrying": "Caricamento dei dati fallito. Nuovo tentativo tra {count} secondiâ€Ļ", - "ready": "Finito!", - "zoomIn": "Ingrandisci la mappa per vedere e modificare i dati", - "loadingData": "Caricamento dei datiâ€Ļ" + "weekdays": { + "sunday": "Domenica", + "saturday": "Sabato", + "friday": "VenerdÃŦ", + "thursday": "GiovedÃŦ", + "wednesday": "MercoledÃŦ", + "tuesday": "MartedÃŦ", + "monday": "LunedÃŦ", + "abbreviations": { + "sunday": "Dom", + "saturday": "Sab", + "friday": "Ven", + "thursday": "Gio", + "wednesday": "Mer", + "tuesday": "Mar", + "monday": "Lun" + } }, - "image": { - "isDeleted": "Cancellata", - "doDelete": "Rimuovi immagine", - "dontDelete": "Annulla", - "uploadDone": "La tua foto è stata aggiunta. Grazie per l’aiuto!", - "respectPrivacy": "Non fotografare persone o targhe dei veicoli. Non caricare da Google Maps, Google Streetview o da altre fonti coperte da copyright.", - "uploadFailed": "Impossibile caricare la tua foto. La connessione internet è attiva e le API di terze parti sono abilitate? Il browser Brave o il plugin uMatrix potrebbero bloccarle.", - "ccb": "con licenza CC-BY", - "ccbs": "con licenza CC-BY-SA", - "cco": "nel pubblico dominio", - "willBePublished": "La tua foto sarà pubblicata: ", - "pleaseLogin": "Accedi per caricare una foto", - "uploadingMultiple": "Caricamento di {count} fotoâ€Ļ", - "uploadingPicture": "Caricamento della tua fotoâ€Ļ", - "addPicture": "Aggiungi foto", - "uploadMultipleDone": "Sono state aggiunte {count} immagini. Grazie per l’aiuto!", - "toBig": "La tua immagine è troppo grande in quanto è di {actual_size}. Cerca di usare immagini non piÚ grandi di {max_size}" + "layerSelection": { + "title": "Seleziona livelli", + "zoomInToSeeThisLayer": "Ingrandisci la mappa per vedere questo livello" }, - "delete": { - "reasons": { - "test": "Si tratta di un punto di prova (l’oggetto non è mai esistito in quel punto)", - "disused": "L’oggetto è in disuso o è stato smantellato", - "notFound": "Non è stato possibile trovare l’oggetto", - "duplicate": "Questo punto è un duplicato di un altro oggetto" - }, - "explanations": { - "selectReason": "Si prega di selezionare il motivo della rimozione di questo oggetto", - "hardDelete": "Questo punto verrà rimosso da OpenStreetMap. Un utente esperto potrebbe recuperarlo", - "softDelete": "Questo oggetto verrà aggiornato e nascosto da questa applicazione. {reason}" - }, - "loginToDelete": "Devi aver effettuato l’accesso per poter rimuovere un punto", - "safeDelete": "Questo punto puÃ˛ essere rimosso in sicurezza.", - "isntAPoint": "Solo i punti possono essere rimossi, l’oggetto selezionato è un percorso, un’area oppure una relazione.", - "onlyEditedByLoggedInUser": "Questo punto è stato modificato soltanto da te, puoi rimuoverlo in sicurezza.", - "notEnoughExperience": "Questo nodo è stato creato da un altro utente.", - "delete": "Rimuovi", - "isDeleted": "Questo oggetto è stato rimosso", - "cannotBeDeleted": "Questo oggetto non puÃ˛ essere rimosso", - "useSomethingElse": "Per rimuoverlo usa un altro editor OpenStreetMap", - "loading": "Controllo delle proprietà per verificare se questo oggetto puÃ˛ essere rimosso.", - "partOfOthers": "Questo punto fa parte di qualche percorso o relazione e non puÃ˛ essere rimosso direttamente.", - "whyDelete": "PerchÊ questo nodo andrebbe rimosso?", - "cancel": "Annulla", - "readMessages": "Hai dei messaggi non letti. Leggili prima di rimuovere un punto (qualcuno potrebbe aver lasciato un commento)" + "backgroundMap": "Mappa di sfondo", + "customThemeIntro": "

Temi personalizzati

Questi sono i temi degli utenti che hai già visitato.", + "noTagsSelected": "Nessuna etichetta selezionata", + "getStartedNewAccount": " oppure crea un nuovo account", + "getStartedLogin": "Accedi con OpenStreetMap per iniziare", + "goToInbox": "Apri posta in arrivo", + "fewChangesBefore": "Rispondi ad alcune domande di punti esistenti prima di aggiungere un nuovo punto.", + "readYourMessages": "Leggi tutti i tuoi messaggi OpenStreetMap prima di aggiungere un nuovo punto.", + "questions": { + "emailIs": "L’indirizzo email di questa {category} è {email}", + "emailOf": "Qual è l’indirizzo email di {category}?", + "websiteIs": "Sito web: {website}", + "websiteOf": "Qual è il sito web di {category}?", + "phoneNumberIs": "Il numero di telefono di questa {category} è {phone}", + "phoneNumberOf": "Qual è il numero di telefono di {category}?" }, - "move": { - "loginToMove": "Devi aver effettuato l’accesso per spostare un punto", - "partOfAWay": "Quest’oggetto fa parte di un altro percorso. Usa un altro editor per spostarlo.", - "partOfRelation": "Quest’oggetto fa parte di una relazione. Usa un altro editor per spostarlo.", - "isWay": "Quest’oggetto è un percorso. Usa un altro editor OpenStreetMap per spostarlo.", - "isRelation": "Quest’oggetto è una relazione e non puÃ˛ essere spostato", - "cancel": "Annulla lo spostamento", - "pointIsMoved": "Questo punto è stato spostato", - "zoomInFurther": "Ingrandisci ulteriormente per confermare questo spostamento", - "moveTitle": "Sposta questo punto", - "whyMove": "PerchÊ vuoi spostare questo punto?", - "confirmMove": "Spostalo qua", - "inviteToMove": { - "reasonInaccurate": "Migliora la precisione di questo punto", - "generic": "Sposta questo punto", - "reasonRelocation": "Sposta quest’oggetto in un altro luogo perchÊ è stato ricollocato" - }, - "selectReason": "PerchÊ vuoi spostare quest’oggetto?", - "reasons": { - "reasonInaccurate": "La posizione di questo oggetto non è precisa e dovrebbe essere spostato di alcuni metri", - "reasonRelocation": "Questo oggetto è stato ricollocato in una posizione totalmente differente" - }, - "inviteToMoveAgain": "Sposta di nuovo questo punto", - "cannotBeMoved": "Questo oggetto non puÃ˛ essere spostato." + "noNameCategory": "{category} senza nome", + "nameInlineQuestion": "Il nome di questa {category} è $$$", + "about": "Modifica e aggiungi con semplicità OpenStreetMap per un certo tema", + "pickLanguage": "Scegli una lingua: ", + "add": { + "layerNotEnabled": "Il livello {layer} non è abilitato. Abilita questo livello per aggiungere un punto", + "openLayerControl": "Apri il pannello di controllo dei livelli", + "confirmButton": "Aggiungi una {category} qua.
La tua aggiunta è visibile a chiunque
", + "confirmIntro": "

Aggiungere un {title} qua?

Il punto che hai creato qua sarà visibile da chiunque. Per favore, aggiungi sulla mappa solo oggetti realmente esistenti. Molte applicazioni usano questi dati.", + "stillLoading": "Caricamento dei dati ancora in corso. Attendi un po’ prima di aggiungere un nuovo punto.", + "zoomInFurther": "Ingrandisci la mappa per aggiungere un punto.", + "pleaseLogin": "Accedi per aggiungere un punto", + "intro": "Hai cliccato in un punto dove non ci sono ancora dei dati.
", + "title": "Aggiungi un nuovo punto?", + "addNew": "Aggiungi una nuova {category} qua", + "presetInfo": "Il nuovo PDI avrà {tags}", + "warnVisibleForEveryone": "La tua aggiunta sarà visibile a tutti", + "zoomInMore": "Ingrandisci ancora per importare questo oggetto", + "hasBeenImported": "Questo punto è stato già importato", + "disableFilters": "Disabilita tutti i filtri", + "addNewMapLabel": "Aggiungi nuovo elemento", + "disableFiltersExplanation": "Alcuni oggetti potrebbero essere nascosti da un filtro" }, - "multi_apply": { - "autoApply": "Quando si modificano gli attributi {attr_names}, questi attributi vengono anche automaticamente cambiati su altri {count} oggetti" + "osmLinkTooltip": "Visita questo oggetto su OpenStreetMap per la cronologia o altre opzioni di modifica", + "number": "numero", + "skippedQuestions": "Alcune domande sono state scartate", + "oneSkippedQuestion": "Una domanda è stata scartata", + "skip": "Salta questa domanda", + "cancel": "Annulla", + "save": "Salva", + "returnToTheMap": "Ritorna alla mappa", + "search": { + "error": "Qualcosa è andato stortoâ€Ļ", + "nothing": "Non è stato trovato nullaâ€Ļ", + "searching": "Ricercaâ€Ļ", + "search": "Cerca un luogo" }, - "split": { - "hasBeenSplit": "Questa strada è stata divisa", - "cancel": "Annulla", - "splitTitle": "Scegli sulla cartina il punto dove vuoi dividere la strada", - "inviteToSplit": "Dividi questa strada in segmenti piÚ piccoli. CiÃ˛ permette di assegnare proprietà differenti a ciascun pezzo di strada.", - "split": "Dividi", - "loginToSplit": "Devi aver effettuato l’accesso per dividere una strada" - } + "loginToStart": "Accedi per rispondere alla domanda", + "welcomeBack": "Hai effettuato l’accesso. Bentornato/a!", + "loginWithOpenStreetMap": "Accedi con OpenStreetMap", + "loading": "Caricamentoâ€Ļ", + "download": { + "downloadAsPdf": "Scarica un PDF della mappa corrente", + "downloadCSV": "Scarica i dati visibili come CSV", + "noDataLoaded": "Nessun dato è stato ancora caricato. Lo scaricamento sarà disponibile a breve", + "downloadGeojson": "Scarica i dati visibili come GeoJSON", + "downloadAsPdfHelper": "Ideale per stampare la mappa corrente", + "downloadGeoJsonHelper": "Compatibile con QGIS, ArcGIS, ESRI, etc.", + "title": "Scarica i dati visibili", + "downloadCSVHelper": "Compatibile con LibreOffice Calc, Excel, etc.", + "includeMetaData": "Includi metadati (ultimo utente, valori calcolati, etc.)", + "licenseInfo": "

Informativa sul copyright

I dati forniti sono disponibili con licenza ODbL. Il riutilizzo di tali dati è libero per qualsiasi scopo ma
  • è richiesta l’attribuzione Š OpenStreetMap contributors
  • qualsiasi modifica di questi data deve essere rilasciata con la stessa licenza
Per ulteriori dettagli si prega di leggere l’informativa completa sul copyright", + "exporting": "Esportazione in corsoâ€Ļ" + }, + "testing": "Prova (le modifiche non verranno salvate)", + "pdf": { + "versionInfo": "v{version} - generato il {date}", + "attr": "Dati della mappa Š OpenStreetMap Contributors, riutilizzabile con licenza ODbL", + "generatedWith": "Generato con MapComplete.osm.be", + "attrBackground": "Livello di sfondo: {background}" + }, + "openTheMap": "Apri la mappa", + "histogram": { + "error_loading": "Impossibile caricare l'istogramma" + }, + "wikipedia": { + "loading": "Caricamento Wikipediaâ€Ļ", + "noResults": "Nessun elemento trovato per {search}", + "doSearch": "Cerca qui sopra per vedere i risultati", + "noWikipediaPage": "Questo elemento Wikidata non ha ancora una pagina Wikipedia corrispondente.", + "searchWikidata": "Cerca su Wikidata", + "createNewWikidata": "Crea un nuovo elemento Wikidata", + "wikipediaboxTitle": "Wikipedia", + "failed": "Caricamento della voce Wikipedia fallito" + }, + "loginOnlyNeededToEdit": "se vuoi modificare la mappa" + }, + "index": { + "#": "Questi testi sono mostrati sopra ai pulsanti del tema quando nessun tema è stato caricato", + "pickTheme": "Scegli un tema qui sotto per iniziare.", + "intro": "MapComplete è un visualizzatore/editore di OpenStreetMap che mostra le informazioni riguardanti gli oggetti di uno specifico tema e permette di aggiornarle.", + "title": "Benvenuto/a su MapComplete", + "featuredThemeTitle": "Questa settimana in vetrina" + }, + "favourite": { + "reload": "Ricarica i dati", + "loginNeeded": "

Accedi

Il layout personale è disponibile soltanto per gli utenti OpenStreetMap", + "panelIntro": "

Il tuo tema personale

Attiva i tuoi livelli preferiti fra tutti i temi ufficiali" + }, + "centerMessage": { + "retrying": "Caricamento dei dati fallito. Nuovo tentativo tra {count} secondiâ€Ļ", + "ready": "Finito!", + "zoomIn": "Ingrandisci la mappa per vedere e modificare i dati", + "loadingData": "Caricamento dei datiâ€Ļ" + }, + "image": { + "isDeleted": "Cancellata", + "doDelete": "Rimuovi immagine", + "dontDelete": "Annulla", + "uploadDone": "La tua foto è stata aggiunta. Grazie per l’aiuto!", + "respectPrivacy": "Non fotografare persone o targhe dei veicoli. Non caricare da Google Maps, Google Streetview o da altre fonti coperte da copyright.", + "uploadFailed": "Impossibile caricare la tua foto. La connessione internet è attiva e le API di terze parti sono abilitate? Il browser Brave o il plugin uMatrix potrebbero bloccarle.", + "ccb": "con licenza CC-BY", + "ccbs": "con licenza CC-BY-SA", + "cco": "nel pubblico dominio", + "willBePublished": "La tua foto sarà pubblicata: ", + "pleaseLogin": "Accedi per caricare una foto", + "uploadingMultiple": "Caricamento di {count} fotoâ€Ļ", + "uploadingPicture": "Caricamento della tua fotoâ€Ļ", + "addPicture": "Aggiungi foto", + "uploadMultipleDone": "Sono state aggiunte {count} immagini. Grazie per l’aiuto!", + "toBig": "La tua immagine è troppo grande in quanto è di {actual_size}. Cerca di usare immagini non piÚ grandi di {max_size}" + }, + "delete": { + "reasons": { + "test": "Si tratta di un punto di prova (l’oggetto non è mai esistito in quel punto)", + "disused": "L’oggetto è in disuso o è stato smantellato", + "notFound": "Non è stato possibile trovare l’oggetto", + "duplicate": "Questo punto è un duplicato di un altro oggetto" + }, + "explanations": { + "selectReason": "Si prega di selezionare il motivo della rimozione di questo oggetto", + "hardDelete": "Questo punto verrà rimosso da OpenStreetMap. Un utente esperto potrebbe recuperarlo", + "softDelete": "Questo oggetto verrà aggiornato e nascosto da questa applicazione. {reason}" + }, + "loginToDelete": "Devi aver effettuato l’accesso per poter rimuovere un punto", + "safeDelete": "Questo punto puÃ˛ essere rimosso in sicurezza.", + "isntAPoint": "Solo i punti possono essere rimossi, l’oggetto selezionato è un percorso, un’area oppure una relazione.", + "onlyEditedByLoggedInUser": "Questo punto è stato modificato soltanto da te, puoi rimuoverlo in sicurezza.", + "notEnoughExperience": "Questo nodo è stato creato da un altro utente.", + "delete": "Rimuovi", + "isDeleted": "Questo oggetto è stato rimosso", + "cannotBeDeleted": "Questo oggetto non puÃ˛ essere rimosso", + "useSomethingElse": "Per rimuoverlo usa un altro editor OpenStreetMap", + "loading": "Controllo delle proprietà per verificare se questo oggetto puÃ˛ essere rimosso.", + "partOfOthers": "Questo punto fa parte di qualche percorso o relazione e non puÃ˛ essere rimosso direttamente.", + "whyDelete": "PerchÊ questo nodo andrebbe rimosso?", + "cancel": "Annulla", + "readMessages": "Hai dei messaggi non letti. Leggili prima di rimuovere un punto (qualcuno potrebbe aver lasciato un commento)" + }, + "move": { + "loginToMove": "Devi aver effettuato l’accesso per spostare un punto", + "partOfAWay": "Quest’oggetto fa parte di un altro percorso. Usa un altro editor per spostarlo.", + "partOfRelation": "Quest’oggetto fa parte di una relazione. Usa un altro editor per spostarlo.", + "isWay": "Quest’oggetto è un percorso. Usa un altro editor OpenStreetMap per spostarlo.", + "isRelation": "Quest’oggetto è una relazione e non puÃ˛ essere spostato", + "cancel": "Annulla lo spostamento", + "pointIsMoved": "Questo punto è stato spostato", + "zoomInFurther": "Ingrandisci ulteriormente per confermare questo spostamento", + "moveTitle": "Sposta questo punto", + "whyMove": "PerchÊ vuoi spostare questo punto?", + "confirmMove": "Spostalo qua", + "inviteToMove": { + "reasonInaccurate": "Migliora la precisione di questo punto", + "generic": "Sposta questo punto", + "reasonRelocation": "Sposta quest’oggetto in un altro luogo perchÊ è stato ricollocato" + }, + "selectReason": "PerchÊ vuoi spostare quest’oggetto?", + "reasons": { + "reasonInaccurate": "La posizione di questo oggetto non è precisa e dovrebbe essere spostato di alcuni metri", + "reasonRelocation": "Questo oggetto è stato ricollocato in una posizione totalmente differente" + }, + "inviteToMoveAgain": "Sposta di nuovo questo punto", + "cannotBeMoved": "Questo oggetto non puÃ˛ essere spostato." + }, + "multi_apply": { + "autoApply": "Quando si modificano gli attributi {attr_names}, questi attributi vengono anche automaticamente cambiati su altri {count} oggetti" + }, + "split": { + "hasBeenSplit": "Questa strada è stata divisa", + "cancel": "Annulla", + "splitTitle": "Scegli sulla cartina il punto dove vuoi dividere la strada", + "inviteToSplit": "Dividi questa strada in segmenti piÚ piccoli. CiÃ˛ permette di assegnare proprietà differenti a ciascun pezzo di strada.", + "split": "Dividi", + "loginToSplit": "Devi aver effettuato l’accesso per dividere una strada" + } } diff --git a/langs/layers/ca.json b/langs/layers/ca.json index aefba4628..b5dc2b0cb 100644 --- a/langs/layers/ca.json +++ b/langs/layers/ca.json @@ -1,103 +1,103 @@ { - "defibrillator": { - "name": "Desfibril¡ladors", - "presets": { - "0": { - "title": "Desfibril¡lador" - } + "defibrillator": { + "name": "Desfibril¡ladors", + "presets": { + "0": { + "title": "Desfibril¡lador" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "AccÊs lliure" + }, + "1": { + "then": "Publicament accessible" + }, + "2": { + "then": "NomÊs accessible a clients" + }, + "3": { + "then": "No accessible al pÃēblic en general (ex. nomÊs accesible a treballadors, propietaris, ...)" + } }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "AccÊs lliure" - }, - "1": { - "then": "Publicament accessible" - }, - "2": { - "then": "NomÊs accessible a clients" - }, - "3": { - "then": "No accessible al pÃēblic en general (ex. nomÊs accesible a treballadors, propietaris, ...)" - } - }, - "question": "Està el desfibril¡lador accessible lliurement?", - "render": "L'accÊs Ês {access}" - }, - "defibrillator-defibrillator:location": { - "question": "DÃŗna detalls d'on es pot trobar el desfibril¡lador" - }, - "defibrillator-defibrillator:location:en": { - "question": "DÃŗna detalls d'on es pot trobar el desfibril¡lador" - }, - "defibrillator-defibrillator:location:fr": { - "question": "DÃŗna detalls d'on es pot trobar el desfibril¡lador" - }, - "defibrillator-indoors": { - "mappings": { - "0": { - "then": "Aquest desfibril¡lador està a l'interior" - }, - "1": { - "then": "Aquest desfibril¡lador està a l'exterior" - } - }, - "question": "Està el desfibril¡lador a l'interior?" - }, - "defibrillator-level": { - "question": "A quina planta està el desfibril¡lador localitzat?", - "render": "Aquest desfibril¡lador Ês a la planta {level}" - } + "question": "Està el desfibril¡lador accessible lliurement?", + "render": "L'accÊs Ês {access}" + }, + "defibrillator-defibrillator:location": { + "question": "DÃŗna detalls d'on es pot trobar el desfibril¡lador" + }, + "defibrillator-defibrillator:location:en": { + "question": "DÃŗna detalls d'on es pot trobar el desfibril¡lador" + }, + "defibrillator-defibrillator:location:fr": { + "question": "DÃŗna detalls d'on es pot trobar el desfibril¡lador" + }, + "defibrillator-indoors": { + "mappings": { + "0": { + "then": "Aquest desfibril¡lador està a l'interior" + }, + "1": { + "then": "Aquest desfibril¡lador està a l'exterior" + } }, - "title": { - "render": "Desfibril¡lador" - } + "question": "Està el desfibril¡lador a l'interior?" + }, + "defibrillator-level": { + "question": "A quina planta està el desfibril¡lador localitzat?", + "render": "Aquest desfibril¡lador Ês a la planta {level}" + } }, - "ghost_bike": { - "tagRenderings": { - "ghost_bike-inscription": { - "render": "{inscription}" - } - } - }, - "nature_reserve": { - "tagRenderings": { - "Email": { - "render": "{email}" - }, - "phone": { - "render": "{phone}" - } - } - }, - "playground": { - "tagRenderings": { - "playground-email": { - "render": "{email}" - }, - "playground-phone": { - "render": "{phone}" - } - } - }, - "shops": { - "tagRenderings": { - "shops-phone": { - "render": "{phone}" - }, - "shops-website": { - "render": "{website}" - } - } - }, - "tree_node": { - "title": { - "mappings": { - "0": { - "then": "{name}" - } - } - } + "title": { + "render": "Desfibril¡lador" } + }, + "ghost_bike": { + "tagRenderings": { + "ghost_bike-inscription": { + "render": "{inscription}" + } + } + }, + "nature_reserve": { + "tagRenderings": { + "Email": { + "render": "{email}" + }, + "phone": { + "render": "{phone}" + } + } + }, + "playground": { + "tagRenderings": { + "playground-email": { + "render": "{email}" + }, + "playground-phone": { + "render": "{phone}" + } + } + }, + "shops": { + "tagRenderings": { + "shops-phone": { + "render": "{phone}" + }, + "shops-website": { + "render": "{website}" + } + } + }, + "tree_node": { + "title": { + "mappings": { + "0": { + "then": "{name}" + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/de.json b/langs/layers/de.json index 05993e3ec..1359693b3 100644 --- a/langs/layers/de.json +++ b/langs/layers/de.json @@ -1,3083 +1,2876 @@ { - "artwork": { - "description": "Verschiedene Kunstwerke", - "name": "Kunstwerke", - "presets": { - "0": { - "title": "Kunstwerk" - } + "artwork": { + "description": "Verschiedene Kunstwerke", + "name": "Kunstwerke", + "presets": { + "0": { + "title": "Kunstwerk" + } + }, + "tagRenderings": { + "artwork-artist_name": { + "question": "Welcher KÃŧnstler hat das geschaffen?", + "render": "Erstellt von {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "Architektur" + }, + "1": { + "then": "Wandbild" + }, + "2": { + "then": "Malerei" + }, + "3": { + "then": "Skulptur" + }, + "4": { + "then": "Statue" + }, + "5": { + "then": "BÃŧste" + }, + "6": { + "then": "Stein" + }, + "7": { + "then": "Installation" + }, + "8": { + "then": "Graffiti" + }, + "9": { + "then": "Relief" + }, + "10": { + "then": "Azulejo (spanische dekorative Fliesenarbeit)" + }, + "11": { + "then": "Fliesenarbeit" + } }, - "tagRenderings": { - "artwork-artist_name": { - "question": "Welcher KÃŧnstler hat das geschaffen?", - "render": "Erstellt von {artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "Architektur" - }, - "1": { - "then": "Wandbild" - }, - "2": { - "then": "Malerei" - }, - "3": { - "then": "Skulptur" - }, - "4": { - "then": "Statue" - }, - "5": { - "then": "BÃŧste" - }, - "6": { - "then": "Stein" - }, - "7": { - "then": "Installation" - }, - "8": { - "then": "Graffiti" - }, - "9": { - "then": "Relief" - }, - "10": { - "then": "Azulejo (spanische dekorative Fliesenarbeit)" - }, - "11": { - "then": "Fliesenarbeit" - } - }, - "question": "Was ist die Art dieses Kunstwerks?", - "render": "Dies ist ein {artwork_type}" - }, - "artwork-website": { - "question": "Gibt es eine Website mit weiteren Informationen Ãŧber dieses Kunstwerk?", - "render": "Weitere Informationen auf dieser Webseite" - }, - "artwork-wikidata": { - "question": "Welcher Wikidata-Eintrag entspricht diesem Kunstwerk?", - "render": "Entspricht {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Kunstwerk {name}" - } - }, - "render": "Kunstwerk" + "question": "Was ist die Art dieses Kunstwerks?", + "render": "Dies ist ein {artwork_type}" + }, + "artwork-website": { + "question": "Gibt es eine Website mit weiteren Informationen Ãŧber dieses Kunstwerk?", + "render": "Weitere Informationen auf dieser Webseite" + }, + "artwork-wikidata": { + "question": "Welcher Wikidata-Eintrag entspricht diesem Kunstwerk?", + "render": "Entspricht {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Kunstwerk {name}" } - }, - "barrier": { - "description": "Hindernisse beim Fahrradfahren, wie zum Beispiel Poller und Fahrrad Barrieren", - "name": "Hindernisse", - "presets": { - "0": { - "description": "Ein Poller auf der Straße", - "title": "Poller" - }, - "1": { - "description": "Fahrradhindernis, das Radfahrer abbremst", - "title": "Fahrradhindernis" - } - }, - "tagRenderings": { - "Bollard type": { - "mappings": { - "0": { - "then": "Entfernbarer Poller" - }, - "1": { - "then": "Feststehender Poller" - }, - "2": { - "then": "Umlegbarer Poller" - }, - "3": { - "then": "Flexibler Poller, meist aus Kunststoff" - }, - "4": { - "then": "Ausfahrender Poller" - } - }, - "question": "Um was fÃŧr einen Poller handelt es sich?" - }, - "Cycle barrier type": { - "mappings": { - "0": { - "then": "Einfach, nur zwei Barrieren mit einem Zwischenraum " - }, - "1": { - "then": "Doppelt, zwei Barrieren hintereinander " - }, - "2": { - "then": "Dreifach, drei Barrieren hintereinander " - }, - "3": { - "then": "Eine Durchfahrtsbeschränkung, Durchfahrtsbreite ist oben kleiner als unten " - } - }, - "question": "Um welche Art Fahrradhindernis handelt es sich?" - }, - "MaxWidth": { - "question": "Welche Durchfahrtsbreite hat das Hindernis?", - "render": "Maximale Durchfahrtsbreite: {maxwidth:physical} m" - }, - "Overlap (cyclebarrier)": { - "question": "Wie stark Ãŧberschneiden sich die Barrieren?", - "render": "Überschneidung: {overlap} m" - }, - "Space between barrier (cyclebarrier)": { - "question": "Wie groß ist der Abstand zwischen den Barrieren (entlang der Straße)?", - "render": "Abstand zwischen den Barrieren (entlang der Straße): {width:separation} m" - }, - "Width of opening (cyclebarrier)": { - "question": "Wie breit ist die kleinste Öffnung neben den Barrieren?", - "render": "Breite der Öffnung: {width:opening} m" - }, - "bicycle=yes/no": { - "mappings": { - "0": { - "then": "Ein Radfahrer kann hindurchfahren." - }, - "1": { - "then": "Ein Radfahrer kann nicht hindurchfahren." - } - }, - "question": "Kann ein Radfahrer das Hindernis passieren?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Poller" - }, - "1": { - "then": "Barriere fÃŧr Radfahrer" - } - }, - "render": "Hindernis" - } - }, - "bench": { - "name": "Sitzbänke", - "presets": { - "0": { - "title": "sitzbank" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "RÃŧckenlehne: Ja" - }, - "1": { - "then": "RÃŧckenlehne: Nein" - } - }, - "question": "Hat diese Bank eine RÃŧckenlehne?", - "render": "RÃŧckenlehne" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Farbe: braun" - }, - "1": { - "then": "Farbe: grÃŧn" - }, - "2": { - "then": "Farbe: grau" - }, - "3": { - "then": "Farbe: weiß" - }, - "4": { - "then": "Farbe: rot" - }, - "5": { - "then": "Farbe: schwarz" - }, - "6": { - "then": "Farbe: blau" - }, - "7": { - "then": "Farbe: gelb" - } - }, - "question": "Welche Farbe hat diese Sitzbank?", - "render": "Farbe: {colour}" - }, - "bench-direction": { - "question": "In welche Richtung schaut man, wenn man auf der Bank sitzt?", - "render": "Wenn man auf der Bank sitzt, schaut man in Richtung {direction}°." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Material: Holz" - }, - "1": { - "then": "Material: Metall" - }, - "2": { - "then": "Material: Stein" - }, - "3": { - "then": "Material: Beton" - }, - "4": { - "then": "Material: Kunststoff" - }, - "5": { - "then": "Material: Stahl" - } - }, - "question": "Aus welchem Material besteht die Sitzbank (Sitzfläche)?", - "render": "Material: {material}" - }, - "bench-seats": { - "question": "Wie viele Sitzplätze hat diese Bank?", - "render": "{seats} Sitzplätze" - }, - "bench-survey:date": { - "question": "Wann wurde diese Bank zuletzt ÃŧberprÃŧft?", - "render": "Diese Bank wurde zuletzt ÃŧberprÃŧft am {survey:date}" - } - }, - "title": { - "render": "Sitzbank" - } - }, - "bench_at_pt": { - "name": "Sitzbänke bei Haltestellen", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "Stehbank" - }, - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Sitzbank bei Haltestelle" - }, - "1": { - "then": "Sitzbank in Unterstand" - } - }, - "render": "Sitzbank" - } - }, - "bicycle_library": { - "description": "Eine Einrichtung, in der Fahrräder fÃŧr längere Zeit geliehen werden kÃļnnen", - "name": "Fahrradbibliothek", - "presets": { - "0": { - "description": "Eine Fahrradbibliothek verfÃŧgt Ãŧber eine Sammlung von Fahrrädern, die ausgeliehen werden kÃļnnen", - "title": "Fahrradbibliothek" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "Fahrräder fÃŧr Kinder verfÃŧgbar" - }, - "1": { - "then": "Fahrräder fÃŧr Erwachsene verfÃŧgbar" - }, - "2": { - "then": "Fahrräder fÃŧr Behinderte verfÃŧgbar" - } - }, - "question": "Wer kann hier Fahrräder ausleihen?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "Das Ausleihen eines Fahrrads ist kostenlos" - }, - "1": { - "then": "Das Ausleihen eines Fahrrads kostet 20â‚Ŧ pro Jahr und 20â‚Ŧ GebÃŧhr" - } - }, - "question": "Wie viel kostet das Ausleihen eines Fahrrads?", - "render": "Das Ausleihen eines Fahrrads kostet {charge}" - }, - "bicycle_library-name": { - "question": "Wie lautet der Name dieser Fahrradbibliothek?", - "render": "Diese Fahrradbibliothek heißt {name}" - } - }, - "title": { - "render": "Fahrradbibliothek" - } - }, - "bicycle_tube_vending_machine": { - "name": "Fahrradschlauch-Automat", - "presets": { - "0": { - "title": "Fahrradschlauch-Automat" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Dieser Automat funktioniert" - }, - "1": { - "then": "Dieser Automat ist kaputt" - }, - "2": { - "then": "Dieser Automat ist geschlossen" - } - }, - "question": "Ist dieser Automat noch in Betrieb?", - "render": "Der Betriebszustand ist {operational_status" - } - }, - "title": { - "render": "Fahrradschlauch-Automat" - } - }, - "bike_cafe": { - "name": "Fahrrad-CafÊ", - "presets": { - "0": { - "title": "Fahrrad-CafÊ" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "Dieses Fahrrad-CafÊ bietet eine Fahrradpumpe an, die von jedem benutzt werden kann" - }, - "1": { - "then": "Dieses Fahrrad-CafÊ bietet keine Fahrradpumpe an, die von jedem benutzt werden kann" - } - }, - "question": "Bietet dieses Fahrrad-CafÊ eine Fahrradpumpe an, die von jedem benutzt werden kann?" - }, - "bike_cafe-email": { - "question": "Wie lautet die E-Mail-Adresse von {name}?" - }, - "bike_cafe-name": { - "question": "Wie heißt dieses Fahrrad-CafÊ?", - "render": "Dieses Fahrrad-CafÊ heißt {name}" - }, - "bike_cafe-opening_hours": { - "question": "Wann ist dieses FahrradcafÊ geÃļffnet?" - }, - "bike_cafe-phone": { - "question": "Wie lautet die Telefonnummer von {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "Dieses Fahrrad-CafÊ repariert Fahrräder" - }, - "1": { - "then": "Dieses Fahrrad-CafÊ repariert keine Fahrräder" - } - }, - "question": "Repariert dieses Fahrrad-CafÊ Fahrräder?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "Dieses Fahrrad-CafÊ bietet Werkzeuge fÃŧr die selbständige Reparatur an" - }, - "1": { - "then": "Dieses Fahrrad-CafÊ bietet keine Werkzeuge fÃŧr die selbständige Reparatur an" - } - }, - "question": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?" - }, - "bike_cafe-website": { - "question": "Was ist die Webseite von {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Fahrrad-CafÊ {name}" - } - }, - "render": "Fahrrad-CafÊ" - } - }, - "bike_cleaning": { - "name": "Fahrrad-Reinigungsdienst", - "presets": { - "0": { - "title": "Fahrrad-Reinigungsdienst" - } - }, - "title": { - "mappings": { - "0": { - "then": "Fahrrad-Reinigungsdienst{name}" - } - }, - "render": "Fahrrad-Reinigungsdienst" - } - }, - "bike_parking": { - "name": "Fahrrad-Parkplätze", - "presets": { - "0": { - "title": "Fahrrad-Parkplätze" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "Öffentlich zugänglich" - }, - "1": { - "then": "Der Zugang ist in erster Linie fÃŧr Besucher eines Unternehmens bestimmt" - }, - "2": { - "then": "Der Zugang ist beschränkt auf Mitglieder einer Schule, eines Unternehmens oder einer Organisation" - } - }, - "question": "Wer kann diesen Fahrradparplatz nutzen?", - "render": "{access}" - }, - "Bicycle parking type": { - "mappings": { - "0": { - "then": "FahrradbÃŧgel " - }, - "1": { - "then": "Metallgestänge " - }, - "2": { - "then": "Halter fÃŧr Fahrradlenker " - }, - "3": { - "then": "Gestell " - }, - "4": { - "then": "Zweistufig " - }, - "5": { - "then": "Schuppen " - }, - "6": { - "then": "Poller " - }, - "7": { - "then": "Ein Bereich auf dem Boden, der fÃŧr das Abstellen von Fahrrädern gekennzeichnet ist" - } - }, - "question": "Was ist die Art dieses Fahrrad-Parkplatzes?", - "render": "Dies ist ein Fahrrad-Parkplatz der Art: {bicycle_parking}" - }, - "Capacity": { - "question": "Wie viele Fahrräder passen auf diesen Fahrrad-Parkplatz (einschließlich mÃļglicher Lastenfahrräder)?", - "render": "Platz fÃŧr {capacity} Fahrräder" - }, - "Cargo bike capacity?": { - "question": "Wie viele Lastenfahrräder passen auf diesen Fahrrad-Parkplatz?", - "render": "Auf diesen Parkplatz passen {capacity:cargo_bike} Lastenfahrräder" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "Dieser Parkplatz bietet Platz fÃŧr Lastenfahrräder" - }, - "1": { - "then": "Dieser Parkplatz verfÃŧgt Ãŧber ausgewiesene (offizielle) Plätze fÃŧr Lastenfahrräder." - }, - "2": { - "then": "Es ist nicht erlaubt, Lastenfahrräder zu parken" - } - }, - "question": "Gibt es auf diesem Fahrrad-Parkplatz Plätze fÃŧr Lastenfahrräder?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "Dieser Parkplatz ist Ãŧberdacht (er hat ein Dach)" - }, - "1": { - "then": "Dieser Parkplatz ist nicht Ãŧberdacht" - } - }, - "question": "Ist dieser Parkplatz Ãŧberdacht? Wählen Sie auch \"Ãŧberdacht\" fÃŧr Innenparkplätze." - }, - "Underground?": { - "mappings": { - "0": { - "then": "Tiefgarage" - }, - "1": { - "then": "Tiefgarage" - }, - "2": { - "then": "Ebenerdiges Parken" - }, - "3": { - "then": "Ebenerdiges Parken" - }, - "4": { - "then": "Parkplatz auf dem Dach" - } - }, - "question": "Wo befinden sich diese Fahrradabstellplätze?" - } - }, - "title": { - "render": "Fahrrad-Parkplätze" - } - }, - "bike_repair_station": { - "name": "Fahrradstationen (Reparatur, Pumpe oder beides)", - "presets": { - "0": { - "description": "Ein Gerät zum Aufpumpen von Reifen an einem festen Standort im Ãļffentlichen Raum.

Beispiele fÃŧr Fahrradpumpen

", - "title": "Fahrradpumpe" - }, - "1": { - "description": "Ein Gerät mit Werkzeugen zur Reparatur von Fahrrädern kombiniert mit einer Pumpe an einem festen Standort. Die Werkzeuge sind oft mit Ketten gegen Diebstahl gesichert.

Beispiel

", - "title": "Fahrrad-Reparaturstation und Pumpe" - }, - "2": { - "title": "Fahrrad-Reparaturstation ohne Pumpe" - } - }, - "tagRenderings": { - "Email maintainer": { - "render": "Melde diese Fahrradpumpe als kaputt" - }, - "Operational status": { - "mappings": { - "0": { - "then": "Die Fahrradpumpe ist kaputt" - }, - "1": { - "then": "Die Fahrradpumpe ist betriebsbereit" - } - }, - "question": "Ist die Fahrradpumpe noch funktionstÃŧchtig?" - }, - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "Es ist nur eine Pumpe vorhanden" - }, - "1": { - "then": "Es sind nur Werkzeuge (Schraubenzieher, Zangen...) vorhanden" - }, - "2": { - "then": "Es sind sowohl Werkzeuge als auch eine Pumpe vorhanden" - } - }, - "question": "Welche Einrichtungen stehen an dieser Fahrradstation zur VerfÃŧgung?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "Es gibt ein Kettenwerkzeug" - }, - "1": { - "then": "Es gibt kein Kettenwerkzeug" - } - }, - "question": "VerfÃŧgt diese Fahrrad-Reparaturstation Ãŧber Spezialwerkzeug zur Reparatur von Fahrradketten?" - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "Es gibt einen Haken oder Ständer" - }, - "1": { - "then": "Es gibt keinen Haken oder Ständer" - } - }, - "question": "Hat diese Fahrradstation einen Haken, an dem Sie Ihr Fahrrad aufhängen kÃļnnen, oder einen Ständer, um es anzuheben?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Manuelle Pumpe" - }, - "1": { - "then": "Elektrische Pumpe" - } - }, - "question": "Ist dies eine elektrische Fahrradpumpe?" - }, - "bike_repair_station-email": { - "question": "Wie lautet die E-Mail-Adresse des Betreuers?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "Es gibt ein Manometer" - }, - "1": { - "then": "Es gibt kein Manometer" - }, - "2": { - "then": "Es gibt ein Manometer, aber es ist kaputt" - } - }, - "question": "VerfÃŧgt die Pumpe Ãŧber einen Druckanzeiger oder ein Manometer?" - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "Immer geÃļffnet" - }, - "1": { - "then": "Immer geÃļffnet" - } - }, - "question": "Wann ist diese Fahrradreparaturstelle geÃļffnet?" - }, - "bike_repair_station-operator": { - "question": "Wer wartet diese Fahrradpumpe?", - "render": "Gewartet von {operator}" - }, - "bike_repair_station-phone": { - "question": "Wie lautet die Telefonnummer des Betreibers?" - }, - "bike_repair_station-valves": { - "mappings": { - "0": { - "then": "Sklaverand (auch bekannt als Presta)" - }, - "1": { - "then": "Dunlop" - }, - "2": { - "then": "Schrader (Autos)" - } - }, - "question": "Welche Ventile werden unterstÃŧtzt?", - "render": "Diese Pumpe unterstÃŧtzt die folgenden Ventile: {valves}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Fahrrad-Reparaturstation" - }, - "1": { - "then": "Fahrrad-Reparaturstation" - }, - "2": { - "then": "Kaputte Pumpe" - }, - "3": { - "then": "Fahrradpumpe {name}" - }, - "4": { - "then": "Fahrradpumpe" - } - }, - "render": "Fahrradstation (Pumpe & Reparatur)" - } - }, - "bike_shop": { - "description": "Ein Geschäft, das speziell Fahrräder oder verwandte Artikel verkauft", - "name": "Fahrradwerkstatt/geschäft", - "presets": { - "0": { - "title": "Fahrradwerkstatt/geschäft" - } - }, - "tagRenderings": { - "bike_repair_bike-pump-service": { - "mappings": { - "0": { - "then": "Dieses Geschäft bietet eine Fahrradpumpe fÃŧr alle an" - }, - "1": { - "then": "Dieses Geschäft bietet fÃŧr niemanden eine Fahrradpumpe an" - }, - "2": { - "then": "Es gibt eine Fahrradpumpe, sie wird als separater Punkt angezeigt " - } - }, - "question": "Bietet dieses Geschäft eine Fahrradpumpe zur Benutzung fÃŧr alle an?" - }, - "bike_repair_bike-wash": { - "mappings": { - "0": { - "then": "Dieses Geschäft reinigt Fahrräder" - }, - "1": { - "then": "Dieser Laden hat eine Anlage, in der man Fahrräder selbst reinigen kann" - }, - "2": { - "then": "Dieser Laden bietet keine Fahrradreinigung an" - } - }, - "question": "Werden hier Fahrräder gewaschen?" - }, - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Dieses Geschäft vermietet Fahrräder" - }, - "1": { - "then": "Dieses Geschäft vermietet keine Fahrräder" - } - }, - "question": "Vermietet dieser Laden Fahrräder?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Dieses Geschäft repariert Fahrräder" - }, - "1": { - "then": "Dieses Geschäft repariert keine Fahrräder" - }, - "2": { - "then": "Dieses Geschäft repariert nur hier gekaufte Fahrräder" - }, - "3": { - "then": "Dieses Geschäft repariert nur Fahrräder einer bestimmten Marke" - } - }, - "question": "Repariert dieses Geschäft Fahrräder?" - }, - "bike_repair_second-hand-bikes": { - "mappings": { - "0": { - "then": "Dieses Geschäft verkauft gebrauchte Fahrräder" - }, - "1": { - "then": "Dieses Geschäft verkauft keine gebrauchten Fahrräder" - }, - "2": { - "then": "Dieses Geschäft verkauft nur gebrauchte Fahrräder" - } - }, - "question": "Verkauft dieses Geschäft gebrauchte Fahrräder?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "Dieses Geschäft verkauft Fahrräder" - }, - "1": { - "then": "Dieses Geschäft verkauft keine Fahrräder" - } - }, - "question": "Verkauft dieser Laden Fahrräder?" - }, - "bike_repair_tools-service": { - "mappings": { - "0": { - "then": "Dieses Geschäft bietet Werkzeuge fÃŧr die Heimwerkerreparatur an" - }, - "1": { - "then": "Dieses Geschäft bietet keine Werkzeuge fÃŧr Heimwerkerreparaturen an" - }, - "2": { - "then": "Werkzeuge fÃŧr die Selbstreparatur sind nur verfÃŧgbar, wenn Sie das Fahrrad im Laden gekauft/gemietet haben" - } - }, - "question": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?" - }, - "bike_shop-email": { - "question": "Wie lautet die E-Mail-Adresse von {name}?" - }, - "bike_shop-is-bicycle_shop": { - "render": "Dieses Geschäft ist auf den Verkauf von {shop} spezialisiert und im Bereich Fahrrad tätig" - }, - "bike_shop-name": { - "question": "Wie heißt dieser Fahrradladen?", - "render": "Dieses Fahrradgeschäft heißt {name}" - }, - "bike_shop-phone": { - "question": "Wie lautet die Telefonnummer von {name}?" - }, - "bike_shop-website": { - "question": "Was ist die Webseite von {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Sportartikelgeschäft {name}" - }, - "2": { - "then": "Fahrradverleih{name}" - }, - "3": { - "then": "Fahrradwerkstatt {name}" - }, - "4": { - "then": "Fahrradgeschäft {name}" - }, - "5": { - "then": "Fahrradwerkstatt/geschäft {name}" - } - }, - "render": "Fahrradwerkstatt/geschäft" - } - }, - "bike_themed_object": { - "name": "Mit Fahrrad zusammenhängendes Objekt", - "title": { - "mappings": { - "1": { - "then": "Radweg" - } - }, - "render": "Mit Fahrrad zusammenhängendes Objekt" - } - }, - "binocular": { - "description": "Fernglas", - "name": "Ferngläser", - "presets": { - "0": { - "description": "Ein fest installiertes Teleskop oder Fernglas, fÃŧr die Ãļffentliche Nutzung. ", - "title": "Ferngläser" - } - }, - "tagRenderings": { - "binocular-charge": { - "mappings": { - "0": { - "then": "Kostenlose Nutzung" - } - }, - "question": "Wie viel muss man fÃŧr die Nutzung dieser Ferngläser bezahlen?", - "render": "Die Benutzung dieses Fernglases kostet {charge}" - }, - "binocular-direction": { - "question": "In welche Richtung blickt man, wenn man durch dieses Fernglas schaut?", - "render": "Blick in Richtung {direction}°" - } - }, - "title": { - "render": "Ferngläser" - } - }, - "birdhide": { - "filter": { - "0": { - "options": { - "0": { - "question": "Zugänglich fÃŧr Rollstuhlfahrer" - } - } - } - } - }, - "cafe_pub": { - "filter": { - "0": { - "options": { - "0": { - "question": "Jetzt geÃļffnet" - } - } - } - }, - "name": "CafÊs und Kneipen", - "presets": { - "0": { - "title": "Kneipe" - }, - "1": { - "title": "Bar" - }, - "2": { - "title": "CafÊ" - } - }, - "tagRenderings": { - "Classification": { - "question": "Was ist das fÃŧr ein CafÊ" - }, - "Name": { - "question": "Wie heißt diese Kneipe?", - "render": "Diese Kneipe heißt {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - } - } - }, - "charging_station": { - "filter": { - "0": { - "options": { - "0": { - "question": "Alle Fahrzeugtypen" - }, - "1": { - "question": "Ladestation fÃŧr Fahrräder" - }, - "2": { - "question": "Ladestation fÃŧr Autos" - } - } - }, - "1": { - "options": { - "0": { - "question": "Nur funktionierende Ladestationen" - } - } - }, - "2": { - "options": { - "0": { - "question": "Alle AnschlÃŧsse" - }, - "3": { - "question": "Hat einen
Chademo
Stecker" - }, - "7": { - "question": "Hat einen
Tesla Supercharger
Stecker" - } - } - } - }, - "presets": { - "0": { - "title": "Ladestation" - } - }, - "tagRenderings": { - "Auth phone": { - "question": "Wie lautet die Telefonnummer fÃŧr den Authentifizierungsanruf oder die SMS?", - "render": "Authentifizierung durch Anruf oder SMS an {authentication:phone_call:number}" - }, - "Authentication": { - "mappings": { - "0": { - "then": "Authentifizierung durch eine Mitgliedskarte" - }, - "1": { - "then": "Authentifizierung durch eine App" - }, - "2": { - "then": "Authentifizierung per Anruf ist mÃļglich" - }, - "3": { - "then": "Authentifizierung per Anruf ist mÃļglich" - }, - "4": { - "then": "Authentifizierung Ãŧber NFC ist mÃļglich" - }, - "5": { - "then": "Authentifizierung Ãŧber Geldkarte ist mÃļglich" - }, - "6": { - "then": "Authentifizierung per Debitkarte ist mÃļglich" - }, - "7": { - "then": "Das Aufladen ist hier (auch) ohne Authentifizierung mÃļglich" - } - }, - "question": "Welche Authentifizierung ist an der Ladestation mÃļglich?" - }, - "Available_charging_stations (generated)": { - "mappings": { - "5": { - "then": "
Chademo
" - }, - "6": { - "then": "
Typ 1 mit Kabel (J1772)
" - }, - "7": { - "then": "
Typ 1 mit Kabel (J1772)
" - }, - "8": { - "then": "
Typ 1 ohne Kabel (J1772)
" - }, - "9": { - "then": "
Typ 1 ohne Kabel (J1772)
" - }, - "10": { - "then": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" - }, - "11": { - "then": "
Typ 1 CCS (auch bekannt als Typ 1 Combo)
" - }, - "12": { - "then": "
Tesla Supercharger
" - }, - "13": { - "then": "
Tesla Supercharger
" - }, - "14": { - "then": "
Typ 2 (Mennekes)
" - }, - "15": { - "then": "
Typ 2 (Mennekes)
" - }, - "16": { - "then": "
Typ 2 CCS (Mennekes)
" - }, - "17": { - "then": "
Typ 2 CCS (Mennekes)
" - }, - "18": { - "then": "
Typ 2 mit Kabel (Mennekes)
" - }, - "19": { - "then": "
Typ 2 mit Kabel (Mennekes)
" - }, - "20": { - "then": "
Tesla Supercharger CCS (Typ 2 CSS)
" - }, - "21": { - "then": "
Tesla Supercharger CCS (Typ 2 CSS)
" - }, - "26": { - "then": "
USB zum Laden von Smartphones oder Elektrokleingeräten
" - }, - "27": { - "then": "
USB zum Laden von Smartphones und Elektrokleingeräten
" - }, - "30": { - "then": "
Bosch Active Connect mit 5 Pins und Kabel
" - }, - "31": { - "then": "
Bosch Active Connect mit 5 Pins und Kabel
" - } - }, - "question": "Welche Ladestationen gibt es hier?" - }, - "Network": { - "mappings": { - "0": { - "then": "Nicht Teil eines grÃļßeren Netzwerks" - }, - "1": { - "then": "Nicht Teil eines grÃļßeren Netzwerks" - } - }, - "question": "Ist diese Ladestation Teil eines Netzwerks?", - "render": "Teil des Netzwerks {network}" - }, - "OH": { - "mappings": { - "0": { - "then": "durchgehend geÃļffnet (auch an Feiertagen)" - } - }, - "question": "Wann ist diese Ladestation geÃļffnet?" - }, - "Operational status": { - "mappings": { - "0": { - "then": "Diese Ladestation funktioniert" - }, - "1": { - "then": "Diese Ladestation ist kaputt" - }, - "2": { - "then": "Hier ist eine Ladestation geplant" - }, - "3": { - "then": "Hier wird eine Ladestation gebaut" - }, - "4": { - "then": "Diese Ladestation wurde dauerhaft deaktiviert und wird nicht mehr benutzt, ist aber noch sichtbar" - } - }, - "question": "Ist dieser Ladepunkt in Betrieb?" - }, - "Operator": { - "mappings": { - "0": { - "then": "Eigentlich ist {operator} das Netzwerk" - } - }, - "question": "Wer ist der Betreiber dieser Ladestation?", - "render": "Diese Ladestation wird betrieben von {operator}" - }, - "Parking:fee": { - "mappings": { - "0": { - "then": "Keine zusätzlichen ParkgebÃŧhren beim Laden" - }, - "1": { - "then": "Beim Laden ist eine zusätzliche ParkgebÃŧhr zu entrichten" - } - }, - "question": "Muss man beim Laden eine ParkgebÃŧhr bezahlen?" - }, - "Type": { - "mappings": { - "0": { - "then": "Fahrräder kÃļnnen hier geladen werden" - }, - "1": { - "then": "Autos kÃļnnen hier geladen werden" - }, - "2": { - "then": " Roller kÃļnnen hier geladen werden" - }, - "3": { - "then": "Lastkraftwagen (LKW) kÃļnnen hier geladen werden" - }, - "4": { - "then": "Busse kÃļnnen hier geladen werden" - } - }, - "question": "Welche Fahrzeuge dÃŧrfen hier geladen werden?" - }, - "access": { - "question": "Wer darf diese Ladestation benutzen?", - "render": "Zugang ist {access}" - }, - "capacity": { - "question": "Wie viele Fahrzeuge kÃļnnen hier gleichzeitig geladen werden?", - "render": "{capacity} Fahrzeuge kÃļnnen hier gleichzeitig geladen werden" - }, - "email": { - "question": "Wie ist die Email-Adresse des Betreibers?", - "render": "Bei Problemen senden Sie eine E-Mail an {email}" - }, - "maxstay": { - "mappings": { - "0": { - "then": "Keine HÃļchstparkdauer" - } - }, - "question": "Was ist die HÃļchstdauer des Aufenthalts hier?", - "render": "Die maximale Parkzeit beträgt {canonical(maxstay)}" - }, - "payment-options": { - "override": { - "mappings+": { - "0": { - "then": "Bezahlung mit einer speziellen App" - }, - "1": { - "then": "Bezahlung mit einer Mitgliedskarte" - } - } - } - }, - "phone": { - "question": "Welche Nummer kann man anrufen, wenn es ein Problem mit dieser Ladestation gibt?", - "render": "Bei Problemen, anrufen unter {phone}" - }, - "ref": { - "question": "Wie lautet die Kennung dieser Ladestation?", - "render": "Die Kennziffer ist {ref}" - }, - "website": { - "question": "Wie ist die Webseite des Betreibers?", - "render": "Weitere Informationen auf {website}" - } - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " Minuten", - "humanSingular": " Minute" - }, - "1": { - "human": " Stunden", - "humanSingular": " Stunde" - }, - "2": { - "human": " Tage", - "humanSingular": " Tag" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": "Volt" - } - } - }, - "3": { - "applicableUnits": { - "0": { - "human": "Kilowatt" - }, - "1": { - "human": "Megawatt" - } - } - } - } - }, - "crossings": { - "description": "Übergänge fÃŧr Fußgänger und Radfahrer", - "name": "Kreuzungen", - "presets": { - "0": { - "description": "Kreuzung fÃŧr Fußgänger und/oder Radfahrer", - "title": "Kreuzung" - }, - "1": { - "description": "Ampel an einer Straße", - "title": "Ampel" - } - }, - "tagRenderings": { - "crossing-bicycle-allowed": { - "mappings": { - "0": { - "then": "Radfahrer kÃļnnen diese Kreuzung nutzen" - }, - "1": { - "then": "Radfahrer kÃļnnen diese Kreuzung nicht nutzen" - } - }, - "question": "KÃļnnen Radfahrer diese Kreuzung nutzen?" - }, - "crossing-button": { - "mappings": { - "1": { - "then": "Diese Ampel hat keine Taste, um ein grÃŧnes Signal anzufordern." - } - }, - "question": "Hat diese Ampel eine Taste, um ein grÃŧnes Signal anzufordern?" - }, - "crossing-continue-through-red": { - "mappings": { - "0": { - "then": "Ein Radfahrer kann bei roter Ampel geradeaus fahren " - }, - "1": { - "then": "Ein Radfahrer kann bei roter Ampel geradeaus fahren" - }, - "2": { - "then": "Ein Radfahrer kann bei roter Ampel nicht geradeaus fahren" - } - }, - "question": "Kann ein Radfahrer bei roter Ampel geradeaus fahren?" - }, - "crossing-has-island": { - "mappings": { - "0": { - "then": "Der Übergang hat eine Verkehrsinsel" - }, - "1": { - "then": "Diese Ampel hat eine Taste, um ein grÃŧnes Signal anzufordern" - } - }, - "question": "Gibt es an diesem Übergang eine Verkehrsinsel?" - }, - "crossing-is-zebra": { - "mappings": { - "0": { - "then": "Dies ist ein Zebrastreifen" - }, - "1": { - "then": "Dies ist kein Zebrastreifen" - } - }, - "question": "Ist das ein Zebrastreifen?" - }, - "crossing-right-turn-through-red": { - "mappings": { - "0": { - "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " - }, - "1": { - "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen" - }, - "2": { - "then": "Ein Radfahrer kann bei roter Ampel nicht rechts abbiegen" - } - }, - "question": "Kann ein Radfahrer bei roter Ampel rechts abbiegen?" - }, - "crossing-tactile": { - "mappings": { - "0": { - "then": "An dieser Kreuzung gibt es ein Blindenleitsystem" - }, - "1": { - "then": "Diese Kreuzung hat kein Blindenleitsystem" - } - }, - "question": "Gibt es an dieser Kreuzung ein Blindenleitsystem?" - }, - "crossing-type": { - "mappings": { - "0": { - "then": "Kreuzungen ohne Ampeln" - }, - "1": { - "then": "Kreuzungen mit Ampeln" - }, - "2": { - "then": "Zebrastreifen" - } - }, - "question": "Was ist das fÃŧr eine Kreuzung?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Ampel" - }, - "1": { - "then": "Kreuzung mit Ampeln" - } - }, - "render": "Kreuzung" - } - }, - "cycleways_and_roads": { - "name": "Radwege und Straßen", - "tagRenderings": { - "Cycleway type for a road": { - "mappings": { - "0": { - "then": "Es gibt eine geteilte Fahrspur" - }, - "1": { - "then": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" - }, - "2": { - "then": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." - }, - "3": { - "then": "Hier ist ein getrennter Radweg vorhanden" - }, - "4": { - "then": "Es gibt keinen Radweg" - }, - "5": { - "then": "Es gibt keinen Radweg" - } - }, - "question": "Was fÃŧr ein Radweg ist hier?" - }, - "Cycleway:smoothness": { - "mappings": { - "0": { - "then": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard" - }, - "1": { - "then": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad" - }, - "2": { - "then": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter" - }, - "3": { - "then": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha" - }, - "4": { - "then": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" - }, - "5": { - "then": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen" - }, - "6": { - "then": "Geeignet fÃŧr Geländefahrzeuge: Traktor, ATV" - }, - "7": { - "then": "Unpassierbar / Keine bereiften Fahrzeuge" - } - }, - "question": "Wie eben ist dieser Radweg?" - }, - "Cycleway:surface": { - "mappings": { - "0": { - "then": "Dieser Radweg hat keinen festen Belag" - }, - "1": { - "then": "Dieser Radweg hat einen festen Belag" - }, - "2": { - "then": "Der Radweg ist aus Asphalt" - }, - "3": { - "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" - }, - "4": { - "then": "Der Radweg ist aus Beton" - }, - "5": { - "then": "Dieser Radweg besteht aus Kopfsteinpflaster" - }, - "6": { - "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" - }, - "7": { - "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" - }, - "8": { - "then": "Der Radweg ist aus Holz" - }, - "9": { - "then": "Der Radweg ist aus Schotter" - }, - "10": { - "then": "Dieser Radweg besteht aus feinem Schotter" - }, - "11": { - "then": "Der Radweg ist aus Kies" - }, - "12": { - "then": "Dieser Radweg besteht aus Rohboden" - } - }, - "question": "Was ist der Belag dieses Radwegs?", - "render": "Der Radweg ist aus {cycleway:surface}" - }, - "Is this a cyclestreet? (For a road)": { - "mappings": { - "0": { - "then": "Dies ist eine Fahrradstraße in einer 30km/h Zone." - }, - "1": { - "then": "Dies ist eine Fahrradstraße" - }, - "2": { - "then": "Dies ist keine Fahrradstraße." - } - }, - "question": "Ist das eine Fahrradstraße?" - }, - "Maxspeed (for road)": { - "mappings": { - "0": { - "then": "Die HÃļchstgeschwindigkeit ist 20 km/h" - }, - "1": { - "then": "Die HÃļchstgeschwindigkeit ist 30 km/h" - }, - "2": { - "then": "Die HÃļchstgeschwindigkeit ist 50 km/h" - }, - "3": { - "then": "Die HÃļchstgeschwindigkeit ist 70 km/h" - }, - "4": { - "then": "Die HÃļchstgeschwindigkeit ist 90 km/h" - } - }, - "question": "Was ist die HÃļchstgeschwindigkeit auf dieser Straße?", - "render": "Die HÃļchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h" - }, - "Surface of the road": { - "mappings": { - "0": { - "then": "Dieser Radweg ist nicht befestigt" - }, - "1": { - "then": "Dieser Radweg hat einen festen Belag" - }, - "2": { - "then": "Der Radweg ist aus Asphalt" - }, - "3": { - "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" - }, - "4": { - "then": "Der Radweg ist aus Beton" - }, - "5": { - "then": "Dieser Radweg besteht aus Kopfsteinpflaster" - }, - "6": { - "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" - }, - "7": { - "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" - }, - "8": { - "then": "Der Radweg ist aus Holz" - }, - "9": { - "then": "Der Radweg ist aus Schotter" - }, - "10": { - "then": "Dieser Radweg besteht aus feinem Schotter" - }, - "11": { - "then": "Der Radweg ist aus Kies" - }, - "12": { - "then": "Dieser Radweg besteht aus Rohboden" - } - }, - "question": "Was ist der Belag dieser Straße?", - "render": "Der Radweg ist aus {surface}" - }, - "Surface of the street": { - "mappings": { - "0": { - "then": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard" - }, - "1": { - "then": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad" - }, - "2": { - "then": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter" - }, - "3": { - "then": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha" - }, - "4": { - "then": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" - }, - "5": { - "then": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen" - }, - "6": { - "then": "Geeignet fÃŧr spezielle Geländewagen: Traktor, ATV" - }, - "7": { - "then": "Unpassierbar / Keine bereiften Fahrzeuge" - } - }, - "question": "Wie eben ist diese Straße?" - }, - "cyclelan-segregation": { - "mappings": { - "0": { - "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" - }, - "1": { - "then": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" - }, - "2": { - "then": "Der Radweg ist abgegrenzt durch eine Parkspur" - }, - "3": { - "then": "Dieser Radweg ist getrennt durch einen Bordstein" - } - }, - "question": "Wie ist der Radweg von der Straße abgegrenzt?" - }, - "cycleway-lane-track-traffic-signs": { - "mappings": { - "0": { - "then": "Vorgeschriebener Radweg " - }, - "1": { - "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" - }, - "2": { - "then": "Getrennter Fuß-/Radweg " - }, - "3": { - "then": "Gemeinsamer Fuß-/Radweg " - }, - "4": { - "then": "Kein Verkehrsschild vorhanden" - } - }, - "question": "Welches Verkehrszeichen hat dieser Radweg?" - }, - "cycleway-segregation": { - "mappings": { - "0": { - "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" - }, - "1": { - "then": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" - }, - "2": { - "then": "Der Radweg ist abgegrenzt durch eine Parkspur" - }, - "3": { - "then": "Dieser Radweg ist getrennt durch einen Bordstein" - } - }, - "question": "Wie ist der Radweg von der Straße abgegrenzt?" - }, - "cycleway-traffic-signs": { - "mappings": { - "0": { - "then": "Vorgeschriebener Radweg " - }, - "1": { - "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" - }, - "2": { - "then": "Getrennter Fuß-/Radweg " - }, - "3": { - "then": "Gemeinsamer Fuß-/Radweg " - }, - "4": { - "then": "Kein Verkehrsschild vorhanden" - } - }, - "question": "Welches Verkehrszeichen hat dieser Radweg?" - }, - "cycleway-traffic-signs-D7-supplementary": { - "mappings": { - "1": { - "then": "" - }, - "6": { - "then": "Kein zusätzliches Verkehrszeichen vorhanden" - } - } - }, - "cycleway-traffic-signs-supplementary": { - "mappings": { - "6": { - "then": "Kein zusätzliches Verkehrszeichen vorhanden" - } - } - }, - "cycleways_and_roads-cycleway:buffer": { - "question": "Wie breit ist der Abstand zwischen Radweg und Straße?", - "render": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" - }, - "is lit?": { - "mappings": { - "0": { - "then": "Diese Straße ist beleuchtet" - }, - "1": { - "then": "Diese Straße ist nicht beleuchtet" - }, - "2": { - "then": "Diese Straße ist nachts beleuchtet" - }, - "3": { - "then": "Diese Straße ist durchgehend beleuchtet" - } - }, - "question": "Ist diese Straße beleuchtet?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Radweg" - }, - "2": { - "then": "Fahrradspur" - }, - "3": { - "then": "Radweg neben der Straße" - }, - "4": { - "then": "Fahrradstraße" - } - }, - "render": "Radwege" - } - }, - "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, - "name": "Defibrillatoren", - "presets": { - "0": { - "title": "Defibrillator" - } - }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "Öffentlich zugänglich" - }, - "1": { - "then": "Öffentlich zugänglich" - }, - "2": { - "then": "Nur fÃŧr Kunden zugänglich" - }, - "3": { - "then": "Nicht fÃŧr die Öffentlichkeit zugänglich (z.B. nur fÃŧr das Personal, die EigentÃŧmer, ...)" - }, - "4": { - "then": "Nicht zugänglich, mÃļglicherweise nur fÃŧr betriebliche Nutzung" - } - }, - "question": "Ist dieser Defibrillator frei zugänglich?", - "render": "Zugang ist {access}" - }, - "defibrillator-defibrillator": { - "mappings": { - "0": { - "then": "Dies ist ein manueller Defibrillator fÃŧr den professionellen Einsatz" - }, - "1": { - "then": "Dies ist ein normaler automatischer Defibrillator" - } - }, - "render": "Es gibt keine Informationen Ãŧber den Gerätetyp" - }, - "defibrillator-defibrillator:location": { - "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)", - "render": "Zusätzliche Informationen Ãŧber den Standort (in der Landessprache):
{defibrillator:location}" - }, - "defibrillator-defibrillator:location:en": { - "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Englisch)", - "render": "Zusätzliche Informationen Ãŧber den Standort (auf Englisch):
{defibrillator:location}" - }, - "defibrillator-defibrillator:location:fr": { - "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf FranzÃļsisch)", - "render": "Zusätzliche Informationen zum Standort (auf FranzÃļsisch):
{defibrillator:Standort:fr}" - }, - "defibrillator-description": { - "question": "Gibt es nÃŧtzliche Informationen fÃŧr Benutzer, die Sie oben nicht beschreiben konnten? (leer lassen, wenn nein)", - "render": "Zusätzliche Informationen: {description}" - }, - "defibrillator-email": { - "question": "Wie lautet die E-Mail fÃŧr Fragen zu diesem Defibrillator?", - "render": "E-Mail fÃŧr Fragen zu diesem Defibrillator: {email}" - }, - "defibrillator-fixme": { - "question": "Gibt es einen Fehler in der Kartierung, den Sie hier nicht beheben konnten? (hinterlasse eine Notiz an OpenStreetMap-Experten)", - "render": "Zusätzliche Informationen fÃŧr OpenStreetMap-Experten: {fixme}" - }, - "defibrillator-indoors": { - "mappings": { - "0": { - "then": "Dieser Defibrillator befindet sich im Gebäude" - }, - "1": { - "then": "Dieser Defibrillator befindet sich im Freien" - } - }, - "question": "Befindet sich dieser Defibrillator im Gebäude?" - }, - "defibrillator-level": { - "mappings": { - "0": { - "then": "Dieser Defibrillator befindet sich im Erdgeschoss" - }, - "1": { - "then": "Dieser Defibrillator befindet sich in der ersten Etage" - } - }, - "question": "In welchem Stockwerk befindet sich dieser Defibrillator?", - "render": "Dieser Defibrallator befindet sich im {level}. Stockwerk" - }, - "defibrillator-opening_hours": { - "mappings": { - "0": { - "then": "24/7 geÃļffnet (auch an Feiertagen)" - } - }, - "question": "Zu welchen Zeiten ist dieser Defibrillator verfÃŧgbar?", - "render": "{opening_hours_table(opening_hours)}" - }, - "defibrillator-phone": { - "question": "Wie lautet die Telefonnummer fÃŧr Fragen zu diesem Defibrillator?", - "render": "Telefonnummer fÃŧr Fragen zu diesem Defibrillator: {phone}" - }, - "defibrillator-ref": { - "question": "Wie lautet die offizielle Identifikationsnummer des Geräts? (falls am Gerät sichtbar)", - "render": "Offizielle Identifikationsnummer des Geräts: {ref}" - }, - "defibrillator-survey:date": { - "mappings": { - "0": { - "then": "Heute ÃŧberprÃŧft!" - } - }, - "question": "Wann wurde dieser Defibrillator zuletzt ÃŧberprÃŧft?", - "render": "Dieser Defibrillator wurde zuletzt am {survey:date} ÃŧberprÃŧft" - } - }, - "title": { - "render": "Defibrillator" - } - }, - "direction": { - "description": "Diese Ebene visualisiert Richtungen", - "name": "Visualisierung der Richtung" - }, - "drinking_water": { - "name": "Trinkwasserstelle", - "presets": { - "0": { - "title": "trinkwasser" - } - }, - "tagRenderings": { - "Bottle refill": { - "mappings": { - "0": { - "then": "Es ist einfach, Wasserflaschen nachzufÃŧllen" - }, - "1": { - "then": "Wasserflaschen passen mÃļglicherweise nicht" - } - }, - "question": "Wie einfach ist es, Wasserflaschen zu fÃŧllen?" - }, - "Still in use?": { - "mappings": { - "1": { - "then": "Diese Trinkwasserstelle ist kaputt" - }, - "2": { - "then": "Diese Trinkwasserstelle wurde geschlossen" - } - }, - "question": "Ist diese Trinkwasserstelle noch in Betrieb?", - "render": "Der Betriebsstatus ist {operational_status" - }, - "render-closest-drinking-water": { - "render": "Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter" - } - }, - "title": { - "render": "Trinkwasserstelle" - } - }, - "etymology": { - "description": "Alle Objekte, die eine bekannte Namensherkunft haben", - "name": "Hat eine Namensherkunft", - "tagRenderings": { - "simple etymology": { - "mappings": { - "0": { - "then": "Der Ursprung dieses Namens ist in der gesamten Literatur unbekannt" - } - }, - "question": "Wonach ist dieses Objekt benannt?
Das kÃļnnte auf einem Straßenschild stehen", - "render": "Benannt nach {name:etymology}" - }, - "wikipedia-etymology": { - "question": "Was ist das Wikidata-Element, nach dem dieses Objekt benannt ist?", - "render": "

Wikipedia Artikel zur Namensherkunft

{wikipedia(name:etymology:wikidata):max-height:20rem}" - } - } - }, - "food": { - "filter": { - "0": { - "options": { - "0": { - "question": "Aktuell geÃļffnet" - } - } - }, - "1": { - "options": { - "0": { - "question": "Hat vegetarische Speisen" - } - } - }, - "2": { - "options": { - "0": { - "question": "Bietet vegan Speisen an" - } - } - }, - "3": { - "options": { - "0": { - "question": "Hat halal Speisen" - } - } - } - }, - "name": "Restaurants und Fast Food", - "presets": { - "0": { - "description": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden", - "title": "Restaurant" - }, - "1": { - "title": "Schnellimbiss" - }, - "2": { - "title": "Pommesbude" - } - }, - "tagRenderings": { - "Cuisine": { - "mappings": { - "0": { - "then": "Dies ist eine Pizzeria" - }, - "1": { - "then": "Dies ist eine Pommesbude" - }, - "2": { - "then": "Bietet vorwiegend Pastagerichte an" - } - }, - "question": "Welches Essen gibt es hier?", - "render": "An diesem Ort gibt es hauptsächlich {cuisine}" - }, - "Fastfood vs restaurant": { - "question": "Um was fÃŧr ein Geschäft handelt es sich?" - }, - "Name": { - "question": "Wie heißt dieses Restaurant?", - "render": "Das Restaurant heißt {name}" - }, - "Takeaway": { - "mappings": { - "0": { - "then": "Dieses Geschäft bietet nur Artikel zur Mitnahme an" - }, - "1": { - "then": "Mitnahme mÃļglich" - }, - "2": { - "then": "Mitnahme nicht mÃļglich" - } - }, - "question": "Ist an diesem Ort Mitnahme mÃļglich?" - }, - "Vegetarian (no friture)": { - "question": "Gibt es im das Restaurant vegetarische Speisen?" - }, - "friture-take-your-container": { - "mappings": { - "0": { - "then": "Sie kÃļnnen ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" - } - }, - "question": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine TÃļpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" - }, - "halal (no friture)": { - "mappings": { - "0": { - "then": "Hier gibt es keine halal Speisen" - }, - "1": { - "then": "Hier gibt es wenige halal Speisen" - }, - "2": { - "then": "Es gibt halal Speisen" - }, - "3": { - "then": "Es gibt ausschließlich halal Speisen" - } - }, - "question": "Gibt es im das Restaurant halal Speisen?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Restaurant {name}" - }, - "1": { - "then": "Schnellrestaurant{name}" - } - } - } - }, - "ghost_bike": { - "name": "Geisterräder", - "presets": { - "0": { - "title": "Geisterrad" - } - }, - "tagRenderings": { - "ghost-bike-explanation": { - "render": "Ein Geisterrad ist ein Denkmal fÃŧr einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt wird." - }, - "ghost_bike-inscription": { - "question": "Wie lautet die Inschrift auf diesem Geisterrad?", - "render": "{inscription}" - }, - "ghost_bike-name": { - "mappings": { - "0": { - "then": "Auf dem Fahrrad ist kein Name angegeben" - } - }, - "question": "An wen erinnert dieses Geisterrad?
Bitte respektieren Sie die Privatsphäre - geben Sie den Namen nur an, wenn er weit verbreitet oder auf dem Fahrrad markiert ist. Den Familiennamen kÃļnnen Sie weglassen.
", - "render": "Im Gedenken an {name}" - }, - "ghost_bike-source": { - "question": "Auf welcher Webseite kann man mehr Informationen Ãŧber das Geisterrad oder den Unfall finden?", - "render": "Mehr Informationen" - }, - "ghost_bike-start_date": { - "question": "Wann wurde dieses Geisterrad aufgestellt?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Geisterrad im Gedenken an {name}" - } - }, - "render": "Geisterrad" - } - }, - "information_board": { - "name": "Informationstafeln", - "presets": { - "0": { - "title": "informationstafel" - } - }, - "title": { - "render": "Informationstafel" - } - }, - "map": { - "description": "Eine Karte, die fÃŧr Touristen gedacht ist und dauerhaft im Ãļffentlichen Raum aufgestellt ist", - "name": "Karten", - "presets": { - "0": { - "description": "Fehlende Karte hinzufÃŧgen", - "title": "Karte" - } - }, - "tagRenderings": { - "map-attribution": { - "mappings": { - "0": { - "then": "OpenStreetMap ist eindeutig attributiert, einschließlich der ODBL-Lizenz" - }, - "1": { - "then": "OpenStreetMap ist eindeutig attributiert, aber die Lizenz wird nicht erwähnt" - }, - "2": { - "then": "OpenStreetMap wurde nicht erwähnt, aber jemand hat einen OpenStreetMap-Aufkleber darauf geklebt" - }, - "3": { - "then": "Es gibt Ãŧberhaupt keine Namensnennung" - }, - "4": { - "then": "Es gibt Ãŧberhaupt keine Namensnennung" - } - }, - "question": "Ist die OpenStreetMap-Attribution vorhanden?" - }, - "map-map_source": { - "mappings": { - "0": { - "then": "Diese Karte basiert auf OpenStreetMap" - } - }, - "question": "Auf welchen Daten basiert diese Karte?", - "render": "Diese Karte basiert auf {map_source}" - } - }, - "title": { - "render": "Karte" - } - }, - "nature_reserve": { - "tagRenderings": { - "Curator": { - "question": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist" - }, - "Dogs?": { - "mappings": { - "0": { - "then": "Hunde mÃŧssen angeleint sein" - }, - "1": { - "then": "Hunde sind nicht erlaubt" - }, - "2": { - "then": "Hunde dÃŧrfen frei herumlaufen" - } - }, - "question": "Sind Hunde in diesem Naturschutzgebiet erlaubt?" - }, - "Email": { - "render": "{email}" - }, - "Surface area": { - "render": "Grundfläche: {_surface:ha}ha" - }, - "Website": { - "question": "Auf welcher Webseite kann man mehr Informationen Ãŧber dieses Naturschutzgebiet finden?" - }, - "phone": { - "render": "{phone}" - } - } - }, - "observation_tower": { - "description": "TÃŧrme zur Aussicht auf die umgebende Landschaft", - "name": "AussichtstÃŧrme", - "presets": { - "0": { - "title": "Beobachtungsturm" - } - }, - "tagRenderings": { - "Fee": { - "mappings": { - "0": { - "then": "Eintritt kostenlos" - } - }, - "render": "Der Besuch des Turms kostet {charge}" - }, - "Height": { - "question": "Wie hoch ist dieser Turm?", - "render": "Dieser Turm ist {height} hoch" - }, - "Operator": { - "question": "Wer betreibt diesen Turm?", - "render": "Betrieben von {operator}" - }, - "name": { - "mappings": { - "0": { - "then": "Dieser Turm hat keinen eigenen Namen" - } - }, - "question": "Wie heißt dieser Turm?", - "render": "Der Name dieses Turms lautet {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Beobachtungsturm" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " Meter" - } - } - } - } - }, - "picnic_table": { - "description": "Die Ebene zeigt Picknicktische an", - "name": "Picknick-Tische", - "presets": { - "0": { - "title": "picknicktisch" - } - }, - "tagRenderings": { - "picnic_table-material": { - "mappings": { - "0": { - "then": "Dies ist ein Picknicktisch aus Holz" - }, - "1": { - "then": "Dies ist ein Picknicktisch aus Beton" - } - }, - "question": "Aus welchem Material besteht dieser Picknicktisch?", - "render": "Dieser Picknicktisch besteht aus {material}" - } - }, - "title": { - "render": "Picknick-Tisch" - } - }, - "playground": { - "description": "Spielplätze", - "name": "Spielplätze", - "presets": { - "0": { - "title": "Spielplatz" - } - }, - "tagRenderings": { - "Playground-wheelchair": { - "mappings": { - "0": { - "then": "Vollständig zugänglich fÃŧr Rollstuhlfahrer" - }, - "1": { - "then": "Eingeschränkte Zugänglichkeit fÃŧr Rollstuhlfahrer" - }, - "2": { - "then": "Nicht zugänglich fÃŧr Rollstuhlfahrer" - } - }, - "question": "Ist dieser Spielplatz fÃŧr Rollstuhlfahrer zugänglich?" - }, - "playground-access": { - "mappings": { - "0": { - "then": "Zugänglich fÃŧr die Allgemeinheit" - }, - "1": { - "then": "Zugänglich fÃŧr die Allgemeinheit" - }, - "2": { - "then": "Nur fÃŧr Kunden des Betreibers zugänglich" - }, - "3": { - "then": "Nur fÃŧr SchÃŧler der Schule zugänglich" - }, - "4": { - "then": "Nicht zugänglich" - } - }, - "question": "Ist dieser Spielplatz fÃŧr die Allgemeinheit zugänglich?" - }, - "playground-email": { - "question": "Wie lautet die E-Mail Adresse des Spielplatzbetreuers?", - "render": "{email}" - }, - "playground-lit": { - "mappings": { - "0": { - "then": "Dieser Spielplatz ist nachts beleuchtet" - }, - "1": { - "then": "Dieser Spielplatz ist nachts nicht beleuchtet" - } - }, - "question": "Ist dieser Spielplatz nachts beleuchtet?" - }, - "playground-max_age": { - "render": "Zugang nur fÃŧr Kinder bis maximal {max_age}" - }, - "playground-min_age": { - "render": "Zugang nur fÃŧr Kinder ab {min_age} Jahren" - }, - "playground-opening_hours": { - "mappings": { - "0": { - "then": "Zugänglich von Sonnenaufgang bis Sonnenuntergang" - }, - "1": { - "then": "Immer zugänglich" - }, - "2": { - "then": "Immer zugänglich" - } - }, - "question": "Wann ist dieser Spielplatz zugänglich?" - }, - "playground-operator": { - "question": "Wer betreibt diesen Spielplatz?", - "render": "Betrieben von {operator}" - }, - "playground-phone": { - "render": "{phone}" - }, - "playground-surface": { - "mappings": { - "0": { - "then": "Die Oberfläche ist Gras" - }, - "1": { - "then": "Die Oberfläche ist Sand" - }, - "2": { - "then": "Die Oberfläche besteht aus Holzschnitzeln" - }, - "3": { - "then": "Die Oberfläche ist Pflastersteine" - }, - "4": { - "then": "Die Oberfläche ist Asphalt" - }, - "5": { - "then": "Die Oberfläche ist Beton" - }, - "6": { - "then": "Die Oberfläche ist unbefestigt" - }, - "7": { - "then": "Die Oberfläche ist befestigt" - } - }, - "question": "Welche Oberfläche hat dieser Spielplatz?
Wenn es mehrere gibt, wähle die am häufigsten vorkommende aus", - "render": "Die Oberfläche ist {surface}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Spielplatz {name}" - } - }, - "render": "Spielplatz" - } - }, - "public_bookcase": { - "description": "Ein BÃŧcherschrank am Straßenrand mit BÃŧchern, fÃŧr jedermann zugänglich", - "filter": { - "2": { - "options": { - "0": { - "question": "Innen oder Außen" - } - } - } - }, - "name": "BÃŧcherschränke", - "presets": { - "0": { - "title": "BÃŧcherschrank" - } - }, - "tagRenderings": { - "bookcase-booktypes": { - "mappings": { - "0": { - "then": "Vorwiegend KinderbÃŧcher" - }, - "1": { - "then": "Vorwiegend BÃŧcher fÃŧr Erwachsene" - }, - "2": { - "then": "Sowohl BÃŧcher fÃŧr Kinder als auch fÃŧr Erwachsene" - } - }, - "question": "Welche Art von BÃŧchern sind in diesem Ãļffentlichen BÃŧcherschrank zu finden?" - }, - "bookcase-is-accessible": { - "mappings": { - "0": { - "then": "Öffentlich zugänglich" - }, - "1": { - "then": "Nur fÃŧr Kunden zugänglich" - } - }, - "question": "Ist dieser Ãļffentliche BÃŧcherschrank frei zugänglich?" - }, - "bookcase-is-indoors": { - "mappings": { - "0": { - "then": "Dieser BÃŧcherschrank befindet sich im Innenbereich" - }, - "1": { - "then": "Dieser BÃŧcherschrank befindet sich im Freien" - }, - "2": { - "then": "Dieser BÃŧcherschrank befindet sich im Freien" - } - }, - "question": "Befindet sich dieser BÃŧcherschrank im Freien?" - }, - "public_bookcase-brand": { - "mappings": { - "0": { - "then": "Teil des Netzwerks 'Little Free Library'" - }, - "1": { - "then": "Dieser Ãļffentliche BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks" - } - }, - "question": "Ist dieser Ãļffentliche BÃŧcherschrank Teil eines grÃļßeren Netzwerks?", - "render": "Dieser BÃŧcherschrank ist Teil von {brand}" - }, - "public_bookcase-capacity": { - "question": "Wie viele BÃŧcher passen in diesen Ãļffentlichen BÃŧcherschrank?", - "render": "{capacity} BÃŧcher passen in diesen BÃŧcherschrank" - }, - "public_bookcase-name": { - "mappings": { - "0": { - "then": "Dieser BÃŧcherschrank hat keinen Namen" - } - }, - "question": "Wie heißt dieser Ãļffentliche BÃŧcherschrank?", - "render": "Der Name dieses BÃŧcherschrank lautet {name}" - }, - "public_bookcase-operator": { - "question": "Wer unterhält diesen Ãļffentlichen BÃŧcherschrank?", - "render": "Betrieben von {operator}" - }, - "public_bookcase-ref": { - "mappings": { - "0": { - "then": "Dieser BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks" - } - }, - "question": "Wie lautet die Referenznummer dieses Ãļffentlichen BÃŧcherschranks?", - "render": "Die Referenznummer dieses Ãļffentlichen BÃŧcherschranks innerhalb {brand} lautet {ref}" - }, - "public_bookcase-start_date": { - "question": "Wann wurde dieser Ãļffentliche BÃŧcherschrank installiert?", - "render": "Installiert am {start_date}" - }, - "public_bookcase-website": { - "question": "Gibt es eine Website mit weiteren Informationen Ãŧber diesen Ãļffentlichen BÃŧcherschrank?", - "render": "Weitere Informationen auf der Webseite" - } - }, - "title": { - "mappings": { - "0": { - "then": "Öffentlicher BÃŧcherschrank {name}" - } - }, - "render": "BÃŧcherschrank" - } - }, - "shops": { - "description": "Ein Geschäft", - "name": "Geschäft", - "presets": { - "0": { - "description": "Ein neues Geschäft hinzufÃŧgen", - "title": "Geschäft" - } - }, - "tagRenderings": { - "shops-email": { - "question": "Wie ist die Email-Adresse dieses Geschäfts?" - }, - "shops-name": { - "question": "Wie ist der Name dieses Geschäfts?" - }, - "shops-opening_hours": { - "question": "Wie sind die Öffnungszeiten dieses Geschäfts?" - }, - "shops-phone": { - "question": "Wie ist die Telefonnummer?", - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "0": { - "then": "Lebensmittelladen" - }, - "1": { - "then": "Supermarkt" - }, - "2": { - "then": "Bekleidungsgeschäft" - }, - "3": { - "then": "Friseur" - }, - "4": { - "then": "Bäckerei" - }, - "5": { - "then": "Autowerkstatt" - }, - "6": { - "then": "Autohändler" - } - }, - "question": "Was wird in diesem Geschäft verkauft?", - "render": "Dieses Geschäft verkauft {shop}" - }, - "shops-website": { - "question": "Wie lautet die Webseite dieses Geschäfts?", - "render": "{website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "{shop}" - } - }, - "render": "Geschäft" - } - }, - "slow_roads": { - "tagRenderings": { - "slow_roads-surface": { - "mappings": { - "0": { - "then": "Die Oberfläche ist Gras" - }, - "1": { - "then": "Die Oberfläche ist Erde" - }, - "2": { - "then": "Die Oberfläche ist ohne festen Belag" - }, - "3": { - "then": "Die Oberfläche ist Sand" - }, - "4": { - "then": "Die Oberfläche ist aus Pflastersteinen" - }, - "5": { - "then": "Die Oberfläche ist Asphalt" - }, - "6": { - "then": "Die Oberfläche ist Beton" - }, - "7": { - "then": "Die Oberfläche ist gepflastert" - } - }, - "render": "Die Oberfläche ist {surface}" - } - } - }, - "sport_pitch": { - "description": "Ein Sportplatz", - "name": "Sportplätze", - "presets": { - "0": { - "title": "Tischtennisplatte" - }, - "1": { - "title": "Sportplatz" - } - }, - "tagRenderings": { - "sport-pitch-access": { - "mappings": { - "0": { - "then": "Öffentlicher Zugang" - }, - "2": { - "then": "Zugang nur fÃŧr Vereinsmitglieder" - }, - "3": { - "then": "Privat - kein Ãļffentlicher Zugang" - } - }, - "question": "Ist dieser Sportplatz Ãļffentlich zugänglich?" - }, - "sport-pitch-reservation": { - "mappings": { - "3": { - "then": "Termine nach Vereinbarung nicht mÃļglich" - } - } - }, - "sport_pitch-opening_hours": { - "mappings": { - "1": { - "then": "Immer zugänglich" - } - }, - "question": "Wann ist dieser Sportplatz zugänglich?" - }, - "sport_pitch-sport": { - "mappings": { - "0": { - "then": "Hier wird Basketball gespielt" - }, - "1": { - "then": "Hier wird Fußball gespielt" - }, - "2": { - "then": "Dies ist eine Tischtennisplatte" - }, - "3": { - "then": "Hier wird Tennis gespielt" - }, - "4": { - "then": "Hier wird Kopfball gespielt" - }, - "5": { - "then": "Hier wird Basketball gespielt" - } - }, - "question": "Welche Sportarten kÃļnnen hier gespielt werden?", - "render": "Hier wird {sport} gespielt" - }, - "sport_pitch-surface": { - "mappings": { - "0": { - "then": "Die Oberfläche ist Gras" - }, - "1": { - "then": "Die Oberfläche ist Sand" - }, - "2": { - "then": "Die Oberfläche ist aus Pflastersteinen" - }, - "3": { - "then": "Die Oberfläche ist Asphalt" - }, - "4": { - "then": "Die Oberfläche ist Beton" - } - }, - "render": "Die Oberfläche ist {surface}" - } - }, - "title": { - "render": "Sportplatz" - } - }, - "surveillance_camera": { - "name": "Überwachungskameras", - "tagRenderings": { - "Camera type: fixed; panning; dome": { - "mappings": { - "0": { - "then": "Eine fest montierte (nicht bewegliche) Kamera" - }, - "1": { - "then": "Eine Kuppelkamera (drehbar)" - }, - "2": { - "then": "Eine bewegliche Kamera" - } - }, - "question": "Um welche Kameratyp handelt se sich?" - }, - "Indoor camera? This isn't clear for 'public'-cameras": { - "mappings": { - "0": { - "then": "Diese Kamera befindet sich im Innenraum" - }, - "1": { - "then": "Diese Kamera befindet sich im Freien" - }, - "2": { - "then": "Diese Kamera ist mÃļglicherweise im Freien" - } - }, - "question": "Handelt es sich bei dem von dieser Kamera Ãŧberwachten Ãļffentlichen Raum um einen Innen- oder Außenbereich?" - }, - "Level": { - "question": "Auf welcher Ebene befindet sich diese Kamera?", - "render": "Befindet sich auf Ebene {level}" - }, - "Operator": { - "question": "Wer betreibt diese CCTV Kamera?", - "render": "Betrieben von {operator}" - }, - "Surveillance type: public, outdoor, indoor": { - "mappings": { - "1": { - "then": "Ein privater Außenbereich wird Ãŧberwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" - }, - "2": { - "then": "Ein privater Innenbereich wird Ãŧberwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." - } - }, - "question": "Um was fÃŧr eine Überwachungskamera handelt es sich" - }, - "Surveillance:zone": { - "mappings": { - "0": { - "then": "Überwacht einen Parkplatz" - }, - "1": { - "then": "Überwacht den Verkehr" - }, - "2": { - "then": "Überwacht einen Eingang" - }, - "3": { - "then": "Überwacht einen Gang" - }, - "4": { - "then": "Überwacht eine Haltestelle" - }, - "5": { - "then": "Überwacht ein Geschäft" - } - }, - "question": "Was genau wird hier Ãŧberwacht?", - "render": " Überwacht ein/e {surveillance:zone}" - }, - "camera:mount": { - "mappings": { - "0": { - "then": "Diese Kamera ist an einer Wand montiert" - }, - "1": { - "then": "Diese Kamera ist an einer Stange montiert" - }, - "2": { - "then": "Diese Kamera ist an der Decke montiert" - } - }, - "question": "Wie ist diese Kamera montiert?", - "render": "Montageart: {mount}" - }, - "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { - "question": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?" - } - }, - "title": { - "render": "Überwachungskamera" - } - }, - "toilet": { - "filter": { - "0": { - "options": { - "0": { - "question": "Rollstuhlgerecht" - } - } - }, - "1": { - "options": { - "0": { - "question": "Hat einen Wickeltisch" - } - } - }, - "2": { - "options": { - "0": { - "question": "Nutzung kostenlos" - } - } - } - }, - "name": "Toiletten", - "presets": { - "0": { - "description": "Eine Ãļffentlich zugängliche Toilette", - "title": "toilette" - }, - "1": { - "description": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette", - "title": "toiletten mit rollstuhlgerechter Toilette" - } - }, - "tagRenderings": { - "toilet-access": { - "mappings": { - "0": { - "then": "Öffentlicher Zugang" - }, - "1": { - "then": "Nur Zugang fÃŧr Kunden" - }, - "2": { - "then": "Nicht zugänglich" - }, - "3": { - "then": "Zugänglich, aber man muss einen SchlÃŧssel fÃŧr die Eingabe verlangen" - }, - "4": { - "then": "Öffentlicher Zugang" - } - }, - "question": "Sind diese Toiletten Ãļffentlich zugänglich?", - "render": "Zugang ist {access}" - }, - "toilet-changing_table:location": { - "mappings": { - "0": { - "then": "Der Wickeltisch befindet sich in der Damentoilette. " - }, - "1": { - "then": "Der Wickeltisch befindet sich in der Herrentoilette. " - }, - "2": { - "then": "Der Wickeltisch befindet sich in der Toilette fÃŧr Rollstuhlfahrer. " - }, - "3": { - "then": "Der Wickeltisch befindet sich in einem eigenen Raum. " - } - }, - "question": "Wo befindet sich der Wickeltisch?", - "render": "Die Wickeltabelle befindet sich in {changing_table:location}" - }, - "toilet-charge": { - "question": "Wie viel muss man fÃŧr diese Toiletten bezahlen?", - "render": "Die GebÃŧhr beträgt {charge}" - }, - "toilets-changing-table": { - "mappings": { - "0": { - "then": "Ein Wickeltisch ist verfÃŧgbar" - }, - "1": { - "then": "Es ist kein Wickeltisch verfÃŧgbar" - } - }, - "question": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?" - }, - "toilets-fee": { - "mappings": { - "0": { - "then": "Dies sind bezahlte Toiletten" - }, - "1": { - "then": "Kostenlose Nutzung" - } - }, - "question": "KÃļnnen diese Toiletten kostenlos benutzt werden?" - }, - "toilets-type": { - "mappings": { - "0": { - "then": "Es gibt nur Sitztoiletten" - }, - "1": { - "then": "Hier gibt es nur Pissoirs" - }, - "2": { - "then": "Es gibt hier nur Hocktoiletten" - }, - "3": { - "then": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfÃŧgbar" - } - }, - "question": "Welche Art von Toiletten sind das?" - }, - "toilets-wheelchair": { - "mappings": { - "0": { - "then": "Es gibt eine Toilette fÃŧr Rollstuhlfahrer" - }, - "1": { - "then": "Kein Zugang fÃŧr Rollstuhlfahrer" - } - }, - "question": "Gibt es eine Toilette fÃŧr Rollstuhlfahrer?" - } - }, - "title": { - "render": "Toilette" - } - }, - "trail": { - "name": "Wanderwege", - "title": { - "render": "Wanderweg" - } - }, - "tree_node": { - "name": "Baum", - "presets": { - "0": { - "description": "Ein Baum mit Blättern, z. B. Eiche oder Buche.", - "title": "Laubbaum" - }, - "1": { - "description": "Ein Baum mit Nadeln, z. B. Kiefer oder Fichte.", - "title": "Nadelbaum" - }, - "2": { - "description": "Wenn Sie nicht sicher sind, ob es sich um einen Laubbaum oder einen Nadelbaum handelt.", - "title": "Baum" - } - }, - "tagRenderings": { - "tree-decidouous": { - "mappings": { - "0": { - "then": "Laubabwerfend: Der Baum verliert fÃŧr eine gewisse Zeit des Jahres seine Blätter." - }, - "1": { - "then": "immergrÃŧner Baum." - } - }, - "question": "Ist dies ein Nadelbaum oder ein Laubbaum?" - }, - "tree-denotation": { - "mappings": { - "0": { - "then": "Der Baum ist aufgrund seiner GrÃļße oder seiner markanten Lage bedeutsam. Er ist nÃŧtzlich zur Orientierung." - }, - "1": { - "then": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehÃļrt." - }, - "2": { - "then": "Der Baum wird fÃŧr landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." - }, - "3": { - "then": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." - }, - "5": { - "then": "Dieser Baum steht entlang einer Straße." - }, - "7": { - "then": "Dieser Baum steht außerhalb eines städtischen Gebiets." - } - }, - "question": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." - }, - "tree-height": { - "mappings": { - "0": { - "then": "HÃļhe: {height} m" - } - }, - "render": "HÃļhe: {height}" - }, - "tree-heritage": { - "mappings": { - "0": { - "then": "\"\"/ Als Denkmal registriert von der Onroerend Erfgoed Flandern" - }, - "1": { - "then": "Als Denkmal registriert von der Direction du Patrimoine culturel BrÃŧssel" - }, - "3": { - "then": "Nicht als Denkmal registriert" - } - }, - "question": "Ist dieser Baum ein Naturdenkmal?" - }, - "tree-leaf_type": { - "mappings": { - "0": { - "then": "\"\"/ Laubbaum" - }, - "1": { - "then": "\"\"/ Nadelbaum" - }, - "2": { - "then": "\"\"/ Dauerhaft blattlos" - } - }, - "question": "Ist dies ein Laub- oder Nadelbaum?" - }, - "tree_node-name": { - "mappings": { - "0": { - "then": "Der Baum hat keinen Namen." - } - }, - "question": "Hat der Baum einen Namen?", - "render": "Name: {name}" - }, - "tree_node-ref:OnroerendErfgoed": { - "question": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?" - }, - "tree_node-wikidata": { - "question": "Was ist das passende Wikidata Element zu diesem Baum?" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Baum" - } - }, - "viewpoint": { - "description": "Ein schÃļner Aussichtspunkt oder eine schÃļne Aussicht. Ideal zum HinzufÃŧgen eines Bildes, wenn keine andere Kategorie passt", - "name": "Aussichtspunkt", - "presets": { - "0": { - "title": "Aussichtspunkt" - } - }, - "tagRenderings": { - "viewpoint-description": { - "question": "MÃļchten Sie eine Beschreibung hinzufÃŧgen?" - } - }, - "title": { - "render": "Aussichtspunkt" - } - }, - "visitor_information_centre": { - "description": "Ein Besucherzentrum bietet Informationen Ãŧber eine bestimmte Attraktion oder SehenswÃŧrdigkeit, an der es sich befindet.", - "name": "Besucherinformationszentrum", - "title": { - "mappings": { - "1": { - "then": "{name}" - } - }, - "render": "{name}" - } - }, - "waste_basket": { - "description": "Dies ist ein Ãļffentlicher Abfalleimer, in den Sie Ihren MÃŧll entsorgen kÃļnnen.", - "iconSize": { - "mappings": { - "0": { - "then": "Abfalleimer" - } - } - }, - "mapRendering": { - "0": { - "iconSize": { - "mappings": { - "0": { - "then": "Abfalleimer" - } - } - } - } - }, - "name": "Abfalleimer", - "presets": { - "0": { - "title": "Abfalleimer" - } - }, - "tagRenderings": { - "dispensing_dog_bags": { - "mappings": { - "0": { - "then": "Dieser Abfalleimer verfÃŧgt Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel" - }, - "1": { - "then": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" - }, - "2": { - "then": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" - } - }, - "question": "VerfÃŧgt dieser Abfalleimer Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel?" - }, - "waste-basket-waste-types": { - "mappings": { - "0": { - "then": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" - }, - "1": { - "then": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" - }, - "2": { - "then": "Ein Abfalleimer fÃŧr Hundekot" - }, - "3": { - "then": "MÃŧlleimer fÃŧr Zigaretten" - }, - "4": { - "then": "MÃŧlleimer fÃŧr Drogen" - } - }, - "question": "Um was fÃŧr einen Abfalleimer handelt es sich?" - } - }, - "title": { - "render": "Abfalleimer" - } - }, - "watermill": { - "name": "WassermÃŧhle" + }, + "render": "Kunstwerk" } + }, + "barrier": { + "description": "Hindernisse beim Fahrradfahren, wie zum Beispiel Poller und Fahrrad Barrieren", + "name": "Hindernisse", + "presets": { + "0": { + "description": "Ein Poller auf der Straße", + "title": "Poller" + }, + "1": { + "description": "Fahrradhindernis, das Radfahrer abbremst", + "title": "Fahrradhindernis" + } + }, + "tagRenderings": { + "Bollard type": { + "mappings": { + "0": { + "then": "Entfernbarer Poller" + }, + "1": { + "then": "Feststehender Poller" + }, + "2": { + "then": "Umlegbarer Poller" + }, + "3": { + "then": "Flexibler Poller, meist aus Kunststoff" + }, + "4": { + "then": "Ausfahrender Poller" + } + }, + "question": "Um was fÃŧr einen Poller handelt es sich?" + }, + "Cycle barrier type": { + "mappings": { + "0": { + "then": "Einfach, nur zwei Barrieren mit einem Zwischenraum " + }, + "1": { + "then": "Doppelt, zwei Barrieren hintereinander " + }, + "2": { + "then": "Dreifach, drei Barrieren hintereinander " + }, + "3": { + "then": "Eine Durchfahrtsbeschränkung, Durchfahrtsbreite ist oben kleiner als unten " + } + }, + "question": "Um welche Art Fahrradhindernis handelt es sich?" + }, + "MaxWidth": { + "question": "Welche Durchfahrtsbreite hat das Hindernis?", + "render": "Maximale Durchfahrtsbreite: {maxwidth:physical} m" + }, + "Overlap (cyclebarrier)": { + "question": "Wie stark Ãŧberschneiden sich die Barrieren?", + "render": "Überschneidung: {overlap} m" + }, + "Space between barrier (cyclebarrier)": { + "question": "Wie groß ist der Abstand zwischen den Barrieren (entlang der Straße)?", + "render": "Abstand zwischen den Barrieren (entlang der Straße): {width:separation} m" + }, + "Width of opening (cyclebarrier)": { + "question": "Wie breit ist die kleinste Öffnung neben den Barrieren?", + "render": "Breite der Öffnung: {width:opening} m" + }, + "bicycle=yes/no": { + "mappings": { + "0": { + "then": "Ein Radfahrer kann hindurchfahren." + }, + "1": { + "then": "Ein Radfahrer kann nicht hindurchfahren." + } + }, + "question": "Kann ein Radfahrer das Hindernis passieren?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Poller" + }, + "1": { + "then": "Barriere fÃŧr Radfahrer" + } + }, + "render": "Hindernis" + } + }, + "bench": { + "name": "Sitzbänke", + "presets": { + "0": { + "title": "sitzbank" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "RÃŧckenlehne: Ja" + }, + "1": { + "then": "RÃŧckenlehne: Nein" + } + }, + "question": "Hat diese Bank eine RÃŧckenlehne?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Farbe: braun" + }, + "1": { + "then": "Farbe: grÃŧn" + }, + "2": { + "then": "Farbe: grau" + }, + "3": { + "then": "Farbe: weiß" + }, + "4": { + "then": "Farbe: rot" + }, + "5": { + "then": "Farbe: schwarz" + }, + "6": { + "then": "Farbe: blau" + }, + "7": { + "then": "Farbe: gelb" + } + }, + "question": "Welche Farbe hat diese Sitzbank?", + "render": "Farbe: {colour}" + }, + "bench-direction": { + "question": "In welche Richtung schaut man, wenn man auf der Bank sitzt?", + "render": "Wenn man auf der Bank sitzt, schaut man in Richtung {direction}°." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Material: Holz" + }, + "1": { + "then": "Material: Metall" + }, + "2": { + "then": "Material: Stein" + }, + "3": { + "then": "Material: Beton" + }, + "4": { + "then": "Material: Kunststoff" + }, + "5": { + "then": "Material: Stahl" + } + }, + "question": "Aus welchem Material besteht die Sitzbank (Sitzfläche)?", + "render": "Material: {material}" + }, + "bench-seats": { + "question": "Wie viele Sitzplätze hat diese Bank?", + "render": "{seats} Sitzplätze" + }, + "bench-survey:date": { + "question": "Wann wurde diese Bank zuletzt ÃŧberprÃŧft?", + "render": "Diese Bank wurde zuletzt ÃŧberprÃŧft am {survey:date}" + } + }, + "title": { + "render": "Sitzbank" + } + }, + "bench_at_pt": { + "name": "Sitzbänke bei Haltestellen", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "1": { + "then": "Stehbank" + } + } + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Sitzbank bei Haltestelle" + }, + "1": { + "then": "Sitzbank in Unterstand" + } + }, + "render": "Sitzbank" + } + }, + "bicycle_library": { + "description": "Eine Einrichtung, in der Fahrräder fÃŧr längere Zeit geliehen werden kÃļnnen", + "name": "Fahrradbibliothek", + "presets": { + "0": { + "description": "Eine Fahrradbibliothek verfÃŧgt Ãŧber eine Sammlung von Fahrrädern, die ausgeliehen werden kÃļnnen", + "title": "Fahrradbibliothek" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "Fahrräder fÃŧr Kinder verfÃŧgbar" + }, + "1": { + "then": "Fahrräder fÃŧr Erwachsene verfÃŧgbar" + }, + "2": { + "then": "Fahrräder fÃŧr Behinderte verfÃŧgbar" + } + }, + "question": "Wer kann hier Fahrräder ausleihen?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "Das Ausleihen eines Fahrrads ist kostenlos" + }, + "1": { + "then": "Das Ausleihen eines Fahrrads kostet 20â‚Ŧ pro Jahr und 20â‚Ŧ GebÃŧhr" + } + }, + "question": "Wie viel kostet das Ausleihen eines Fahrrads?", + "render": "Das Ausleihen eines Fahrrads kostet {charge}" + }, + "bicycle_library-name": { + "question": "Wie lautet der Name dieser Fahrradbibliothek?", + "render": "Diese Fahrradbibliothek heißt {name}" + } + }, + "title": { + "render": "Fahrradbibliothek" + } + }, + "bicycle_tube_vending_machine": { + "name": "Fahrradschlauch-Automat", + "presets": { + "0": { + "title": "Fahrradschlauch-Automat" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Dieser Automat funktioniert" + }, + "1": { + "then": "Dieser Automat ist kaputt" + }, + "2": { + "then": "Dieser Automat ist geschlossen" + } + }, + "question": "Ist dieser Automat noch in Betrieb?", + "render": "Der Betriebszustand ist {operational_status}" + } + }, + "title": { + "render": "Fahrradschlauch-Automat" + } + }, + "bike_cafe": { + "name": "Fahrrad-CafÊ", + "presets": { + "0": { + "title": "Fahrrad-CafÊ" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "Dieses Fahrrad-CafÊ bietet eine Fahrradpumpe an, die von jedem benutzt werden kann" + }, + "1": { + "then": "Dieses Fahrrad-CafÊ bietet keine Fahrradpumpe an, die von jedem benutzt werden kann" + } + }, + "question": "Bietet dieses Fahrrad-CafÊ eine Fahrradpumpe an, die von jedem benutzt werden kann?" + }, + "bike_cafe-email": { + "question": "Wie lautet die E-Mail-Adresse von {name}?" + }, + "bike_cafe-name": { + "question": "Wie heißt dieses Fahrrad-CafÊ?", + "render": "Dieses Fahrrad-CafÊ heißt {name}" + }, + "bike_cafe-opening_hours": { + "question": "Wann ist dieses FahrradcafÊ geÃļffnet?" + }, + "bike_cafe-phone": { + "question": "Wie lautet die Telefonnummer von {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "Dieses Fahrrad-CafÊ repariert Fahrräder" + }, + "1": { + "then": "Dieses Fahrrad-CafÊ repariert keine Fahrräder" + } + }, + "question": "Repariert dieses Fahrrad-CafÊ Fahrräder?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "Dieses Fahrrad-CafÊ bietet Werkzeuge fÃŧr die selbständige Reparatur an" + }, + "1": { + "then": "Dieses Fahrrad-CafÊ bietet keine Werkzeuge fÃŧr die selbständige Reparatur an" + } + }, + "question": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?" + }, + "bike_cafe-website": { + "question": "Was ist die Webseite von {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Fahrrad-CafÊ {name}" + } + }, + "render": "Fahrrad-CafÊ" + } + }, + "bike_cleaning": { + "name": "Fahrrad-Reinigungsdienst", + "presets": { + "0": { + "title": "Fahrrad-Reinigungsdienst" + } + }, + "title": { + "mappings": { + "0": { + "then": "Fahrrad-Reinigungsdienst{name}" + } + }, + "render": "Fahrrad-Reinigungsdienst" + } + }, + "bike_parking": { + "name": "Fahrrad-Parkplätze", + "presets": { + "0": { + "title": "Fahrrad-Parkplätze" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "Öffentlich zugänglich" + }, + "1": { + "then": "Der Zugang ist in erster Linie fÃŧr Besucher eines Unternehmens bestimmt" + }, + "2": { + "then": "Der Zugang ist beschränkt auf Mitglieder einer Schule, eines Unternehmens oder einer Organisation" + } + }, + "question": "Wer kann diesen Fahrradparplatz nutzen?", + "render": "{access}" + }, + "Bicycle parking type": { + "mappings": { + "0": { + "then": "FahrradbÃŧgel " + }, + "1": { + "then": "Metallgestänge " + }, + "2": { + "then": "Halter fÃŧr Fahrradlenker " + }, + "3": { + "then": "Gestell " + }, + "4": { + "then": "Zweistufig " + }, + "5": { + "then": "Schuppen " + }, + "6": { + "then": "Poller " + }, + "7": { + "then": "Ein Bereich auf dem Boden, der fÃŧr das Abstellen von Fahrrädern gekennzeichnet ist" + } + }, + "question": "Was ist die Art dieses Fahrrad-Parkplatzes?", + "render": "Dies ist ein Fahrrad-Parkplatz der Art: {bicycle_parking}" + }, + "Capacity": { + "question": "Wie viele Fahrräder passen auf diesen Fahrrad-Parkplatz (einschließlich mÃļglicher Lastenfahrräder)?", + "render": "Platz fÃŧr {capacity} Fahrräder" + }, + "Cargo bike capacity?": { + "question": "Wie viele Lastenfahrräder passen auf diesen Fahrrad-Parkplatz?", + "render": "Auf diesen Parkplatz passen {capacity:cargo_bike} Lastenfahrräder" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "Dieser Parkplatz bietet Platz fÃŧr Lastenfahrräder" + }, + "1": { + "then": "Dieser Parkplatz verfÃŧgt Ãŧber ausgewiesene (offizielle) Plätze fÃŧr Lastenfahrräder." + }, + "2": { + "then": "Es ist nicht erlaubt, Lastenfahrräder zu parken" + } + }, + "question": "Gibt es auf diesem Fahrrad-Parkplatz Plätze fÃŧr Lastenfahrräder?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "Dieser Parkplatz ist Ãŧberdacht (er hat ein Dach)" + }, + "1": { + "then": "Dieser Parkplatz ist nicht Ãŧberdacht" + } + }, + "question": "Ist dieser Parkplatz Ãŧberdacht? Wählen Sie auch \"Ãŧberdacht\" fÃŧr Innenparkplätze." + }, + "Underground?": { + "mappings": { + "0": { + "then": "Tiefgarage" + }, + "1": { + "then": "Ebenerdiges Parken" + }, + "2": { + "then": "Parkplatz auf dem Dach" + }, + "3": { + "then": "Ebenerdiges Parken" + }, + "4": { + "then": "Parkplatz auf dem Dach" + } + }, + "question": "Wo befinden sich diese Fahrradabstellplätze?" + } + }, + "title": { + "render": "Fahrrad-Parkplätze" + } + }, + "bike_repair_station": { + "name": "Fahrradstationen (Reparatur, Pumpe oder beides)", + "presets": { + "0": { + "description": "Ein Gerät zum Aufpumpen von Reifen an einem festen Standort im Ãļffentlichen Raum.

Beispiele fÃŧr Fahrradpumpen

", + "title": "Fahrradpumpe" + }, + "1": { + "description": "Ein Gerät mit Werkzeugen zur Reparatur von Fahrrädern kombiniert mit einer Pumpe an einem festen Standort. Die Werkzeuge sind oft mit Ketten gegen Diebstahl gesichert.

Beispiel

", + "title": "Fahrrad-Reparaturstation und Pumpe" + }, + "2": { + "title": "Fahrrad-Reparaturstation ohne Pumpe" + } + }, + "tagRenderings": { + "Email maintainer": { + "render": "Melde diese Fahrradpumpe als kaputt" + }, + "Operational status": { + "mappings": { + "0": { + "then": "Die Fahrradpumpe ist kaputt" + }, + "1": { + "then": "Die Fahrradpumpe ist betriebsbereit" + } + }, + "question": "Ist die Fahrradpumpe noch funktionstÃŧchtig?" + }, + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "Es ist nur eine Pumpe vorhanden" + }, + "1": { + "then": "Es sind nur Werkzeuge (Schraubenzieher, Zangen...) vorhanden" + }, + "2": { + "then": "Es sind sowohl Werkzeuge als auch eine Pumpe vorhanden" + } + }, + "question": "Welche Einrichtungen stehen an dieser Fahrradstation zur VerfÃŧgung?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "Es gibt ein Kettenwerkzeug" + }, + "1": { + "then": "Es gibt kein Kettenwerkzeug" + } + }, + "question": "VerfÃŧgt diese Fahrrad-Reparaturstation Ãŧber Spezialwerkzeug zur Reparatur von Fahrradketten?" + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "Es gibt einen Haken oder Ständer" + }, + "1": { + "then": "Es gibt keinen Haken oder Ständer" + } + }, + "question": "Hat diese Fahrradstation einen Haken, an dem Sie Ihr Fahrrad aufhängen kÃļnnen, oder einen Ständer, um es anzuheben?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Manuelle Pumpe" + }, + "1": { + "then": "Elektrische Pumpe" + } + }, + "question": "Ist dies eine elektrische Fahrradpumpe?" + }, + "bike_repair_station-email": { + "question": "Wie lautet die E-Mail-Adresse des Betreuers?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "Es gibt ein Manometer" + }, + "1": { + "then": "Es gibt kein Manometer" + }, + "2": { + "then": "Es gibt ein Manometer, aber es ist kaputt" + } + }, + "question": "VerfÃŧgt die Pumpe Ãŧber einen Druckanzeiger oder ein Manometer?" + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "Immer geÃļffnet" + }, + "1": { + "then": "Immer geÃļffnet" + } + }, + "question": "Wann ist diese Fahrradreparaturstelle geÃļffnet?" + }, + "bike_repair_station-operator": { + "question": "Wer wartet diese Fahrradpumpe?", + "render": "Gewartet von {operator}" + }, + "bike_repair_station-phone": { + "question": "Wie lautet die Telefonnummer des Betreibers?" + }, + "bike_repair_station-valves": { + "mappings": { + "0": { + "then": "Sklaverand (auch bekannt als Presta)" + }, + "1": { + "then": "Dunlop" + }, + "2": { + "then": "Schrader (Autos)" + } + }, + "question": "Welche Ventile werden unterstÃŧtzt?", + "render": "Diese Pumpe unterstÃŧtzt die folgenden Ventile: {valves}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Fahrrad-Reparaturstation" + }, + "1": { + "then": "Fahrrad-Reparaturstation" + }, + "2": { + "then": "Kaputte Pumpe" + }, + "3": { + "then": "Fahrradpumpe {name}" + }, + "4": { + "then": "Fahrradpumpe" + } + }, + "render": "Fahrradstation (Pumpe & Reparatur)" + } + }, + "bike_shop": { + "description": "Ein Geschäft, das speziell Fahrräder oder verwandte Artikel verkauft", + "name": "Fahrradwerkstatt/geschäft", + "presets": { + "0": { + "title": "Fahrradwerkstatt/geschäft" + } + }, + "tagRenderings": { + "bike_repair_bike-pump-service": { + "mappings": { + "0": { + "then": "Dieses Geschäft bietet eine Fahrradpumpe fÃŧr alle an" + }, + "1": { + "then": "Dieses Geschäft bietet fÃŧr niemanden eine Fahrradpumpe an" + }, + "2": { + "then": "Es gibt eine Fahrradpumpe, sie wird als separater Punkt angezeigt " + } + }, + "question": "Bietet dieses Geschäft eine Fahrradpumpe zur Benutzung fÃŧr alle an?" + }, + "bike_repair_bike-wash": { + "mappings": { + "0": { + "then": "Dieses Geschäft reinigt Fahrräder" + }, + "1": { + "then": "Dieser Laden hat eine Anlage, in der man Fahrräder selbst reinigen kann" + }, + "2": { + "then": "Dieser Laden bietet keine Fahrradreinigung an" + } + }, + "question": "Werden hier Fahrräder gewaschen?" + }, + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Dieses Geschäft vermietet Fahrräder" + }, + "1": { + "then": "Dieses Geschäft vermietet keine Fahrräder" + } + }, + "question": "Vermietet dieser Laden Fahrräder?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Dieses Geschäft repariert Fahrräder" + }, + "1": { + "then": "Dieses Geschäft repariert keine Fahrräder" + }, + "2": { + "then": "Dieses Geschäft repariert nur hier gekaufte Fahrräder" + }, + "3": { + "then": "Dieses Geschäft repariert nur Fahrräder einer bestimmten Marke" + } + }, + "question": "Repariert dieses Geschäft Fahrräder?" + }, + "bike_repair_second-hand-bikes": { + "mappings": { + "0": { + "then": "Dieses Geschäft verkauft gebrauchte Fahrräder" + }, + "1": { + "then": "Dieses Geschäft verkauft keine gebrauchten Fahrräder" + }, + "2": { + "then": "Dieses Geschäft verkauft nur gebrauchte Fahrräder" + } + }, + "question": "Verkauft dieses Geschäft gebrauchte Fahrräder?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "Dieses Geschäft verkauft Fahrräder" + }, + "1": { + "then": "Dieses Geschäft verkauft keine Fahrräder" + } + }, + "question": "Verkauft dieser Laden Fahrräder?" + }, + "bike_repair_tools-service": { + "mappings": { + "0": { + "then": "Dieses Geschäft bietet Werkzeuge fÃŧr die Heimwerkerreparatur an" + }, + "1": { + "then": "Dieses Geschäft bietet keine Werkzeuge fÃŧr Heimwerkerreparaturen an" + }, + "2": { + "then": "Werkzeuge fÃŧr die Selbstreparatur sind nur verfÃŧgbar, wenn Sie das Fahrrad im Laden gekauft/gemietet haben" + } + }, + "question": "Gibt es hier Werkzeuge, um das eigene Fahrrad zu reparieren?" + }, + "bike_shop-email": { + "question": "Wie lautet die E-Mail-Adresse von {name}?" + }, + "bike_shop-is-bicycle_shop": { + "render": "Dieses Geschäft ist auf den Verkauf von {shop} spezialisiert und im Bereich Fahrrad tätig" + }, + "bike_shop-name": { + "question": "Wie heißt dieser Fahrradladen?", + "render": "Dieses Fahrradgeschäft heißt {name}" + }, + "bike_shop-phone": { + "question": "Wie lautet die Telefonnummer von {name}?" + }, + "bike_shop-website": { + "question": "Was ist die Webseite von {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Sportartikelgeschäft {name}" + }, + "2": { + "then": "Fahrradverleih{name}" + }, + "3": { + "then": "Fahrradwerkstatt {name}" + }, + "4": { + "then": "Fahrradgeschäft {name}" + }, + "5": { + "then": "Fahrradwerkstatt/geschäft {name}" + } + }, + "render": "Fahrradwerkstatt/geschäft" + } + }, + "bike_themed_object": { + "name": "Mit Fahrrad zusammenhängendes Objekt", + "title": { + "mappings": { + "1": { + "then": "Radweg" + } + }, + "render": "Mit Fahrrad zusammenhängendes Objekt" + } + }, + "binocular": { + "description": "Fernglas", + "name": "Ferngläser", + "presets": { + "0": { + "description": "Ein fest installiertes Teleskop oder Fernglas, fÃŧr die Ãļffentliche Nutzung. ", + "title": "Ferngläser" + } + }, + "tagRenderings": { + "binocular-charge": { + "mappings": { + "0": { + "then": "Kostenlose Nutzung" + } + }, + "question": "Wie viel muss man fÃŧr die Nutzung dieser Ferngläser bezahlen?", + "render": "Die Benutzung dieses Fernglases kostet {charge}" + }, + "binocular-direction": { + "question": "In welche Richtung blickt man, wenn man durch dieses Fernglas schaut?", + "render": "Blick in Richtung {direction}°" + } + }, + "title": { + "render": "Ferngläser" + } + }, + "birdhide": { + "filter": { + "0": { + "options": { + "0": { + "question": "Zugänglich fÃŧr Rollstuhlfahrer" + } + } + } + } + }, + "cafe_pub": { + "filter": { + "0": { + "options": { + "0": { + "question": "Jetzt geÃļffnet" + } + } + } + }, + "name": "CafÊs und Kneipen", + "presets": { + "0": { + "title": "Kneipe" + }, + "1": { + "title": "Bar" + }, + "2": { + "title": "CafÊ" + } + }, + "tagRenderings": { + "Classification": { + "question": "Was ist das fÃŧr ein CafÊ" + }, + "Name": { + "question": "Wie heißt diese Kneipe?", + "render": "Diese Kneipe heißt {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + } + } + }, + "crossings": { + "description": "Übergänge fÃŧr Fußgänger und Radfahrer", + "name": "Kreuzungen", + "presets": { + "0": { + "description": "Kreuzung fÃŧr Fußgänger und/oder Radfahrer", + "title": "Kreuzung" + }, + "1": { + "description": "Ampel an einer Straße", + "title": "Ampel" + } + }, + "tagRenderings": { + "crossing-bicycle-allowed": { + "mappings": { + "0": { + "then": "Radfahrer kÃļnnen diese Kreuzung nutzen" + }, + "1": { + "then": "Radfahrer kÃļnnen diese Kreuzung nicht nutzen" + } + }, + "question": "KÃļnnen Radfahrer diese Kreuzung nutzen?" + }, + "crossing-button": { + "mappings": { + "0": { + "then": "Diese Ampel hat eine Taste, um ein grÃŧnes Signal anzufordern" + }, + "1": { + "then": "Diese Ampel hat keine Taste, um ein grÃŧnes Signal anzufordern." + } + }, + "question": "Hat diese Ampel eine Taste, um ein grÃŧnes Signal anzufordern?" + }, + "crossing-continue-through-red": { + "mappings": { + "0": { + "then": "Ein Radfahrer kann bei roter Ampel geradeaus fahren " + }, + "1": { + "then": "Ein Radfahrer kann bei roter Ampel geradeaus fahren" + }, + "2": { + "then": "Ein Radfahrer kann bei roter Ampel nicht geradeaus fahren" + } + }, + "question": "Kann ein Radfahrer bei roter Ampel geradeaus fahren?" + }, + "crossing-has-island": { + "mappings": { + "0": { + "then": "Der Übergang hat eine Verkehrsinsel" + }, + "1": { + "then": "Diese Ampel hat eine Taste, um ein grÃŧnes Signal anzufordern" + } + }, + "question": "Gibt es an diesem Übergang eine Verkehrsinsel?" + }, + "crossing-is-zebra": { + "mappings": { + "0": { + "then": "Dies ist ein Zebrastreifen" + }, + "1": { + "then": "Dies ist kein Zebrastreifen" + } + }, + "question": "Ist das ein Zebrastreifen?" + }, + "crossing-right-turn-through-red": { + "mappings": { + "0": { + "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen " + }, + "1": { + "then": "Ein Radfahrer kann bei roter Ampel rechts abbiegen" + }, + "2": { + "then": "Ein Radfahrer kann bei roter Ampel nicht rechts abbiegen" + } + }, + "question": "Kann ein Radfahrer bei roter Ampel rechts abbiegen?" + }, + "crossing-tactile": { + "mappings": { + "0": { + "then": "An dieser Kreuzung gibt es ein Blindenleitsystem" + }, + "1": { + "then": "Diese Kreuzung hat kein Blindenleitsystem" + }, + "2": { + "then": "Diese Kreuzung hat taktile Pflasterung, ist aber nicht korrekt" + } + }, + "question": "Gibt es an dieser Kreuzung ein Blindenleitsystem?" + }, + "crossing-type": { + "mappings": { + "0": { + "then": "Kreuzungen ohne Ampeln" + }, + "1": { + "then": "Kreuzungen mit Ampeln" + }, + "2": { + "then": "Zebrastreifen" + } + }, + "question": "Was ist das fÃŧr eine Kreuzung?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Ampel" + }, + "1": { + "then": "Kreuzung mit Ampeln" + } + }, + "render": "Kreuzung" + } + }, + "cycleways_and_roads": { + "name": "Radwege und Straßen", + "tagRenderings": { + "Cycleway type for a road": { + "mappings": { + "0": { + "then": "Es gibt eine geteilte Fahrspur" + }, + "1": { + "then": "Es gibt eine Spur neben der Straße (getrennt durch eine Straßenmarkierung)" + }, + "2": { + "then": "Es gibt einen Weg, aber keinen Radweg, der auf der Karte getrennt von dieser Straße eingezeichnet ist." + }, + "3": { + "then": "Hier ist ein getrennter Radweg vorhanden" + }, + "4": { + "then": "Es gibt keinen Radweg" + }, + "5": { + "then": "Es gibt keinen Radweg" + } + }, + "question": "Was fÃŧr ein Radweg ist hier?" + }, + "Cycleway:smoothness": { + "mappings": { + "0": { + "then": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard" + }, + "1": { + "then": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad" + }, + "2": { + "then": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter" + }, + "3": { + "then": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha" + }, + "4": { + "then": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + }, + "5": { + "then": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen" + }, + "6": { + "then": "Geeignet fÃŧr Geländefahrzeuge: Traktor, ATV" + }, + "7": { + "then": "Unpassierbar / Keine bereiften Fahrzeuge" + } + }, + "question": "Wie eben ist dieser Radweg?" + }, + "Cycleway:surface": { + "mappings": { + "0": { + "then": "Dieser Radweg hat keinen festen Belag" + }, + "1": { + "then": "Dieser Radweg hat einen festen Belag" + }, + "2": { + "then": "Der Radweg ist aus Asphalt" + }, + "3": { + "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" + }, + "4": { + "then": "Der Radweg ist aus Beton" + }, + "5": { + "then": "Dieser Radweg besteht aus Kopfsteinpflaster" + }, + "6": { + "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" + }, + "7": { + "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + }, + "8": { + "then": "Der Radweg ist aus Holz" + }, + "9": { + "then": "Der Radweg ist aus Schotter" + }, + "10": { + "then": "Dieser Radweg besteht aus feinem Schotter" + }, + "11": { + "then": "Der Radweg ist aus Kies" + }, + "12": { + "then": "Dieser Radweg besteht aus Rohboden" + } + }, + "question": "Was ist der Belag dieses Radwegs?", + "render": "Der Radweg ist aus {cycleway:surface}" + }, + "Is this a cyclestreet? (For a road)": { + "mappings": { + "0": { + "then": "Dies ist eine Fahrradstraße in einer 30km/h Zone." + }, + "1": { + "then": "Dies ist eine Fahrradstraße" + }, + "2": { + "then": "Dies ist keine Fahrradstraße." + } + }, + "question": "Ist das eine Fahrradstraße?" + }, + "Maxspeed (for road)": { + "mappings": { + "0": { + "then": "Die HÃļchstgeschwindigkeit ist 20 km/h" + }, + "1": { + "then": "Die HÃļchstgeschwindigkeit ist 30 km/h" + }, + "2": { + "then": "Die HÃļchstgeschwindigkeit ist 50 km/h" + }, + "3": { + "then": "Die HÃļchstgeschwindigkeit ist 70 km/h" + }, + "4": { + "then": "Die HÃļchstgeschwindigkeit ist 90 km/h" + } + }, + "question": "Was ist die HÃļchstgeschwindigkeit auf dieser Straße?", + "render": "Die HÃļchstgeschwindigkeit auf dieser Straße beträgt {maxspeed} km/h" + }, + "Surface of the road": { + "mappings": { + "0": { + "then": "Dieser Radweg ist nicht befestigt" + }, + "1": { + "then": "Dieser Radweg hat einen festen Belag" + }, + "2": { + "then": "Der Radweg ist aus Asphalt" + }, + "3": { + "then": "Dieser Fahrradweg besteht aus ebenen Pflastersteinen" + }, + "4": { + "then": "Der Radweg ist aus Beton" + }, + "5": { + "then": "Dieser Radweg besteht aus Kopfsteinpflaster" + }, + "6": { + "then": "Dieser Fahrradweg besteht aus unregelmäßigem, unbehauenem Kopfsteinpflaster" + }, + "7": { + "then": "Dieser Fahrradweg besteht aus regelmäßigem, behauenem Kopfsteinpflaster" + }, + "8": { + "then": "Der Radweg ist aus Holz" + }, + "9": { + "then": "Der Radweg ist aus Schotter" + }, + "10": { + "then": "Dieser Radweg besteht aus feinem Schotter" + }, + "11": { + "then": "Der Radweg ist aus Kies" + }, + "12": { + "then": "Dieser Radweg besteht aus Rohboden" + } + }, + "question": "Was ist der Belag dieser Straße?", + "render": "Der Radweg ist aus {surface}" + }, + "Surface of the street": { + "mappings": { + "0": { + "then": "Geeignet fÃŧr dÃŧnne Rollen: Rollerblades, Skateboard" + }, + "1": { + "then": "Geeignet fÃŧr dÃŧnne Reifen: Rennrad" + }, + "2": { + "then": "Geeignet fÃŧr normale Reifen: Fahrrad, Rollstuhl, Scooter" + }, + "3": { + "then": "Geeignet fÃŧr breite Reifen: Trekkingfahrrad, Auto, Rikscha" + }, + "4": { + "then": "Geeignet fÃŧr Fahrzeuge mit großer Bodenfreiheit: leichte Geländewagen" + }, + "5": { + "then": "Geeignet fÃŧr Geländefahrzeuge: schwerer Geländewagen" + }, + "6": { + "then": "Geeignet fÃŧr spezielle Geländewagen: Traktor, ATV" + }, + "7": { + "then": "Unpassierbar / Keine bereiften Fahrzeuge" + } + }, + "question": "Wie eben ist diese Straße?" + }, + "cyclelan-segregation": { + "mappings": { + "0": { + "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" + }, + "1": { + "then": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" + }, + "2": { + "then": "Der Radweg ist abgegrenzt durch eine Parkspur" + }, + "3": { + "then": "Dieser Radweg ist getrennt durch einen Bordstein" + } + }, + "question": "Wie ist der Radweg von der Straße abgegrenzt?" + }, + "cycleway-lane-track-traffic-signs": { + "mappings": { + "0": { + "then": "Vorgeschriebener Radweg " + }, + "1": { + "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" + }, + "2": { + "then": "Getrennter Fuß-/Radweg " + }, + "3": { + "then": "Gemeinsamer Fuß-/Radweg " + }, + "4": { + "then": "Kein Verkehrsschild vorhanden" + } + }, + "question": "Welches Verkehrszeichen hat dieser Radweg?" + }, + "cycleway-segregation": { + "mappings": { + "0": { + "then": "Der Radweg ist abgegrenzt durch eine gestrichelte Linie" + }, + "1": { + "then": "Der Radweg ist abgegrenzt durch eine durchgezogene Linie" + }, + "2": { + "then": "Der Radweg ist abgegrenzt durch eine Parkspur" + }, + "3": { + "then": "Dieser Radweg ist getrennt durch einen Bordstein" + } + }, + "question": "Wie ist der Radweg von der Straße abgegrenzt?" + }, + "cycleway-traffic-signs": { + "mappings": { + "0": { + "then": "Vorgeschriebener Radweg " + }, + "1": { + "then": "Vorgeschriebener Radweg (mit Zusatzschild)
" + }, + "2": { + "then": "Getrennter Fuß-/Radweg " + }, + "3": { + "then": "Gemeinsamer Fuß-/Radweg " + }, + "4": { + "then": "Kein Verkehrsschild vorhanden" + } + }, + "question": "Welches Verkehrszeichen hat dieser Radweg?" + }, + "cycleway-traffic-signs-D7-supplementary": { + "mappings": { + "1": { + "then": "" + }, + "6": { + "then": "Kein zusätzliches Verkehrszeichen vorhanden" + } + }, + "question": "Hat das Verkehrszeichen D7 () ein Zusatzzeichen?" + }, + "cycleway-traffic-signs-supplementary": { + "mappings": { + "6": { + "then": "Kein zusätzliches Verkehrszeichen vorhanden" + } + }, + "question": "Hat das Verkehrszeichen D7 () ein Zusatzzeichen?" + }, + "cycleways_and_roads-cycleway:buffer": { + "question": "Wie breit ist der Abstand zwischen Radweg und Straße?", + "render": "Der Sicherheitsabstand zu diesem Radweg beträgt {cycleway:buffer} m" + }, + "is lit?": { + "mappings": { + "0": { + "then": "Diese Straße ist beleuchtet" + }, + "1": { + "then": "Diese Straße ist nicht beleuchtet" + }, + "2": { + "then": "Diese Straße ist nachts beleuchtet" + }, + "3": { + "then": "Diese Straße ist durchgehend beleuchtet" + } + }, + "question": "Ist diese Straße beleuchtet?" + }, + "width:carriageway": { + "question": "Wie groß ist die Fahrbahnbreite dieser Straße (in Metern)?
Diese wird von Bordstein zu Bordstein gemessen und schließt daher die Breite von parallelen Parkspuren ein", + "render": "Die Fahrbahnbreite dieser Straße beträgt {width:carriageway}m" + } + }, + "title": { + "mappings": { + "0": { + "then": "Radweg" + }, + "1": { + "then": "Gemeinsame Fahrspur" + }, + "2": { + "then": "Fahrradspur" + }, + "3": { + "then": "Radweg neben der Straße" + }, + "4": { + "then": "Fahrradstraße" + } + }, + "render": "Radwege" + } + }, + "defibrillator": { + "name": "Defibrillatoren", + "presets": { + "0": { + "title": "Defibrillator" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "Öffentlich zugänglich" + }, + "1": { + "then": "Öffentlich zugänglich" + }, + "2": { + "then": "Nur fÃŧr Kunden zugänglich" + }, + "3": { + "then": "Nicht fÃŧr die Öffentlichkeit zugänglich (z.B. nur fÃŧr das Personal, die EigentÃŧmer, ...)" + }, + "4": { + "then": "Nicht zugänglich, mÃļglicherweise nur fÃŧr betriebliche Nutzung" + } + }, + "question": "Ist dieser Defibrillator frei zugänglich?", + "render": "Zugang ist {access}" + }, + "defibrillator-defibrillator": { + "mappings": { + "0": { + "then": "Es gibt keine Informationen Ãŧber den Gerätetyp" + }, + "1": { + "then": "Dies ist ein manueller Defibrillator fÃŧr den professionellen Einsatz" + }, + "2": { + "then": "Dies ist ein normaler automatischer Defibrillator" + } + }, + "question": "Ist dies ein normaler automatischer Defibrillator oder ein manueller Defibrillator nur fÃŧr Profis?" + }, + "defibrillator-defibrillator:location": { + "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (in der lokalen Sprache)", + "render": "Zusätzliche Informationen Ãŧber den Standort (in der Landessprache):
{defibrillator:location}" + }, + "defibrillator-defibrillator:location:en": { + "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf Englisch)", + "render": "Zusätzliche Informationen Ãŧber den Standort (auf Englisch):
{defibrillator:location:en}" + }, + "defibrillator-defibrillator:location:fr": { + "question": "Bitte geben Sie einige Erläuterungen dazu, wo der Defibrillator zu finden ist (auf FranzÃļsisch)", + "render": "Zusätzliche Informationen zum Standort (auf FranzÃļsisch):
{defibrillator:location:fr}" + }, + "defibrillator-description": { + "question": "Gibt es nÃŧtzliche Informationen fÃŧr Benutzer, die Sie oben nicht beschreiben konnten? (leer lassen, wenn nein)", + "render": "Zusätzliche Informationen: {description}" + }, + "defibrillator-email": { + "question": "Wie lautet die E-Mail fÃŧr Fragen zu diesem Defibrillator?", + "render": "E-Mail fÃŧr Fragen zu diesem Defibrillator: {email}" + }, + "defibrillator-fixme": { + "question": "Gibt es einen Fehler in der Kartierung, den Sie hier nicht beheben konnten? (hinterlasse eine Notiz an OpenStreetMap-Experten)", + "render": "Zusätzliche Informationen fÃŧr OpenStreetMap-Experten: {fixme}" + }, + "defibrillator-indoors": { + "mappings": { + "0": { + "then": "Dieser Defibrillator befindet sich im Gebäude" + }, + "1": { + "then": "Dieser Defibrillator befindet sich im Freien" + } + }, + "question": "Befindet sich dieser Defibrillator im Gebäude?" + }, + "defibrillator-level": { + "mappings": { + "0": { + "then": "Dieser Defibrillator befindet sich im Erdgeschoss" + }, + "1": { + "then": "Dieser Defibrillator befindet sich in der ersten Etage" + } + }, + "question": "In welchem Stockwerk befindet sich dieser Defibrillator?", + "render": "Dieser Defibrallator befindet sich im {level}. Stockwerk" + }, + "defibrillator-opening_hours": { + "mappings": { + "0": { + "then": "24/7 geÃļffnet (auch an Feiertagen)" + } + }, + "question": "Zu welchen Zeiten ist dieser Defibrillator verfÃŧgbar?", + "render": "{opening_hours_table(opening_hours)}" + }, + "defibrillator-phone": { + "question": "Wie lautet die Telefonnummer fÃŧr Fragen zu diesem Defibrillator?", + "render": "Telefonnummer fÃŧr Fragen zu diesem Defibrillator: {phone}" + }, + "defibrillator-ref": { + "question": "Wie lautet die offizielle Identifikationsnummer des Geräts? (falls am Gerät sichtbar)", + "render": "Offizielle Identifikationsnummer des Geräts: {ref}" + }, + "defibrillator-survey:date": { + "mappings": { + "0": { + "then": "Heute ÃŧberprÃŧft!" + } + }, + "question": "Wann wurde dieser Defibrillator zuletzt ÃŧberprÃŧft?", + "render": "Dieser Defibrillator wurde zuletzt am {survey:date} ÃŧberprÃŧft" + } + }, + "title": { + "render": "Defibrillator" + } + }, + "direction": { + "description": "Diese Ebene visualisiert Richtungen", + "name": "Visualisierung der Richtung" + }, + "drinking_water": { + "name": "Trinkwasserstelle", + "presets": { + "0": { + "title": "trinkwasser" + } + }, + "tagRenderings": { + "Bottle refill": { + "mappings": { + "0": { + "then": "Es ist einfach, Wasserflaschen nachzufÃŧllen" + }, + "1": { + "then": "Wasserflaschen passen mÃļglicherweise nicht" + } + }, + "question": "Wie einfach ist es, Wasserflaschen zu fÃŧllen?" + }, + "Still in use?": { + "mappings": { + "0": { + "then": "Diese Trinkwasserstelle funktioniert" + }, + "1": { + "then": "Diese Trinkwasserstelle ist kaputt" + }, + "2": { + "then": "Diese Trinkwasserstelle wurde geschlossen" + } + }, + "question": "Ist diese Trinkwasserstelle noch in Betrieb?", + "render": "Der Betriebsstatus ist {operational_status}/i>" + }, + "render-closest-drinking-water": { + "render": "Ein weiterer Trinkwasserbrunnen befindet sich in {_closest_other_drinking_water_distance} Meter" + } + }, + "title": { + "render": "Trinkwasserstelle" + } + }, + "etymology": { + "description": "Alle Objekte, die eine bekannte Namensherkunft haben", + "name": "Hat eine Namensherkunft", + "tagRenderings": { + "simple etymology": { + "mappings": { + "0": { + "then": "Der Ursprung dieses Namens ist in der gesamten Literatur unbekannt" + } + }, + "question": "Wonach ist dieses Objekt benannt?
Das kÃļnnte auf einem Straßenschild stehen", + "render": "Benannt nach {name:etymology}" + }, + "wikipedia-etymology": { + "question": "Was ist das Wikidata-Element, nach dem dieses Objekt benannt ist?", + "render": "

Wikipedia Artikel zur Namensherkunft

{wikipedia(name:etymology:wikidata):max-height:20rem}" + } + } + }, + "food": { + "filter": { + "0": { + "options": { + "0": { + "question": "Aktuell geÃļffnet" + } + } + }, + "1": { + "options": { + "0": { + "question": "Hat vegetarische Speisen" + } + } + }, + "2": { + "options": { + "0": { + "question": "Bietet vegan Speisen an" + } + } + }, + "3": { + "options": { + "0": { + "question": "Hat halal Speisen" + } + } + } + }, + "name": "Restaurants und Fast Food", + "presets": { + "0": { + "description": "Ein klassisches Speiselokal mit Sitzgelegenheiten, in dem vollständige Mahlzeiten von Kellnern serviert werden", + "title": "Restaurant" + }, + "1": { + "description": "Ein Lebensmittelunternehmen, das sich auf schnellen Thekendienst und Essen zum Mitnehmen konzentriert", + "title": "Schnellimbiss" + }, + "2": { + "title": "Pommesbude" + } + }, + "tagRenderings": { + "Cuisine": { + "mappings": { + "0": { + "then": "Dies ist eine Pizzeria" + }, + "1": { + "then": "Dies ist eine Pommesbude" + }, + "2": { + "then": "Bietet vorwiegend Pastagerichte an" + } + }, + "question": "Welches Essen gibt es hier?", + "render": "An diesem Ort gibt es hauptsächlich {cuisine}" + }, + "Fastfood vs restaurant": { + "question": "Um was fÃŧr ein Geschäft handelt es sich?" + }, + "Name": { + "question": "Wie heißt dieses Restaurant?", + "render": "Das Restaurant heißt {name}" + }, + "Takeaway": { + "mappings": { + "0": { + "then": "Dieses Geschäft bietet nur Artikel zur Mitnahme an" + }, + "1": { + "then": "Mitnahme mÃļglich" + }, + "2": { + "then": "Mitnahme nicht mÃļglich" + } + }, + "question": "Ist an diesem Ort Mitnahme mÃļglich?" + }, + "Vegetarian (no friture)": { + "question": "Gibt es im das Restaurant vegetarische Speisen?" + }, + "friture-take-your-container": { + "mappings": { + "0": { + "then": "Sie kÃļnnen ihre eigenen Behälter mitbringen, um Ihre Bestellung zu erhalten, was Einwegverpackungsmaterial und damit Abfall spart" + }, + "1": { + "then": "Das Mitbringen eines eigenen Containers ist nicht erlaubt" + }, + "2": { + "then": "Sie mÃŧssen Ihren eigenen Behälter mitbringen, um hier zu bestellen." + } + }, + "question": "Wenn Sie Ihr eigenes Behältnis mitbringen (z. B. einen Kochtopf und kleine TÃļpfe), wird es dann zum Verpacken Ihrer Bestellung verwendet?
" + }, + "halal (no friture)": { + "mappings": { + "0": { + "then": "Hier gibt es keine halal Speisen" + }, + "1": { + "then": "Hier gibt es wenige halal Speisen" + }, + "2": { + "then": "Es gibt halal Speisen" + }, + "3": { + "then": "Es gibt ausschließlich halal Speisen" + } + }, + "question": "Gibt es im das Restaurant halal Speisen?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Restaurant {name}" + }, + "1": { + "then": "Schnellrestaurant{name}" + } + } + } + }, + "ghost_bike": { + "name": "Geisterräder", + "presets": { + "0": { + "title": "Geisterrad" + } + }, + "tagRenderings": { + "ghost-bike-explanation": { + "render": "Ein Geisterrad ist ein Denkmal fÃŧr einen Radfahrer, der bei einem Verkehrsunfall ums Leben kam, in Form eines weißen Fahrrades, das dauerhaft in der Nähe des Unfallortes aufgestellt wird." + }, + "ghost_bike-inscription": { + "question": "Wie lautet die Inschrift auf diesem Geisterrad?", + "render": "{inscription}" + }, + "ghost_bike-name": { + "mappings": { + "0": { + "then": "Auf dem Fahrrad ist kein Name angegeben" + } + }, + "question": "An wen erinnert dieses Geisterrad?
Bitte respektieren Sie die Privatsphäre - geben Sie den Namen nur an, wenn er weit verbreitet oder auf dem Fahrrad markiert ist. Den Familiennamen kÃļnnen Sie weglassen.
", + "render": "Im Gedenken an {name}" + }, + "ghost_bike-source": { + "question": "Auf welcher Webseite kann man mehr Informationen Ãŧber das Geisterrad oder den Unfall finden?", + "render": "Mehr Informationen" + }, + "ghost_bike-start_date": { + "question": "Wann wurde dieses Geisterrad aufgestellt?", + "render": "Aufgestellt am {start_date}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Geisterrad im Gedenken an {name}" + } + }, + "render": "Geisterrad" + } + }, + "information_board": { + "name": "Informationstafeln", + "presets": { + "0": { + "title": "informationstafel" + } + }, + "title": { + "render": "Informationstafel" + } + }, + "map": { + "description": "Eine Karte, die fÃŧr Touristen gedacht ist und dauerhaft im Ãļffentlichen Raum aufgestellt ist", + "name": "Karten", + "presets": { + "0": { + "description": "Fehlende Karte hinzufÃŧgen", + "title": "Karte" + } + }, + "tagRenderings": { + "map-attribution": { + "mappings": { + "0": { + "then": "OpenStreetMap ist eindeutig attributiert, einschließlich der ODBL-Lizenz" + }, + "1": { + "then": "OpenStreetMap ist eindeutig attributiert, aber die Lizenz wird nicht erwähnt" + }, + "2": { + "then": "OpenStreetMap wurde nicht erwähnt, aber jemand hat einen OpenStreetMap-Aufkleber darauf geklebt" + }, + "3": { + "then": "Es gibt Ãŧberhaupt keine Namensnennung" + }, + "4": { + "then": "Es gibt Ãŧberhaupt keine Namensnennung" + } + }, + "question": "Ist die OpenStreetMap-Attribution vorhanden?" + }, + "map-map_source": { + "mappings": { + "0": { + "then": "Diese Karte basiert auf OpenStreetMap" + } + }, + "question": "Auf welchen Daten basiert diese Karte?", + "render": "Diese Karte basiert auf {map_source}" + } + }, + "title": { + "render": "Karte" + } + }, + "nature_reserve": { + "tagRenderings": { + "Curator": { + "question": "Wer ist der Verwalter dieses Naturschutzgebietes?
Respektieren Sie die Privatsphäre - geben Sie nur dann einen Namen an, wenn dieser allgemein bekannt ist", + "render": "{curator} ist der Pfleger dieses Naturschutzgebietes" + }, + "Dogs?": { + "mappings": { + "0": { + "then": "Hunde mÃŧssen angeleint sein" + }, + "1": { + "then": "Hunde sind nicht erlaubt" + }, + "2": { + "then": "Hunde dÃŧrfen frei herumlaufen" + } + }, + "question": "Sind Hunde in diesem Naturschutzgebiet erlaubt?" + }, + "Email": { + "question": "An welche Email-Adresse kann man sich bei Fragen und Problemen zu diesem Naturschutzgebiet wenden?
Respektieren Sie die Privatsphäre - geben Sie nur dann eine persÃļnliche Email-Adresse an, wenn diese allgemein bekannt ist", + "render": "{email}" + }, + "Surface area": { + "render": "Grundfläche: {_surface:ha}ha" + }, + "Website": { + "question": "Auf welcher Webseite kann man mehr Informationen Ãŧber dieses Naturschutzgebiet finden?" + }, + "phone": { + "question": "Welche Telefonnummer kann man bei Fragen und Problemen zu diesem Naturschutzgebiet anrufen?
Respektieren Sie die Privatsphäre - geben Sie nur eine Telefonnummer an, wenn diese allgemein bekannt ist", + "render": "{phone}" + } + } + }, + "observation_tower": { + "description": "TÃŧrme zur Aussicht auf die umgebende Landschaft", + "name": "AussichtstÃŧrme", + "presets": { + "0": { + "title": "Beobachtungsturm" + } + }, + "tagRenderings": { + "Fee": { + "mappings": { + "0": { + "then": "Eintritt kostenlos" + } + }, + "question": "Was kostet der Zugang zu diesem Turm?", + "render": "Der Besuch des Turms kostet {charge}" + }, + "Height": { + "question": "Wie hoch ist dieser Turm?", + "render": "Dieser Turm ist {height} hoch" + }, + "Operator": { + "question": "Wer betreibt diesen Turm?", + "render": "Betrieben von {operator}" + }, + "name": { + "mappings": { + "0": { + "then": "Dieser Turm hat keinen eigenen Namen" + } + }, + "question": "Wie heißt dieser Turm?", + "render": "Der Name dieses Turms lautet {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Beobachtungsturm" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " Meter" + } + } + } + } + }, + "picnic_table": { + "description": "Die Ebene zeigt Picknicktische an", + "name": "Picknick-Tische", + "presets": { + "0": { + "title": "picknicktisch" + } + }, + "tagRenderings": { + "picnic_table-material": { + "mappings": { + "0": { + "then": "Dies ist ein Picknicktisch aus Holz" + }, + "1": { + "then": "Dies ist ein Picknicktisch aus Beton" + } + }, + "question": "Aus welchem Material besteht dieser Picknicktisch?", + "render": "Dieser Picknicktisch besteht aus {material}" + } + }, + "title": { + "render": "Picknick-Tisch" + } + }, + "playground": { + "description": "Spielplätze", + "name": "Spielplätze", + "presets": { + "0": { + "title": "Spielplatz" + } + }, + "tagRenderings": { + "Playground-wheelchair": { + "mappings": { + "0": { + "then": "Vollständig zugänglich fÃŧr Rollstuhlfahrer" + }, + "1": { + "then": "Eingeschränkte Zugänglichkeit fÃŧr Rollstuhlfahrer" + }, + "2": { + "then": "Nicht zugänglich fÃŧr Rollstuhlfahrer" + } + }, + "question": "Ist dieser Spielplatz fÃŧr Rollstuhlfahrer zugänglich?" + }, + "playground-access": { + "mappings": { + "0": { + "then": "Zugänglich fÃŧr die Allgemeinheit" + }, + "1": { + "then": "Zugänglich fÃŧr die Allgemeinheit" + }, + "2": { + "then": "Nur fÃŧr Kunden des Betreibers zugänglich" + }, + "3": { + "then": "Nur fÃŧr SchÃŧler der Schule zugänglich" + }, + "4": { + "then": "Nicht zugänglich" + } + }, + "question": "Ist dieser Spielplatz fÃŧr die Allgemeinheit zugänglich?" + }, + "playground-email": { + "question": "Wie lautet die E-Mail Adresse des Spielplatzbetreuers?", + "render": "{email}" + }, + "playground-lit": { + "mappings": { + "0": { + "then": "Dieser Spielplatz ist nachts beleuchtet" + }, + "1": { + "then": "Dieser Spielplatz ist nachts nicht beleuchtet" + } + }, + "question": "Ist dieser Spielplatz nachts beleuchtet?" + }, + "playground-max_age": { + "question": "Bis zu welchem Alter dÃŧrfen Kinder auf diesem Spielplatz spielen?", + "render": "Zugang nur fÃŧr Kinder bis maximal {max_age}" + }, + "playground-min_age": { + "question": "Ab welchem Alter dÃŧrfen Kinder auf diesem Spielplatz spielen?", + "render": "Zugang nur fÃŧr Kinder ab {min_age} Jahren" + }, + "playground-opening_hours": { + "mappings": { + "0": { + "then": "Zugänglich von Sonnenaufgang bis Sonnenuntergang" + }, + "1": { + "then": "Immer zugänglich" + }, + "2": { + "then": "Immer zugänglich" + } + }, + "question": "Wann ist dieser Spielplatz zugänglich?" + }, + "playground-operator": { + "question": "Wer betreibt diesen Spielplatz?", + "render": "Betrieben von {operator}" + }, + "playground-phone": { + "question": "Wie lautet die Telefonnummer vom Betreiber des Spielplatzes?", + "render": "{phone}" + }, + "playground-surface": { + "mappings": { + "0": { + "then": "Die Oberfläche ist Gras" + }, + "1": { + "then": "Die Oberfläche ist Sand" + }, + "2": { + "then": "Die Oberfläche besteht aus Holzschnitzeln" + }, + "3": { + "then": "Die Oberfläche ist Pflastersteine" + }, + "4": { + "then": "Die Oberfläche ist Asphalt" + }, + "5": { + "then": "Die Oberfläche ist Beton" + }, + "6": { + "then": "Die Oberfläche ist unbefestigt" + }, + "7": { + "then": "Die Oberfläche ist befestigt" + } + }, + "question": "Welche Oberfläche hat dieser Spielplatz?
Wenn es mehrere gibt, wähle die am häufigsten vorkommende aus", + "render": "Die Oberfläche ist {surface}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Spielplatz {name}" + } + }, + "render": "Spielplatz" + } + }, + "public_bookcase": { + "description": "Ein BÃŧcherschrank am Straßenrand mit BÃŧchern, fÃŧr jedermann zugänglich", + "filter": { + "2": { + "options": { + "0": { + "question": "Innen oder Außen" + } + } + } + }, + "name": "BÃŧcherschränke", + "presets": { + "0": { + "title": "BÃŧcherschrank" + } + }, + "tagRenderings": { + "bookcase-booktypes": { + "mappings": { + "0": { + "then": "Vorwiegend KinderbÃŧcher" + }, + "1": { + "then": "Vorwiegend BÃŧcher fÃŧr Erwachsene" + }, + "2": { + "then": "Sowohl BÃŧcher fÃŧr Kinder als auch fÃŧr Erwachsene" + } + }, + "question": "Welche Art von BÃŧchern sind in diesem Ãļffentlichen BÃŧcherschrank zu finden?" + }, + "bookcase-is-accessible": { + "mappings": { + "0": { + "then": "Öffentlich zugänglich" + }, + "1": { + "then": "Nur fÃŧr Kunden zugänglich" + } + }, + "question": "Ist dieser Ãļffentliche BÃŧcherschrank frei zugänglich?" + }, + "bookcase-is-indoors": { + "mappings": { + "0": { + "then": "Dieser BÃŧcherschrank befindet sich im Innenbereich" + }, + "1": { + "then": "Dieser BÃŧcherschrank befindet sich im Freien" + }, + "2": { + "then": "Dieser BÃŧcherschrank befindet sich im Freien" + } + }, + "question": "Befindet sich dieser BÃŧcherschrank im Freien?" + }, + "public_bookcase-brand": { + "mappings": { + "0": { + "then": "Teil des Netzwerks 'Little Free Library'" + }, + "1": { + "then": "Dieser Ãļffentliche BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks" + } + }, + "question": "Ist dieser Ãļffentliche BÃŧcherschrank Teil eines grÃļßeren Netzwerks?", + "render": "Dieser BÃŧcherschrank ist Teil von {brand}" + }, + "public_bookcase-capacity": { + "question": "Wie viele BÃŧcher passen in diesen Ãļffentlichen BÃŧcherschrank?", + "render": "{capacity} BÃŧcher passen in diesen BÃŧcherschrank" + }, + "public_bookcase-name": { + "mappings": { + "0": { + "then": "Dieser BÃŧcherschrank hat keinen Namen" + } + }, + "question": "Wie heißt dieser Ãļffentliche BÃŧcherschrank?", + "render": "Der Name dieses BÃŧcherschrank lautet {name}" + }, + "public_bookcase-operator": { + "question": "Wer unterhält diesen Ãļffentlichen BÃŧcherschrank?", + "render": "Betrieben von {operator}" + }, + "public_bookcase-ref": { + "mappings": { + "0": { + "then": "Dieser BÃŧcherschrank ist nicht Teil eines grÃļßeren Netzwerks" + } + }, + "question": "Wie lautet die Referenznummer dieses Ãļffentlichen BÃŧcherschranks?", + "render": "Die Referenznummer dieses Ãļffentlichen BÃŧcherschranks innerhalb {brand} lautet {ref}" + }, + "public_bookcase-start_date": { + "question": "Wann wurde dieser Ãļffentliche BÃŧcherschrank installiert?", + "render": "Installiert am {start_date}" + }, + "public_bookcase-website": { + "question": "Gibt es eine Website mit weiteren Informationen Ãŧber diesen Ãļffentlichen BÃŧcherschrank?", + "render": "Weitere Informationen auf der Webseite" + } + }, + "title": { + "mappings": { + "0": { + "then": "Öffentlicher BÃŧcherschrank {name}" + } + }, + "render": "BÃŧcherschrank" + } + }, + "shops": { + "description": "Ein Geschäft", + "name": "Geschäft", + "presets": { + "0": { + "description": "Ein neues Geschäft hinzufÃŧgen", + "title": "Geschäft" + } + }, + "tagRenderings": { + "shops-email": { + "question": "Wie ist die Email-Adresse dieses Geschäfts?" + }, + "shops-name": { + "question": "Wie ist der Name dieses Geschäfts?" + }, + "shops-opening_hours": { + "question": "Wie sind die Öffnungszeiten dieses Geschäfts?" + }, + "shops-phone": { + "question": "Wie ist die Telefonnummer?", + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "0": { + "then": "Lebensmittelladen" + }, + "1": { + "then": "Supermarkt" + }, + "2": { + "then": "Bekleidungsgeschäft" + }, + "3": { + "then": "Friseur" + }, + "4": { + "then": "Bäckerei" + }, + "5": { + "then": "Autowerkstatt" + }, + "6": { + "then": "Autohändler" + } + }, + "question": "Was wird in diesem Geschäft verkauft?", + "render": "Dieses Geschäft verkauft {shop}" + }, + "shops-website": { + "question": "Wie lautet die Webseite dieses Geschäfts?", + "render": "{website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "{shop}" + } + }, + "render": "Geschäft" + } + }, + "slow_roads": { + "tagRenderings": { + "slow_roads-surface": { + "mappings": { + "0": { + "then": "Die Oberfläche ist Gras" + }, + "1": { + "then": "Die Oberfläche ist Erde" + }, + "2": { + "then": "Die Oberfläche ist ohne festen Belag" + }, + "3": { + "then": "Die Oberfläche ist Sand" + }, + "4": { + "then": "Die Oberfläche ist aus Pflastersteinen" + }, + "5": { + "then": "Die Oberfläche ist Asphalt" + }, + "6": { + "then": "Die Oberfläche ist Beton" + }, + "7": { + "then": "Die Oberfläche ist gepflastert" + } + }, + "render": "Die Oberfläche ist {surface}" + } + } + }, + "sport_pitch": { + "description": "Ein Sportplatz", + "name": "Sportplätze", + "presets": { + "0": { + "title": "Tischtennisplatte" + }, + "1": { + "title": "Sportplatz" + } + }, + "tagRenderings": { + "sport-pitch-access": { + "mappings": { + "0": { + "then": "Öffentlicher Zugang" + }, + "1": { + "then": "Eingeschränkter Zugang (z. B. nur mit Termin, zu bestimmten Zeiten, ...)" + }, + "2": { + "then": "Zugang nur fÃŧr Vereinsmitglieder" + }, + "3": { + "then": "Privat - kein Ãļffentlicher Zugang" + } + }, + "question": "Ist dieser Sportplatz Ãļffentlich zugänglich?" + }, + "sport-pitch-reservation": { + "mappings": { + "0": { + "then": "FÃŧr die Nutzung des Sportplatzes ist eine Voranmeldung erforderlich" + }, + "1": { + "then": "FÃŧr die Nutzung des Sportplatzes wird eine Voranmeldung empfohlen" + }, + "2": { + "then": "Eine Voranmeldung ist mÃļglich, aber nicht notwendig, um diesen Sportplatz zu nutzen" + }, + "3": { + "then": "Termine nach Vereinbarung nicht mÃļglich" + } + }, + "question": "Muss man einen Termin vereinbaren, um diesen Sportplatz zu benutzen?" + }, + "sport_pitch-email": { + "question": "Wie ist die Email-Adresse des Betreibers?" + }, + "sport_pitch-opening_hours": { + "mappings": { + "1": { + "then": "Immer zugänglich" + } + }, + "question": "Wann ist dieser Sportplatz zugänglich?" + }, + "sport_pitch-phone": { + "question": "Wie ist die Telefonnummer des Betreibers?" + }, + "sport_pitch-sport": { + "mappings": { + "0": { + "then": "Hier wird Basketball gespielt" + }, + "1": { + "then": "Hier wird Fußball gespielt" + }, + "2": { + "then": "Dies ist eine Tischtennisplatte" + }, + "3": { + "then": "Hier wird Tennis gespielt" + }, + "4": { + "then": "Hier wird Kopfball gespielt" + }, + "5": { + "then": "Hier wird Basketball gespielt" + } + }, + "question": "Welche Sportarten kÃļnnen hier gespielt werden?", + "render": "Hier wird {sport} gespielt" + }, + "sport_pitch-surface": { + "mappings": { + "0": { + "then": "Die Oberfläche ist Gras" + }, + "1": { + "then": "Die Oberfläche ist Sand" + }, + "2": { + "then": "Die Oberfläche ist aus Pflastersteinen" + }, + "3": { + "then": "Die Oberfläche ist Asphalt" + }, + "4": { + "then": "Die Oberfläche ist Beton" + } + }, + "question": "Was ist die Oberfläche dieses Sportplatzes?", + "render": "Die Oberfläche ist {surface}" + } + }, + "title": { + "render": "Sportplatz" + } + }, + "surveillance_camera": { + "name": "Überwachungskameras", + "tagRenderings": { + "Camera type: fixed; panning; dome": { + "mappings": { + "0": { + "then": "Eine fest montierte (nicht bewegliche) Kamera" + }, + "1": { + "then": "Eine Kuppelkamera (drehbar)" + }, + "2": { + "then": "Eine bewegliche Kamera" + } + }, + "question": "Um welche Kameratyp handelt se sich?" + }, + "Level": { + "question": "Auf welcher Ebene befindet sich diese Kamera?", + "render": "Befindet sich auf Ebene {level}" + }, + "Operator": { + "question": "Wer betreibt diese CCTV Kamera?", + "render": "Betrieben von {operator}" + }, + "Surveillance type: public, outdoor, indoor": { + "mappings": { + "0": { + "then": "Überwacht wird ein Ãļffentlicher Bereich, z. B. eine Straße, eine BrÃŧcke, ein Platz, ein Park, ein Bahnhof, ein Ãļffentlicher Korridor oder Tunnel,..." + }, + "1": { + "then": "Ein privater Außenbereich wird Ãŧberwacht (z. B. ein Parkplatz, eine Tankstelle, ein Innenhof, ein Eingang, eine private Einfahrt, ...)" + }, + "2": { + "then": "Ein privater Innenbereich wird Ãŧberwacht, z. B. ein Geschäft, eine private Tiefgarage, ..." + } + }, + "question": "Um was fÃŧr eine Überwachungskamera handelt es sich" + }, + "Surveillance:zone": { + "mappings": { + "0": { + "then": "Überwacht einen Parkplatz" + }, + "1": { + "then": "Überwacht den Verkehr" + }, + "2": { + "then": "Überwacht einen Eingang" + }, + "3": { + "then": "Überwacht einen Gang" + }, + "4": { + "then": "Überwacht eine Haltestelle" + }, + "5": { + "then": "Überwacht ein Geschäft" + } + }, + "question": "Was genau wird hier Ãŧberwacht?", + "render": " Überwacht ein/e {surveillance:zone}" + }, + "camera:mount": { + "mappings": { + "0": { + "then": "Diese Kamera ist an einer Wand montiert" + }, + "1": { + "then": "Diese Kamera ist an einer Stange montiert" + }, + "2": { + "then": "Diese Kamera ist an der Decke montiert" + } + }, + "question": "Wie ist diese Kamera montiert?", + "render": "Montageart: {camera:mount}" + }, + "camera_direction": { + "question": "In welche Himmelsrichtung ist diese Kamera ausgerichtet?" + }, + "is_indoor": { + "mappings": { + "0": { + "then": "Diese Kamera befindet sich im Innenraum" + }, + "1": { + "then": "Diese Kamera befindet sich im Freien" + }, + "2": { + "then": "Diese Kamera ist mÃļglicherweise im Freien" + } + }, + "question": "Handelt es sich bei dem von dieser Kamera Ãŧberwachten Ãļffentlichen Raum um einen Innen- oder Außenbereich?" + } + }, + "title": { + "render": "Überwachungskamera" + } + }, + "toilet": { + "filter": { + "0": { + "options": { + "0": { + "question": "Rollstuhlgerecht" + } + } + }, + "1": { + "options": { + "0": { + "question": "Hat einen Wickeltisch" + } + } + }, + "2": { + "options": { + "0": { + "question": "Nutzung kostenlos" + } + } + } + }, + "name": "Toiletten", + "presets": { + "0": { + "description": "Eine Ãļffentlich zugängliche Toilette", + "title": "toilette" + }, + "1": { + "description": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette", + "title": "toiletten mit rollstuhlgerechter Toilette" + } + }, + "tagRenderings": { + "toilet-access": { + "mappings": { + "0": { + "then": "Öffentlicher Zugang" + }, + "1": { + "then": "Nur Zugang fÃŧr Kunden" + }, + "2": { + "then": "Nicht zugänglich" + }, + "3": { + "then": "Zugänglich, aber man muss einen SchlÃŧssel fÃŧr die Eingabe verlangen" + }, + "4": { + "then": "Öffentlicher Zugang" + } + }, + "question": "Sind diese Toiletten Ãļffentlich zugänglich?", + "render": "Zugang ist {access}" + }, + "toilet-changing_table:location": { + "mappings": { + "0": { + "then": "Der Wickeltisch befindet sich in der Damentoilette. " + }, + "1": { + "then": "Der Wickeltisch befindet sich in der Herrentoilette. " + }, + "2": { + "then": "Der Wickeltisch befindet sich in der Toilette fÃŧr Rollstuhlfahrer. " + }, + "3": { + "then": "Der Wickeltisch befindet sich in einem eigenen Raum. " + } + }, + "question": "Wo befindet sich der Wickeltisch?", + "render": "Die Wickeltabelle befindet sich in {changing_table:location}" + }, + "toilet-charge": { + "question": "Wie viel muss man fÃŧr diese Toiletten bezahlen?", + "render": "Die GebÃŧhr beträgt {charge}" + }, + "toilet-handwashing": { + "mappings": { + "0": { + "then": "Diese Toilette verfÃŧgt Ãŧber ein Waschbecken" + }, + "1": { + "then": "Diese Toilette verfÃŧgt Ãŧber kein Waschbecken" + } + }, + "question": "VerfÃŧgt diese Toilette Ãŧber ein Waschbecken?" + }, + "toilet-has-paper": { + "mappings": { + "1": { + "then": "FÃŧr diese Toilette mÃŧssen Sie Ihr eigenes Toilettenpapier mitbringen" + } + }, + "question": "Muss man fÃŧr diese Toilette sein eigenes Toilettenpapier mitbringen?" + }, + "toilets-changing-table": { + "mappings": { + "0": { + "then": "Ein Wickeltisch ist verfÃŧgbar" + }, + "1": { + "then": "Es ist kein Wickeltisch verfÃŧgbar" + } + }, + "question": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?" + }, + "toilets-fee": { + "mappings": { + "0": { + "then": "Dies sind bezahlte Toiletten" + }, + "1": { + "then": "Kostenlose Nutzung" + } + }, + "question": "KÃļnnen diese Toiletten kostenlos benutzt werden?" + }, + "toilets-type": { + "mappings": { + "0": { + "then": "Es gibt nur Sitztoiletten" + }, + "1": { + "then": "Hier gibt es nur Pissoirs" + }, + "2": { + "then": "Es gibt hier nur Hocktoiletten" + }, + "3": { + "then": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfÃŧgbar" + } + }, + "question": "Welche Art von Toiletten sind das?" + }, + "toilets-wheelchair": { + "mappings": { + "0": { + "then": "Es gibt eine Toilette fÃŧr Rollstuhlfahrer" + }, + "1": { + "then": "Kein Zugang fÃŧr Rollstuhlfahrer" + } + }, + "question": "Gibt es eine Toilette fÃŧr Rollstuhlfahrer?" + } + }, + "title": { + "render": "Toilette" + } + }, + "trail": { + "name": "Wanderwege", + "tagRenderings": { + "Color": { + "mappings": { + "0": { + "then": "Blauer Weg" + }, + "1": { + "then": "Roter Weg" + }, + "2": { + "then": "GrÃŧner Weg" + }, + "3": { + "then": "Gelber Weg" + } + } + }, + "trail-length": { + "render": "Der Wanderweg ist {_length:km} Kilometer lang" + } + }, + "title": { + "render": "Wanderweg" + } + }, + "tree_node": { + "name": "Baum", + "presets": { + "0": { + "description": "Ein Baum mit Blättern, z. B. Eiche oder Buche.", + "title": "Laubbaum" + }, + "1": { + "description": "Ein Baum mit Nadeln, z. B. Kiefer oder Fichte.", + "title": "Nadelbaum" + }, + "2": { + "description": "Wenn Sie nicht sicher sind, ob es sich um einen Laubbaum oder einen Nadelbaum handelt.", + "title": "Baum" + } + }, + "tagRenderings": { + "tree-decidouous": { + "mappings": { + "0": { + "then": "Laubabwerfend: Der Baum verliert fÃŧr eine gewisse Zeit des Jahres seine Blätter." + }, + "1": { + "then": "immergrÃŧner Baum." + } + }, + "question": "Ist dies ein Nadelbaum oder ein Laubbaum?" + }, + "tree-denotation": { + "mappings": { + "0": { + "then": "Der Baum ist aufgrund seiner GrÃļße oder seiner markanten Lage bedeutsam. Er ist nÃŧtzlich zur Orientierung." + }, + "1": { + "then": "Der Baum ist ein Naturdenkmal, z. B. weil er besonders alt ist oder zu einer wertvollen Art gehÃļrt." + }, + "2": { + "then": "Der Baum wird fÃŧr landwirtschaftliche Zwecke genutzt, z. B. in einer Obstplantage." + }, + "3": { + "then": "Der Baum steht in einem Park oder ähnlichem (Friedhof, Schulgelände, ...)." + }, + "5": { + "then": "Dieser Baum steht entlang einer Straße." + }, + "7": { + "then": "Dieser Baum steht außerhalb eines städtischen Gebiets." + } + }, + "question": "Wie bedeutsam ist dieser Baum? Wählen Sie die erste Antwort, die zutrifft." + }, + "tree-height": { + "mappings": { + "0": { + "then": "HÃļhe: {height} m" + } + }, + "render": "HÃļhe: {height}" + }, + "tree-heritage": { + "mappings": { + "0": { + "then": "\"\"/ Als Denkmal registriert von der Onroerend Erfgoed Flandern" + }, + "1": { + "then": "Als Denkmal registriert von der Direction du Patrimoine culturel BrÃŧssel" + }, + "2": { + "then": "Von einer anderen Organisation als Denkmal registriert" + }, + "3": { + "then": "Nicht als Denkmal registriert" + }, + "4": { + "then": "Von einer anderen Organisation als Denkmal registriert" + } + }, + "question": "Ist dieser Baum ein Naturdenkmal?" + }, + "tree-leaf_type": { + "mappings": { + "0": { + "then": "\"\"/ Laubbaum" + }, + "1": { + "then": "\"\"/ Nadelbaum" + }, + "2": { + "then": "\"\"/ Dauerhaft blattlos" + } + }, + "question": "Ist dies ein Laub- oder Nadelbaum?" + }, + "tree_node-name": { + "mappings": { + "0": { + "then": "Der Baum hat keinen Namen." + } + }, + "question": "Hat der Baum einen Namen?", + "render": "Name: {name}" + }, + "tree_node-ref:OnroerendErfgoed": { + "question": "Wie lautet die Kennung der Onroerend Erfgoed Flanders?" + }, + "tree_node-wikidata": { + "question": "Was ist das passende Wikidata Element zu diesem Baum?", + "render": "\"\"/ Wikidata: {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Baum" + } + }, + "viewpoint": { + "description": "Ein schÃļner Aussichtspunkt oder eine schÃļne Aussicht. Ideal zum HinzufÃŧgen eines Bildes, wenn keine andere Kategorie passt", + "name": "Aussichtspunkt", + "presets": { + "0": { + "title": "Aussichtspunkt" + } + }, + "tagRenderings": { + "viewpoint-description": { + "question": "MÃļchten Sie eine Beschreibung hinzufÃŧgen?" + } + }, + "title": { + "render": "Aussichtspunkt" + } + }, + "visitor_information_centre": { + "description": "Ein Besucherzentrum bietet Informationen Ãŧber eine bestimmte Attraktion oder SehenswÃŧrdigkeit, an der es sich befindet.", + "name": "Besucherinformationszentrum", + "title": { + "mappings": { + "1": { + "then": "{name}" + } + }, + "render": "{name}" + } + }, + "waste_basket": { + "description": "Dies ist ein Ãļffentlicher Abfalleimer, in den Sie Ihren MÃŧll entsorgen kÃļnnen.", + "mapRendering": { + "0": { + "iconSize": { + "mappings": { + "0": { + "then": "Abfalleimer" + } + } + } + } + }, + "name": "Abfalleimer", + "presets": { + "0": { + "title": "Abfalleimer" + } + }, + "tagRenderings": { + "dispensing_dog_bags": { + "mappings": { + "0": { + "then": "Dieser Abfalleimer verfÃŧgt Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel" + }, + "1": { + "then": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" + }, + "2": { + "then": "Dieser Abfalleimer hat keinen Spender fÃŧr (Hunde-)Kotbeutel" + } + }, + "question": "VerfÃŧgt dieser Abfalleimer Ãŧber einen Spender fÃŧr (Hunde-)Kotbeutel?" + }, + "waste-basket-waste-types": { + "mappings": { + "0": { + "then": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" + }, + "1": { + "then": "Ein Abfalleimer fÃŧr allgemeinen MÃŧll" + }, + "2": { + "then": "Ein Abfalleimer fÃŧr Hundekot" + }, + "3": { + "then": "MÃŧlleimer fÃŧr Zigaretten" + }, + "4": { + "then": "MÃŧlleimer fÃŧr Drogen" + }, + "5": { + "then": "Ein Abfalleimer fÃŧr Nadeln und andere scharfe Gegenstände" + } + }, + "question": "Um was fÃŧr einen Abfalleimer handelt es sich?" + } + }, + "title": { + "render": "Abfalleimer" + } + }, + "watermill": { + "name": "WassermÃŧhle" + } } \ No newline at end of file diff --git a/langs/layers/en.json b/langs/layers/en.json index 280ecf940..f92ed53b2 100644 --- a/langs/layers/en.json +++ b/langs/layers/en.json @@ -1,3596 +1,4166 @@ { - "artwork": { - "description": "Diverse pieces of artwork", - "name": "Artworks", - "presets": { - "0": { - "title": "Artwork" - } + "artwork": { + "description": "Diverse pieces of artwork", + "name": "Artworks", + "presets": { + "0": { + "title": "Artwork" + } + }, + "tagRenderings": { + "artwork-artist_name": { + "question": "Which artist created this?", + "render": "Created by {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "Architecture" + }, + "1": { + "then": "Mural" + }, + "2": { + "then": "Painting" + }, + "3": { + "then": "Sculpture" + }, + "4": { + "then": "Statue" + }, + "5": { + "then": "Bust" + }, + "6": { + "then": "Stone" + }, + "7": { + "then": "Installation" + }, + "8": { + "then": "Graffiti" + }, + "9": { + "then": "Relief" + }, + "10": { + "then": "Azulejo (Spanish decorative tilework)" + }, + "11": { + "then": "Tilework" + } }, - "tagRenderings": { - "artwork-artist_name": { - "question": "Which artist created this?", - "render": "Created by {artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "Architecture" - }, - "1": { - "then": "Mural" - }, - "2": { - "then": "Painting" - }, - "3": { - "then": "Sculpture" - }, - "4": { - "then": "Statue" - }, - "5": { - "then": "Bust" - }, - "6": { - "then": "Stone" - }, - "7": { - "then": "Installation" - }, - "8": { - "then": "Graffiti" - }, - "9": { - "then": "Relief" - }, - "10": { - "then": "Azulejo (Spanish decorative tilework)" - }, - "11": { - "then": "Tilework" - } - }, - "question": "What is the type of this artwork?", - "render": "This is a {artwork_type}" - }, - "artwork-website": { - "question": "Is there a website with more information about this artwork?", - "render": "More information on this website" - }, - "artwork-wikidata": { - "question": "Which Wikidata-entry corresponds with this artwork?", - "render": "Corresponds with {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Artwork {name}" - } - }, - "render": "Artwork" + "question": "What is the type of this artwork?", + "render": "This is a {artwork_type}" + }, + "artwork-website": { + "question": "Is there a website with more information about this artwork?", + "render": "More information on this website" + }, + "artwork-wikidata": { + "question": "Which Wikidata-entry corresponds with this artwork?", + "render": "Corresponds with {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Artwork {name}" } - }, - "barrier": { - "description": "Obstacles while cycling, such as bollards and cycle barriers", - "name": "Barriers", - "presets": { - "0": { - "description": "A bollard in the road", - "title": "Bollard" - }, - "1": { - "description": "Cycle barrier, slowing down cyclists", - "title": "Cycle barrier" - } - }, - "tagRenderings": { - "Bollard type": { - "mappings": { - "0": { - "then": "Removable bollard" - }, - "1": { - "then": "Fixed bollard" - }, - "2": { - "then": "Bollard that can be folded down" - }, - "3": { - "then": "Flexible bollard, usually plastic" - }, - "4": { - "then": "Rising bollard" - } - }, - "question": "What kind of bollard is this?" - }, - "Cycle barrier type": { - "mappings": { - "0": { - "then": "Single, just two barriers with a space inbetween " - }, - "1": { - "then": "Double, two barriers behind each other " - }, - "2": { - "then": "Triple, three barriers behind each other " - }, - "3": { - "then": "Squeeze gate, gap is smaller at top, than at the bottom " - } - }, - "question": "What kind of cycling barrier is this?" - }, - "MaxWidth": { - "question": "How wide is the gap left over besides the barrier?", - "render": "Maximum width: {maxwidth:physical} m" - }, - "Overlap (cyclebarrier)": { - "question": "How much overlap do the barriers have?", - "render": "Overlap: {overlap} m" - }, - "Space between barrier (cyclebarrier)": { - "question": "How much space is there between the barriers (along the length of the road)?", - "render": "Space between barriers (along the length of the road): {width:separation} m" - }, - "Width of opening (cyclebarrier)": { - "question": "How wide is the smallest opening next to the barriers?", - "render": "Width of opening: {width:opening} m" - }, - "bicycle=yes/no": { - "mappings": { - "0": { - "then": "A cyclist can go past this." - }, - "1": { - "then": "A cyclist can not go past this." - } - }, - "question": "Can a bicycle go past this barrier?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Bollard" - }, - "1": { - "then": "Cycling Barrier" - } - }, - "render": "Barrier" - } - }, - "bench": { - "name": "Benches", - "presets": { - "0": { - "title": "bench" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Backrest: Yes" - }, - "1": { - "then": "Backrest: No" - } - }, - "question": "Does this bench have a backrest?", - "render": "Backrest" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Colour: brown" - }, - "1": { - "then": "Colour: green" - }, - "2": { - "then": "Colour: gray" - }, - "3": { - "then": "Colour: white" - }, - "4": { - "then": "Colour: red" - }, - "5": { - "then": "Colour: black" - }, - "6": { - "then": "Colour: blue" - }, - "7": { - "then": "Colour: yellow" - } - }, - "question": "Which colour does this bench have?", - "render": "Colour: {colour}" - }, - "bench-direction": { - "question": "In which direction are you looking when sitting on the bench?", - "render": "When sitting on the bench, one looks towards {direction}°." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Material: wood" - }, - "1": { - "then": "Material: metal" - }, - "2": { - "then": "Material: stone" - }, - "3": { - "then": "Material: concrete" - }, - "4": { - "then": "Material: plastic" - }, - "5": { - "then": "Material: steel" - } - }, - "question": "What is the bench (seating) made from?", - "render": "Material: {material}" - }, - "bench-seats": { - "question": "How many seats does this bench have?", - "render": "{seats} seats" - }, - "bench-survey:date": { - "question": "When was this bench last surveyed?", - "render": "This bench was last surveyed on {survey:date}" - } - }, - "title": { - "render": "Bench" - } - }, - "bench_at_pt": { - "name": "Benches at public transport stops", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "Stand up bench" - }, - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Bench at public transport stop" - }, - "1": { - "then": "Bench in shelter" - } - }, - "render": "Bench" - } - }, - "bicycle_library": { - "description": "A facility where bicycles can be lent for longer period of times", - "name": "Bicycle library", - "presets": { - "0": { - "description": "A bicycle library has a collection of bikes which can be lent", - "title": "Fietsbibliotheek" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "Bikes for children available" - }, - "1": { - "then": "Bikes for adult available" - }, - "2": { - "then": "Bikes for disabled persons available" - } - }, - "question": "Who can lend bicycles here?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "Lending a bicycle is free" - }, - "1": { - "then": "Lending a bicycle costs â‚Ŧ20/year and â‚Ŧ20 warranty" - } - }, - "question": "How much does lending a bicycle cost?", - "render": "Lending a bicycle costs {charge}" - }, - "bicycle_library-name": { - "question": "What is the name of this bicycle library?", - "render": "This bicycle library is called {name}" - } - }, - "title": { - "render": "Bicycle library" - } - }, - "bicycle_tube_vending_machine": { - "name": "Bicycle tube vending machine", - "presets": { - "0": { - "title": "Bicycle tube vending machine" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "This vending machine works" - }, - "1": { - "then": "This vending machine is broken" - }, - "2": { - "then": "This vending machine is closed" - } - }, - "question": "Is this vending machine still operational?", - "render": "The operational status is {operational_status" - } - }, - "title": { - "render": "Bicycle tube vending machine" - } - }, - "bike_cafe": { - "name": "Bike cafe", - "presets": { - "0": { - "title": "Bike cafe" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "This bike cafe offers a bike pump for anyone" - }, - "1": { - "then": "This bike cafe doesn't offer a bike pump for anyone" - } - }, - "question": "Does this bike cafe offer a bike pump for use by anyone?" - }, - "bike_cafe-email": { - "question": "What is the email address of {name}?" - }, - "bike_cafe-name": { - "question": "What is the name of this bike cafe?", - "render": "This bike cafe is called {name}" - }, - "bike_cafe-opening_hours": { - "question": "When it this bike cafÊ opened?" - }, - "bike_cafe-phone": { - "question": "What is the phone number of {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "This bike cafe repairs bikes" - }, - "1": { - "then": "This bike cafe doesn't repair bikes" - } - }, - "question": "Does this bike cafe repair bikes?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "This bike cafe offers tools for DIY repair" - }, - "1": { - "then": "This bike cafe doesn't offer tools for DIY repair" - } - }, - "question": "Are there tools here to repair your own bike?" - }, - "bike_cafe-website": { - "question": "What is the website of {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Bike cafe {name}" - } - }, - "render": "Bike cafe" - } - }, - "bike_cleaning": { - "name": "Bike cleaning service", - "presets": { - "0": { - "title": "Bike cleaning service" - } - }, - "title": { - "mappings": { - "0": { - "then": "Bike cleaning service {name}" - } - }, - "render": "Bike cleaning service" - } - }, - "bike_parking": { - "name": "Bike parking", - "presets": { - "0": { - "title": "Bike parking" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "Publicly accessible" - }, - "1": { - "then": "Access is primarily for visitors to a business" - }, - "2": { - "then": "Access is limited to members of a school, company or organisation" - } - }, - "question": "Who can use this bicycle parking?", - "render": "{access}" - }, - "Bicycle parking type": { - "mappings": { - "0": { - "then": "Staple racks " - }, - "1": { - "then": "Wheel rack/loops " - }, - "2": { - "then": "Handlebar holder " - }, - "3": { - "then": "Rack " - }, - "4": { - "then": "Two-tiered " - }, - "5": { - "then": "Shed " - }, - "6": { - "then": "Bollard " - }, - "7": { - "then": "An area on the floor which is marked for bicycle parking" - } - }, - "question": "What is the type of this bicycle parking?", - "render": "This is a bicycle parking of the type: {bicycle_parking}" - }, - "Capacity": { - "question": "How many bicycles fit in this bicycle parking (including possible cargo bicycles)?", - "render": "Place for {capacity} bikes" - }, - "Cargo bike capacity?": { - "question": "How many cargo bicycles fit in this bicycle parking?", - "render": "This parking fits {capacity:cargo_bike} cargo bikes" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "This parking has room for cargo bikes" - }, - "1": { - "then": "This parking has designated (official) spots for cargo bikes." - }, - "2": { - "then": "You're not allowed to park cargo bikes" - } - }, - "question": "Does this bicycle parking have spots for cargo bikes?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "This parking is covered (it has a roof)" - }, - "1": { - "then": "This parking is not covered" - } - }, - "question": "Is this parking covered? Also select \"covered\" for indoor parkings." - }, - "Underground?": { - "mappings": { - "0": { - "then": "Underground parking" - }, - "1": { - "then": "Underground parking" - }, - "2": { - "then": "Surface level parking" - }, - "3": { - "then": "Surface level parking" - }, - "4": { - "then": "Rooftop parking" - } - }, - "question": "What is the relative location of this bicycle parking?" - } - }, - "title": { - "render": "Bike parking" - } - }, - "bike_repair_station": { - "name": "Bike stations (repair, pump or both)", - "presets": { - "0": { - "description": "A device to inflate your tires on a fixed location in the public space.

Examples of bicycle pumps

", - "title": "Bike pump" - }, - "1": { - "description": "A device with tools to repair your bike combined with a pump at a fixed location. The tools are often secured with chains against theft.

Example

", - "title": "Bike repair station and pump" - }, - "2": { - "title": "Bike repair station without pump" - } - }, - "tagRenderings": { - "Email maintainer": { - "render": "Report this bicycle pump as broken" - }, - "Operational status": { - "mappings": { - "0": { - "then": "The bike pump is broken" - }, - "1": { - "then": "The bike pump is operational" - } - }, - "question": "Is the bike pump still operational?" - }, - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "There is only a pump present" - }, - "1": { - "then": "There are only tools (screwdrivers, pliers...) present" - }, - "2": { - "then": "There are both tools and a pump present" - } - }, - "question": "Which services are available at this bike station?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "There is a chain tool" - }, - "1": { - "then": "There is no chain tool" - } - }, - "question": "Does this bike repair station have a special tool to repair your bike chain?" - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "There is a hook or stand" - }, - "1": { - "then": "There is no hook or stand" - } - }, - "question": "Does this bike station have a hook to hang your bike on or a stand to raise it?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Manual pump" - }, - "1": { - "then": "Electrical pump" - } - }, - "question": "Is this an electric bike pump?" - }, - "bike_repair_station-email": { - "question": "What is the email address of the maintainer?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "There is a manometer" - }, - "1": { - "then": "There is no manometer" - }, - "2": { - "then": "There is manometer but it is broken" - } - }, - "question": "Does the pump have a pressure indicator or manometer?" - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "Always open" - }, - "1": { - "then": "Always open" - } - }, - "question": "When is this bicycle repair point open?" - }, - "bike_repair_station-operator": { - "question": "Who maintains this cycle pump?", - "render": "Maintained by {operator}" - }, - "bike_repair_station-phone": { - "question": "What is the phone number of the maintainer?" - }, - "bike_repair_station-valves": { - "mappings": { - "0": { - "then": "Sclaverand (also known as Presta)" - }, - "1": { - "then": "Dunlop" - }, - "2": { - "then": "Schrader (cars)" - } - }, - "question": "What valves are supported?", - "render": "This pump supports the following valves: {valves}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Bike repair station" - }, - "1": { - "then": "Bike repair station" - }, - "2": { - "then": "Broken pump" - }, - "3": { - "then": "Bicycle pump {name}" - }, - "4": { - "then": "Bicycle pump" - } - }, - "render": "Bike station (pump & repair)" - } - }, - "bike_shop": { - "description": "A shop specifically selling bicycles or related items", - "name": "Bike repair/shop", - "presets": { - "0": { - "title": "Bike repair/shop" - } - }, - "tagRenderings": { - "bike_repair_bike-pump-service": { - "mappings": { - "0": { - "then": "This shop offers a bike pump for anyone" - }, - "1": { - "then": "This shop doesn't offer a bike pump for anyone" - }, - "2": { - "then": "There is bicycle pump, it is shown as a separate point " - } - }, - "question": "Does this shop offer a bike pump for use by anyone?" - }, - "bike_repair_bike-wash": { - "mappings": { - "0": { - "then": "This shop cleans bicycles" - }, - "1": { - "then": "This shop has an installation where one can clean bicycles themselves" - }, - "2": { - "then": "This shop doesn't offer bicycle cleaning" - } - }, - "question": "Are bicycles washed here?" - }, - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "This shop rents out bikes" - }, - "1": { - "then": "This shop doesn't rent out bikes" - } - }, - "question": "Does this shop rent out bikes?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "This shop repairs bikes" - }, - "1": { - "then": "This shop doesn't repair bikes" - }, - "2": { - "then": "This shop only repairs bikes bought here" - }, - "3": { - "then": "This shop only repairs bikes of a certain brand" - } - }, - "question": "Does this shop repair bikes?" - }, - "bike_repair_second-hand-bikes": { - "mappings": { - "0": { - "then": "This shop sells second-hand bikes" - }, - "1": { - "then": "This shop doesn't sell second-hand bikes" - }, - "2": { - "then": "This shop only sells second-hand bikes" - } - }, - "question": "Does this shop sell second-hand bikes?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "This shop sells bikes" - }, - "1": { - "then": "This shop doesn't sell bikes" - } - }, - "question": "Does this shop sell bikes?" - }, - "bike_repair_tools-service": { - "mappings": { - "0": { - "then": "This shop offers tools for DIY repair" - }, - "1": { - "then": "This shop doesn't offer tools for DIY repair" - }, - "2": { - "then": "Tools for DIY repair are only available if you bought/hire the bike in the shop" - } - }, - "question": "Are there tools here to repair your own bike?" - }, - "bike_shop-email": { - "question": "What is the email address of {name}?" - }, - "bike_shop-is-bicycle_shop": { - "render": "This shop is specialized in selling {shop} and does bicycle related activities" - }, - "bike_shop-name": { - "question": "What is the name of this bicycle shop?", - "render": "This bicycle shop is called {name}" - }, - "bike_shop-phone": { - "question": "What is the phone number of {name}?" - }, - "bike_shop-website": { - "question": "What is the website of {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Sport gear shop {name}" - }, - "2": { - "then": "Bicycle rental {name}" - }, - "3": { - "then": "Bike repair {name}" - }, - "4": { - "then": "Bike shop {name}" - }, - "5": { - "then": "Bike repair/shop {name}" - } - }, - "render": "Bike repair/shop" - } - }, - "bike_themed_object": { - "name": "Bike related object", - "title": { - "mappings": { - "1": { - "then": "Cycle track" - } - }, - "render": "Bike related object" - } - }, - "binocular": { - "description": "Binoculas", - "name": "Binoculars", - "presets": { - "0": { - "description": "A telescope or pair of binoculars mounted on a pole, available to the public to look around. ", - "title": "binoculars" - } - }, - "tagRenderings": { - "binocular-charge": { - "mappings": { - "0": { - "then": "Free to use" - } - }, - "question": "How much does one have to pay to use these binoculars?", - "render": "Using these binoculars costs {charge}" - }, - "binocular-direction": { - "question": "When looking through this binocular, in what direction does one look?", - "render": "Looks towards {direction}°" - } - }, - "title": { - "render": "Binoculars" - } - }, - "birdhide": { - "filter": { - "0": { - "options": { - "0": { - "question": "Wheelchair accessible" - } - } - } - } - }, - "cafe_pub": { - "filter": { - "0": { - "options": { - "0": { - "question": "Opened now" - } - } - } - }, - "name": "CafÊs and pubs", - "presets": { - "0": { - "title": "pub" - }, - "1": { - "title": "bar" - }, - "2": { - "title": "cafe" - } - }, - "tagRenderings": { - "Classification": { - "question": "What kind of cafe is this" - }, - "Name": { - "question": "What is the name of this pub?", - "render": "This pub is named {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - } - } - }, - "charging_station": { - "description": "A charging station", - "filter": { - "0": { - "options": { - "0": { - "question": "All vehicle types" - }, - "1": { - "question": "Charging station for bicycles" - }, - "2": { - "question": "Charging station for cars" - } - } - }, - "1": { - "options": { - "0": { - "question": "Only working charging stations" - } - } - }, - "2": { - "options": { - "0": { - "question": "All connectors" - }, - "1": { - "question": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector" - }, - "2": { - "question": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector" - }, - "3": { - "question": "Has a
Chademo
connector" - }, - "4": { - "question": "Has a
Type 1 with cable (J1772)
connector" - }, - "5": { - "question": "Has a
Type 1 without cable (J1772)
connector" - }, - "6": { - "question": "Has a
Type 1 CCS (aka Type 1 Combo)
connector" - }, - "7": { - "question": "Has a
Tesla Supercharger
connector" - }, - "8": { - "question": "Has a
Type 2 (mennekes)
connector" - }, - "9": { - "question": "Has a
Type 2 CCS (mennekes)
connector" - }, - "10": { - "question": "Has a
Type 2 with cable (mennekes)
connector" - }, - "11": { - "question": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector" - }, - "12": { - "question": "Has a
Tesla Supercharger (destination)
connector" - }, - "13": { - "question": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector" - }, - "14": { - "question": "Has a
USB to charge phones and small electronics
connector" - }, - "15": { - "question": "Has a
Bosch Active Connect with 3 pins and cable
connector" - }, - "16": { - "question": "Has a
Bosch Active Connect with 5 pins and cable
connector" - } - } - } - }, - "name": "Charging stations", - "presets": { - "0": { - "title": "charging station with a normal european wall plug (meant to charge electrical bikes)" - }, - "1": { - "title": "charging station for e-bikes" - }, - "2": { - "title": "charging station for cars" - }, - "3": { - "title": "charging station" - } - }, - "tagRenderings": { - "Auth phone": { - "question": "What's the phone number for authentication call or SMS?", - "render": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}" - }, - "Authentication": { - "mappings": { - "0": { - "then": "Authentication by a membership card" - }, - "1": { - "then": "Authentication by an app" - }, - "2": { - "then": "Authentication via phone call is available" - }, - "3": { - "then": "Authentication via SMS is available" - }, - "4": { - "then": "Authentication via NFC is available" - }, - "5": { - "then": "Authentication via Money Card is available" - }, - "6": { - "then": "Authentication via debit card is available" - }, - "7": { - "then": "Charging here is (also) possible without authentication" - } - }, - "question": "What kind of authentication is available at the charging station?" - }, - "Available_charging_stations (generated)": { - "mappings": { - "0": { - "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
" - }, - "1": { - "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
" - }, - "2": { - "then": "
European wall plug with ground pin (CEE7/4 type E)
" - }, - "3": { - "then": "
European wall plug with ground pin (CEE7/4 type E)
" - }, - "4": { - "then": "
Chademo
" - }, - "5": { - "then": "
Chademo
" - }, - "6": { - "then": "
Type 1 with cable (J1772)
" - }, - "7": { - "then": "
Type 1 with cable (J1772)
" - }, - "8": { - "then": "
Type 1 without cable (J1772)
" - }, - "9": { - "then": "
Type 1 without cable (J1772)
" - }, - "10": { - "then": "
Type 1 CCS (aka Type 1 Combo)
" - }, - "11": { - "then": "
Type 1 CCS (aka Type 1 Combo)
" - }, - "12": { - "then": "
Tesla Supercharger
" - }, - "13": { - "then": "
Tesla Supercharger
" - }, - "14": { - "then": "
Type 2 (mennekes)
" - }, - "15": { - "then": "
Type 2 (mennekes)
" - }, - "16": { - "then": "
Type 2 CCS (mennekes)
" - }, - "17": { - "then": "
Type 2 CCS (mennekes)
" - }, - "18": { - "then": "
Type 2 with cable (mennekes)
" - }, - "19": { - "then": "
Type 2 with cable (mennekes)
" - }, - "20": { - "then": "
Tesla Supercharger CCS (a branded type2_css)
" - }, - "21": { - "then": "
Tesla Supercharger CCS (a branded type2_css)
" - }, - "22": { - "then": "
Tesla Supercharger (destination)
" - }, - "23": { - "then": "
Tesla Supercharger (destination)
" - }, - "24": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
" - }, - "25": { - "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
" - }, - "26": { - "then": "
USB to charge phones and small electronics
" - }, - "27": { - "then": "
USB to charge phones and small electronics
" - }, - "28": { - "then": "
Bosch Active Connect with 3 pins and cable
" - }, - "29": { - "then": "
Bosch Active Connect with 3 pins and cable
" - }, - "30": { - "then": "
Bosch Active Connect with 5 pins and cable
" - }, - "31": { - "then": "
Bosch Active Connect with 5 pins and cable
" - } - }, - "question": "Which charging connections are available here?" - }, - "Network": { - "mappings": { - "0": { - "then": "Not part of a bigger network" - }, - "1": { - "then": "Not part of a bigger network" - } - }, - "question": "Is this charging station part of a network?", - "render": "Part of the network {network}" - }, - "OH": { - "mappings": { - "0": { - "then": "24/7 opened (including holidays)" - } - }, - "question": "When is this charging station opened?" - }, - "Operational status": { - "mappings": { - "0": { - "then": "This charging station works" - }, - "1": { - "then": "This charging station is broken" - }, - "2": { - "then": "A charging station is planned here" - }, - "3": { - "then": "A charging station is constructed here" - }, - "4": { - "then": "This charging station has beed permanently disabled and is not in use anymore but is still visible" - } - }, - "question": "Is this charging point in use?" - }, - "Operator": { - "mappings": { - "0": { - "then": "Actually, {operator} is the network" - } - }, - "question": "Who is the operator of this charging station?", - "render": "This charging station is operated by {operator}" - }, - "Parking:fee": { - "mappings": { - "0": { - "then": "No additional parking cost while charging" - }, - "1": { - "then": "An additional parking fee should be paid while charging" - } - }, - "question": "Does one have to pay a parking fee while charging?" - }, - "Type": { - "mappings": { - "0": { - "then": "Bcycles can be charged here" - }, - "1": { - "then": "Cars can be charged here" - }, - "2": { - "then": "Scooters can be charged here" - }, - "3": { - "then": "Heavy good vehicles (such as trucks) can be charged here" - }, - "4": { - "then": "Buses can be charged here" - } - }, - "question": "Which vehicles are allowed to charge here?" - }, - "access": { - "mappings": { - "0": { - "then": "Anyone can use this charging station (payment might be needed)" - }, - "1": { - "then": "Anyone can use this charging station (payment might be needed)" - }, - "2": { - "then": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests" - }, - "3": { - "then": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)" - } - }, - "question": "Who is allowed to use this charging station?", - "render": "Access is {access}" - }, - "capacity": { - "question": "How much vehicles can be charged here at the same time?", - "render": "{capacity} vehicles can be charged here at the same time" - }, - "charge": { - "question": "How much does one have to pay to use this charging station?", - "render": "Using this charging station costs {charge}" - }, - "email": { - "question": "What is the email address of the operator?", - "render": "In case of problems, send an email to {email}" - }, - "fee": { - "mappings": { - "0": { - "then": "Free to use" - }, - "1": { - "then": "Free to use (without authenticating)" - }, - "2": { - "then": "Free to use, but one has to authenticate" - }, - "3": { - "then": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" - }, - "4": { - "then": "Paid use" - } - }, - "question": "Does one have to pay to use this charging station?" - }, - "maxstay": { - "mappings": { - "0": { - "then": "No timelimit on leaving your vehicle here" - } - }, - "question": "What is the maximum amount of time one is allowed to stay here?", - "render": "One can stay at most {canonical(maxstay)}" - }, - "payment-options": { - "override": { - "mappings+": { - "0": { - "then": "Payment is done using a dedicated app" - }, - "1": { - "then": "Payment is done using a membership card" - } - } - } - }, - "phone": { - "question": "What number can one call if there is a problem with this charging station?", - "render": "In case of problems, call {phone}" - }, - "plugs-0": { - "question": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", - "render": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here" - }, - "plugs-1": { - "question": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", - "render": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here" - }, - "plugs-10": { - "question": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", - "render": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here" - }, - "plugs-11": { - "question": "How much plugs of type
Tesla Supercharger (destination)
are available here?", - "render": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here" - }, - "plugs-12": { - "question": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", - "render": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here" - }, - "plugs-13": { - "question": "How much plugs of type
USB to charge phones and small electronics
are available here?", - "render": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here" - }, - "plugs-14": { - "question": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", - "render": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here" - }, - "plugs-15": { - "question": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", - "render": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here" - }, - "plugs-2": { - "question": "How much plugs of type
Chademo
are available here?", - "render": "There are {socket:chademo} plugs of type
Chademo
available here" - }, - "plugs-3": { - "question": "How much plugs of type
Type 1 with cable (J1772)
are available here?", - "render": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here" - }, - "plugs-4": { - "question": "How much plugs of type
Type 1 without cable (J1772)
are available here?", - "render": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here" - }, - "plugs-5": { - "question": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", - "render": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here" - }, - "plugs-6": { - "question": "How much plugs of type
Tesla Supercharger
are available here?", - "render": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here" - }, - "plugs-7": { - "question": "How much plugs of type
Type 2 (mennekes)
are available here?", - "render": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here" - }, - "plugs-8": { - "question": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", - "render": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here" - }, - "plugs-9": { - "question": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", - "render": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here" - }, - "ref": { - "question": "What is the reference number of this charging station?", - "render": "Reference number is {ref}" - }, - "website": { - "question": "What is the website where one can find more information about this charging station?", - "render": "More info on {website}" - } - }, - "title": { - "render": "Charging station" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " minutes", - "humanSingular": " minute" - }, - "1": { - "human": " hours", - "humanSingular": " hour" - }, - "2": { - "human": " days", - "humanSingular": " day" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": "Volts" - } - } - }, - "2": { - "applicableUnits": { - "0": { - "human": "A" - } - } - }, - "3": { - "applicableUnits": { - "0": { - "human": "kilowatt" - }, - "1": { - "human": "megawatt" - } - } - } - } - }, - "crossings": { - "description": "Crossings for pedestrians and cyclists", - "name": "Crossings", - "presets": { - "0": { - "description": "Crossing for pedestrians and/or cyclists", - "title": "Crossing" - }, - "1": { - "description": "Traffic signal on a road", - "title": "Traffic signal" - } - }, - "tagRenderings": { - "crossing-bicycle-allowed": { - "mappings": { - "0": { - "then": "A cyclist can use this crossing" - }, - "1": { - "then": "A cyclist can not use this crossing" - } - }, - "question": "Is this crossing also for bicycles?" - }, - "crossing-button": { - "mappings": { - "0": { - "then": "This traffic light has a button to request green light" - }, - "1": { - "then": "This traffic light does not have a button to request green light" - } - }, - "question": "Does this traffic light have a button to request green light?" - }, - "crossing-continue-through-red": { - "mappings": { - "0": { - "then": "A cyclist can go straight on if the light is red " - }, - "1": { - "then": "A cyclist can go straight on if the light is red" - }, - "2": { - "then": "A cyclist can not go straight on if the light is red" - } - }, - "question": "Can a cyclist go straight on when the light is red?" - }, - "crossing-has-island": { - "mappings": { - "0": { - "then": "This crossing has an island in the middle" - }, - "1": { - "then": "This crossing does not have an island in the middle" - } - }, - "question": "Does this crossing have an island in the middle?" - }, - "crossing-is-zebra": { - "mappings": { - "0": { - "then": "This is a zebra crossing" - }, - "1": { - "then": "This is not a zebra crossing" - } - }, - "question": "Is this is a zebra crossing?" - }, - "crossing-right-turn-through-red": { - "mappings": { - "0": { - "then": "A cyclist can turn right if the light is red " - }, - "1": { - "then": "A cyclist can turn right if the light is red" - }, - "2": { - "then": "A cyclist can not turn right if the light is red" - } - }, - "question": "Can a cyclist turn right when the light is red?" - }, - "crossing-tactile": { - "mappings": { - "0": { - "then": "This crossing has tactile paving" - }, - "1": { - "then": "This crossing does not have tactile paving" - }, - "2": { - "then": "This crossing has tactile paving, but is not correct" - } - }, - "question": "Does this crossing have tactile paving?" - }, - "crossing-type": { - "mappings": { - "0": { - "then": "Crossing, without traffic lights" - }, - "1": { - "then": "Crossing with traffic signals" - }, - "2": { - "then": "Zebra crossing" - } - }, - "question": "What kind of crossing is this?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Traffic signal" - }, - "1": { - "then": "Crossing with traffic signals" - } - }, - "render": "Crossing" - } - }, - "cycleways_and_roads": { - "name": "Cycleways and roads", - "tagRenderings": { - "Cycleway type for a road": { - "mappings": { - "0": { - "then": "There is a shared lane" - }, - "1": { - "then": "There is a lane next to the road (separated with paint)" - }, - "2": { - "then": "There is a track, but no cycleway drawn separately from this road on the map." - }, - "3": { - "then": "There is a separately drawn cycleway" - }, - "4": { - "then": "There is no cycleway" - }, - "5": { - "then": "There is no cycleway" - } - }, - "question": "What kind of cycleway is here?" - }, - "Cycleway:smoothness": { - "mappings": { - "0": { - "then": "Usable for thin rollers: rollerblade, skateboard" - }, - "1": { - "then": "Usable for thin wheels: racing bike" - }, - "2": { - "then": "Usable for normal wheels: city bike, wheelchair, scooter" - }, - "3": { - "then": "Usable for robust wheels: trekking bike, car, rickshaw" - }, - "4": { - "then": "Usable for vehicles with high clearance: light duty off-road vehicle" - }, - "5": { - "then": "Usable for off-road vehicles: heavy duty off-road vehicle" - }, - "6": { - "then": "Usable for specialized off-road vehicles: tractor, ATV" - }, - "7": { - "then": "Impassable / No wheeled vehicle" - } - }, - "question": "What is the smoothness of this cycleway?" - }, - "Cycleway:surface": { - "mappings": { - "0": { - "then": "This cycleway is unpaved" - }, - "1": { - "then": "This cycleway is paved" - }, - "2": { - "then": "This cycleway is made of asphalt" - }, - "3": { - "then": "This cycleway is made of smooth paving stones" - }, - "4": { - "then": "This cycleway is made of concrete" - }, - "5": { - "then": "This cycleway is made of cobblestone (unhewn or sett)" - }, - "6": { - "then": "This cycleway is made of raw, natural cobblestone" - }, - "7": { - "then": "This cycleway is made of flat, square cobblestone" - }, - "8": { - "then": "This cycleway is made of wood" - }, - "9": { - "then": "This cycleway is made of gravel" - }, - "10": { - "then": "This cycleway is made of fine gravel" - }, - "11": { - "then": "This cycleway is made of pebblestone" - }, - "12": { - "then": "This cycleway is made from raw ground" - } - }, - "question": "What is the surface of the cycleway made from?", - "render": "This cyleway is made of {cycleway:surface}" - }, - "Is this a cyclestreet? (For a road)": { - "mappings": { - "0": { - "then": "This is a cyclestreet, and a 30km/h zone." - }, - "1": { - "then": "This is a cyclestreet" - }, - "2": { - "then": "This is not a cyclestreet." - } - }, - "question": "Is this a cyclestreet?" - }, - "Maxspeed (for road)": { - "mappings": { - "0": { - "then": "The maximum speed is 20 km/h" - }, - "1": { - "then": "The maximum speed is 30 km/h" - }, - "2": { - "then": "The maximum speed is 50 km/h" - }, - "3": { - "then": "The maximum speed is 70 km/h" - }, - "4": { - "then": "The maximum speed is 90 km/h" - } - }, - "question": "What is the maximum speed in this street?", - "render": "The maximum speed on this road is {maxspeed} km/h" - }, - "Surface of the road": { - "mappings": { - "0": { - "then": "This cycleway is unhardened" - }, - "1": { - "then": "This cycleway is paved" - }, - "2": { - "then": "This cycleway is made of asphalt" - }, - "3": { - "then": "This cycleway is made of smooth paving stones" - }, - "4": { - "then": "This cycleway is made of concrete" - }, - "5": { - "then": "This cycleway is made of cobblestone (unhewn or sett)" - }, - "6": { - "then": "This cycleway is made of raw, natural cobblestone" - }, - "7": { - "then": "This cycleway is made of flat, square cobblestone" - }, - "8": { - "then": "This cycleway is made of wood" - }, - "9": { - "then": "This cycleway is made of gravel" - }, - "10": { - "then": "This cycleway is made of fine gravel" - }, - "11": { - "then": "This cycleway is made of pebblestone" - }, - "12": { - "then": "This cycleway is made from raw ground" - } - }, - "question": "What is the surface of the street made from?", - "render": "This road is made of {surface}" - }, - "Surface of the street": { - "mappings": { - "0": { - "then": "Usable for thin rollers: rollerblade, skateboard" - }, - "1": { - "then": "Usable for thin wheels: racing bike" - }, - "2": { - "then": "Usable for normal wheels: city bike, wheelchair, scooter" - }, - "3": { - "then": "Usable for robust wheels: trekking bike, car, rickshaw" - }, - "4": { - "then": "Usable for vehicles with high clearance: light duty off-road vehicle" - }, - "5": { - "then": "Usable for off-road vehicles: heavy duty off-road vehicle" - }, - "6": { - "then": "Usable for specialized off-road vehicles: tractor, ATV" - }, - "7": { - "then": "Impassable / No wheeled vehicle" - } - }, - "question": "What is the smoothness of this street?" - }, - "cyclelan-segregation": { - "mappings": { - "0": { - "then": "This cycleway is separated by a dashed line" - }, - "1": { - "then": "This cycleway is separated by a solid line" - }, - "2": { - "then": "This cycleway is separated by a parking lane" - }, - "3": { - "then": "This cycleway is separated by a kerb" - } - }, - "question": "How is this cycleway separated from the road?" - }, - "cycleway-lane-track-traffic-signs": { - "mappings": { - "0": { - "then": "Compulsory cycleway " - }, - "1": { - "then": "Compulsory cycleway (with supplementary sign)
" - }, - "2": { - "then": "Segregated foot/cycleway " - }, - "3": { - "then": "Unsegregated foot/cycleway " - }, - "4": { - "then": "No traffic sign present" - } - }, - "question": "What traffic sign does this cycleway have?" - }, - "cycleway-segregation": { - "mappings": { - "0": { - "then": "This cycleway is separated by a dashed line" - }, - "1": { - "then": "This cycleway is separated by a solid line" - }, - "2": { - "then": "This cycleway is separated by a parking lane" - }, - "3": { - "then": "This cycleway is separated by a kerb" - } - }, - "question": "How is this cycleway separated from the road?" - }, - "cycleway-traffic-signs": { - "mappings": { - "0": { - "then": "Compulsory cycleway " - }, - "1": { - "then": "Compulsory cycleway (with supplementary sign)
" - }, - "2": { - "then": "Segregated foot/cycleway " - }, - "3": { - "then": "Unsegregated foot/cycleway " - }, - "4": { - "then": "No traffic sign present" - } - }, - "question": "What traffic sign does this cycleway have?" - }, - "cycleway-traffic-signs-D7-supplementary": { - "mappings": { - "0": { - "then": "" - }, - "1": { - "then": "" - }, - "2": { - "then": "" - }, - "3": { - "then": "" - }, - "4": { - "then": "" - }, - "5": { - "then": "" - }, - "6": { - "then": "No supplementary traffic sign present" - } - }, - "question": "Does the traffic sign D7 () have a supplementary sign?" - }, - "cycleway-traffic-signs-supplementary": { - "mappings": { - "0": { - "then": "" - }, - "1": { - "then": "" - }, - "2": { - "then": "" - }, - "3": { - "then": "" - }, - "4": { - "then": "" - }, - "5": { - "then": "" - }, - "6": { - "then": "No supplementary traffic sign present" - } - }, - "question": "Does the traffic sign D7 () have a supplementary sign?" - }, - "cycleways_and_roads-cycleway:buffer": { - "question": "How wide is the gap between the cycleway and the road?", - "render": "The buffer besides this cycleway is {cycleway:buffer} m" - }, - "is lit?": { - "mappings": { - "0": { - "then": "This street is lit" - }, - "1": { - "then": "This road is not lit" - }, - "2": { - "then": "This road is lit at night" - }, - "3": { - "then": "This road is lit 24/7" - } - }, - "question": "Is this street lit?" - }, - "width:carriageway": { - "question": "What is the carriage width of this road (in meters)?
This is measured curb to curb and thus includes the width of parallell parking lanes", - "render": "The carriage width of this road is {width:carriageway}m" - } - }, - "title": { - "mappings": { - "0": { - "then": "Cycleway" - }, - "1": { - "then": "Shared lane" - }, - "2": { - "then": "Bike lane" - }, - "3": { - "then": "Cycleway next to the road" - }, - "4": { - "then": "Cyclestreet" - } - }, - "render": "Cycleways" - } - }, - "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, - "name": "Defibrillators", - "presets": { - "0": { - "title": "Defibrillator" - } - }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "Publicly accessible" - }, - "1": { - "then": "Publicly accessible" - }, - "2": { - "then": "Only accessible to customers" - }, - "3": { - "then": "Not accessible to the general public (e.g. only accesible to staff, the owners, ...)" - }, - "4": { - "then": "Not accessible, possibly only for professional use" - } - }, - "question": "Is this defibrillator freely accessible?", - "render": "Access is {access}" - }, - "defibrillator-defibrillator": { - "mappings": { - "0": { - "then": "This is a manual defibrillator for professionals" - }, - "1": { - "then": "This is a normal automatic defibrillator" - } - }, - "question": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?", - "render": "There is no info about the type of device" - }, - "defibrillator-defibrillator:location": { - "question": "Please give some explanation on where the defibrillator can be found (in the local language)", - "render": "Extra information about the location (in the local languagel):
{defibrillator:location}" - }, - "defibrillator-defibrillator:location:en": { - "question": "Please give some explanation on where the defibrillator can be found (in English)", - "render": "Extra information about the location (in English):
{defibrillator:location:en}" - }, - "defibrillator-defibrillator:location:fr": { - "question": "Please give some explanation on where the defibrillator can be found (in French)", - "render": "Extra information about the location (in French):
{defibrillator:location:fr}" - }, - "defibrillator-description": { - "question": "Is there any useful information for users that you haven't been able to describe above? (leave blank if no)", - "render": "Additional information: {description}" - }, - "defibrillator-email": { - "question": "What is the email for questions about this defibrillator?", - "render": "Email for questions about this defibrillator: {email}" - }, - "defibrillator-fixme": { - "question": "Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to OpenStreetMap experts)", - "render": "Extra information for OpenStreetMap experts: {fixme}" - }, - "defibrillator-indoors": { - "mappings": { - "0": { - "then": "This defibrillator is located indoors" - }, - "1": { - "then": "This defibrillator is located outdoors" - } - }, - "question": "Is this defibrillator located indoors?" - }, - "defibrillator-level": { - "mappings": { - "0": { - "then": "This defibrillator is on the ground floor" - }, - "1": { - "then": "This defibrillator is on the first floor" - } - }, - "question": "On which floor is this defibrillator located?", - "render": "This defibrillator is on floor {level}" - }, - "defibrillator-opening_hours": { - "mappings": { - "0": { - "then": "24/7 opened (including holidays)" - } - }, - "question": "At what times is this defibrillator available?", - "render": "{opening_hours_table(opening_hours)}" - }, - "defibrillator-phone": { - "question": "What is the phone number for questions about this defibrillator?", - "render": "Telephone for questions about this defibrillator: {phone}" - }, - "defibrillator-ref": { - "question": "What is the official identification number of the device? (if visible on device)", - "render": "Official identification number of the device: {ref}" - }, - "defibrillator-survey:date": { - "mappings": { - "0": { - "then": "Checked today!" - } - }, - "question": "When was this defibrillator last surveyed?", - "render": "This defibrillator was last surveyed on {survey:date}" - } - }, - "title": { - "render": "Defibrillator" - } - }, - "direction": { - "description": "This layer visualizes directions", - "name": "Direction visualization" - }, - "drinking_water": { - "name": "Drinking water", - "presets": { - "0": { - "title": "drinking water" - } - }, - "tagRenderings": { - "Bottle refill": { - "mappings": { - "0": { - "then": "It is easy to refill water bottles" - }, - "1": { - "then": "Water bottles may not fit" - } - }, - "question": "How easy is it to fill water bottles?" - }, - "Still in use?": { - "mappings": { - "0": { - "then": "This drinking water works" - }, - "1": { - "then": "This drinking water is broken" - }, - "2": { - "then": "This drinking water is closed" - } - }, - "question": "Is this drinking water spot still operational?", - "render": "The operational status is {operational_status" - }, - "render-closest-drinking-water": { - "render": "There is another drinking water fountain at {_closest_other_drinking_water_distance} meter" - } - }, - "title": { - "render": "Drinking water" - } - }, - "etymology": { - "description": "All objects which have an etymology known", - "name": "Has etymolgy", - "tagRenderings": { - "etymology_multi_apply": { - "render": "{multi_apply(_same_name_ids, name:etymology:wikidata;name:etymology, Auto-applying data on all segments with the same name, true)}" - }, - "simple etymology": { - "mappings": { - "0": { - "then": "The origin of this name is unknown in all literature" - } - }, - "question": "What is this object named after?
This might be written on the street name sign", - "render": "Named after {name:etymology}" - }, - "street-name-sign-image": { - "render": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Add image of a street name sign)}" - }, - "wikipedia-etymology": { - "question": "What is the Wikidata-item that this object is named after?", - "render": "

Wikipedia article of the name giver

{wikipedia(name:etymology:wikidata):max-height:20rem}" - }, - "zoeken op inventaris onroerend erfgoed": { - "render": "Search on inventaris onroerend erfgoed" - } - } - }, - "food": { - "filter": { - "0": { - "options": { - "0": { - "question": "Opened now" - } - } - }, - "1": { - "options": { - "0": { - "question": "Has a vegetarian menu" - } - } - }, - "2": { - "options": { - "0": { - "question": "Has a vegan menu" - } - } - }, - "3": { - "options": { - "0": { - "question": "Has a halal menu" - } - } - } - }, - "name": "Restaurants and fast food", - "presets": { - "0": { - "description": "A formal eating place with sit-down facilities selling full meals served by waiters", - "title": "restaurant" - }, - "1": { - "description": "A food business concentrating on fast counter-only service and take-away food", - "title": "fastfood" - }, - "2": { - "title": "fries shop" - } - }, - "tagRenderings": { - "Cuisine": { - "mappings": { - "0": { - "then": "This is a pizzeria" - }, - "1": { - "then": "This is a friture" - }, - "2": { - "then": "Mainly serves pasta" - } - }, - "question": "Which food is served here?", - "render": "This place mostly serves {cuisine}" - }, - "Fastfood vs restaurant": { - "question": "What type of business is this?" - }, - "Name": { - "question": "What is the name of this restaurant?", - "render": "The name of this restaurant is {name}" - }, - "Takeaway": { - "mappings": { - "0": { - "then": "This is a take-away only business" - }, - "1": { - "then": "Take-away is possible here" - }, - "2": { - "then": "Take-away is not possible here" - } - }, - "question": "Does this place offer takea-way?" - }, - "Vegetarian (no friture)": { - "question": "Does this restaurant have a vegetarian option?" - }, - "friture-take-your-container": { - "mappings": { - "0": { - "then": "You can bring your own containers to get your order, saving on single-use packaging material and thus waste" - }, - "1": { - "then": "Bringing your own container is not allowed" - }, - "2": { - "then": "You must bring your own container to order here." - } - }, - "question": "If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
" - }, - "halal (no friture)": { - "mappings": { - "0": { - "then": "There are no halal options available" - }, - "1": { - "then": "There is a small halal menu" - }, - "2": { - "then": "There is a halal menu" - }, - "3": { - "then": "Only halal options are available" - } - }, - "question": "Does this restaurant offer a halal menu?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Restaurant {name}" - }, - "1": { - "then": "Fastfood {name}" - } - } - } - }, - "ghost_bike": { - "name": "Ghost bikes", - "presets": { - "0": { - "title": "Ghost bike" - } - }, - "tagRenderings": { - "ghost-bike-explanation": { - "render": "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." - }, - "ghost_bike-inscription": { - "question": "What is the inscription on this Ghost bike?", - "render": "{inscription}" - }, - "ghost_bike-name": { - "mappings": { - "0": { - "then": "No name is marked on the bike" - } - }, - "question": "Whom is remembered by this ghost bike?
Please respect privacy - only fill out the name if it is widely published or marked on the cycle. Opt to leave out the family name.
", - "render": "In remembrance of {name}" - }, - "ghost_bike-source": { - "question": "On what webpage can one find more information about the Ghost bike or the accident?", - "render": "More information is available" - }, - "ghost_bike-start_date": { - "question": "When was this Ghost bike installed?", - "render": "Placed on {start_date}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Ghost bike in the remembrance of {name}" - } - }, - "render": "Ghost bike" - } - }, - "information_board": { - "name": "Information boards", - "presets": { - "0": { - "title": "information board" - } - }, - "title": { - "render": "Information board" - } - }, - "map": { - "description": "A map, meant for tourists which is permanently installed in the public space", - "name": "Maps", - "presets": { - "0": { - "description": "Add a missing map", - "title": "Map" - } - }, - "tagRenderings": { - "map-attribution": { - "mappings": { - "0": { - "then": "OpenStreetMap is clearly attributed, including the ODBL-license" - }, - "1": { - "then": "OpenStreetMap is clearly attributed, but the license is not mentioned" - }, - "2": { - "then": "OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it" - }, - "3": { - "then": "There is no attribution at all" - }, - "4": { - "then": "There is no attribution at all" - } - }, - "question": "Is the OpenStreetMap-attribution given?" - }, - "map-map_source": { - "mappings": { - "0": { - "then": "This map is based on OpenStreetMap" - } - }, - "question": "On which data is this map based?", - "render": "This map is based on {map_source}" - } - }, - "title": { - "render": "Map" - } - }, - "nature_reserve": { - "tagRenderings": { - "Curator": { - "question": "Whom is the curator of this nature reserve?
Respect privacy - only fill out a name if this is widely published", - "render": "{curator} is the curator of this nature reserve" - }, - "Dogs?": { - "mappings": { - "0": { - "then": "Dogs have to be leashed" - }, - "1": { - "then": "No dogs allowed" - }, - "2": { - "then": "Dogs are allowed to roam freely" - } - }, - "question": "Are dogs allowed in this nature reserve?" - }, - "Email": { - "question": "What email adress can one send to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal email address if this is widely published", - "render": "{email}" - }, - "Surface area": { - "render": "Surface area: {_surface:ha}Ha" - }, - "Website": { - "question": "On which webpage can one find more information about this nature reserve?" - }, - "phone": { - "question": "What phone number can one call to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal phone number address if this is widely published", - "render": "{phone}" - } - } - }, - "observation_tower": { - "description": "Towers with a panoramic view", - "name": "Observation towers", - "presets": { - "0": { - "title": "observation tower" - } - }, - "tagRenderings": { - "Fee": { - "mappings": { - "0": { - "then": "Free to visit" - } - }, - "question": "How much does one have to pay to enter this tower?", - "render": "Visiting this tower costs {charge}" - }, - "Height": { - "question": "What is the height of this tower?", - "render": "This tower is {height} high" - }, - "Operator": { - "question": "Who maintains this tower?", - "render": "Maintained by {operator}" - }, - "name": { - "mappings": { - "0": { - "then": "This tower doesn't have a specific name" - } - }, - "question": "What is the name of this tower?", - "render": "This tower is called {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Observation tower" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " meter" - } - } - } - } - }, - "picnic_table": { - "description": "The layer showing picnic tables", - "name": "Picnic tables", - "presets": { - "0": { - "title": "picnic table" - } - }, - "tagRenderings": { - "picnic_table-material": { - "mappings": { - "0": { - "then": "This is a wooden picnic table" - }, - "1": { - "then": "This is a concrete picnic table" - } - }, - "question": "What material is this picnic table made of?", - "render": "This picnic table is made of {material}" - } - }, - "title": { - "render": "Picnic table" - } - }, - "playground": { - "description": "Playgrounds", - "name": "Playgrounds", - "presets": { - "0": { - "title": "Playground" - } - }, - "tagRenderings": { - "Playground-wheelchair": { - "mappings": { - "0": { - "then": "Completely accessible for wheelchair users" - }, - "1": { - "then": "Limited accessibility for wheelchair users" - }, - "2": { - "then": "Not accessible for wheelchair users" - } - }, - "question": "Is this playground accessible to wheelchair users?" - }, - "playground-access": { - "mappings": { - "0": { - "then": "Accessible to the general public" - }, - "1": { - "then": "Accessible to the general public" - }, - "2": { - "then": "Only accessible for clients of the operating business" - }, - "3": { - "then": "Only accessible to students of the school" - }, - "4": { - "then": "Not accessible" - } - }, - "question": "Is this playground accessible to the general public?" - }, - "playground-email": { - "question": "What is the email address of the playground maintainer?", - "render": "{email}" - }, - "playground-lit": { - "mappings": { - "0": { - "then": "This playground is lit at night" - }, - "1": { - "then": "This playground is not lit at night" - } - }, - "question": "Is this playground lit at night?" - }, - "playground-max_age": { - "question": "What is the maximum age allowed to access this playground?", - "render": "Accessible to kids of at most {max_age}" - }, - "playground-min_age": { - "question": "What is the minimum age required to access this playground?", - "render": "Accessible to kids older than {min_age} years" - }, - "playground-opening_hours": { - "mappings": { - "0": { - "then": "Accessible from sunrise till sunset" - }, - "1": { - "then": "Always accessible" - }, - "2": { - "then": "Always accessible" - } - }, - "question": "When is this playground accessible?" - }, - "playground-operator": { - "question": "Who operates this playground?", - "render": "Operated by {operator}" - }, - "playground-phone": { - "question": "What is the phone number of the playground maintainer?", - "render": "{phone}" - }, - "playground-surface": { - "mappings": { - "0": { - "then": "The surface is grass" - }, - "1": { - "then": "The surface is sand" - }, - "2": { - "then": "The surface consist of woodchips" - }, - "3": { - "then": "The surface is paving stones" - }, - "4": { - "then": "The surface is asphalt" - }, - "5": { - "then": "The surface is concrete" - }, - "6": { - "then": "The surface is unpaved" - }, - "7": { - "then": "The surface is paved" - } - }, - "question": "Which is the surface of this playground?
If there are multiple, select the most occuring one", - "render": "The surface is {surface}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Playground {name}" - } - }, - "render": "Playground" - } - }, - "public_bookcase": { - "description": "A streetside cabinet with books, accessible to anyone", - "filter": { - "2": { - "options": { - "0": { - "question": "Indoor or outdoor" - } - } - } - }, - "name": "Bookcases", - "presets": { - "0": { - "title": "Bookcase" - } - }, - "tagRenderings": { - "bookcase-booktypes": { - "mappings": { - "0": { - "then": "Mostly children books" - }, - "1": { - "then": "Mostly books for adults" - }, - "2": { - "then": "Both books for kids and adults" - } - }, - "question": "What kind of books can be found in this public bookcase?" - }, - "bookcase-is-accessible": { - "mappings": { - "0": { - "then": "Publicly accessible" - }, - "1": { - "then": "Only accessible to customers" - } - }, - "question": "Is this public bookcase freely accessible?" - }, - "bookcase-is-indoors": { - "mappings": { - "0": { - "then": "This bookcase is located indoors" - }, - "1": { - "then": "This bookcase is located outdoors" - }, - "2": { - "then": "This bookcase is located outdoors" - } - }, - "question": "Is this bookcase located outdoors?" - }, - "public_bookcase-brand": { - "mappings": { - "0": { - "then": "Part of the network 'Little Free Library'" - }, - "1": { - "then": "This public bookcase is not part of a bigger network" - } - }, - "question": "Is this public bookcase part of a bigger network?", - "render": "This public bookcase is part of {brand}" - }, - "public_bookcase-capacity": { - "question": "How many books fit into this public bookcase?", - "render": "{capacity} books fit in this bookcase" - }, - "public_bookcase-name": { - "mappings": { - "0": { - "then": "This bookcase doesn't have a name" - } - }, - "question": "What is the name of this public bookcase?", - "render": "The name of this bookcase is {name}" - }, - "public_bookcase-operator": { - "question": "Who maintains this public bookcase?", - "render": "Operated by {operator}" - }, - "public_bookcase-ref": { - "mappings": { - "0": { - "then": "This bookcase is not part of a bigger network" - } - }, - "question": "What is the reference number of this public bookcase?", - "render": "The reference number of this public bookcase within {brand} is {ref}" - }, - "public_bookcase-start_date": { - "question": "When was this public bookcase installed?", - "render": "Installed on {start_date}" - }, - "public_bookcase-website": { - "question": "Is there a website with more information about this public bookcase?", - "render": "More info on the website" - } - }, - "title": { - "mappings": { - "0": { - "then": "Public bookcase {name}" - } - }, - "render": "Bookcase" - } - }, - "shops": { - "description": "A shop", - "name": "Shop", - "presets": { - "0": { - "description": "Add a new shop", - "title": "Shop" - } - }, - "tagRenderings": { - "shops-email": { - "question": "What is the email address of this shop?", - "render": "{email}" - }, - "shops-name": { - "question": "What is the name of this shop?" - }, - "shops-opening_hours": { - "question": "What are the opening hours of this shop?", - "render": "{opening_hours_table(opening_hours)}" - }, - "shops-phone": { - "question": "What is the phone number?", - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "0": { - "then": "Convenience store" - }, - "1": { - "then": "Supermarket" - }, - "2": { - "then": "Clothing store" - }, - "3": { - "then": "Hairdresser" - }, - "4": { - "then": "Bakery" - }, - "5": { - "then": "Car repair (garage)" - }, - "6": { - "then": "Car dealer" - } - }, - "question": "What does this shop sell?", - "render": "This shop sells {shop}" - }, - "shops-website": { - "question": "What is the website of this shop?", - "render": "{website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "{shop}" - } - }, - "render": "Shop" - } - }, - "slow_roads": { - "tagRenderings": { - "slow_roads-surface": { - "mappings": { - "0": { - "then": "The surface is grass" - }, - "1": { - "then": "The surface is ground" - }, - "2": { - "then": "The surface is unpaved" - }, - "3": { - "then": "The surface is sand" - }, - "4": { - "then": "The surface is paving stones" - }, - "5": { - "then": "The surface is asphalt" - }, - "6": { - "then": "The surface is concrete" - }, - "7": { - "then": "The surface is paved" - } - }, - "render": "The surface is {surface}" - } - } - }, - "sport_pitch": { - "description": "A sport pitch", - "name": "Sport pitches", - "presets": { - "0": { - "title": "Tabletennis table" - }, - "1": { - "title": "Sport pitch" - } - }, - "tagRenderings": { - "sport-pitch-access": { - "mappings": { - "0": { - "then": "Public access" - }, - "1": { - "then": "Limited access (e.g. only with an appointment, during certain hours, ...)" - }, - "2": { - "then": "Only accessible for members of the club" - }, - "3": { - "then": "Private - not accessible to the public" - } - }, - "question": "Is this sport pitch publicly accessible?" - }, - "sport-pitch-reservation": { - "mappings": { - "0": { - "then": "Making an appointment is obligatory to use this sport pitch" - }, - "1": { - "then": "Making an appointment is recommended when using this sport pitch" - }, - "2": { - "then": "Making an appointment is possible, but not necessary to use this sport pitch" - }, - "3": { - "then": "Making an appointment is not possible" - } - }, - "question": "Does one have to make an appointment to use this sport pitch?" - }, - "sport_pitch-email": { - "question": "What is the email address of the operator?" - }, - "sport_pitch-opening_hours": { - "mappings": { - "1": { - "then": "Always accessible" - } - }, - "question": "When is this pitch accessible?" - }, - "sport_pitch-phone": { - "question": "What is the phone number of the operator?" - }, - "sport_pitch-sport": { - "mappings": { - "0": { - "then": "Basketball is played here" - }, - "1": { - "then": "Soccer is played here" - }, - "2": { - "then": "This is a pingpong table" - }, - "3": { - "then": "Tennis is played here" - }, - "4": { - "then": "Korfball is played here" - }, - "5": { - "then": "Basketball is played here" - } - }, - "question": "Which sport can be played here?", - "render": "{sport} is played here" - }, - "sport_pitch-surface": { - "mappings": { - "0": { - "then": "The surface is grass" - }, - "1": { - "then": "The surface is sand" - }, - "2": { - "then": "The surface is paving stones" - }, - "3": { - "then": "The surface is asphalt" - }, - "4": { - "then": "The surface is concrete" - } - }, - "question": "Which is the surface of this sport pitch?", - "render": "The surface is {surface}" - } - }, - "title": { - "render": "Sport pitch" - } - }, - "street_lamps": { - "name": "Street Lamps", - "presets": { - "0": { - "title": "street lamp" - } - }, - "tagRenderings": { - "colour": { - "mappings": { - "0": { - "then": "This lamp emits white light" - }, - "1": { - "then": "This lamp emits green light" - }, - "2": { - "then": "This lamp emits orange light" - } - }, - "question": "What colour light does this lamp emit?", - "render": "This lamp emits {light:colour} light" - }, - "count": { - "mappings": { - "0": { - "then": "This lamp has 1 fixture" - }, - "1": { - "then": "This lamp has 2 fixtures" - } - }, - "question": "How many fixtures does this light have?", - "render": "This lamp has {light:count} fixtures" - }, - "direction": { - "question": "Where does this lamp point to?", - "render": "This lamp points towards {light:direction}" - }, - "lamp_mount": { - "mappings": { - "0": { - "then": "This lamp sits atop of a straight mast" - }, - "1": { - "then": "This lamp sits at the end of a bent mast" - } - }, - "question": "How is this lamp mounted to the pole?" - }, - "lit": { - "mappings": { - "0": { - "then": "This lamp is lit at night" - }, - "1": { - "then": "This lamp is lit 24/7" - }, - "2": { - "then": "This lamp is lit based on motion" - }, - "3": { - "then": "This lamp is lit based on demand (e.g. with a pushbutton)" - } - }, - "question": "When is this lamp lit?" - }, - "method": { - "mappings": { - "0": { - "then": "This lamp is lit electrically" - }, - "1": { - "then": "This lamp uses LEDs" - }, - "2": { - "then": "This lamp uses incandescent lighting" - }, - "3": { - "then": "This lamp uses halogen lighting" - }, - "4": { - "then": "This lamp uses discharge lamps (unknown type)" - }, - "5": { - "then": "This lamp uses a mercury-vapour lamp (lightly blueish)" - }, - "6": { - "then": "This lamp uses metal-halide lamps (bright white)" - }, - "7": { - "then": "This lamp uses fluorescent lighting" - }, - "8": { - "then": "This lamp uses sodium lamps (unknown type)" - }, - "9": { - "then": "This lamp uses low pressure sodium lamps (monochrome orange)" - }, - "10": { - "then": "This lamp uses high pressure sodium lamps (orange with white)" - }, - "11": { - "then": "This lamp is lit using gas" - } - }, - "question": "What kind of lighting does this lamp use?" - }, - "ref": { - "question": "What is the reference number of this street lamp?", - "render": "This street lamp has the reference number {ref}" - }, - "support": { - "mappings": { - "0": { - "then": "This lamp is suspended using cables" - }, - "1": { - "then": "This lamp is mounted on a ceiling" - }, - "2": { - "then": "This lamp is mounted in the ground" - }, - "3": { - "then": "This lamp is mounted on a short pole (mostly < 1.5m)" - }, - "4": { - "then": "This lamp is mounted on a pole" - }, - "5": { - "then": "This lamp is mounted directly to the wall" - }, - "6": { - "then": "This lamp is mounted to the wall using a metal bar" - } - }, - "question": "How is this street lamp mounted?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Street Lamp {ref}" - } - }, - "render": "Street Lamp" - } - }, - "surveillance_camera": { - "name": "Surveillance camera's", - "tagRenderings": { - "Camera type: fixed; panning; dome": { - "mappings": { - "0": { - "then": "A fixed (non-moving) camera" - }, - "1": { - "then": "A dome camera (which can turn)" - }, - "2": { - "then": "A panning camera" - } - }, - "question": "What kind of camera is this?" - }, - "Indoor camera? This isn't clear for 'public'-cameras": { - "mappings": { - "0": { - "then": "This camera is located indoors" - }, - "1": { - "then": "This camera is located outdoors" - }, - "2": { - "then": "This camera is probably located outdoors" - } - }, - "question": "Is the public space surveilled by this camera an indoor or outdoor space?" - }, - "Level": { - "question": "On which level is this camera located?", - "render": "Located on level {level}" - }, - "Operator": { - "question": "Who operates this CCTV?", - "render": "Operated by {operator}" - }, - "Surveillance type: public, outdoor, indoor": { - "mappings": { - "0": { - "then": "A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel,..." - }, - "1": { - "then": "An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, ...)" - }, - "2": { - "then": "A private indoor area is surveilled, e.g. a shop, a private underground parking, ..." - } - }, - "question": "What kind of surveillance is this camera" - }, - "Surveillance:zone": { - "mappings": { - "0": { - "then": "Surveills a parking" - }, - "1": { - "then": "Surveills the traffic" - }, - "2": { - "then": "Surveills an entrance" - }, - "3": { - "then": "Surveills a corridor" - }, - "4": { - "then": "Surveills a public tranport platform" - }, - "5": { - "then": "Surveills a shop" - } - }, - "question": "What exactly is surveilled here?", - "render": " Surveills a {surveillance:zone}" - }, - "camera:mount": { - "mappings": { - "0": { - "then": "This camera is placed against a wall" - }, - "1": { - "then": "This camera is placed one a pole" - }, - "2": { - "then": "This camera is placed on the ceiling" - } - }, - "question": "How is this camera placed?", - "render": "Mounting method: {mount}" - }, - "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { - "mappings": { - "0": { - "then": "Films to a compass heading of {direction}" - } - }, - "question": "In which geographical direction does this camera film?", - "render": "Films to a compass heading of {camera:direction}" - } - }, - "title": { - "render": "Surveillance Camera" - } - }, - "toilet": { - "filter": { - "0": { - "options": { - "0": { - "question": "Wheelchair accessible" - } - } - }, - "1": { - "options": { - "0": { - "question": "Has a changing table" - } - } - }, - "2": { - "options": { - "0": { - "question": "Free to use" - } - } - } - }, - "name": "Toilets", - "presets": { - "0": { - "description": "A publicly accessible toilet or restroom", - "title": "toilet" - }, - "1": { - "description": "A restroom which has at least one wheelchair-accessible toilet", - "title": "toilets with wheelchair accessible toilet" - } - }, - "tagRenderings": { - "toilet-access": { - "mappings": { - "0": { - "then": "Public access" - }, - "1": { - "then": "Only access to customers" - }, - "2": { - "then": "Not accessible" - }, - "3": { - "then": "Accessible, but one has to ask a key to enter" - }, - "4": { - "then": "Public access" - } - }, - "question": "Are these toilets publicly accessible?", - "render": "Access is {access}" - }, - "toilet-changing_table:location": { - "mappings": { - "0": { - "then": "The changing table is in the toilet for women. " - }, - "1": { - "then": "The changing table is in the toilet for men. " - }, - "2": { - "then": "The changing table is in the toilet for wheelchair users. " - }, - "3": { - "then": "The changing table is in a dedicated room. " - } - }, - "question": "Where is the changing table located?", - "render": "The changing table is located at {changing_table:location}" - }, - "toilet-charge": { - "question": "How much does one have to pay for these toilets?", - "render": "The fee is {charge}" - }, - "toilet-handwashing": { - "mappings": { - "0": { - "then": "This toilets have a sink to wash your hands" - }, - "1": { - "then": "This toilets don't have a sink to wash your hands" - } - }, - "question": "Do these toilets have a sink to wash your hands?" - }, - "toilet-has-paper": { - "mappings": { - "0": { - "then": "Toilet paper is equipped with toilet paper" - }, - "1": { - "then": "You have to bring your own toilet paper to this toilet" - } - }, - "question": "Does one have to bring their own toilet paper to this toilet?" - }, - "toilets-changing-table": { - "mappings": { - "0": { - "then": "A changing table is available" - }, - "1": { - "then": "No changing table is available" - } - }, - "question": "Is a changing table (to change diapers) available?" - }, - "toilets-fee": { - "mappings": { - "0": { - "then": "These are paid toilets" - }, - "1": { - "then": "Free to use" - } - }, - "question": "Are these toilets free to use?" - }, - "toilets-type": { - "mappings": { - "0": { - "then": "There are only seated toilets" - }, - "1": { - "then": "There are only urinals here" - }, - "2": { - "then": "There are only squat toilets here" - }, - "3": { - "then": "Both seated toilets and urinals are available here" - } - }, - "question": "Which kind of toilets are this?" - }, - "toilets-wheelchair": { - "mappings": { - "0": { - "then": "There is a dedicated toilet for wheelchair users" - }, - "1": { - "then": "No wheelchair access" - } - }, - "question": "Is there a dedicated toilet for wheelchair users" - } - }, - "title": { - "render": "Toilet" - } - }, - "trail": { - "name": "Trails", - "tagRenderings": { - "Color": { - "mappings": { - "0": { - "then": "Blue trail" - }, - "1": { - "then": "Red trail" - }, - "2": { - "then": "Green trail" - }, - "3": { - "then": "Yellow trail" - } - } - }, - "trail-length": { - "render": "The trail is {_length:km} kilometers long" - } - }, - "title": { - "render": "Trail" - } - }, - "tree_node": { - "name": "Tree", - "presets": { - "0": { - "description": "A tree of a species with leaves, such as oak or populus.", - "title": "Broadleaved tree" - }, - "1": { - "description": "A tree of a species with needles, such as pine or spruce.", - "title": "Needleleaved tree" - }, - "2": { - "description": "If you're not sure whether it's a broadleaved or needleleaved tree.", - "title": "Tree" - } - }, - "tagRenderings": { - "tree-decidouous": { - "mappings": { - "0": { - "then": "Deciduous: the tree loses its leaves for some time of the year." - }, - "1": { - "then": "Evergreen." - } - }, - "question": "Is this tree evergreen or deciduous?" - }, - "tree-denotation": { - "mappings": { - "0": { - "then": "The tree is remarkable due to its size or prominent location. It is useful for navigation." - }, - "1": { - "then": "The tree is a natural monument, e.g. because it is especially old, or of a valuable species." - }, - "2": { - "then": "The tree is used for agricultural purposes, e.g. in an orchard." - }, - "3": { - "then": "The tree is in a park or similar (cemetery, school grounds, â€Ļ)." - }, - "4": { - "then": "The tree is a residential garden." - }, - "5": { - "then": "This is a tree along an avenue." - }, - "6": { - "then": "The tree is an urban area." - }, - "7": { - "then": "The tree is outside of an urban area." - } - }, - "question": "How significant is this tree? Choose the first answer that applies." - }, - "tree-height": { - "mappings": { - "0": { - "then": "Height: {height} m" - } - }, - "render": "Height: {height}" - }, - "tree-heritage": { - "mappings": { - "0": { - "then": "\"\"/ Registered as heritage by Onroerend Erfgoed Flanders" - }, - "1": { - "then": "Registered as heritage by Direction du Patrimoine culturel Brussels" - }, - "2": { - "then": "Registered as heritage by a different organisation" - }, - "3": { - "then": "Not registered as heritage" - }, - "4": { - "then": "Registered as heritage by a different organisation" - } - }, - "question": "Is this tree registered heritage?" - }, - "tree-leaf_type": { - "mappings": { - "0": { - "then": "\"\"/ Broadleaved" - }, - "1": { - "then": "\"\"/ Needleleaved" - }, - "2": { - "then": "\"\"/ Permanently leafless" - } - }, - "question": "Is this a broadleaved or needleleaved tree?" - }, - "tree_node-name": { - "mappings": { - "0": { - "then": "The tree does not have a name." - } - }, - "question": "Does the tree have a name?", - "render": "Name: {name}" - }, - "tree_node-ref:OnroerendErfgoed": { - "question": "What is the ID issued by Onroerend Erfgoed Flanders?", - "render": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}" - }, - "tree_node-wikidata": { - "question": "What is the Wikidata ID for this tree?", - "render": "\"\"/ Wikidata: {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Tree" - } - }, - "viewpoint": { - "description": "A nice viewpoint or nice view. Ideal to add an image if no other category fits", - "name": "Viewpoint", - "presets": { - "0": { - "title": "Viewpoint" - } - }, - "tagRenderings": { - "viewpoint-description": { - "question": "Do you want to add a description?" - } - }, - "title": { - "render": "Viewpoint" - } - }, - "visitor_information_centre": { - "description": "A visitor center offers information about a specific attraction or place of interest where it is located.", - "name": "Visitor Information Centre", - "title": { - "mappings": { - "1": { - "then": "{name}" - } - }, - "render": "{name}" - } - }, - "waste_basket": { - "description": "This is a public waste basket, thrash can, where you can throw away your thrash.", - "iconSize": { - "mappings": { - "0": { - "then": "Waste Basket" - } - } - }, - "mapRendering": { - "0": { - "iconSize": { - "mappings": { - "0": { - "then": "Waste Basket" - } - } - } - } - }, - "name": "Waste Basket", - "presets": { - "0": { - "title": "Waste Basket" - } - }, - "tagRenderings": { - "dispensing_dog_bags": { - "mappings": { - "0": { - "then": "This waste basket has a dispenser for (dog) excrement bags" - }, - "1": { - "then": "This waste basket does not have a dispenser for (dog) excrement bags" - }, - "2": { - "then": "This waste basket does not have a dispenser for (dog) excrement bags" - } - }, - "question": "Does this waste basket have a dispenser for dog excrement bags?" - }, - "waste-basket-waste-types": { - "mappings": { - "0": { - "then": "A waste basket for general waste" - }, - "1": { - "then": "A waste basket for general waste" - }, - "2": { - "then": "A waste basket for dog excrements" - }, - "3": { - "then": "A waste basket for cigarettes" - }, - "4": { - "then": "A waste basket for drugs" - }, - "5": { - "then": "A waste basket for needles and other sharp objects" - } - }, - "question": "What kind of waste basket is this?" - } - }, - "title": { - "render": "Waste Basket" - } - }, - "watermill": { - "name": "Watermill" + }, + "render": "Artwork" } + }, + "barrier": { + "description": "Obstacles while cycling, such as bollards and cycle barriers", + "name": "Barriers", + "presets": { + "0": { + "description": "A bollard in the road", + "title": "Bollard" + }, + "1": { + "description": "Cycle barrier, slowing down cyclists", + "title": "Cycle barrier" + } + }, + "tagRenderings": { + "Bollard type": { + "mappings": { + "0": { + "then": "Removable bollard" + }, + "1": { + "then": "Fixed bollard" + }, + "2": { + "then": "Bollard that can be folded down" + }, + "3": { + "then": "Flexible bollard, usually plastic" + }, + "4": { + "then": "Rising bollard" + } + }, + "question": "What kind of bollard is this?" + }, + "Cycle barrier type": { + "mappings": { + "0": { + "then": "Single, just two barriers with a space inbetween " + }, + "1": { + "then": "Double, two barriers behind each other " + }, + "2": { + "then": "Triple, three barriers behind each other " + }, + "3": { + "then": "Squeeze gate, gap is smaller at top, than at the bottom " + } + }, + "question": "What kind of cycling barrier is this?" + }, + "MaxWidth": { + "question": "How wide is the gap left over besides the barrier?", + "render": "Maximum width: {maxwidth:physical} m" + }, + "Overlap (cyclebarrier)": { + "question": "How much overlap do the barriers have?", + "render": "Overlap: {overlap} m" + }, + "Space between barrier (cyclebarrier)": { + "question": "How much space is there between the barriers (along the length of the road)?", + "render": "Space between barriers (along the length of the road): {width:separation} m" + }, + "Width of opening (cyclebarrier)": { + "question": "How wide is the smallest opening next to the barriers?", + "render": "Width of opening: {width:opening} m" + }, + "bicycle=yes/no": { + "mappings": { + "0": { + "then": "A cyclist can go past this." + }, + "1": { + "then": "A cyclist can not go past this." + } + }, + "question": "Can a bicycle go past this barrier?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Bollard" + }, + "1": { + "then": "Cycling Barrier" + } + }, + "render": "Barrier" + } + }, + "bench": { + "name": "Benches", + "presets": { + "0": { + "title": "bench" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Backrest: Yes" + }, + "1": { + "then": "Backrest: No" + } + }, + "question": "Does this bench have a backrest?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Colour: brown" + }, + "1": { + "then": "Colour: green" + }, + "2": { + "then": "Colour: gray" + }, + "3": { + "then": "Colour: white" + }, + "4": { + "then": "Colour: red" + }, + "5": { + "then": "Colour: black" + }, + "6": { + "then": "Colour: blue" + }, + "7": { + "then": "Colour: yellow" + } + }, + "question": "Which colour does this bench have?", + "render": "Colour: {colour}" + }, + "bench-direction": { + "question": "In which direction are you looking when sitting on the bench?", + "render": "When sitting on the bench, one looks towards {direction}°." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Material: wood" + }, + "1": { + "then": "Material: metal" + }, + "2": { + "then": "Material: stone" + }, + "3": { + "then": "Material: concrete" + }, + "4": { + "then": "Material: plastic" + }, + "5": { + "then": "Material: steel" + } + }, + "question": "What is the bench (seating) made from?", + "render": "Material: {material}" + }, + "bench-seats": { + "question": "How many seats does this bench have?", + "render": "{seats} seats" + }, + "bench-survey:date": { + "question": "When was this bench last surveyed?", + "render": "This bench was last surveyed on {survey:date}" + } + }, + "title": { + "render": "Bench" + } + }, + "bench_at_pt": { + "name": "Benches at public transport stops", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "0": { + "then": "There is a normal, sit-down bench here" + }, + "1": { + "then": "Stand up bench" + }, + "2": { + "then": "There is no bench here" + } + }, + "question": "What kind of bench is this?" + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Bench at public transport stop" + }, + "1": { + "then": "Bench in shelter" + } + }, + "render": "Bench" + } + }, + "bicycle_library": { + "description": "A facility where bicycles can be lent for longer period of times", + "name": "Bicycle library", + "presets": { + "0": { + "description": "A bicycle library has a collection of bikes which can be lent", + "title": "Fietsbibliotheek" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "Bikes for children available" + }, + "1": { + "then": "Bikes for adult available" + }, + "2": { + "then": "Bikes for disabled persons available" + } + }, + "question": "Who can lend bicycles here?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "Lending a bicycle is free" + }, + "1": { + "then": "Lending a bicycle costs â‚Ŧ20/year and â‚Ŧ20 warranty" + } + }, + "question": "How much does lending a bicycle cost?", + "render": "Lending a bicycle costs {charge}" + }, + "bicycle_library-name": { + "question": "What is the name of this bicycle library?", + "render": "This bicycle library is called {name}" + } + }, + "title": { + "render": "Bicycle library" + } + }, + "bicycle_tube_vending_machine": { + "name": "Bicycle tube vending machine", + "presets": { + "0": { + "title": "Bicycle tube vending machine" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "This vending machine works" + }, + "1": { + "then": "This vending machine is broken" + }, + "2": { + "then": "This vending machine is closed" + } + }, + "question": "Is this vending machine still operational?", + "render": "The operational status is {operational_status}" + } + }, + "title": { + "render": "Bicycle tube vending machine" + } + }, + "bike_cafe": { + "name": "Bike cafe", + "presets": { + "0": { + "title": "Bike cafe" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "This bike cafe offers a bike pump for anyone" + }, + "1": { + "then": "This bike cafe doesn't offer a bike pump for anyone" + } + }, + "question": "Does this bike cafe offer a bike pump for use by anyone?" + }, + "bike_cafe-email": { + "question": "What is the email address of {name}?" + }, + "bike_cafe-name": { + "question": "What is the name of this bike cafe?", + "render": "This bike cafe is called {name}" + }, + "bike_cafe-opening_hours": { + "question": "When it this bike cafÊ opened?" + }, + "bike_cafe-phone": { + "question": "What is the phone number of {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "This bike cafe repairs bikes" + }, + "1": { + "then": "This bike cafe doesn't repair bikes" + } + }, + "question": "Does this bike cafe repair bikes?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "This bike cafe offers tools for DIY repair" + }, + "1": { + "then": "This bike cafe doesn't offer tools for DIY repair" + } + }, + "question": "Are there tools here to repair your own bike?" + }, + "bike_cafe-website": { + "question": "What is the website of {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Bike cafe {name}" + } + }, + "render": "Bike cafe" + } + }, + "bike_cleaning": { + "name": "Bike cleaning service", + "presets": { + "0": { + "title": "Bike cleaning service" + } + }, + "tagRenderings": { + "bike_cleaning-charge": { + "mappings": { + "0": { + "then": "Free to use cleaning service" + }, + "1": { + "then": "Free to use" + }, + "2": { + "then": "The cleaning service has a fee" + } + }, + "question": "How much does it cost to use the cleaning service?", + "render": "Using the cleaning service costs {charge}" + }, + "bike_cleaning-service:bicycle:cleaning:charge": { + "mappings": { + "0": { + "then": "The cleaning service is free to use" + }, + "1": { + "then": "Free to use" + }, + "2": { + "then": "The cleaning service has a fee, but the amount is not known" + } + }, + "question": "How much does it cost to use the cleaning service?", + "render": "Using the cleaning service costs {service:bicycle:cleaning:charge}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Bike cleaning service {name}" + } + }, + "render": "Bike cleaning service" + } + }, + "bike_parking": { + "name": "Bike parking", + "presets": { + "0": { + "title": "Bike parking" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "Publicly accessible" + }, + "1": { + "then": "Access is primarily for visitors to a business" + }, + "2": { + "then": "Access is limited to members of a school, company or organisation" + } + }, + "question": "Who can use this bicycle parking?", + "render": "{access}" + }, + "Bicycle parking type": { + "mappings": { + "0": { + "then": "Staple racks " + }, + "1": { + "then": "Wheel rack/loops " + }, + "2": { + "then": "Handlebar holder " + }, + "3": { + "then": "Rack " + }, + "4": { + "then": "Two-tiered " + }, + "5": { + "then": "Shed " + }, + "6": { + "then": "Bollard " + }, + "7": { + "then": "An area on the floor which is marked for bicycle parking" + } + }, + "question": "What is the type of this bicycle parking?", + "render": "This is a bicycle parking of the type: {bicycle_parking}" + }, + "Capacity": { + "question": "How many bicycles fit in this bicycle parking (including possible cargo bicycles)?", + "render": "Place for {capacity} bikes" + }, + "Cargo bike capacity?": { + "question": "How many cargo bicycles fit in this bicycle parking?", + "render": "This parking fits {capacity:cargo_bike} cargo bikes" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "This parking has room for cargo bikes" + }, + "1": { + "then": "This parking has designated (official) spots for cargo bikes." + }, + "2": { + "then": "You're not allowed to park cargo bikes" + } + }, + "question": "Does this bicycle parking have spots for cargo bikes?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "This parking is covered (it has a roof)" + }, + "1": { + "then": "This parking is not covered" + } + }, + "question": "Is this parking covered? Also select \"covered\" for indoor parkings." + }, + "Underground?": { + "mappings": { + "0": { + "then": "Underground parking" + }, + "1": { + "then": "Surface level parking" + }, + "2": { + "then": "Rooftop parking" + }, + "3": { + "then": "Surface level parking" + }, + "4": { + "then": "Rooftop parking" + } + }, + "question": "What is the relative location of this bicycle parking?" + } + }, + "title": { + "render": "Bike parking" + } + }, + "bike_repair_station": { + "name": "Bike stations (repair, pump or both)", + "presets": { + "0": { + "description": "A device to inflate your tires on a fixed location in the public space.

Examples of bicycle pumps

", + "title": "Bike pump" + }, + "1": { + "description": "A device with tools to repair your bike combined with a pump at a fixed location. The tools are often secured with chains against theft.

Example

", + "title": "Bike repair station and pump" + }, + "2": { + "title": "Bike repair station without pump" + } + }, + "tagRenderings": { + "Email maintainer": { + "render": "Report this bicycle pump as broken" + }, + "Operational status": { + "mappings": { + "0": { + "then": "The bike pump is broken" + }, + "1": { + "then": "The bike pump is operational" + } + }, + "question": "Is the bike pump still operational?" + }, + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "There is only a pump present" + }, + "1": { + "then": "There are only tools (screwdrivers, pliers...) present" + }, + "2": { + "then": "There are both tools and a pump present" + } + }, + "question": "Which services are available at this bike station?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "There is a chain tool" + }, + "1": { + "then": "There is no chain tool" + } + }, + "question": "Does this bike repair station have a special tool to repair your bike chain?" + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "There is a hook or stand" + }, + "1": { + "then": "There is no hook or stand" + } + }, + "question": "Does this bike station have a hook to hang your bike on or a stand to raise it?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Manual pump" + }, + "1": { + "then": "Electrical pump" + } + }, + "question": "Is this an electric bike pump?" + }, + "bike_repair_station-email": { + "question": "What is the email address of the maintainer?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "There is a manometer" + }, + "1": { + "then": "There is no manometer" + }, + "2": { + "then": "There is manometer but it is broken" + } + }, + "question": "Does the pump have a pressure indicator or manometer?" + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "Always open" + }, + "1": { + "then": "Always open" + } + }, + "question": "When is this bicycle repair point open?" + }, + "bike_repair_station-operator": { + "question": "Who maintains this cycle pump?", + "render": "Maintained by {operator}" + }, + "bike_repair_station-phone": { + "question": "What is the phone number of the maintainer?" + }, + "bike_repair_station-valves": { + "mappings": { + "0": { + "then": "Sclaverand (also known as Presta)" + }, + "1": { + "then": "Dunlop" + }, + "2": { + "then": "Schrader (cars)" + } + }, + "question": "What valves are supported?", + "render": "This pump supports the following valves: {valves}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Bike repair station" + }, + "1": { + "then": "Bike repair station" + }, + "2": { + "then": "Broken pump" + }, + "3": { + "then": "Bicycle pump {name}" + }, + "4": { + "then": "Bicycle pump" + } + }, + "render": "Bike station (pump & repair)" + } + }, + "bike_shop": { + "description": "A shop specifically selling bicycles or related items", + "name": "Bike repair/shop", + "presets": { + "0": { + "title": "Bike repair/shop" + } + }, + "tagRenderings": { + "bike_repair_bike-pump-service": { + "mappings": { + "0": { + "then": "This shop offers a bike pump for anyone" + }, + "1": { + "then": "This shop doesn't offer a bike pump for anyone" + }, + "2": { + "then": "There is bicycle pump, it is shown as a separate point " + } + }, + "question": "Does this shop offer a bike pump for use by anyone?" + }, + "bike_repair_bike-wash": { + "mappings": { + "0": { + "then": "This shop cleans bicycles" + }, + "1": { + "then": "This shop has an installation where one can clean bicycles themselves" + }, + "2": { + "then": "This shop doesn't offer bicycle cleaning" + } + }, + "question": "Are bicycles washed here?" + }, + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "This shop rents out bikes" + }, + "1": { + "then": "This shop doesn't rent out bikes" + } + }, + "question": "Does this shop rent out bikes?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "This shop repairs bikes" + }, + "1": { + "then": "This shop doesn't repair bikes" + }, + "2": { + "then": "This shop only repairs bikes bought here" + }, + "3": { + "then": "This shop only repairs bikes of a certain brand" + } + }, + "question": "Does this shop repair bikes?" + }, + "bike_repair_second-hand-bikes": { + "mappings": { + "0": { + "then": "This shop sells second-hand bikes" + }, + "1": { + "then": "This shop doesn't sell second-hand bikes" + }, + "2": { + "then": "This shop only sells second-hand bikes" + } + }, + "question": "Does this shop sell second-hand bikes?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "This shop sells bikes" + }, + "1": { + "then": "This shop doesn't sell bikes" + } + }, + "question": "Does this shop sell bikes?" + }, + "bike_repair_tools-service": { + "mappings": { + "0": { + "then": "This shop offers tools for DIY repair" + }, + "1": { + "then": "This shop doesn't offer tools for DIY repair" + }, + "2": { + "then": "Tools for DIY repair are only available if you bought/hire the bike in the shop" + } + }, + "question": "Are there tools here to repair your own bike?" + }, + "bike_shop-email": { + "question": "What is the email address of {name}?" + }, + "bike_shop-is-bicycle_shop": { + "render": "This shop is specialized in selling {shop} and does bicycle related activities" + }, + "bike_shop-name": { + "question": "What is the name of this bicycle shop?", + "render": "This bicycle shop is called {name}" + }, + "bike_shop-phone": { + "question": "What is the phone number of {name}?" + }, + "bike_shop-website": { + "question": "What is the website of {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Sport gear shop {name}" + }, + "2": { + "then": "Bicycle rental {name}" + }, + "3": { + "then": "Bike repair {name}" + }, + "4": { + "then": "Bike shop {name}" + }, + "5": { + "then": "Bike repair/shop {name}" + } + }, + "render": "Bike repair/shop" + } + }, + "bike_themed_object": { + "name": "Bike related object", + "title": { + "mappings": { + "1": { + "then": "Cycle track" + } + }, + "render": "Bike related object" + } + }, + "binocular": { + "description": "Binoculas", + "name": "Binoculars", + "presets": { + "0": { + "description": "A telescope or pair of binoculars mounted on a pole, available to the public to look around. ", + "title": "binoculars" + } + }, + "tagRenderings": { + "binocular-charge": { + "mappings": { + "0": { + "then": "Free to use" + } + }, + "question": "How much does one have to pay to use these binoculars?", + "render": "Using these binoculars costs {charge}" + }, + "binocular-direction": { + "question": "When looking through this binocular, in what direction does one look?", + "render": "Looks towards {direction}°" + } + }, + "title": { + "render": "Binoculars" + } + }, + "birdhide": { + "filter": { + "0": { + "options": { + "0": { + "question": "Wheelchair accessible" + } + } + } + } + }, + "cafe_pub": { + "filter": { + "0": { + "options": { + "0": { + "question": "Opened now" + } + } + } + }, + "name": "CafÊs and pubs", + "presets": { + "0": { + "title": "pub" + }, + "1": { + "title": "bar" + }, + "2": { + "title": "cafe" + } + }, + "tagRenderings": { + "Classification": { + "question": "What kind of cafe is this" + }, + "Name": { + "question": "What is the name of this pub?", + "render": "This pub is named {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + } + } + }, + "charging_station": { + "description": "A charging station", + "filter": { + "0": { + "options": { + "0": { + "question": "All vehicle types" + }, + "1": { + "question": "Charging station for bicycles" + }, + "2": { + "question": "Charging station for cars" + } + } + }, + "1": { + "options": { + "0": { + "question": "Only working charging stations" + } + } + }, + "2": { + "options": { + "0": { + "question": "All connectors" + }, + "1": { + "question": "Has a
Schuko wall plug without ground pin (CEE7/4 type F)
connector" + }, + "2": { + "question": "Has a
European wall plug with ground pin (CEE7/4 type E)
connector" + }, + "3": { + "question": "Has a
Chademo
connector" + }, + "4": { + "question": "Has a
Type 1 with cable (J1772)
connector" + }, + "5": { + "question": "Has a
Type 1 without cable (J1772)
connector" + }, + "6": { + "question": "Has a
Type 1 CCS (aka Type 1 Combo)
connector" + }, + "7": { + "question": "Has a
Tesla Supercharger
connector" + }, + "8": { + "question": "Has a
Type 2 (mennekes)
connector" + }, + "9": { + "question": "Has a
Type 2 CCS (mennekes)
connector" + }, + "10": { + "question": "Has a
Type 2 with cable (mennekes)
connector" + }, + "11": { + "question": "Has a
Tesla Supercharger CCS (a branded type2_css)
connector" + }, + "12": { + "question": "Has a
Tesla Supercharger (destination)
connector" + }, + "13": { + "question": "Has a
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
connector" + }, + "14": { + "question": "Has a
USB to charge phones and small electronics
connector" + }, + "15": { + "question": "Has a
Bosch Active Connect with 3 pins and cable
connector" + }, + "16": { + "question": "Has a
Bosch Active Connect with 5 pins and cable
connector" + } + } + } + }, + "name": "Charging stations", + "presets": { + "0": { + "title": "charging station with a normal european wall plug (meant to charge electrical bikes)" + }, + "1": { + "title": "charging station for e-bikes" + }, + "2": { + "title": "charging station for cars" + }, + "3": { + "title": "charging station" + } + }, + "tagRenderings": { + "Auth phone": { + "question": "What's the phone number for authentication call or SMS?", + "render": "Authenticate by calling or SMS'ing to {authentication:phone_call:number}" + }, + "Authentication": { + "mappings": { + "0": { + "then": "Authentication by a membership card" + }, + "1": { + "then": "Authentication by an app" + }, + "2": { + "then": "Authentication via phone call is available" + }, + "3": { + "then": "Authentication via SMS is available" + }, + "4": { + "then": "Authentication via NFC is available" + }, + "5": { + "then": "Authentication via Money Card is available" + }, + "6": { + "then": "Authentication via debit card is available" + }, + "7": { + "then": "Charging here is (also) possible without authentication" + } + }, + "question": "What kind of authentication is available at the charging station?" + }, + "Available_charging_stations (generated)": { + "mappings": { + "0": { + "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
" + }, + "1": { + "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
" + }, + "2": { + "then": "
European wall plug with ground pin (CEE7/4 type E)
" + }, + "3": { + "then": "
European wall plug with ground pin (CEE7/4 type E)
" + }, + "4": { + "then": "
Chademo
" + }, + "5": { + "then": "
Chademo
" + }, + "6": { + "then": "
Type 1 with cable (J1772)
" + }, + "7": { + "then": "
Type 1 with cable (J1772)
" + }, + "8": { + "then": "
Type 1 without cable (J1772)
" + }, + "9": { + "then": "
Type 1 without cable (J1772)
" + }, + "10": { + "then": "
Type 1 CCS (aka Type 1 Combo)
" + }, + "11": { + "then": "
Type 1 CCS (aka Type 1 Combo)
" + }, + "12": { + "then": "
Tesla Supercharger
" + }, + "13": { + "then": "
Tesla Supercharger
" + }, + "14": { + "then": "
Type 2 (mennekes)
" + }, + "15": { + "then": "
Type 2 (mennekes)
" + }, + "16": { + "then": "
Type 2 CCS (mennekes)
" + }, + "17": { + "then": "
Type 2 CCS (mennekes)
" + }, + "18": { + "then": "
Type 2 with cable (mennekes)
" + }, + "19": { + "then": "
Type 2 with cable (mennekes)
" + }, + "20": { + "then": "
Tesla Supercharger CCS (a branded type2_css)
" + }, + "21": { + "then": "
Tesla Supercharger CCS (a branded type2_css)
" + }, + "22": { + "then": "
Tesla Supercharger (destination)
" + }, + "23": { + "then": "
Tesla Supercharger (destination)
" + }, + "24": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
" + }, + "25": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
" + }, + "26": { + "then": "
USB to charge phones and small electronics
" + }, + "27": { + "then": "
USB to charge phones and small electronics
" + }, + "28": { + "then": "
Bosch Active Connect with 3 pins and cable
" + }, + "29": { + "then": "
Bosch Active Connect with 3 pins and cable
" + }, + "30": { + "then": "
Bosch Active Connect with 5 pins and cable
" + }, + "31": { + "then": "
Bosch Active Connect with 5 pins and cable
" + } + }, + "question": "Which charging connections are available here?" + }, + "Network": { + "mappings": { + "0": { + "then": "Not part of a bigger network" + }, + "1": { + "then": "Not part of a bigger network" + } + }, + "question": "Is this charging station part of a network?", + "render": "Part of the network {network}" + }, + "OH": { + "mappings": { + "0": { + "then": "24/7 opened (including holidays)" + } + }, + "question": "When is this charging station opened?" + }, + "Operational status": { + "mappings": { + "0": { + "then": "This charging station works" + }, + "1": { + "then": "This charging station is broken" + }, + "2": { + "then": "A charging station is planned here" + }, + "3": { + "then": "A charging station is constructed here" + }, + "4": { + "then": "This charging station has beed permanently disabled and is not in use anymore but is still visible" + } + }, + "question": "Is this charging point in use?" + }, + "Operator": { + "mappings": { + "0": { + "then": "Actually, {operator} is the network" + } + }, + "question": "Who is the operator of this charging station?", + "render": "This charging station is operated by {operator}" + }, + "Parking:fee": { + "mappings": { + "0": { + "then": "No additional parking cost while charging" + }, + "1": { + "then": "An additional parking fee should be paid while charging" + } + }, + "question": "Does one have to pay a parking fee while charging?" + }, + "Type": { + "mappings": { + "0": { + "then": "Bcycles can be charged here" + }, + "1": { + "then": "Cars can be charged here" + }, + "2": { + "then": "Scooters can be charged here" + }, + "3": { + "then": "Heavy good vehicles (such as trucks) can be charged here" + }, + "4": { + "then": "Buses can be charged here" + } + }, + "question": "Which vehicles are allowed to charge here?" + }, + "access": { + "mappings": { + "0": { + "then": "Anyone can use this charging station (payment might be needed)" + }, + "1": { + "then": "Anyone can use this charging station (payment might be needed)" + }, + "2": { + "then": "Only customers of the place this station belongs to can use this charging station
E.g. a charging station operated by hotel which is only usable by their guests" + }, + "3": { + "then": "Not accessible to the general public (e.g. only accessible to the owners, employees, ...)" + } + }, + "question": "Who is allowed to use this charging station?", + "render": "Access is {access}" + }, + "capacity": { + "question": "How much vehicles can be charged here at the same time?", + "render": "{capacity} vehicles can be charged here at the same time" + }, + "charge": { + "question": "How much does one have to pay to use this charging station?", + "render": "Using this charging station costs {charge}" + }, + "current-0": { + "mappings": { + "0": { + "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 16 A" + } + }, + "question": "What current do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", + "render": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:current}A" + }, + "current-1": { + "mappings": { + "0": { + "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 16 A" + } + }, + "question": "What current do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", + "render": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:current}A" + }, + "current-10": { + "mappings": { + "0": { + "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 125 A" + }, + "1": { + "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 350 A" + } + }, + "question": "What current do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", + "render": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:current}A" + }, + "current-11": { + "mappings": { + "0": { + "then": "
Tesla Supercharger (destination)
outputs at most 125 A" + }, + "1": { + "then": "
Tesla Supercharger (destination)
outputs at most 350 A" + } + }, + "question": "What current do the plugs with
Tesla Supercharger (destination)
offer?", + "render": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:current}A" + }, + "current-12": { + "mappings": { + "0": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 16 A" + }, + "1": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 32 A" + } + }, + "question": "What current do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", + "render": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:current}A" + }, + "current-13": { + "mappings": { + "0": { + "then": "
USB to charge phones and small electronics
outputs at most 1 A" + }, + "1": { + "then": "
USB to charge phones and small electronics
outputs at most 2 A" + } + }, + "question": "What current do the plugs with
USB to charge phones and small electronics
offer?", + "render": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:current}A" + }, + "current-14": { + "question": "What current do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", + "render": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:current}A" + }, + "current-15": { + "question": "What current do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", + "render": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:current}A" + }, + "current-2": { + "mappings": { + "0": { + "then": "
Chademo
outputs at most 120 A" + } + }, + "question": "What current do the plugs with
Chademo
offer?", + "render": "
Chademo
outputs at most {socket:chademo:current}A" + }, + "current-3": { + "mappings": { + "0": { + "then": "
Type 1 with cable (J1772)
outputs at most 32 A" + } + }, + "question": "What current do the plugs with
Type 1 with cable (J1772)
offer?", + "render": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:current}A" + }, + "current-4": { + "mappings": { + "0": { + "then": "
Type 1 without cable (J1772)
outputs at most 32 A" + } + }, + "question": "What current do the plugs with
Type 1 without cable (J1772)
offer?", + "render": "
Type 1 without cable (J1772)
outputs at most {socket:type1:current}A" + }, + "current-5": { + "mappings": { + "0": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 A" + }, + "1": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 125 A" + } + }, + "question": "What current do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", + "render": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:current}A" + }, + "current-6": { + "mappings": { + "0": { + "then": "
Tesla Supercharger
outputs at most 125 A" + }, + "1": { + "then": "
Tesla Supercharger
outputs at most 350 A" + } + }, + "question": "What current do the plugs with
Tesla Supercharger
offer?", + "render": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:current}A" + }, + "current-7": { + "mappings": { + "0": { + "then": "
Type 2 (mennekes)
outputs at most 16 A" + }, + "1": { + "then": "
Type 2 (mennekes)
outputs at most 32 A" + } + }, + "question": "What current do the plugs with
Type 2 (mennekes)
offer?", + "render": "
Type 2 (mennekes)
outputs at most {socket:type2:current}A" + }, + "current-8": { + "mappings": { + "0": { + "then": "
Type 2 CCS (mennekes)
outputs at most 125 A" + }, + "1": { + "then": "
Type 2 CCS (mennekes)
outputs at most 350 A" + } + }, + "question": "What current do the plugs with
Type 2 CCS (mennekes)
offer?", + "render": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:current}A" + }, + "current-9": { + "mappings": { + "0": { + "then": "
Type 2 with cable (mennekes)
outputs at most 16 A" + }, + "1": { + "then": "
Type 2 with cable (mennekes)
outputs at most 32 A" + } + }, + "question": "What current do the plugs with
Type 2 with cable (mennekes)
offer?", + "render": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:current}A" + }, + "email": { + "question": "What is the email address of the operator?", + "render": "In case of problems, send an email to {email}" + }, + "fee": { + "mappings": { + "0": { + "then": "Free to use" + }, + "1": { + "then": "Free to use (without authenticating)" + }, + "2": { + "then": "Free to use, but one has to authenticate" + }, + "3": { + "then": "Paid use, but free for customers of the hotel/pub/hospital/... who operates the charging station" + }, + "4": { + "then": "Paid use" + } + }, + "question": "Does one have to pay to use this charging station?" + }, + "maxstay": { + "mappings": { + "0": { + "then": "No timelimit on leaving your vehicle here" + } + }, + "question": "What is the maximum amount of time one is allowed to stay here?", + "render": "One can stay at most {canonical(maxstay)}" + }, + "payment-options": { + "override": { + "mappings+": { + "0": { + "then": "Payment is done using a dedicated app" + }, + "1": { + "then": "Payment is done using a membership card" + } + } + } + }, + "phone": { + "question": "What number can one call if there is a problem with this charging station?", + "render": "In case of problems, call {phone}" + }, + "plugs-0": { + "question": "How much plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
are available here?", + "render": "There are {socket:schuko} plugs of type
Schuko wall plug without ground pin (CEE7/4 type F)
available here" + }, + "plugs-1": { + "question": "How much plugs of type
European wall plug with ground pin (CEE7/4 type E)
are available here?", + "render": "There are {socket:typee} plugs of type
European wall plug with ground pin (CEE7/4 type E)
available here" + }, + "plugs-10": { + "question": "How much plugs of type
Tesla Supercharger CCS (a branded type2_css)
are available here?", + "render": "There are {socket:tesla_supercharger_ccs} plugs of type
Tesla Supercharger CCS (a branded type2_css)
available here" + }, + "plugs-11": { + "question": "How much plugs of type
Tesla Supercharger (destination)
are available here?", + "render": "There are {socket:tesla_destination} plugs of type
Tesla Supercharger (destination)
available here" + }, + "plugs-12": { + "question": "How much plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
are available here?", + "render": "There are {socket:tesla_destination} plugs of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
available here" + }, + "plugs-13": { + "question": "How much plugs of type
USB to charge phones and small electronics
are available here?", + "render": "There are {socket:USB-A} plugs of type
USB to charge phones and small electronics
available here" + }, + "plugs-14": { + "question": "How much plugs of type
Bosch Active Connect with 3 pins and cable
are available here?", + "render": "There are {socket:bosch_3pin} plugs of type
Bosch Active Connect with 3 pins and cable
available here" + }, + "plugs-15": { + "question": "How much plugs of type
Bosch Active Connect with 5 pins and cable
are available here?", + "render": "There are {socket:bosch_5pin} plugs of type
Bosch Active Connect with 5 pins and cable
available here" + }, + "plugs-2": { + "question": "How much plugs of type
Chademo
are available here?", + "render": "There are {socket:chademo} plugs of type
Chademo
available here" + }, + "plugs-3": { + "question": "How much plugs of type
Type 1 with cable (J1772)
are available here?", + "render": "There are {socket:type1_cable} plugs of type
Type 1 with cable (J1772)
available here" + }, + "plugs-4": { + "question": "How much plugs of type
Type 1 without cable (J1772)
are available here?", + "render": "There are {socket:type1} plugs of type
Type 1 without cable (J1772)
available here" + }, + "plugs-5": { + "question": "How much plugs of type
Type 1 CCS (aka Type 1 Combo)
are available here?", + "render": "There are {socket:type1_combo} plugs of type
Type 1 CCS (aka Type 1 Combo)
available here" + }, + "plugs-6": { + "question": "How much plugs of type
Tesla Supercharger
are available here?", + "render": "There are {socket:tesla_supercharger} plugs of type
Tesla Supercharger
available here" + }, + "plugs-7": { + "question": "How much plugs of type
Type 2 (mennekes)
are available here?", + "render": "There are {socket:type2} plugs of type
Type 2 (mennekes)
available here" + }, + "plugs-8": { + "question": "How much plugs of type
Type 2 CCS (mennekes)
are available here?", + "render": "There are {socket:type2_combo} plugs of type
Type 2 CCS (mennekes)
available here" + }, + "plugs-9": { + "question": "How much plugs of type
Type 2 with cable (mennekes)
are available here?", + "render": "There are {socket:type2_cable} plugs of type
Type 2 with cable (mennekes)
available here" + }, + "power-output-0": { + "mappings": { + "0": { + "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most 3.6 kw" + } + }, + "question": "What power output does a single plug of type
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", + "render": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs at most {socket:schuko:output}" + }, + "power-output-1": { + "mappings": { + "0": { + "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 3 kw" + }, + "1": { + "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most 22 kw" + } + }, + "question": "What power output does a single plug of type
European wall plug with ground pin (CEE7/4 type E)
offer?", + "render": "
European wall plug with ground pin (CEE7/4 type E)
outputs at most {socket:typee:output}" + }, + "power-output-10": { + "mappings": { + "0": { + "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most 50 kw" + } + }, + "question": "What power output does a single plug of type
Tesla Supercharger CCS (a branded type2_css)
offer?", + "render": "
Tesla Supercharger CCS (a branded type2_css)
outputs at most {socket:tesla_supercharger_ccs:output}" + }, + "power-output-11": { + "mappings": { + "0": { + "then": "
Tesla Supercharger (destination)
outputs at most 120 kw" + }, + "1": { + "then": "
Tesla Supercharger (destination)
outputs at most 150 kw" + }, + "2": { + "then": "
Tesla Supercharger (destination)
outputs at most 250 kw" + } + }, + "question": "What power output does a single plug of type
Tesla Supercharger (destination)
offer?", + "render": "
Tesla Supercharger (destination)
outputs at most {socket:tesla_destination:output}" + }, + "power-output-12": { + "mappings": { + "0": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 11 kw" + }, + "1": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most 22 kw" + } + }, + "question": "What power output does a single plug of type
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", + "render": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs at most {socket:tesla_destination:output}" + }, + "power-output-13": { + "mappings": { + "0": { + "then": "
USB to charge phones and small electronics
outputs at most 5w" + }, + "1": { + "then": "
USB to charge phones and small electronics
outputs at most 10w" + } + }, + "question": "What power output does a single plug of type
USB to charge phones and small electronics
offer?", + "render": "
USB to charge phones and small electronics
outputs at most {socket:USB-A:output}" + }, + "power-output-14": { + "question": "What power output does a single plug of type
Bosch Active Connect with 3 pins and cable
offer?", + "render": "
Bosch Active Connect with 3 pins and cable
outputs at most {socket:bosch_3pin:output}" + }, + "power-output-15": { + "question": "What power output does a single plug of type
Bosch Active Connect with 5 pins and cable
offer?", + "render": "
Bosch Active Connect with 5 pins and cable
outputs at most {socket:bosch_5pin:output}" + }, + "power-output-2": { + "mappings": { + "0": { + "then": "
Chademo
outputs at most 50 kw" + } + }, + "question": "What power output does a single plug of type
Chademo
offer?", + "render": "
Chademo
outputs at most {socket:chademo:output}" + }, + "power-output-3": { + "mappings": { + "0": { + "then": "
Type 1 with cable (J1772)
outputs at most 3.7 kw" + }, + "1": { + "then": "
Type 1 with cable (J1772)
outputs at most 7 kw" + } + }, + "question": "What power output does a single plug of type
Type 1 with cable (J1772)
offer?", + "render": "
Type 1 with cable (J1772)
outputs at most {socket:type1_cable:output}" + }, + "power-output-4": { + "mappings": { + "0": { + "then": "
Type 1 without cable (J1772)
outputs at most 3.7 kw" + }, + "1": { + "then": "
Type 1 without cable (J1772)
outputs at most 6.6 kw" + }, + "2": { + "then": "
Type 1 without cable (J1772)
outputs at most 7 kw" + }, + "3": { + "then": "
Type 1 without cable (J1772)
outputs at most 7.2 kw" + } + }, + "question": "What power output does a single plug of type
Type 1 without cable (J1772)
offer?", + "render": "
Type 1 without cable (J1772)
outputs at most {socket:type1:output}" + }, + "power-output-5": { + "mappings": { + "0": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 50 kw" + }, + "1": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 62.5 kw" + }, + "2": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 150 kw" + }, + "3": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs at most 350 kw" + } + }, + "question": "What power output does a single plug of type
Type 1 CCS (aka Type 1 Combo)
offer?", + "render": "
Type 1 CCS (aka Type 1 Combo)
outputs at most {socket:type1_combo:output}" + }, + "power-output-6": { + "mappings": { + "0": { + "then": "
Tesla Supercharger
outputs at most 120 kw" + }, + "1": { + "then": "
Tesla Supercharger
outputs at most 150 kw" + }, + "2": { + "then": "
Tesla Supercharger
outputs at most 250 kw" + } + }, + "question": "What power output does a single plug of type
Tesla Supercharger
offer?", + "render": "
Tesla Supercharger
outputs at most {socket:tesla_supercharger:output}" + }, + "power-output-7": { + "mappings": { + "0": { + "then": "
Type 2 (mennekes)
outputs at most 11 kw" + }, + "1": { + "then": "
Type 2 (mennekes)
outputs at most 22 kw" + } + }, + "question": "What power output does a single plug of type
Type 2 (mennekes)
offer?", + "render": "
Type 2 (mennekes)
outputs at most {socket:type2:output}" + }, + "power-output-8": { + "mappings": { + "0": { + "then": "
Type 2 CCS (mennekes)
outputs at most 50 kw" + } + }, + "question": "What power output does a single plug of type
Type 2 CCS (mennekes)
offer?", + "render": "
Type 2 CCS (mennekes)
outputs at most {socket:type2_combo:output}" + }, + "power-output-9": { + "mappings": { + "0": { + "then": "
Type 2 with cable (mennekes)
outputs at most 11 kw" + }, + "1": { + "then": "
Type 2 with cable (mennekes)
outputs at most 22 kw" + } + }, + "question": "What power output does a single plug of type
Type 2 with cable (mennekes)
offer?", + "render": "
Type 2 with cable (mennekes)
outputs at most {socket:type2_cable:output}" + }, + "questions": { + "render": "

Technical questions

The questions below are very technical. Feel free to ignore them
{questions}" + }, + "ref": { + "question": "What is the reference number of this charging station?", + "render": "Reference number is {ref}" + }, + "voltage-0": { + "mappings": { + "0": { + "then": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs 230 volt" + } + }, + "question": "What voltage do the plugs with
Schuko wall plug without ground pin (CEE7/4 type F)
offer?", + "render": "
Schuko wall plug without ground pin (CEE7/4 type F)
outputs {socket:schuko:voltage} volt" + }, + "voltage-1": { + "mappings": { + "0": { + "then": "
European wall plug with ground pin (CEE7/4 type E)
outputs 230 volt" + } + }, + "question": "What voltage do the plugs with
European wall plug with ground pin (CEE7/4 type E)
offer?", + "render": "
European wall plug with ground pin (CEE7/4 type E)
outputs {socket:typee:voltage} volt" + }, + "voltage-10": { + "mappings": { + "0": { + "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs 500 volt" + }, + "1": { + "then": "
Tesla Supercharger CCS (a branded type2_css)
outputs 920 volt" + } + }, + "question": "What voltage do the plugs with
Tesla Supercharger CCS (a branded type2_css)
offer?", + "render": "
Tesla Supercharger CCS (a branded type2_css)
outputs {socket:tesla_supercharger_ccs:voltage} volt" + }, + "voltage-11": { + "mappings": { + "0": { + "then": "
Tesla Supercharger (destination)
outputs 480 volt" + } + }, + "question": "What voltage do the plugs with
Tesla Supercharger (destination)
offer?", + "render": "
Tesla Supercharger (destination)
outputs {socket:tesla_destination:voltage} volt" + }, + "voltage-12": { + "mappings": { + "0": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 230 volt" + }, + "1": { + "then": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs 400 volt" + } + }, + "question": "What voltage do the plugs with
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
offer?", + "render": "
Tesla supercharger (destination (A Type 2 with cable branded as tesla)
outputs {socket:tesla_destination:voltage} volt" + }, + "voltage-13": { + "mappings": { + "0": { + "then": "
USB to charge phones and small electronics
outputs 5 volt" + } + }, + "question": "What voltage do the plugs with
USB to charge phones and small electronics
offer?", + "render": "
USB to charge phones and small electronics
outputs {socket:USB-A:voltage} volt" + }, + "voltage-14": { + "question": "What voltage do the plugs with
Bosch Active Connect with 3 pins and cable
offer?", + "render": "
Bosch Active Connect with 3 pins and cable
outputs {socket:bosch_3pin:voltage} volt" + }, + "voltage-15": { + "question": "What voltage do the plugs with
Bosch Active Connect with 5 pins and cable
offer?", + "render": "
Bosch Active Connect with 5 pins and cable
outputs {socket:bosch_5pin:voltage} volt" + }, + "voltage-2": { + "mappings": { + "0": { + "then": "
Chademo
outputs 500 volt" + } + }, + "question": "What voltage do the plugs with
Chademo
offer?", + "render": "
Chademo
outputs {socket:chademo:voltage} volt" + }, + "voltage-3": { + "mappings": { + "0": { + "then": "
Type 1 with cable (J1772)
outputs 200 volt" + }, + "1": { + "then": "
Type 1 with cable (J1772)
outputs 240 volt" + } + }, + "question": "What voltage do the plugs with
Type 1 with cable (J1772)
offer?", + "render": "
Type 1 with cable (J1772)
outputs {socket:type1_cable:voltage} volt" + }, + "voltage-4": { + "mappings": { + "0": { + "then": "
Type 1 without cable (J1772)
outputs 200 volt" + }, + "1": { + "then": "
Type 1 without cable (J1772)
outputs 240 volt" + } + }, + "question": "What voltage do the plugs with
Type 1 without cable (J1772)
offer?", + "render": "
Type 1 without cable (J1772)
outputs {socket:type1:voltage} volt" + }, + "voltage-5": { + "mappings": { + "0": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs 400 volt" + }, + "1": { + "then": "
Type 1 CCS (aka Type 1 Combo)
outputs 1000 volt" + } + }, + "question": "What voltage do the plugs with
Type 1 CCS (aka Type 1 Combo)
offer?", + "render": "
Type 1 CCS (aka Type 1 Combo)
outputs {socket:type1_combo:voltage} volt" + }, + "voltage-6": { + "mappings": { + "0": { + "then": "
Tesla Supercharger
outputs 480 volt" + } + }, + "question": "What voltage do the plugs with
Tesla Supercharger
offer?", + "render": "
Tesla Supercharger
outputs {socket:tesla_supercharger:voltage} volt" + }, + "voltage-7": { + "mappings": { + "0": { + "then": "
Type 2 (mennekes)
outputs 230 volt" + }, + "1": { + "then": "
Type 2 (mennekes)
outputs 400 volt" + } + }, + "question": "What voltage do the plugs with
Type 2 (mennekes)
offer?", + "render": "
Type 2 (mennekes)
outputs {socket:type2:voltage} volt" + }, + "voltage-8": { + "mappings": { + "0": { + "then": "
Type 2 CCS (mennekes)
outputs 500 volt" + }, + "1": { + "then": "
Type 2 CCS (mennekes)
outputs 920 volt" + } + }, + "question": "What voltage do the plugs with
Type 2 CCS (mennekes)
offer?", + "render": "
Type 2 CCS (mennekes)
outputs {socket:type2_combo:voltage} volt" + }, + "voltage-9": { + "mappings": { + "0": { + "then": "
Type 2 with cable (mennekes)
outputs 230 volt" + }, + "1": { + "then": "
Type 2 with cable (mennekes)
outputs 400 volt" + } + }, + "question": "What voltage do the plugs with
Type 2 with cable (mennekes)
offer?", + "render": "
Type 2 with cable (mennekes)
outputs {socket:type2_cable:voltage} volt" + }, + "website": { + "question": "What is the website where one can find more information about this charging station?", + "render": "More info on {website}" + } + }, + "title": { + "render": "Charging station" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " minutes", + "humanSingular": " minute" + }, + "1": { + "human": " hours", + "humanSingular": " hour" + }, + "2": { + "human": " days", + "humanSingular": " day" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": "Volts" + } + } + }, + "2": { + "applicableUnits": { + "0": { + "human": "A" + } + } + }, + "3": { + "applicableUnits": { + "0": { + "human": "kilowatt" + }, + "1": { + "human": "megawatt" + } + } + } + } + }, + "crossings": { + "description": "Crossings for pedestrians and cyclists", + "name": "Crossings", + "presets": { + "0": { + "description": "Crossing for pedestrians and/or cyclists", + "title": "Crossing" + }, + "1": { + "description": "Traffic signal on a road", + "title": "Traffic signal" + } + }, + "tagRenderings": { + "crossing-bicycle-allowed": { + "mappings": { + "0": { + "then": "A cyclist can use this crossing" + }, + "1": { + "then": "A cyclist can not use this crossing" + } + }, + "question": "Is this crossing also for bicycles?" + }, + "crossing-button": { + "mappings": { + "0": { + "then": "This traffic light has a button to request green light" + }, + "1": { + "then": "This traffic light does not have a button to request green light" + } + }, + "question": "Does this traffic light have a button to request green light?" + }, + "crossing-continue-through-red": { + "mappings": { + "0": { + "then": "A cyclist can go straight on if the light is red " + }, + "1": { + "then": "A cyclist can go straight on if the light is red" + }, + "2": { + "then": "A cyclist can not go straight on if the light is red" + } + }, + "question": "Can a cyclist go straight on when the light is red?" + }, + "crossing-has-island": { + "mappings": { + "0": { + "then": "This crossing has an island in the middle" + }, + "1": { + "then": "This crossing does not have an island in the middle" + } + }, + "question": "Does this crossing have an island in the middle?" + }, + "crossing-is-zebra": { + "mappings": { + "0": { + "then": "This is a zebra crossing" + }, + "1": { + "then": "This is not a zebra crossing" + } + }, + "question": "Is this is a zebra crossing?" + }, + "crossing-right-turn-through-red": { + "mappings": { + "0": { + "then": "A cyclist can turn right if the light is red " + }, + "1": { + "then": "A cyclist can turn right if the light is red" + }, + "2": { + "then": "A cyclist can not turn right if the light is red" + } + }, + "question": "Can a cyclist turn right when the light is red?" + }, + "crossing-tactile": { + "mappings": { + "0": { + "then": "This crossing has tactile paving" + }, + "1": { + "then": "This crossing does not have tactile paving" + }, + "2": { + "then": "This crossing has tactile paving, but is not correct" + } + }, + "question": "Does this crossing have tactile paving?" + }, + "crossing-type": { + "mappings": { + "0": { + "then": "Crossing, without traffic lights" + }, + "1": { + "then": "Crossing with traffic signals" + }, + "2": { + "then": "Zebra crossing" + } + }, + "question": "What kind of crossing is this?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Traffic signal" + }, + "1": { + "then": "Crossing with traffic signals" + } + }, + "render": "Crossing" + } + }, + "cycleways_and_roads": { + "name": "Cycleways and roads", + "tagRenderings": { + "Cycleway type for a road": { + "mappings": { + "0": { + "then": "There is a shared lane" + }, + "1": { + "then": "There is a lane next to the road (separated with paint)" + }, + "2": { + "then": "There is a track, but no cycleway drawn separately from this road on the map." + }, + "3": { + "then": "There is a separately drawn cycleway" + }, + "4": { + "then": "There is no cycleway" + }, + "5": { + "then": "There is no cycleway" + } + }, + "question": "What kind of cycleway is here?" + }, + "Cycleway:smoothness": { + "mappings": { + "0": { + "then": "Usable for thin rollers: rollerblade, skateboard" + }, + "1": { + "then": "Usable for thin wheels: racing bike" + }, + "2": { + "then": "Usable for normal wheels: city bike, wheelchair, scooter" + }, + "3": { + "then": "Usable for robust wheels: trekking bike, car, rickshaw" + }, + "4": { + "then": "Usable for vehicles with high clearance: light duty off-road vehicle" + }, + "5": { + "then": "Usable for off-road vehicles: heavy duty off-road vehicle" + }, + "6": { + "then": "Usable for specialized off-road vehicles: tractor, ATV" + }, + "7": { + "then": "Impassable / No wheeled vehicle" + } + }, + "question": "What is the smoothness of this cycleway?" + }, + "Cycleway:surface": { + "mappings": { + "0": { + "then": "This cycleway is unpaved" + }, + "1": { + "then": "This cycleway is paved" + }, + "2": { + "then": "This cycleway is made of asphalt" + }, + "3": { + "then": "This cycleway is made of smooth paving stones" + }, + "4": { + "then": "This cycleway is made of concrete" + }, + "5": { + "then": "This cycleway is made of cobblestone (unhewn or sett)" + }, + "6": { + "then": "This cycleway is made of raw, natural cobblestone" + }, + "7": { + "then": "This cycleway is made of flat, square cobblestone" + }, + "8": { + "then": "This cycleway is made of wood" + }, + "9": { + "then": "This cycleway is made of gravel" + }, + "10": { + "then": "This cycleway is made of fine gravel" + }, + "11": { + "then": "This cycleway is made of pebblestone" + }, + "12": { + "then": "This cycleway is made from raw ground" + } + }, + "question": "What is the surface of the cycleway made from?", + "render": "This cyleway is made of {cycleway:surface}" + }, + "Is this a cyclestreet? (For a road)": { + "mappings": { + "0": { + "then": "This is a cyclestreet, and a 30km/h zone." + }, + "1": { + "then": "This is a cyclestreet" + }, + "2": { + "then": "This is not a cyclestreet." + } + }, + "question": "Is this a cyclestreet?" + }, + "Maxspeed (for road)": { + "mappings": { + "0": { + "then": "The maximum speed is 20 km/h" + }, + "1": { + "then": "The maximum speed is 30 km/h" + }, + "2": { + "then": "The maximum speed is 50 km/h" + }, + "3": { + "then": "The maximum speed is 70 km/h" + }, + "4": { + "then": "The maximum speed is 90 km/h" + } + }, + "question": "What is the maximum speed in this street?", + "render": "The maximum speed on this road is {maxspeed} km/h" + }, + "Surface of the road": { + "mappings": { + "0": { + "then": "This cycleway is unhardened" + }, + "1": { + "then": "This cycleway is paved" + }, + "2": { + "then": "This cycleway is made of asphalt" + }, + "3": { + "then": "This cycleway is made of smooth paving stones" + }, + "4": { + "then": "This cycleway is made of concrete" + }, + "5": { + "then": "This cycleway is made of cobblestone (unhewn or sett)" + }, + "6": { + "then": "This cycleway is made of raw, natural cobblestone" + }, + "7": { + "then": "This cycleway is made of flat, square cobblestone" + }, + "8": { + "then": "This cycleway is made of wood" + }, + "9": { + "then": "This cycleway is made of gravel" + }, + "10": { + "then": "This cycleway is made of fine gravel" + }, + "11": { + "then": "This cycleway is made of pebblestone" + }, + "12": { + "then": "This cycleway is made from raw ground" + } + }, + "question": "What is the surface of the street made from?", + "render": "This road is made of {surface}" + }, + "Surface of the street": { + "mappings": { + "0": { + "then": "Usable for thin rollers: rollerblade, skateboard" + }, + "1": { + "then": "Usable for thin wheels: racing bike" + }, + "2": { + "then": "Usable for normal wheels: city bike, wheelchair, scooter" + }, + "3": { + "then": "Usable for robust wheels: trekking bike, car, rickshaw" + }, + "4": { + "then": "Usable for vehicles with high clearance: light duty off-road vehicle" + }, + "5": { + "then": "Usable for off-road vehicles: heavy duty off-road vehicle" + }, + "6": { + "then": "Usable for specialized off-road vehicles: tractor, ATV" + }, + "7": { + "then": "Impassable / No wheeled vehicle" + } + }, + "question": "What is the smoothness of this street?" + }, + "cyclelan-segregation": { + "mappings": { + "0": { + "then": "This cycleway is separated by a dashed line" + }, + "1": { + "then": "This cycleway is separated by a solid line" + }, + "2": { + "then": "This cycleway is separated by a parking lane" + }, + "3": { + "then": "This cycleway is separated by a kerb" + } + }, + "question": "How is this cycleway separated from the road?" + }, + "cycleway-lane-track-traffic-signs": { + "mappings": { + "0": { + "then": "Compulsory cycleway " + }, + "1": { + "then": "Compulsory cycleway (with supplementary sign)
" + }, + "2": { + "then": "Segregated foot/cycleway " + }, + "3": { + "then": "Unsegregated foot/cycleway " + }, + "4": { + "then": "No traffic sign present" + } + }, + "question": "What traffic sign does this cycleway have?" + }, + "cycleway-segregation": { + "mappings": { + "0": { + "then": "This cycleway is separated by a dashed line" + }, + "1": { + "then": "This cycleway is separated by a solid line" + }, + "2": { + "then": "This cycleway is separated by a parking lane" + }, + "3": { + "then": "This cycleway is separated by a kerb" + } + }, + "question": "How is this cycleway separated from the road?" + }, + "cycleway-traffic-signs": { + "mappings": { + "0": { + "then": "Compulsory cycleway " + }, + "1": { + "then": "Compulsory cycleway (with supplementary sign)
" + }, + "2": { + "then": "Segregated foot/cycleway " + }, + "3": { + "then": "Unsegregated foot/cycleway " + }, + "4": { + "then": "No traffic sign present" + } + }, + "question": "What traffic sign does this cycleway have?" + }, + "cycleway-traffic-signs-D7-supplementary": { + "mappings": { + "0": { + "then": "" + }, + "1": { + "then": "" + }, + "2": { + "then": "" + }, + "3": { + "then": "" + }, + "4": { + "then": "" + }, + "5": { + "then": "" + }, + "6": { + "then": "No supplementary traffic sign present" + } + }, + "question": "Does the traffic sign D7 () have a supplementary sign?" + }, + "cycleway-traffic-signs-supplementary": { + "mappings": { + "0": { + "then": "" + }, + "1": { + "then": "" + }, + "2": { + "then": "" + }, + "3": { + "then": "" + }, + "4": { + "then": "" + }, + "5": { + "then": "" + }, + "6": { + "then": "No supplementary traffic sign present" + } + }, + "question": "Does the traffic sign D7 () have a supplementary sign?" + }, + "cycleways_and_roads-cycleway:buffer": { + "question": "How wide is the gap between the cycleway and the road?", + "render": "The buffer besides this cycleway is {cycleway:buffer} m" + }, + "is lit?": { + "mappings": { + "0": { + "then": "This street is lit" + }, + "1": { + "then": "This road is not lit" + }, + "2": { + "then": "This road is lit at night" + }, + "3": { + "then": "This road is lit 24/7" + } + }, + "question": "Is this street lit?" + }, + "width:carriageway": { + "question": "What is the carriage width of this road (in meters)?
This is measured curb to curb and thus includes the width of parallell parking lanes", + "render": "The carriage width of this road is {width:carriageway}m" + } + }, + "title": { + "mappings": { + "0": { + "then": "Cycleway" + }, + "1": { + "then": "Shared lane" + }, + "2": { + "then": "Bike lane" + }, + "3": { + "then": "Cycleway next to the road" + }, + "4": { + "then": "Cyclestreet" + } + }, + "render": "Cycleways" + } + }, + "defibrillator": { + "name": "Defibrillators", + "presets": { + "0": { + "title": "Defibrillator" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "Publicly accessible" + }, + "1": { + "then": "Publicly accessible" + }, + "2": { + "then": "Only accessible to customers" + }, + "3": { + "then": "Not accessible to the general public (e.g. only accesible to staff, the owners, ...)" + }, + "4": { + "then": "Not accessible, possibly only for professional use" + } + }, + "question": "Is this defibrillator freely accessible?", + "render": "Access is {access}" + }, + "defibrillator-defibrillator": { + "mappings": { + "0": { + "then": "There is no info about the type of device" + }, + "1": { + "then": "This is a manual defibrillator for professionals" + }, + "2": { + "then": "This is a normal automatic defibrillator" + }, + "3": { + "then": "This is a special type of defibrillator: {defibrillator}" + } + }, + "question": "Is this a a regular automatic defibrillator or a manual defibrillator for professionals only?" + }, + "defibrillator-defibrillator:location": { + "question": "Please give some explanation on where the defibrillator can be found (in the local language)", + "render": "Extra information about the location (in the local languagel):
{defibrillator:location}" + }, + "defibrillator-defibrillator:location:en": { + "question": "Please give some explanation on where the defibrillator can be found (in English)", + "render": "Extra information about the location (in English):
{defibrillator:location:en}" + }, + "defibrillator-defibrillator:location:fr": { + "question": "Please give some explanation on where the defibrillator can be found (in French)", + "render": "Extra information about the location (in French):
{defibrillator:location:fr}" + }, + "defibrillator-description": { + "question": "Is there any useful information for users that you haven't been able to describe above? (leave blank if no)", + "render": "Additional information: {description}" + }, + "defibrillator-email": { + "question": "What is the email for questions about this defibrillator?", + "render": "Email for questions about this defibrillator: {email}" + }, + "defibrillator-fixme": { + "question": "Is there something wrong with how this is mapped, that you weren't able to fix here? (leave a note to OpenStreetMap experts)", + "render": "Extra information for OpenStreetMap experts: {fixme}" + }, + "defibrillator-indoors": { + "mappings": { + "0": { + "then": "This defibrillator is located indoors" + }, + "1": { + "then": "This defibrillator is located outdoors" + } + }, + "question": "Is this defibrillator located indoors?" + }, + "defibrillator-level": { + "mappings": { + "0": { + "then": "This defibrillator is on the ground floor" + }, + "1": { + "then": "This defibrillator is on the first floor" + } + }, + "question": "On which floor is this defibrillator located?", + "render": "This defibrillator is on floor {level}" + }, + "defibrillator-opening_hours": { + "mappings": { + "0": { + "then": "24/7 opened (including holidays)" + } + }, + "question": "At what times is this defibrillator available?", + "render": "{opening_hours_table(opening_hours)}" + }, + "defibrillator-phone": { + "question": "What is the phone number for questions about this defibrillator?", + "render": "Telephone for questions about this defibrillator: {phone}" + }, + "defibrillator-ref": { + "question": "What is the official identification number of the device? (if visible on device)", + "render": "Official identification number of the device: {ref}" + }, + "defibrillator-survey:date": { + "mappings": { + "0": { + "then": "Checked today!" + } + }, + "question": "When was this defibrillator last surveyed?", + "render": "This defibrillator was last surveyed on {survey:date}" + } + }, + "title": { + "render": "Defibrillator" + } + }, + "direction": { + "description": "This layer visualizes directions", + "name": "Direction visualization" + }, + "drinking_water": { + "name": "Drinking water", + "presets": { + "0": { + "title": "drinking water" + } + }, + "tagRenderings": { + "Bottle refill": { + "mappings": { + "0": { + "then": "It is easy to refill water bottles" + }, + "1": { + "then": "Water bottles may not fit" + } + }, + "question": "How easy is it to fill water bottles?" + }, + "Still in use?": { + "mappings": { + "0": { + "then": "This drinking water works" + }, + "1": { + "then": "This drinking water is broken" + }, + "2": { + "then": "This drinking water is closed" + } + }, + "question": "Is this drinking water spot still operational?", + "render": "The operational status is {operational_status}" + }, + "render-closest-drinking-water": { + "render": "There is another drinking water fountain at {_closest_other_drinking_water_distance} meter" + } + }, + "title": { + "render": "Drinking water" + } + }, + "etymology": { + "description": "All objects which have an etymology known", + "name": "Has etymolgy", + "tagRenderings": { + "etymology_multi_apply": { + "render": "{multi_apply(_same_name_ids, name:etymology:wikidata;name:etymology, Auto-applying data on all segments with the same name, true)}" + }, + "simple etymology": { + "mappings": { + "0": { + "then": "The origin of this name is unknown in all literature" + } + }, + "question": "What is this object named after?
This might be written on the street name sign", + "render": "Named after {name:etymology}" + }, + "street-name-sign-image": { + "render": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Add image of a street name sign)}" + }, + "wikipedia-etymology": { + "question": "What is the Wikidata-item that this object is named after?", + "render": "

Wikipedia article of the name giver

{wikipedia(name:etymology:wikidata):max-height:20rem}" + }, + "zoeken op inventaris onroerend erfgoed": { + "render": "Search on inventaris onroerend erfgoed" + } + } + }, + "food": { + "filter": { + "0": { + "options": { + "0": { + "question": "Opened now" + } + } + }, + "1": { + "options": { + "0": { + "question": "Has a vegetarian menu" + } + } + }, + "2": { + "options": { + "0": { + "question": "Has a vegan menu" + } + } + }, + "3": { + "options": { + "0": { + "question": "Has a halal menu" + } + } + } + }, + "name": "Restaurants and fast food", + "presets": { + "0": { + "description": "A formal eating place with sit-down facilities selling full meals served by waiters", + "title": "restaurant" + }, + "1": { + "description": "A food business concentrating on fast counter-only service and take-away food", + "title": "fastfood" + }, + "2": { + "title": "fries shop" + } + }, + "tagRenderings": { + "Cuisine": { + "mappings": { + "0": { + "then": "This is a pizzeria" + }, + "1": { + "then": "This is a friture" + }, + "2": { + "then": "Mainly serves pasta" + } + }, + "question": "Which food is served here?", + "render": "This place mostly serves {cuisine}" + }, + "Fastfood vs restaurant": { + "question": "What type of business is this?" + }, + "Name": { + "question": "What is the name of this restaurant?", + "render": "The name of this restaurant is {name}" + }, + "Takeaway": { + "mappings": { + "0": { + "then": "This is a take-away only business" + }, + "1": { + "then": "Take-away is possible here" + }, + "2": { + "then": "Take-away is not possible here" + } + }, + "question": "Does this place offer takea-way?" + }, + "Vegetarian (no friture)": { + "question": "Does this restaurant have a vegetarian option?" + }, + "friture-take-your-container": { + "mappings": { + "0": { + "then": "You can bring your own containers to get your order, saving on single-use packaging material and thus waste" + }, + "1": { + "then": "Bringing your own container is not allowed" + }, + "2": { + "then": "You must bring your own container to order here." + } + }, + "question": "If you bring your own container (such as a cooking pot and small pots), is it used to package your order?
" + }, + "halal (no friture)": { + "mappings": { + "0": { + "then": "There are no halal options available" + }, + "1": { + "then": "There is a small halal menu" + }, + "2": { + "then": "There is a halal menu" + }, + "3": { + "then": "Only halal options are available" + } + }, + "question": "Does this restaurant offer a halal menu?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Restaurant {name}" + }, + "1": { + "then": "Fastfood {name}" + } + } + } + }, + "ghost_bike": { + "name": "Ghost bikes", + "presets": { + "0": { + "title": "Ghost bike" + } + }, + "tagRenderings": { + "ghost-bike-explanation": { + "render": "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." + }, + "ghost_bike-inscription": { + "question": "What is the inscription on this Ghost bike?", + "render": "{inscription}" + }, + "ghost_bike-name": { + "mappings": { + "0": { + "then": "No name is marked on the bike" + } + }, + "question": "Whom is remembered by this ghost bike?
Please respect privacy - only fill out the name if it is widely published or marked on the cycle. Opt to leave out the family name.
", + "render": "In remembrance of {name}" + }, + "ghost_bike-source": { + "question": "On what webpage can one find more information about the Ghost bike or the accident?", + "render": "More information is available" + }, + "ghost_bike-start_date": { + "question": "When was this Ghost bike installed?", + "render": "Placed on {start_date}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Ghost bike in the remembrance of {name}" + } + }, + "render": "Ghost bike" + } + }, + "gps_track": { + "tagRenderings": { + "Privacy notice": { + "render": "This is the path you've travelled since this website is opened. Don't worry - this is only visible to you and no one else. Your location data is never sent off-device without your permission." + } + } + }, + "information_board": { + "name": "Information boards", + "presets": { + "0": { + "title": "information board" + } + }, + "title": { + "render": "Information board" + } + }, + "map": { + "description": "A map, meant for tourists which is permanently installed in the public space", + "name": "Maps", + "presets": { + "0": { + "description": "Add a missing map", + "title": "Map" + } + }, + "tagRenderings": { + "map-attribution": { + "mappings": { + "0": { + "then": "OpenStreetMap is clearly attributed, including the ODBL-license" + }, + "1": { + "then": "OpenStreetMap is clearly attributed, but the license is not mentioned" + }, + "2": { + "then": "OpenStreetMap wasn't mentioned, but someone put an OpenStreetMap-sticker on it" + }, + "3": { + "then": "There is no attribution at all" + }, + "4": { + "then": "There is no attribution at all" + } + }, + "question": "Is the OpenStreetMap-attribution given?" + }, + "map-map_source": { + "mappings": { + "0": { + "then": "This map is based on OpenStreetMap" + } + }, + "question": "On which data is this map based?", + "render": "This map is based on {map_source}" + } + }, + "title": { + "render": "Map" + } + }, + "nature_reserve": { + "tagRenderings": { + "Curator": { + "question": "Whom is the curator of this nature reserve?
Respect privacy - only fill out a name if this is widely published", + "render": "{curator} is the curator of this nature reserve" + }, + "Dogs?": { + "mappings": { + "0": { + "then": "Dogs have to be leashed" + }, + "1": { + "then": "No dogs allowed" + }, + "2": { + "then": "Dogs are allowed to roam freely" + } + }, + "question": "Are dogs allowed in this nature reserve?" + }, + "Email": { + "question": "What email adress can one send to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal email address if this is widely published", + "render": "{email}" + }, + "Surface area": { + "render": "Surface area: {_surface:ha}Ha" + }, + "Website": { + "question": "On which webpage can one find more information about this nature reserve?" + }, + "phone": { + "question": "What phone number can one call to with questions and problems with this nature reserve?
Respect privacy - only fill out a personal phone number address if this is widely published", + "render": "{phone}" + } + } + }, + "observation_tower": { + "description": "Towers with a panoramic view", + "name": "Observation towers", + "presets": { + "0": { + "title": "observation tower" + } + }, + "tagRenderings": { + "Fee": { + "mappings": { + "0": { + "then": "Free to visit" + } + }, + "question": "How much does one have to pay to enter this tower?", + "render": "Visiting this tower costs {charge}" + }, + "Height": { + "question": "What is the height of this tower?", + "render": "This tower is {height} high" + }, + "Operator": { + "question": "Who maintains this tower?", + "render": "Maintained by {operator}" + }, + "name": { + "mappings": { + "0": { + "then": "This tower doesn't have a specific name" + } + }, + "question": "What is the name of this tower?", + "render": "This tower is called {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Observation tower" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " meter" + } + } + } + } + }, + "parking": { + "description": "A layer showing car parkings", + "presets": { + "0": { + "title": "car parking" + } + }, + "title": { + "render": "Car parking" + } + }, + "picnic_table": { + "description": "The layer showing picnic tables", + "name": "Picnic tables", + "presets": { + "0": { + "title": "picnic table" + } + }, + "tagRenderings": { + "picnic_table-material": { + "mappings": { + "0": { + "then": "This is a wooden picnic table" + }, + "1": { + "then": "This is a concrete picnic table" + } + }, + "question": "What material is this picnic table made of?", + "render": "This picnic table is made of {material}" + } + }, + "title": { + "render": "Picnic table" + } + }, + "playground": { + "description": "Playgrounds", + "name": "Playgrounds", + "presets": { + "0": { + "title": "Playground" + } + }, + "tagRenderings": { + "Playground-wheelchair": { + "mappings": { + "0": { + "then": "Completely accessible for wheelchair users" + }, + "1": { + "then": "Limited accessibility for wheelchair users" + }, + "2": { + "then": "Not accessible for wheelchair users" + } + }, + "question": "Is this playground accessible to wheelchair users?" + }, + "playground-access": { + "mappings": { + "0": { + "then": "Accessible to the general public" + }, + "1": { + "then": "Accessible to the general public" + }, + "2": { + "then": "Only accessible for clients of the operating business" + }, + "3": { + "then": "Only accessible to students of the school" + }, + "4": { + "then": "Not accessible" + } + }, + "question": "Is this playground accessible to the general public?" + }, + "playground-email": { + "question": "What is the email address of the playground maintainer?", + "render": "{email}" + }, + "playground-lit": { + "mappings": { + "0": { + "then": "This playground is lit at night" + }, + "1": { + "then": "This playground is not lit at night" + } + }, + "question": "Is this playground lit at night?" + }, + "playground-max_age": { + "question": "What is the maximum age allowed to access this playground?", + "render": "Accessible to kids of at most {max_age}" + }, + "playground-min_age": { + "question": "What is the minimum age required to access this playground?", + "render": "Accessible to kids older than {min_age} years" + }, + "playground-opening_hours": { + "mappings": { + "0": { + "then": "Accessible from sunrise till sunset" + }, + "1": { + "then": "Always accessible" + }, + "2": { + "then": "Always accessible" + } + }, + "question": "When is this playground accessible?" + }, + "playground-operator": { + "question": "Who operates this playground?", + "render": "Operated by {operator}" + }, + "playground-phone": { + "question": "What is the phone number of the playground maintainer?", + "render": "{phone}" + }, + "playground-surface": { + "mappings": { + "0": { + "then": "The surface is grass" + }, + "1": { + "then": "The surface is sand" + }, + "2": { + "then": "The surface consist of woodchips" + }, + "3": { + "then": "The surface is paving stones" + }, + "4": { + "then": "The surface is asphalt" + }, + "5": { + "then": "The surface is concrete" + }, + "6": { + "then": "The surface is unpaved" + }, + "7": { + "then": "The surface is paved" + } + }, + "question": "Which is the surface of this playground?
If there are multiple, select the most occuring one", + "render": "The surface is {surface}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Playground {name}" + } + }, + "render": "Playground" + } + }, + "public_bookcase": { + "description": "A streetside cabinet with books, accessible to anyone", + "filter": { + "2": { + "options": { + "0": { + "question": "Indoor or outdoor" + } + } + } + }, + "name": "Bookcases", + "presets": { + "0": { + "title": "Bookcase" + } + }, + "tagRenderings": { + "bookcase-booktypes": { + "mappings": { + "0": { + "then": "Mostly children books" + }, + "1": { + "then": "Mostly books for adults" + }, + "2": { + "then": "Both books for kids and adults" + } + }, + "question": "What kind of books can be found in this public bookcase?" + }, + "bookcase-is-accessible": { + "mappings": { + "0": { + "then": "Publicly accessible" + }, + "1": { + "then": "Only accessible to customers" + } + }, + "question": "Is this public bookcase freely accessible?" + }, + "bookcase-is-indoors": { + "mappings": { + "0": { + "then": "This bookcase is located indoors" + }, + "1": { + "then": "This bookcase is located outdoors" + }, + "2": { + "then": "This bookcase is located outdoors" + } + }, + "question": "Is this bookcase located outdoors?" + }, + "public_bookcase-brand": { + "mappings": { + "0": { + "then": "Part of the network 'Little Free Library'" + }, + "1": { + "then": "This public bookcase is not part of a bigger network" + } + }, + "question": "Is this public bookcase part of a bigger network?", + "render": "This public bookcase is part of {brand}" + }, + "public_bookcase-capacity": { + "question": "How many books fit into this public bookcase?", + "render": "{capacity} books fit in this bookcase" + }, + "public_bookcase-name": { + "mappings": { + "0": { + "then": "This bookcase doesn't have a name" + } + }, + "question": "What is the name of this public bookcase?", + "render": "The name of this bookcase is {name}" + }, + "public_bookcase-operator": { + "question": "Who maintains this public bookcase?", + "render": "Operated by {operator}" + }, + "public_bookcase-ref": { + "mappings": { + "0": { + "then": "This bookcase is not part of a bigger network" + } + }, + "question": "What is the reference number of this public bookcase?", + "render": "The reference number of this public bookcase within {brand} is {ref}" + }, + "public_bookcase-start_date": { + "question": "When was this public bookcase installed?", + "render": "Installed on {start_date}" + }, + "public_bookcase-website": { + "question": "Is there a website with more information about this public bookcase?", + "render": "More info on the website" + } + }, + "title": { + "mappings": { + "0": { + "then": "Public bookcase {name}" + } + }, + "render": "Bookcase" + } + }, + "shops": { + "description": "A shop", + "name": "Shop", + "presets": { + "0": { + "description": "Add a new shop", + "title": "Shop" + } + }, + "tagRenderings": { + "shops-email": { + "question": "What is the email address of this shop?", + "render": "{email}" + }, + "shops-name": { + "question": "What is the name of this shop?" + }, + "shops-opening_hours": { + "question": "What are the opening hours of this shop?", + "render": "{opening_hours_table(opening_hours)}" + }, + "shops-phone": { + "question": "What is the phone number?", + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "0": { + "then": "Convenience store" + }, + "1": { + "then": "Supermarket" + }, + "2": { + "then": "Clothing store" + }, + "3": { + "then": "Hairdresser" + }, + "4": { + "then": "Bakery" + }, + "5": { + "then": "Car repair (garage)" + }, + "6": { + "then": "Car dealer" + } + }, + "question": "What does this shop sell?", + "render": "This shop sells {shop}" + }, + "shops-website": { + "question": "What is the website of this shop?", + "render": "{website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "{shop}" + } + }, + "render": "Shop" + } + }, + "slow_roads": { + "tagRenderings": { + "slow_roads-surface": { + "mappings": { + "0": { + "then": "The surface is grass" + }, + "1": { + "then": "The surface is ground" + }, + "2": { + "then": "The surface is unpaved" + }, + "3": { + "then": "The surface is sand" + }, + "4": { + "then": "The surface is paving stones" + }, + "5": { + "then": "The surface is asphalt" + }, + "6": { + "then": "The surface is concrete" + }, + "7": { + "then": "The surface is paved" + } + }, + "render": "The surface is {surface}" + } + } + }, + "sport_pitch": { + "description": "A sport pitch", + "name": "Sport pitches", + "presets": { + "0": { + "title": "Tabletennis table" + }, + "1": { + "title": "Sport pitch" + } + }, + "tagRenderings": { + "sport-pitch-access": { + "mappings": { + "0": { + "then": "Public access" + }, + "1": { + "then": "Limited access (e.g. only with an appointment, during certain hours, ...)" + }, + "2": { + "then": "Only accessible for members of the club" + }, + "3": { + "then": "Private - not accessible to the public" + } + }, + "question": "Is this sport pitch publicly accessible?" + }, + "sport-pitch-reservation": { + "mappings": { + "0": { + "then": "Making an appointment is obligatory to use this sport pitch" + }, + "1": { + "then": "Making an appointment is recommended when using this sport pitch" + }, + "2": { + "then": "Making an appointment is possible, but not necessary to use this sport pitch" + }, + "3": { + "then": "Making an appointment is not possible" + } + }, + "question": "Does one have to make an appointment to use this sport pitch?" + }, + "sport_pitch-email": { + "question": "What is the email address of the operator?" + }, + "sport_pitch-opening_hours": { + "mappings": { + "1": { + "then": "Always accessible" + } + }, + "question": "When is this pitch accessible?" + }, + "sport_pitch-phone": { + "question": "What is the phone number of the operator?" + }, + "sport_pitch-sport": { + "mappings": { + "0": { + "then": "Basketball is played here" + }, + "1": { + "then": "Soccer is played here" + }, + "2": { + "then": "This is a pingpong table" + }, + "3": { + "then": "Tennis is played here" + }, + "4": { + "then": "Korfball is played here" + }, + "5": { + "then": "Basketball is played here" + } + }, + "question": "Which sport can be played here?", + "render": "{sport} is played here" + }, + "sport_pitch-surface": { + "mappings": { + "0": { + "then": "The surface is grass" + }, + "1": { + "then": "The surface is sand" + }, + "2": { + "then": "The surface is paving stones" + }, + "3": { + "then": "The surface is asphalt" + }, + "4": { + "then": "The surface is concrete" + } + }, + "question": "Which is the surface of this sport pitch?", + "render": "The surface is {surface}" + } + }, + "title": { + "render": "Sport pitch" + } + }, + "street_lamps": { + "name": "Street Lamps", + "presets": { + "0": { + "title": "street lamp" + } + }, + "tagRenderings": { + "colour": { + "mappings": { + "0": { + "then": "This lamp emits white light" + }, + "1": { + "then": "This lamp emits green light" + }, + "2": { + "then": "This lamp emits orange light" + } + }, + "question": "What colour light does this lamp emit?", + "render": "This lamp emits {light:colour} light" + }, + "count": { + "mappings": { + "0": { + "then": "This lamp has 1 fixture" + }, + "1": { + "then": "This lamp has 2 fixtures" + } + }, + "question": "How many fixtures does this light have?", + "render": "This lamp has {light:count} fixtures" + }, + "direction": { + "question": "Where does this lamp point to?", + "render": "This lamp points towards {light:direction}" + }, + "lamp_mount": { + "mappings": { + "0": { + "then": "This lamp sits atop of a straight mast" + }, + "1": { + "then": "This lamp sits at the end of a bent mast" + } + }, + "question": "How is this lamp mounted to the pole?" + }, + "lit": { + "mappings": { + "0": { + "then": "This lamp is lit at night" + }, + "1": { + "then": "This lamp is lit 24/7" + }, + "2": { + "then": "This lamp is lit based on motion" + }, + "3": { + "then": "This lamp is lit based on demand (e.g. with a pushbutton)" + } + }, + "question": "When is this lamp lit?" + }, + "method": { + "mappings": { + "0": { + "then": "This lamp is lit electrically" + }, + "1": { + "then": "This lamp uses LEDs" + }, + "2": { + "then": "This lamp uses incandescent lighting" + }, + "3": { + "then": "This lamp uses halogen lighting" + }, + "4": { + "then": "This lamp uses discharge lamps (unknown type)" + }, + "5": { + "then": "This lamp uses a mercury-vapour lamp (lightly blueish)" + }, + "6": { + "then": "This lamp uses metal-halide lamps (bright white)" + }, + "7": { + "then": "This lamp uses fluorescent lighting" + }, + "8": { + "then": "This lamp uses sodium lamps (unknown type)" + }, + "9": { + "then": "This lamp uses low pressure sodium lamps (monochrome orange)" + }, + "10": { + "then": "This lamp uses high pressure sodium lamps (orange with white)" + }, + "11": { + "then": "This lamp is lit using gas" + } + }, + "question": "What kind of lighting does this lamp use?" + }, + "ref": { + "question": "What is the reference number of this street lamp?", + "render": "This street lamp has the reference number {ref}" + }, + "support": { + "mappings": { + "0": { + "then": "This lamp is suspended using cables" + }, + "1": { + "then": "This lamp is mounted on a ceiling" + }, + "2": { + "then": "This lamp is mounted in the ground" + }, + "3": { + "then": "This lamp is mounted on a short pole (mostly < 1.5m)" + }, + "4": { + "then": "This lamp is mounted on a pole" + }, + "5": { + "then": "This lamp is mounted directly to the wall" + }, + "6": { + "then": "This lamp is mounted to the wall using a metal bar" + } + }, + "question": "How is this street lamp mounted?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Street Lamp {ref}" + } + }, + "render": "Street Lamp" + } + }, + "surveillance_camera": { + "name": "Surveillance camera's", + "tagRenderings": { + "Camera type: fixed; panning; dome": { + "mappings": { + "0": { + "then": "A fixed (non-moving) camera" + }, + "1": { + "then": "A dome camera (which can turn)" + }, + "2": { + "then": "A panning camera" + } + }, + "question": "What kind of camera is this?" + }, + "Level": { + "question": "On which level is this camera located?", + "render": "Located on level {level}" + }, + "Operator": { + "question": "Who operates this CCTV?", + "render": "Operated by {operator}" + }, + "Surveillance type: public, outdoor, indoor": { + "mappings": { + "0": { + "then": "A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel,..." + }, + "1": { + "then": "An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, ...)" + }, + "2": { + "then": "A private indoor area is surveilled, e.g. a shop, a private underground parking, ..." + } + }, + "question": "What kind of surveillance is this camera" + }, + "Surveillance:zone": { + "mappings": { + "0": { + "then": "Surveills a parking" + }, + "1": { + "then": "Surveills the traffic" + }, + "2": { + "then": "Surveills an entrance" + }, + "3": { + "then": "Surveills a corridor" + }, + "4": { + "then": "Surveills a public tranport platform" + }, + "5": { + "then": "Surveills a shop" + } + }, + "question": "What exactly is surveilled here?", + "render": " Surveills a {surveillance:zone}" + }, + "camera:mount": { + "mappings": { + "0": { + "then": "This camera is placed against a wall" + }, + "1": { + "then": "This camera is placed one a pole" + }, + "2": { + "then": "This camera is placed on the ceiling" + } + }, + "question": "How is this camera placed?", + "render": "Mounting method: {camera:mount}" + }, + "camera_direction": { + "mappings": { + "0": { + "then": "Films to a compass heading of {direction}" + } + }, + "question": "In which geographical direction does this camera film?", + "render": "Films to a compass heading of {camera:direction}" + }, + "is_indoor": { + "mappings": { + "0": { + "then": "This camera is located indoors" + }, + "1": { + "then": "This camera is located outdoors" + }, + "2": { + "then": "This camera is probably located outdoors" + } + }, + "question": "Is the public space surveilled by this camera an indoor or outdoor space?" + } + }, + "title": { + "render": "Surveillance Camera" + } + }, + "toilet": { + "filter": { + "0": { + "options": { + "0": { + "question": "Wheelchair accessible" + } + } + }, + "1": { + "options": { + "0": { + "question": "Has a changing table" + } + } + }, + "2": { + "options": { + "0": { + "question": "Free to use" + } + } + }, + "3": { + "options": { + "0": { + "question": "Opened now" + } + } + } + }, + "name": "Toilets", + "presets": { + "0": { + "description": "A publicly accessible toilet or restroom", + "title": "toilet" + }, + "1": { + "description": "A restroom which has at least one wheelchair-accessible toilet", + "title": "toilets with wheelchair accessible toilet" + } + }, + "tagRenderings": { + "Opening-hours": { + "mappings": { + "0": { + "then": "Opened 24/7" + } + }, + "question": "When are these toilets opened?" + }, + "toilet-access": { + "mappings": { + "0": { + "then": "Public access" + }, + "1": { + "then": "Only access to customers" + }, + "2": { + "then": "Not accessible" + }, + "3": { + "then": "Accessible, but one has to ask a key to enter" + }, + "4": { + "then": "Public access" + } + }, + "question": "Are these toilets publicly accessible?", + "render": "Access is {access}" + }, + "toilet-changing_table:location": { + "mappings": { + "0": { + "then": "The changing table is in the toilet for women. " + }, + "1": { + "then": "The changing table is in the toilet for men. " + }, + "2": { + "then": "The changing table is in the toilet for wheelchair users. " + }, + "3": { + "then": "The changing table is in a dedicated room. " + } + }, + "question": "Where is the changing table located?", + "render": "The changing table is located at {changing_table:location}" + }, + "toilet-charge": { + "question": "How much does one have to pay for these toilets?", + "render": "The fee is {charge}" + }, + "toilet-handwashing": { + "mappings": { + "0": { + "then": "This toilets have a sink to wash your hands" + }, + "1": { + "then": "This toilets don't have a sink to wash your hands" + } + }, + "question": "Do these toilets have a sink to wash your hands?" + }, + "toilet-has-paper": { + "mappings": { + "0": { + "then": "This toilet is equipped with toilet paper" + }, + "1": { + "then": "You have to bring your own toilet paper to this toilet" + } + }, + "question": "Does one have to bring their own toilet paper to this toilet?" + }, + "toilets-changing-table": { + "mappings": { + "0": { + "then": "A changing table is available" + }, + "1": { + "then": "No changing table is available" + } + }, + "question": "Is a changing table (to change diapers) available?" + }, + "toilets-fee": { + "mappings": { + "0": { + "then": "These are paid toilets" + }, + "1": { + "then": "Free to use" + } + }, + "question": "Are these toilets free to use?" + }, + "toilets-type": { + "mappings": { + "0": { + "then": "There are only seated toilets" + }, + "1": { + "then": "There are only urinals here" + }, + "2": { + "then": "There are only squat toilets here" + }, + "3": { + "then": "Both seated toilets and urinals are available here" + } + }, + "question": "Which kind of toilets are this?" + }, + "toilets-wheelchair": { + "mappings": { + "0": { + "then": "There is a dedicated toilet for wheelchair users" + }, + "1": { + "then": "No wheelchair access" + } + }, + "question": "Is there a dedicated toilet for wheelchair users" + } + }, + "title": { + "render": "Toilet" + } + }, + "trail": { + "name": "Trails", + "tagRenderings": { + "Color": { + "mappings": { + "0": { + "then": "Blue trail" + }, + "1": { + "then": "Red trail" + }, + "2": { + "then": "Green trail" + }, + "3": { + "then": "Yellow trail" + } + } + }, + "trail-length": { + "render": "The trail is {_length:km} kilometers long" + } + }, + "title": { + "render": "Trail" + } + }, + "tree_node": { + "name": "Tree", + "presets": { + "0": { + "description": "A tree of a species with leaves, such as oak or populus.", + "title": "Broadleaved tree" + }, + "1": { + "description": "A tree of a species with needles, such as pine or spruce.", + "title": "Needleleaved tree" + }, + "2": { + "description": "If you're not sure whether it's a broadleaved or needleleaved tree.", + "title": "Tree" + } + }, + "tagRenderings": { + "tree-decidouous": { + "mappings": { + "0": { + "then": "Deciduous: the tree loses its leaves for some time of the year." + }, + "1": { + "then": "Evergreen." + } + }, + "question": "Is this tree evergreen or deciduous?" + }, + "tree-denotation": { + "mappings": { + "0": { + "then": "The tree is remarkable due to its size or prominent location. It is useful for navigation." + }, + "1": { + "then": "The tree is a natural monument, e.g. because it is especially old, or of a valuable species." + }, + "2": { + "then": "The tree is used for agricultural purposes, e.g. in an orchard." + }, + "3": { + "then": "The tree is in a park or similar (cemetery, school grounds, â€Ļ)." + }, + "4": { + "then": "The tree is a residential garden." + }, + "5": { + "then": "This is a tree along an avenue." + }, + "6": { + "then": "The tree is an urban area." + }, + "7": { + "then": "The tree is outside of an urban area." + } + }, + "question": "How significant is this tree? Choose the first answer that applies." + }, + "tree-height": { + "mappings": { + "0": { + "then": "Height: {height} m" + } + }, + "render": "Height: {height}" + }, + "tree-heritage": { + "mappings": { + "0": { + "then": "\"\"/ Registered as heritage by Onroerend Erfgoed Flanders" + }, + "1": { + "then": "Registered as heritage by Direction du Patrimoine culturel Brussels" + }, + "2": { + "then": "Registered as heritage by a different organisation" + }, + "3": { + "then": "Not registered as heritage" + }, + "4": { + "then": "Registered as heritage by a different organisation" + } + }, + "question": "Is this tree registered heritage?" + }, + "tree-leaf_type": { + "mappings": { + "0": { + "then": "\"\"/ Broadleaved" + }, + "1": { + "then": "\"\"/ Needleleaved" + }, + "2": { + "then": "\"\"/ Permanently leafless" + } + }, + "question": "Is this a broadleaved or needleleaved tree?" + }, + "tree_node-name": { + "mappings": { + "0": { + "then": "The tree does not have a name." + } + }, + "question": "Does the tree have a name?", + "render": "Name: {name}" + }, + "tree_node-ref:OnroerendErfgoed": { + "question": "What is the ID issued by Onroerend Erfgoed Flanders?", + "render": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}" + }, + "tree_node-wikidata": { + "question": "What is the Wikidata ID for this tree?", + "render": "\"\"/ Wikidata: {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Tree" + } + }, + "viewpoint": { + "description": "A nice viewpoint or nice view. Ideal to add an image if no other category fits", + "name": "Viewpoint", + "presets": { + "0": { + "title": "Viewpoint" + } + }, + "tagRenderings": { + "viewpoint-description": { + "question": "Do you want to add a description?" + } + }, + "title": { + "render": "Viewpoint" + } + }, + "visitor_information_centre": { + "description": "A visitor center offers information about a specific attraction or place of interest where it is located.", + "name": "Visitor Information Centre", + "title": { + "mappings": { + "1": { + "then": "{name}" + } + }, + "render": "{name}" + } + }, + "waste_basket": { + "description": "This is a public waste basket, thrash can, where you can throw away your thrash.", + "mapRendering": { + "0": { + "iconSize": { + "mappings": { + "0": { + "then": "Waste Basket" + } + } + } + } + }, + "name": "Waste Basket", + "presets": { + "0": { + "title": "Waste Basket" + } + }, + "tagRenderings": { + "dispensing_dog_bags": { + "mappings": { + "0": { + "then": "This waste basket has a dispenser for (dog) excrement bags" + }, + "1": { + "then": "This waste basket does not have a dispenser for (dog) excrement bags" + }, + "2": { + "then": "This waste basket does not have a dispenser for (dog) excrement bags" + } + }, + "question": "Does this waste basket have a dispenser for dog excrement bags?" + }, + "waste-basket-waste-types": { + "mappings": { + "0": { + "then": "A waste basket for general waste" + }, + "1": { + "then": "A waste basket for general waste" + }, + "2": { + "then": "A waste basket for dog excrements" + }, + "3": { + "then": "A waste basket for cigarettes" + }, + "4": { + "then": "A waste basket for drugs" + }, + "5": { + "then": "A waste basket for needles and other sharp objects" + } + }, + "question": "What kind of waste basket is this?" + } + }, + "title": { + "render": "Waste Basket" + } + }, + "watermill": { + "name": "Watermill" + } } \ No newline at end of file diff --git a/langs/layers/eo.json b/langs/layers/eo.json index f43552cc5..f801770b8 100644 --- a/langs/layers/eo.json +++ b/langs/layers/eo.json @@ -1,192 +1,185 @@ { - "bench": { - "tagRenderings": { - "bench-colour": { - "mappings": { - "0": { - "then": "Koloro: bruna" - }, - "1": { - "then": "Koloro: verda" - }, - "2": { - "then": "Koloro: griza" - }, - "3": { - "then": "Koloro: blanka" - }, - "4": { - "then": "Koloro: ruĝa" - }, - "5": { - "then": "Koloro: nigra" - }, - "6": { - "then": "Koloro: blua" - }, - "7": { - "then": "Koloro: flava" - } - }, - "render": "Koloro: {colour}" - }, - "bench-material": { - "mappings": { - "0": { - "then": "Materialo: ligna" - }, - "1": { - "then": "Materialo: metala" - }, - "2": { - "then": "Materialo: ŝtona" - }, - "3": { - "then": "Materialo: betona" - }, - "4": { - "then": "Materialo: plasta" - }, - "5": { - "then": "Materialo: ŝtala" - } - }, - "render": "Materialo: {material}" - } - } - }, - "bench_at_pt": { - "tagRenderings": { - "bench_at_pt-name": { - "render": "{name}" - } - } - }, - "bicycle_library": { - "presets": { - "0": { - "title": "Fietsbibliotheek" - } - } - }, - "bike_parking": { - "tagRenderings": { - "Access": { - "render": "{access}" - } - } - }, - "ghost_bike": { - "name": "Fantombiciklo", - "title": { - "render": "Fantombiciklo" - } - }, - "shops": { - "description": "Butiko", - "name": "Butiko", - "presets": { - "0": { - "description": "Enmeti novan butikon", - "title": "Butiko" - } + "bench": { + "tagRenderings": { + "bench-colour": { + "mappings": { + "0": { + "then": "Koloro: bruna" + }, + "1": { + "then": "Koloro: verda" + }, + "2": { + "then": "Koloro: griza" + }, + "3": { + "then": "Koloro: blanka" + }, + "4": { + "then": "Koloro: ruĝa" + }, + "5": { + "then": "Koloro: nigra" + }, + "6": { + "then": "Koloro: blua" + }, + "7": { + "then": "Koloro: flava" + } }, - "tagRenderings": { - "shops-email": { - "question": "Kio estas la retpoŝta adreso de ĉi tiu butiko?", - "render": "{email}" - }, - "shops-phone": { - "question": "Kio estas la telefonnumero?", - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "4": { - "then": "Bakejo" - } - }, - "question": "Kion vendas ĉi tiu butiko?", - "render": "Ĉi tiu butiko vendas {shop}" - }, - "shops-website": { - "render": "{website}" - } + "render": "Koloro: {colour}" + }, + "bench-material": { + "mappings": { + "0": { + "then": "Materialo: ligna" + }, + "1": { + "then": "Materialo: metala" + }, + "2": { + "then": "Materialo: ŝtona" + }, + "3": { + "then": "Materialo: betona" + }, + "4": { + "then": "Materialo: plasta" + }, + "5": { + "then": "Materialo: ŝtala" + } }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "{shop}" - } - }, - "render": "Butiko" - } - }, - "slow_roads": { - "tagRenderings": { - "slow_roads-surface": { - "mappings": { - "0": { - "then": "La surfaco estas herba" - }, - "3": { - "then": "La surfaco estas sabla" - }, - "6": { - "then": "La surfaco estas betona" - } - }, - "render": "La surfaco estas {surface}" - } - } - }, - "tree_node": { - "tagRenderings": { - "tree_node-name": { - "render": "Nomo: {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Arbo" - } - }, - "viewpoint": { - "name": "Vidpunkto", - "title": { - "render": "Vidpunkto" - } - }, - "visitor_information_centre": { - "title": { - "mappings": { - "1": { - "then": "{name}" - } - }, - "render": "{name}" - } - }, - "waste_basket": { - "iconSize": { - "mappings": { - "0": { - "then": "Rubujo" - } - } - }, - "name": "Rubujo", - "presets": { - "0": { - "title": "Rubujo" - } - } + "render": "Materialo: {material}" + } } + }, + "bench_at_pt": { + "tagRenderings": { + "bench_at_pt-name": { + "render": "{name}" + } + } + }, + "bicycle_library": { + "presets": { + "0": { + "title": "Fietsbibliotheek" + } + } + }, + "bike_parking": { + "tagRenderings": { + "Access": { + "render": "{access}" + } + } + }, + "ghost_bike": { + "name": "Fantombiciklo", + "title": { + "render": "Fantombiciklo" + } + }, + "shops": { + "description": "Butiko", + "name": "Butiko", + "presets": { + "0": { + "description": "Enmeti novan butikon", + "title": "Butiko" + } + }, + "tagRenderings": { + "shops-email": { + "question": "Kio estas la retpoŝta adreso de ĉi tiu butiko?", + "render": "{email}" + }, + "shops-phone": { + "question": "Kio estas la telefonnumero?", + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "4": { + "then": "Bakejo" + } + }, + "question": "Kion vendas ĉi tiu butiko?", + "render": "Ĉi tiu butiko vendas {shop}" + }, + "shops-website": { + "render": "{website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "{shop}" + } + }, + "render": "Butiko" + } + }, + "slow_roads": { + "tagRenderings": { + "slow_roads-surface": { + "mappings": { + "0": { + "then": "La surfaco estas herba" + }, + "3": { + "then": "La surfaco estas sabla" + }, + "6": { + "then": "La surfaco estas betona" + } + }, + "render": "La surfaco estas {surface}" + } + } + }, + "tree_node": { + "tagRenderings": { + "tree_node-name": { + "render": "Nomo: {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Arbo" + } + }, + "viewpoint": { + "name": "Vidpunkto", + "title": { + "render": "Vidpunkto" + } + }, + "visitor_information_centre": { + "title": { + "mappings": { + "1": { + "then": "{name}" + } + }, + "render": "{name}" + } + }, + "waste_basket": { + "name": "Rubujo", + "presets": { + "0": { + "title": "Rubujo" + } + } + } } \ No newline at end of file diff --git a/langs/layers/es.json b/langs/layers/es.json index f5a7196b8..ef10b5f04 100644 --- a/langs/layers/es.json +++ b/langs/layers/es.json @@ -1,144 +1,143 @@ { - "artwork": { - "description": "Diversas piezas de obras de arte", - "name": "Obras de arte", - "presets": { - "0": { - "title": "Obra de arte" - } - }, - "tagRenderings": { - "artwork-artwork_type": { - "question": "CuÃĄl es el tipo de esta obra de arte?", - "render": "Esta es un {artwork_type}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Obra de arte {nombre}" - } - }, - "render": "Obra de arte" - } + "artwork": { + "description": "Diversas piezas de obras de arte", + "name": "Obras de arte", + "presets": { + "0": { + "title": "Obra de arte" + } }, - "bench": { - "name": "Bancos", - "presets": { - "0": { - "title": "banco" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Respaldo: Si" - }, - "1": { - "then": "Respaldo: No" - } - }, - "question": "ÂŋEste banco tiene un respaldo?", - "render": "Respaldo" - }, - "bench-material": { - "mappings": { - "0": { - "then": "Material: madera" - }, - "1": { - "then": "Material: metal" - }, - "2": { - "then": "Material: piedra" - }, - "3": { - "then": "Material: concreto" - }, - "4": { - "then": "Material: plastico" - }, - "5": { - "then": "Material: acero" - } - }, - "render": "Material: {material}" - }, - "bench-seats": { - "question": "ÂŋCuÃĄntos asientos tiene este banco?", - "render": "{seats} asientos" - } - }, - "title": { - "render": "Banco" - } + "tagRenderings": { + "artwork-artwork_type": { + "question": "CuÃĄl es el tipo de esta obra de arte?", + "render": "Esta es un {artwork_type}" + } }, - "bench_at_pt": { - "name": "Bancos en una parada de transporte pÃēblico", - "title": { - "render": "Banco" - } - }, - "defibrillator": { - "name": "Desfibriladores", - "presets": { - "0": { - "title": "Desfibrilador" - } - }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "Acceso libre" - }, - "1": { - "then": "Publicament accesible" - }, - "2": { - "then": "SÃŗlo accesible a clientes" - }, - "3": { - "then": "No accesible al pÃēblico en general (ex. sÃŗlo accesible a trabajadores, propietarios, ...)" - } - }, - "question": "ÂŋEstÃĄ el desfibrilador accesible libremente?", - "render": "El acceso es {access}" - }, - "defibrillator-defibrillator:location": { - "question": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en el idioma local)" - }, - "defibrillator-defibrillator:location:en": { - "question": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en ingles)" - }, - "defibrillator-defibrillator:location:fr": { - "question": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en frances)" - }, - "defibrillator-indoors": { - "mappings": { - "0": { - "then": "Este desfibrilador estÃĄ en interior" - }, - "1": { - "then": "Este desfibrilador estÃĄ en exterior" - } - }, - "question": "ÂŋEstÊ el desfibrilador en interior?" - }, - "defibrillator-level": { - "question": "ÂŋEn quÊ planta se encuentra el defibrilador localizado?", - "render": "El desfibrilador se encuentra en la planta {level}" - } - }, - "title": { - "render": "Desfibrilador" - } - }, - "ghost_bike": { - "name": "Bicicleta blanca", - "title": { - "render": "Bicicleta blanca" + "title": { + "mappings": { + "0": { + "then": "Obra de arte {nombre}" } + }, + "render": "Obra de arte" } + }, + "bench": { + "name": "Bancos", + "presets": { + "0": { + "title": "banco" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Respaldo: Si" + }, + "1": { + "then": "Respaldo: No" + } + }, + "question": "ÂŋEste banco tiene un respaldo?" + }, + "bench-material": { + "mappings": { + "0": { + "then": "Material: madera" + }, + "1": { + "then": "Material: metal" + }, + "2": { + "then": "Material: piedra" + }, + "3": { + "then": "Material: concreto" + }, + "4": { + "then": "Material: plastico" + }, + "5": { + "then": "Material: acero" + } + }, + "render": "Material: {material}" + }, + "bench-seats": { + "question": "ÂŋCuÃĄntos asientos tiene este banco?", + "render": "{seats} asientos" + } + }, + "title": { + "render": "Banco" + } + }, + "bench_at_pt": { + "name": "Bancos en una parada de transporte pÃēblico", + "title": { + "render": "Banco" + } + }, + "defibrillator": { + "name": "Desfibriladores", + "presets": { + "0": { + "title": "Desfibrilador" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "Acceso libre" + }, + "1": { + "then": "Publicament accesible" + }, + "2": { + "then": "SÃŗlo accesible a clientes" + }, + "3": { + "then": "No accesible al pÃēblico en general (ex. sÃŗlo accesible a trabajadores, propietarios, ...)" + } + }, + "question": "ÂŋEstÃĄ el desfibrilador accesible libremente?", + "render": "El acceso es {access}" + }, + "defibrillator-defibrillator:location": { + "question": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en el idioma local)" + }, + "defibrillator-defibrillator:location:en": { + "question": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en ingles)" + }, + "defibrillator-defibrillator:location:fr": { + "question": "Da detalles de dÃŗnde se puede encontrar el desfibrilador (en frances)" + }, + "defibrillator-indoors": { + "mappings": { + "0": { + "then": "Este desfibrilador estÃĄ en interior" + }, + "1": { + "then": "Este desfibrilador estÃĄ en exterior" + } + }, + "question": "ÂŋEstÊ el desfibrilador en interior?" + }, + "defibrillator-level": { + "question": "ÂŋEn quÊ planta se encuentra el defibrilador localizado?", + "render": "El desfibrilador se encuentra en la planta {level}" + } + }, + "title": { + "render": "Desfibrilador" + } + }, + "ghost_bike": { + "name": "Bicicleta blanca", + "title": { + "render": "Bicicleta blanca" + } + } } \ No newline at end of file diff --git a/langs/layers/fi.json b/langs/layers/fi.json index 4c5b4a409..518882d48 100644 --- a/langs/layers/fi.json +++ b/langs/layers/fi.json @@ -1,131 +1,130 @@ { - "artwork": { - "presets": { - "0": { - "title": "Taideteos" - } - }, - "title": { - "mappings": { - "0": { - "then": "Taideteos {name}" - } - }, - "render": "Taideteos" - } + "artwork": { + "presets": { + "0": { + "title": "Taideteos" + } }, - "bench": { - "name": "Penkit", - "presets": { - "0": { - "title": "penkki" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Selkänoja: kyllä" - }, - "1": { - "then": "Selkänoja: ei" - } - }, - "render": "Selkänoja" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Väri: ruskea" - }, - "1": { - "then": "Väri: vihreä" - }, - "2": { - "then": "Väri: harmaa" - }, - "3": { - "then": "Väri: valkoinen" - }, - "4": { - "then": "Väri: punainen" - }, - "5": { - "then": "Väri: musta" - }, - "6": { - "then": "Väri: sininen" - }, - "7": { - "then": "Väri: keltainen" - } - }, - "render": "Väri: {colour}" - }, - "bench-material": { - "mappings": { - "0": { - "then": "Materiaali: puu" - }, - "2": { - "then": "Materiaali: kivi" - }, - "3": { - "then": "Materiaali: betoni" - }, - "4": { - "then": "Materiaali: muovi" - }, - "5": { - "then": "Materiaali: teräs" - } - }, - "render": "Materiaali: {material}" - } - }, - "title": { - "render": "Penkki" - } - }, - "bench_at_pt": { - "tagRenderings": { - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "render": "Penkki" - } - }, - "bike_parking": { - "tagRenderings": { - "Access": { - "render": "{access}" - } - } - }, - "bike_repair_station": { - "presets": { - "0": { - "title": "PyÃļräpumppu" - } - } - }, - "ghost_bike": { - "name": "HaamupyÃļrä", - "title": { - "render": "HaamupyÃļrä" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "Autokorjaamo" - } - } - } + "title": { + "mappings": { + "0": { + "then": "Taideteos {name}" } + }, + "render": "Taideteos" } + }, + "bench": { + "name": "Penkit", + "presets": { + "0": { + "title": "penkki" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Selkänoja: kyllä" + }, + "1": { + "then": "Selkänoja: ei" + } + } + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Väri: ruskea" + }, + "1": { + "then": "Väri: vihreä" + }, + "2": { + "then": "Väri: harmaa" + }, + "3": { + "then": "Väri: valkoinen" + }, + "4": { + "then": "Väri: punainen" + }, + "5": { + "then": "Väri: musta" + }, + "6": { + "then": "Väri: sininen" + }, + "7": { + "then": "Väri: keltainen" + } + }, + "render": "Väri: {colour}" + }, + "bench-material": { + "mappings": { + "0": { + "then": "Materiaali: puu" + }, + "2": { + "then": "Materiaali: kivi" + }, + "3": { + "then": "Materiaali: betoni" + }, + "4": { + "then": "Materiaali: muovi" + }, + "5": { + "then": "Materiaali: teräs" + } + }, + "render": "Materiaali: {material}" + } + }, + "title": { + "render": "Penkki" + } + }, + "bench_at_pt": { + "tagRenderings": { + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "render": "Penkki" + } + }, + "bike_parking": { + "tagRenderings": { + "Access": { + "render": "{access}" + } + } + }, + "bike_repair_station": { + "presets": { + "0": { + "title": "PyÃļräpumppu" + } + } + }, + "ghost_bike": { + "name": "HaamupyÃļrä", + "title": { + "render": "HaamupyÃļrä" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "Autokorjaamo" + } + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/fr.json b/langs/layers/fr.json index 90d41cf41..1f6ea34ce 100644 --- a/langs/layers/fr.json +++ b/langs/layers/fr.json @@ -1,1940 +1,1938 @@ { - "artwork": { - "description": "Diverses œuvres d'art", - "name": "Œuvres d'art", - "presets": { - "0": { - "title": "Œuvre d'art" - } - }, - "tagRenderings": { - "artwork-artist_name": { - "question": "Quel artiste a crÊÊ cette œuvre ?", - "render": "CrÊÊ par {artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "Architecture" - }, - "1": { - "then": "Peinture murale" - }, - "2": { - "then": "Peinture" - }, - "3": { - "then": "Sculpture" - }, - "4": { - "then": "Statue" - }, - "5": { - "then": "Buste" - }, - "6": { - "then": "Rocher" - }, - "7": { - "then": "Installation" - }, - "8": { - "then": "Graffiti" - }, - "9": { - "then": "Relief" - }, - "10": { - "then": "Azulejo (faïence latine)" - }, - "11": { - "then": "Carrelage" - } - }, - "question": "Quel est le type de cette œuvre d'art?", - "render": "Type d'œuvre : {artwork_type}" - }, - "artwork-website": { - "question": "Existe-t-il un site web oÚ trouver plus d'informations sur cette œuvre d'art ?", - "render": "Plus d'info sÃģr ce site web" - }, - "artwork-wikidata": { - "question": "Quelle entrÊe Wikidata correspond à cette œuvre d'art ?", - "render": "Correspond à {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Œuvre d'art {name}" - } - }, - "render": "Œuvre d'art" - } + "artwork": { + "description": "Diverses œuvres d'art", + "name": "Œuvres d'art", + "presets": { + "0": { + "title": "Œuvre d'art" + } }, - "bench": { - "name": "Bancs", - "presets": { - "0": { - "title": "banc" - } + "tagRenderings": { + "artwork-artist_name": { + "question": "Quel artiste a crÊÊ cette œuvre ?", + "render": "CrÊÊ par {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "Architecture" + }, + "1": { + "then": "Peinture murale" + }, + "2": { + "then": "Peinture" + }, + "3": { + "then": "Sculpture" + }, + "4": { + "then": "Statue" + }, + "5": { + "then": "Buste" + }, + "6": { + "then": "Rocher" + }, + "7": { + "then": "Installation" + }, + "8": { + "then": "Graffiti" + }, + "9": { + "then": "Relief" + }, + "10": { + "then": "Azulejo (faïence latine)" + }, + "11": { + "then": "Carrelage" + } }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Dossier : Oui" - }, - "1": { - "then": "Dossier : Non" - } - }, - "question": "Ce banc dispose-t-il d'un dossier ?", - "render": "Dossier" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Couleur : marron" - }, - "1": { - "then": "Couleur : verte" - }, - "2": { - "then": "Couleur : gris" - }, - "3": { - "then": "Couleur : blanc" - }, - "4": { - "then": "Couleur : rouge" - }, - "5": { - "then": "Couleur : noire" - }, - "6": { - "then": "Couleur : bleu" - }, - "7": { - "then": "Couleur : jaune" - } - }, - "question": "Quelle est la couleur de ce banc ?", - "render": "Couleur : {colour}" - }, - "bench-direction": { - "question": "Dans quelle direction regardez-vous quand vous ÃĒtes assis sur le banc ?", - "render": "Assis sur le banc, on regarde vers {direction}°." - }, - "bench-material": { - "mappings": { - "0": { - "then": "MatÊriau : bois" - }, - "1": { - "then": "MatÊriau : mÊtal" - }, - "2": { - "then": "MatÊriau : pierre" - }, - "3": { - "then": "MatÊriau : bÊton" - }, - "4": { - "then": "MatÊriau : plastique" - }, - "5": { - "then": "MatÊriau : acier" - } - }, - "question": "De quel matÊriau ce banc est-il fait ?", - "render": "MatÊriau : {material}" - }, - "bench-seats": { - "question": "De combien de places dispose ce banc ?", - "render": "{seats} places" - }, - "bench-survey:date": { - "question": "Quand ce banc a-t-il ÊtÊ contrôlÊ pour la dernière fois ?", - "render": "Ce banc a ÊtÊ contrôlÊ pour la dernière fois le {survey:date}" - } - }, - "title": { - "render": "Banc" - } + "question": "Quel est le type de cette œuvre d'art?", + "render": "Type d'œuvre : {artwork_type}" + }, + "artwork-website": { + "question": "Existe-t-il un site web oÚ trouver plus d'informations sur cette œuvre d'art ?", + "render": "Plus d'info sÃģr ce site web" + }, + "artwork-wikidata": { + "question": "Quelle entrÊe Wikidata correspond à cette œuvre d'art ?", + "render": "Correspond à {wikidata}" + } }, - "bench_at_pt": { - "name": "Bancs des arrÃĒts de transport en commun", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "Banc assis debout" - }, - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Banc d'un arrÃĒt de transport en commun" - }, - "1": { - "then": "Banc dans un abri" - } - }, - "render": "Banc" - } - }, - "bicycle_library": { - "description": "Un lieu oÚ des vÊlos peuvent ÃĒtre empruntÊs pour un temps plus long", - "name": "VÊlothèque", - "presets": { - "0": { - "description": "Une vÊlothèque a une flotte de vÊlos qui peuvent ÃĒtre empruntÊs", - "title": "VÊlothèque" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "VÊlos pour enfants disponibles" - }, - "1": { - "then": "VÊlos pour adultes disponibles" - }, - "2": { - "then": "VÊlos pour personnes handicapÊes disponibles" - } - }, - "question": "Qui peut emprunter des vÊlos ici ?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "L'emprunt de vÊlo est gratuit" - }, - "1": { - "then": "Emprunter un vÊlo coÃģte 20 â‚Ŧ/an et 20 â‚Ŧ de garantie" - } - }, - "question": "Combien coÃģte l'emprunt d'un vÊlo ?", - "render": "Emprunter un vÊlo coÃģte {charge}" - }, - "bicycle_library-name": { - "question": "Quel est le nom de cette vÊlothèque ?", - "render": "Cette vÊlothèque s'appelle {name}" - } - }, - "title": { - "render": "VÊlothèque" - } - }, - "bicycle_tube_vending_machine": { - "name": "Distributeur automatique de chambre à air de vÊlo", - "presets": { - "0": { - "title": "Distributeur automatique de chambre à air de vÊlo" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Le distributeur automatique fonctionne" - }, - "1": { - "then": "Le distributeur automatique est en panne" - }, - "2": { - "then": "Le distributeur automatique est fermÊ" - } - }, - "question": "Cette machine est-elle encore opÊrationelle ?", - "render": "L'Êtat opÊrationnel est {operational_status}" - } - }, - "title": { - "render": "Distributeur automatique de chambre à air de vÊlo" - } - }, - "bike_cafe": { - "name": "CafÊ vÊlo", - "presets": { - "0": { - "title": "CafÊ VÊlo" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "Ce CafÊ vÊlo offre une pompe en libre accès" - }, - "1": { - "then": "Ce CafÊ vÊlo n'offre pas de pompe en libre accès" - } - }, - "question": "Est-ce que ce CafÊ vÊlo propose une pompe en libre accès ?" - }, - "bike_cafe-email": { - "question": "Quelle est l'adresse Êlectronique de {name} ?" - }, - "bike_cafe-name": { - "question": "Quel est le nom de ce CafÊ vÊlo ?", - "render": "Ce CafÊ vÊlo s'appelle {name}" - }, - "bike_cafe-opening_hours": { - "question": "Quand ce CafÊ vÊlo est-t-il ouvert ?" - }, - "bike_cafe-phone": { - "question": "Quel est le numÊro de tÊlÊphone de {name} ?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "Ce CafÊ vÊlo rÊpare les vÊlos" - }, - "1": { - "then": "Ce CafÊ vÊlo ne rÊpare pas les vÊlos" - } - }, - "question": "Est-ce que ce CafÊ vÊlo rÊpare les vÊlos ?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "Ce CafÊ vÊlo propose des outils pour rÊparer son vÊlo soi-mÃĒme" - }, - "1": { - "then": "Ce CafÊ vÊlo ne propose pas d'outils pour rÊparer son vÊlo soi-mÃĒme" - } - }, - "question": "Est-ce qu'il y a des outils pour rÊparer soi-mÃĒme son vÊlo ?" - }, - "bike_cafe-website": { - "question": "Quel est le site web de {name} ?" - } - }, - "title": { - "mappings": { - "0": { - "then": "CafÊ VÊlo {name}" - } - }, - "render": "CafÊ VÊlo" - } - }, - "bike_cleaning": { - "name": "Service de nettoyage de vÊlo", - "presets": { - "0": { - "title": "Service de nettoyage de vÊlo" - } - }, - "title": { - "mappings": { - "0": { - "then": "Service de nettoyage de vÊlo {name}" - } - }, - "render": "Service de nettoyage de vÊlo" - } - }, - "bike_parking": { - "name": "Parking à vÊlo", - "presets": { - "0": { - "title": "Parking à vÊlo" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "Accessible publiquement" - }, - "1": { - "then": "Accès destinÊ principalement aux visiteurs d'un lieu" - }, - "2": { - "then": "Accès limitÊ aux membres d'une Êcole, entreprise ou organisation" - } - }, - "question": "Qui peut utiliser ce parking à vÊlo ?", - "render": "{access}" - }, - "Bicycle parking type": { - "mappings": { - "0": { - "then": "Arceaux " - }, - "1": { - "then": "Pinces-roues " - }, - "2": { - "then": "Support guidon " - }, - "3": { - "then": "RÃĸtelier " - }, - "4": { - "then": "SuperposÊ " - }, - "5": { - "then": "Abri " - }, - "6": { - "then": "Potelet " - }, - "7": { - "then": "Zone au sol qui est marquÊe pour le stationnement des vÊlos" - } - }, - "question": "Quel type de parking à vÊlos est-ce ?", - "render": "Ceci est un parking à vÊlo de type {bicycle_parking}" - }, - "Capacity": { - "question": "Combien de vÊlos entrent dans ce parking à vÊlos (y compris les Êventuels vÊlos de transport) ?", - "render": "Place pour {capacity} vÊlos" - }, - "Cargo bike capacity?": { - "question": "Combien de vÊlos de transport entrent dans ce parking à vÊlos ?", - "render": "Ce parking a de la place pour {capacity:cargo_bike} vÊlos de transport" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "Ce parking a de la place pour les vÊlos cargo" - }, - "1": { - "then": "Ce parking a des emplacements (officiellement) destinÊs aux vÊlos cargo." - }, - "2": { - "then": "Il est interdit de garer des vÊlos cargo" - } - }, - "question": "Est-ce que ce parking à vÊlo a des emplacements pour des vÊlos cargo ?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "Ce parking est couvert (il a un toit)" - }, - "1": { - "then": "Ce parking n'est pas couvert" - } - }, - "question": "Ce parking est-il couvert ? SÊlectionnez aussi \"couvert\" pour les parkings en intÊrieur." - }, - "Underground?": { - "mappings": { - "0": { - "then": "Parking souterrain" - }, - "1": { - "then": "Parking souterrain" - }, - "2": { - "then": "Parking en surface" - }, - "3": { - "then": "Parking en surface" - }, - "4": { - "then": "Parking sur un toit" - } - }, - "question": "Quelle est la position relative de ce parking à vÊlo ?" - } - }, - "title": { - "render": "Parking à vÊlo" - } - }, - "bike_repair_station": { - "name": "Station velo (rÊparation, pompe à vÊlo)", - "presets": { - "0": { - "description": "Un dispositif pour gonfler vos pneus sur un emplacement fixe dans l'espace public.

Exemples de pompes à vÊlo

", - "title": "Pompe à vÊlo" - }, - "1": { - "description": "Un dispositif avec des outils pour rÊparer votre vÊlo combinÊ à une pompe a un emplacement fixe. Les outils sont souvent attachÊs par une chaÃŽne pour empÃĒcher le vol.

Exemple

", - "title": "Point de rÊparation vÊlo avec pompe" - }, - "2": { - "title": "Point de rÊparation vÊlo sans pompe" - } - }, - "tagRenderings": { - "Operational status": { - "mappings": { - "0": { - "then": "La pompe à vÊlo est cassÊe" - }, - "1": { - "then": "La pompe est opÊrationnelle" - } - }, - "question": "La pompe à vÊlo fonctionne-t-elle toujours ?" - }, - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "Il y a seulement une pompe" - }, - "1": { - "then": "Il y a seulement des outils (tournevis, pinces...)" - }, - "2": { - "then": "Il y a des outils et une pompe" - } - }, - "question": "Quels services sont valables à cette station vÊlo ?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "Il y a un outil pour rÊparer la chaine" - }, - "1": { - "then": "Il n'y a pas d'outil pour rÊparer la chaine" - } - }, - "question": "Est-ce que cette station vÊlo a un outil specifique pour rÊparer la chaÃŽne du vÊlo ?" - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "Il y a un crochet ou une accroche" - }, - "1": { - "then": "Il n'y pas de crochet ou d'accroche" - } - }, - "question": "Est-ce que cette station vÊlo à un crochet pour suspendre son vÊlo ou une accroche pour l'ÊlevÊ ?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Pompe manuelle" - }, - "1": { - "then": "Pompe Êlectrique" - } - }, - "question": "Est-ce que cette pompe est Êlectrique ?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "Il y a un manomètre" - }, - "1": { - "then": "Il n'y a pas de manomètre" - }, - "2": { - "then": "Il y a un manomètre mais il est cassÊ" - } - }, - "question": "Est-ce que la pompe à un manomètre integrÊ ?" - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "Ouvert en permanence" - }, - "1": { - "then": "Ouvert en permanence" - } - }, - "question": "Quand ce point de rÊparation de vÊlo est-il ouvert ?" - }, - "bike_repair_station-operator": { - "question": "Qui maintient cette pompe à vÊlo ?", - "render": "Mantenue par {operator}" - }, - "bike_repair_station-valves": { - "mappings": { - "0": { - "then": "Sclaverand (aussi appelÊ Presta)" - }, - "1": { - "then": "Dunlop" - }, - "2": { - "then": "Schrader (les valves de voitures)" - } - }, - "question": "Quelles valves sont compatibles ?", - "render": "Cette pompe est compatible avec les valves suivantes : {valves}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Point de rÊparation velo" - }, - "1": { - "then": "Point de rÊparation" - }, - "2": { - "then": "Pompe cassÊe" - }, - "3": { - "then": "Pompe de vÊlo {name}" - }, - "4": { - "then": "Pompe de vÊlo" - } - }, - "render": "Point station velo avec pompe" - } - }, - "bike_shop": { - "description": "Un magasin vendant spÊcifiquement des vÊlos ou des objets en lien", - "name": "Magasin ou rÊparateur de vÊlo", - "presets": { - "0": { - "title": "Magasin et rÊparateur de vÊlo" - } - }, - "tagRenderings": { - "bike_repair_bike-pump-service": { - "mappings": { - "0": { - "then": "Ce magasin offre une pompe en acces libre" - }, - "1": { - "then": "Ce magasin n'offre pas de pompe en libre accès" - }, - "2": { - "then": "Il y a une pompe à vÊlo, c'est indiquÊ comme un point sÊparÊ " - } - }, - "question": "Est-ce que ce magasin offre une pompe en accès libre ?" - }, - "bike_repair_bike-wash": { - "mappings": { - "0": { - "then": "Ce magasin lave les vÊlos" - }, - "1": { - "then": "Ce magasin a une installation pour laver soi mÃĒme des vÊlos" - }, - "2": { - "then": "Ce magasin ne fait pas le nettoyage de vÊlo" - } - }, - "question": "Lave-t-on les vÊlos ici ?" - }, - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Ce magasin loue des vÊlos" - }, - "1": { - "then": "Ce magasin ne loue pas de vÊlos" - } - }, - "question": "Est-ce ce magasin loue des vÊlos ?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Ce magasin rÊpare des vÊlos" - }, - "1": { - "then": "Ce magasin ne rÊpare pas les vÊlos" - }, - "2": { - "then": "Ce magasin ne rÊpare seulement les vÊlos achetÊs là-bas" - }, - "3": { - "then": "Ce magasin ne rÊpare seulement des marques spÊcifiques" - } - }, - "question": "Est-ce que ce magasin rÊpare des vÊlos ?" - }, - "bike_repair_second-hand-bikes": { - "mappings": { - "0": { - "then": "Ce magasin vend des vÊlos d'occasion" - }, - "1": { - "then": "Ce magasin ne vend pas de vÊlos d'occasion" - }, - "2": { - "then": "Ce magasin vend seulement des vÊlos d'occasion" - } - }, - "question": "Est-ce ce magasin vend des vÊlos d'occasion ?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "Ce magasin vend des vÊlos" - }, - "1": { - "then": "Ce magasin ne vend pas de vÊlo" - } - }, - "question": "Est-ce que ce magasin vend des vÊlos ?" - }, - "bike_repair_tools-service": { - "mappings": { - "0": { - "then": "Ce magasin offre des outils pour rÊparer son vÊlo soi-mÃĒme" - }, - "1": { - "then": "Ce magasin n'offre pas des outils pour rÊparer son vÊlo soi-mÃĒme" - }, - "2": { - "then": "Des outils d'auto-rÊparation sont disponibles uniquement si vous avez achetÊ ou louÊ le vÊlo dans ce magasin" - } - }, - "question": "Est-ce qu'il y a des outils pour rÊparer son vÊlo dans ce magasin ?" - }, - "bike_shop-email": { - "question": "Quelle est l'adresse Êlectronique de {name} ?" - }, - "bike_shop-is-bicycle_shop": { - "render": "Ce magasin est spÊcialisÊ dans la vente de {shop} et a des activitÊs liÊes au vÊlo" - }, - "bike_shop-name": { - "question": "Quel est le nom du magasin de vÊlos ?", - "render": "Ce magasin s'appelle {name}" - }, - "bike_shop-phone": { - "question": "Quel est le numÊro de tÊlÊphone de {name} ?" - }, - "bike_shop-website": { - "question": "Quel est le site web de {name} ?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Magasin de sport {name}" - }, - "2": { - "then": "Location de vÊlo {name}" - }, - "3": { - "then": "RÊparateur de vÊlo {name}" - }, - "4": { - "then": "Magasin de vÊlo {name}" - }, - "5": { - "then": "Magasin ou rÊparateur de vÊlo {name}" - } - }, - "render": "Magasin ou rÊparateur de vÊlo" - } - }, - "bike_themed_object": { - "name": "Objet cycliste", - "title": { - "mappings": { - "1": { - "then": "Piste cyclable" - } - }, - "render": "Objet cycliste" - } - }, - "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, - "name": "DÊfibrillateurs", - "presets": { - "0": { - "title": "DÊfibrillateur" - } - }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "Librement accessible" - }, - "1": { - "then": "Librement accessible" - }, - "2": { - "then": "RÊservÊ aux clients du lieu" - }, - "3": { - "then": "Non accessible au public (par exemple rÊservÊ au personnel, au propriÊtaire, ...)" - }, - "4": { - "then": "Pas accessible, peut-ÃĒtre uniquement à usage professionnel" - } - }, - "question": "Ce dÊfibrillateur est-il librement accessible ?", - "render": "{access} accessible" - }, - "defibrillator-defibrillator": { - "mappings": { - "0": { - "then": "C'est un dÊfibrillateur manuel pour professionnel" - }, - "1": { - "then": "C'est un dÊfibrillateur automatique manuel" - } - }, - "question": "Est-ce un dÊfibrillateur automatique normal ou un dÊfibrillateur manuel à usage professionnel uniquement ?", - "render": "Il n'y a pas d'information sur le type de dispositif" - }, - "defibrillator-defibrillator:location": { - "question": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (dans la langue local)", - "render": "Informations supplÊmentaires à propos de l'emplacement (dans la langue locale) :
{defibrillator:location}" - }, - "defibrillator-defibrillator:location:en": { - "question": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en englais)", - "render": "Informations supplÊmentaires à propos de l'emplacement (en anglais) :
{defibrillator:location}" - }, - "defibrillator-defibrillator:location:fr": { - "question": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en français)", - "render": "Informations supplÊmentaires à propos de l'emplacement (en Français) :
{defibrillator:location}" - }, - "defibrillator-description": { - "question": "Y a-t-il des informations utiles pour les utilisateurs que vous n'avez pas pu dÊcrire ci-dessus ? (laisser vide sinon)", - "render": "Informations supplÊmentaires : {description}" - }, - "defibrillator-email": { - "question": "Quelle est l'adresse Êlectronique pour des questions à propos de ce dÊfibrillateur ?", - "render": "Adresse Êlectronique pour des questions à propos de ce dÊfibrillateur : {email}" - }, - "defibrillator-fixme": { - "question": "Y a-t-il quelque chose qui ne va pas dans la manière dont ça a ÊtÊ cartographiÊ, et que vous n'avez pas pu rÊparer ici ? (laisser une note pour les experts d'OpenStreetMap)", - "render": "Informations supplÊmentaires pour les experts d'OpenStreetMap : {fixme}" - }, - "defibrillator-indoors": { - "mappings": { - "0": { - "then": "Ce dÊfibrillateur est en intÊrieur (dans un batiment)" - }, - "1": { - "then": "Ce dÊfibrillateur est situÊ en extÊrieur" - } - }, - "question": "Ce dÊfibrillateur est-il disposÊ en intÊrieur ?" - }, - "defibrillator-level": { - "mappings": { - "0": { - "then": "Ce dÊfibrillateur est au rez-de-chaussÊe" - }, - "1": { - "then": "Ce dÊfibrillateur est au premier Êtage" - } - }, - "question": "À quel Êtage est situÊ ce dÊfibrillateur ?", - "render": "Ce dÊfibrillateur est à l'Êtage {level}" - }, - "defibrillator-opening_hours": { - "mappings": { - "0": { - "then": "Ouvert 24/7 (jours feriÊs inclus)" - } - }, - "question": "À quels horaires ce dÊfibrillateur est-il accessible ?", - "render": "{opening_hours_table(opening_hours)}" - }, - "defibrillator-phone": { - "question": "Quel est le numÊro de tÊlÊphone pour questions sur le dÊfibrillateur ?", - "render": "NumÊro de tÊlÊphone pour questions sur le dÊfibrillateur : {phone}" - }, - "defibrillator-ref": { - "question": "Quel est le numÊro d'identification officiel de ce dispositif ? (si il est visible sur le dispositif)", - "render": "NumÊro d'identification officiel de ce dispositif : {ref}" - }, - "defibrillator-survey:date": { - "mappings": { - "0": { - "then": "VÊrifiÊ aujourd'hui !" - } - }, - "question": "Quand le dÊfibrillateur a-t-il ÊtÊ vÊrifiÊ pour la dernière fois ?", - "render": "Ce dÊfibrillateur a ÊtÊ vÊrifiÊ pour la dernière fois le {survey:date}" - } - }, - "title": { - "render": "DÊfibrillateur" - } - }, - "direction": { - "description": "Cette couche visualise les directions", - "name": "Visualisation de la direction" - }, - "drinking_water": { - "name": "Eau potable", - "presets": { - "0": { - "title": "eau potable" - } - }, - "tagRenderings": { - "Bottle refill": { - "mappings": { - "0": { - "then": "Il est facile de remplir les bouteilles d'eau" - }, - "1": { - "then": "Les bouteilles d'eau peuvent ne pas passer" - } - }, - "question": "Est-il facile de remplir des bouteilles d'eau ?" - }, - "Still in use?": { - "mappings": { - "0": { - "then": "Cette fontaine fonctionne" - }, - "1": { - "then": "Cette fontaine est cassÊe" - }, - "2": { - "then": "Cette fontaine est fermÊe" - } - }, - "question": "Ce point d'eau potable est-il toujours opÊrationnel ?", - "render": "L'Êtat opÊrationnel est {operational_status" - }, - "render-closest-drinking-water": { - "render": "Une autre source d’eau potable est à {_closest_other_drinking_water_distance} mètres a>" - } - }, - "title": { - "render": "Eau potable" - } - }, - "food": { - "tagRenderings": { - "friture-oil": { - "mappings": { - "0": { - "then": "Huile vÊgÊtale" - }, - "1": { - "then": "Graisse animale" - } - }, - "question": "Cette friteuse fonctionne-t-elle avec de la graisse animale ou vÊgÊtale ?" - }, - "friture-take-your-container": { - "mappings": { - "0": { - "then": "Vous pouvez apporter vos contenants pour votre commande, limitant l’usage de matÊriaux à usage unique et les dÊchets" - }, - "1": { - "then": "Apporter ses propres contenants n’est pas permis" - }, - "2": { - "then": "Il est obligatoire d’apporter ses propres contenants" - } - }, - "question": "Est-il proposÊ d’utiliser ses propres contenants pour sa commande ?
" - }, - "friture-vegan": { - "mappings": { - "0": { - "then": "Des collations vÊgÊtaliens sont disponibles" - }, - "1": { - "then": "Quelques snacks vÊgÊtaliens seulement" - }, - "2": { - "then": "Pas d'en-cas vÊgÊtaliens disponibles" - } - }, - "question": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtaliens ?" - }, - "friture-vegetarian": { - "mappings": { - "0": { - "then": "Des collations vÊgÊtariens sont disponibles" - }, - "1": { - "then": "Quelques snacks vÊgÊtariens seulement" - }, - "2": { - "then": "Pas d'en-cas vÊgÊtariens disponibles" - } - }, - "question": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtariens ?" - } - } - }, - "ghost_bike": { - "name": "VÊlos fantômes", - "presets": { - "0": { - "title": "VÊlo fantôme" - } - }, - "tagRenderings": { - "ghost-bike-explanation": { - "render": "Un vÊlo fantôme est un monument commÊmoratif pour un cycliste dÊcÊdÊ dans un accident de la route, sous la forme d'un vÊlo blanc placÊ en permanence près du lieu de l'accident." - }, - "ghost_bike-inscription": { - "question": "Quelle est l'inscription sur ce vÊlo fantôme ?", - "render": "{inscription}" - }, - "ghost_bike-name": { - "mappings": { - "0": { - "then": "Aucun nom n'est marquÊ sur le vÊlo" - } - }, - "question": "À qui est dÊdiÊ ce vÊlo fantôme ?
Veuillez respecter la vie privÊe – ajoutez le nom seulement s'il est largement publiÊ ou marquÊ sur le vÊlo. Choisissez de ne pas indiquer le nom de famille
", - "render": "En souvenir de {name}" - }, - "ghost_bike-source": { - "question": "Sur quelle page web peut-on trouver plus d'informations sur le VÊlo fantôme ou l'accident ?", - "render": "
Plus d'informations sont disponibles" - }, - "ghost_bike-start_date": { - "question": "Quand ce vÊlo fantôme a-t-il ÊtÊ installÊe ?", - "render": "PlacÊ le {start_date}" - } - }, - "title": { - "mappings": { - "0": { - "then": "VÊlo fantôme en souvenir de {name}" - } - }, - "render": "VÊlo fantôme" - } - }, - "information_board": { - "name": "Panneaux d'informations", - "presets": { - "0": { - "title": "panneau d'informations" - } - }, - "title": { - "render": "Panneau d'informations" - } - }, - "map": { - "description": "Une carte, destinÊe aux touristes, installÊe en permanence dans l'espace public", - "name": "Cartes", - "presets": { - "0": { - "description": "Ajouter une carte manquante", - "title": "Carte" - } - }, - "tagRenderings": { - "map-attribution": { - "mappings": { - "0": { - "then": "L’attribution est clairement inscrite ainsi que la licence ODBL" - }, - "1": { - "then": "L’attribution est clairement inscrite mais la licence est absente" - }, - "2": { - "then": "OpenStreetMap n’est pas mentionnÊ, un sticker OpenStreetMap a ÊtÊ collÊ" - }, - "3": { - "then": "Il n'y a aucune attribution" - }, - "4": { - "then": "Il n'y a aucune attribution" - } - }, - "question": "L’attribution à OpenStreetMap est elle-prÊsente ?" - }, - "map-map_source": { - "mappings": { - "0": { - "then": "Cette carte est basÊe sur OpenStreetMap" - } - }, - "question": "Sur quelles donnÊes cette carte est-elle basÊe ?", - "render": "Cette carte est basÊe sur {map_source}" - } - }, - "title": { - "render": "Carte" - } - }, - "nature_reserve": { - "tagRenderings": { - "Curator": { - "question": "Qui est en charge de la conservation de la rÊserve ?
À ne remplir seulement que si le nom est diffusÊ au public", - "render": "{curator} est en charge de la conservation de la rÊserve" - }, - "Dogs?": { - "mappings": { - "0": { - "then": "Les chiens doivent ÃĒtre tenus en laisse" - }, - "1": { - "then": "Chiens interdits" - }, - "2": { - "then": "Les chiens sont autorisÊs à se promener librement" - } - }, - "question": "Les chiens sont-ils autorisÊs dans cette rÊserve naturelle ?" - }, - "Email": { - "question": "À quelle adresse courriel peut-on envoyer des questions et des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez une adresse Êlectronique personnelle seulement si celle-ci est largement publiÊe", - "render": "{email}" - }, - "Surface area": { - "render": "Superficie : {_surface:ha} ha" - }, - "Website": { - "question": "Sur quelle page web peut-on trouver plus d'informations sur cette rÊserve naturelle ?" - }, - "phone": { - "question": "Quel numÊro de tÊlÊphone peut-on appeler pour poser des questions et rÊsoudre des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez un numÊro de tÊlÊphone personnel seulement si celui-ci est largement publiÊ", - "render": "{phone}" - } - } - }, - "picnic_table": { - "description": "La couche montrant les tables de pique-nique", - "name": "Tables de pique-nique", - "presets": { - "0": { - "title": "table de pique-nique" - } - }, - "tagRenderings": { - "picnic_table-material": { - "mappings": { - "0": { - "then": "C’est une table en bois" - }, - "1": { - "then": "C’est une table en bÊton" - } - }, - "question": "En quel matÊriau est faite la table de pique-nique ?", - "render": "La table est faite en {material}" - } - }, - "title": { - "render": "Table de pique-nique" - } - }, - "playground": { - "description": "Aire de jeu", - "name": "Aire de jeu", - "presets": { - "0": { - "title": "Terrain de jeux" - } - }, - "tagRenderings": { - "Playground-wheelchair": { - "mappings": { - "0": { - "then": "Entièrement accessible aux personnes en fauteuil roulant" - }, - "1": { - "then": "AccessibilitÊ limitÊe pour les personnes en fauteuil roulant" - }, - "2": { - "then": "Non accessible aux personnes en fauteuil roulant" - } - }, - "question": "Ce terrain de jeux est-il accessible aux personnes en fauteuil roulant ?" - }, - "playground-access": { - "mappings": { - "0": { - "then": "Accessible au public" - }, - "1": { - "then": "Accessible au public" - }, - "2": { - "then": "RÊservÊe aux clients" - }, - "3": { - "then": "RÊservÊe aux Êlèves de l’Êcole" - }, - "4": { - "then": "Non accessible" - } - }, - "question": "L’aire de jeu est-elle accessible au public ?" - }, - "playground-email": { - "question": "Quelle est l'adresse Êlectronique du responsable de l'aire de jeux ?", - "render": "{email}" - }, - "playground-lit": { - "mappings": { - "0": { - "then": "L’aire de jeu est ÊclairÊe de nuit" - }, - "1": { - "then": "L’aire de jeu n’est pas ÊclairÊe de nuit" - } - }, - "question": "Ce terrain de jeux est-il ÊclairÊ la nuit ?" - }, - "playground-max_age": { - "question": "Quel est l’Ãĸge maximum autorisÊ pour utiliser l’aire de jeu ?", - "render": "Accessible aux enfants de {max_age} au maximum" - }, - "playground-min_age": { - "question": "Quel est l'Ãĸge minimal requis pour accÊder à ce terrain de jeux ?", - "render": "Accessible aux enfants de plus de {min_age} ans" - }, - "playground-opening_hours": { - "mappings": { - "0": { - "then": "Accessible du lever au coucher du soleil" - }, - "1": { - "then": "Toujours accessible" - }, - "2": { - "then": "Toujours accessible" - } - }, - "question": "Quand ce terrain de jeux est-il accessible ?" - }, - "playground-operator": { - "question": "Qui est en charge de l’exploitation de l’aire de jeu ?", - "render": "ExploitÊ par {operator}" - }, - "playground-phone": { - "question": "Quel est le numÊro de tÊlÊphone du responsable du terrain de jeux ?", - "render": "{phone}" - }, - "playground-surface": { - "mappings": { - "0": { - "then": "La surface est en gazon" - }, - "1": { - "then": "La surface est en sable" - }, - "2": { - "then": "La surface est en copeaux de bois" - }, - "3": { - "then": "La surface est en pavÊs" - }, - "4": { - "then": "La surface est en bitume" - }, - "5": { - "then": "La surface est en bÊton" - }, - "6": { - "then": "La surface n’a pas de revÃĒtement" - }, - "7": { - "then": "La surface a un revÃĒtement" - } - }, - "question": "De quelle matière est la surface de l’aire de jeu ?
Pour plusieurs matières, sÊlectionner la principale", - "render": "La surface est en {surface}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Aire de jeu {name}" - } - }, - "render": "Aire de jeu" - } - }, - "public_bookcase": { - "description": "Une armoire ou une boite contenant des livres en libre accès", - "name": "Microbibliothèque", - "presets": { - "0": { - "title": "Microbibliothèque" - } - }, - "tagRenderings": { - "bookcase-booktypes": { - "mappings": { - "0": { - "then": "Livres pour enfants" - }, - "1": { - "then": "Livres pour les adultes" - }, - "2": { - "then": "Livres pour enfants et adultes Êgalement" - } - }, - "question": "Quel type de livres peut-on dans cette microbibliothèque ?" - }, - "bookcase-is-accessible": { - "mappings": { - "0": { - "then": "Accèssible au public" - }, - "1": { - "then": "Accèssible aux clients" - } - }, - "question": "Cette microbibliothèque est-elle librement accèssible ?" - }, - "bookcase-is-indoors": { - "mappings": { - "0": { - "then": "Cette microbibliothèque est en intÊrieur" - }, - "1": { - "then": "Cette microbibliothèque est en extÊrieur" - }, - "2": { - "then": "Cette microbibliothèque est en extÊrieur" - } - }, - "question": "Cette microbiliothèque est-elle en extÊrieur ?" - }, - "public_bookcase-brand": { - "mappings": { - "0": { - "then": "Fait partie du rÊseau Little Free Library" - }, - "1": { - "then": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe" - } - }, - "question": "Cette microbibliothèque fait-elle partie d'un rÊseau/groupe ?", - "render": "Cette microbibliothèque fait partie du groupe {brand}" - }, - "public_bookcase-capacity": { - "question": "Combien de livres peuvent entrer dans cette microbibliothèque ?", - "render": "{capacity} livres peuvent entrer dans cette microbibliothèque" - }, - "public_bookcase-name": { - "mappings": { - "0": { - "then": "Cette microbibliothèque n'a pas de nom" - } - }, - "question": "Quel est le nom de cette microbibliothèque ?", - "render": "Le nom de cette microbibliothèque est {name}" - }, - "public_bookcase-operator": { - "question": "Qui entretien cette microbibliothèque ?", - "render": "Entretenue par {operator}" - }, - "public_bookcase-ref": { - "mappings": { - "0": { - "then": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe" - } - }, - "question": "Quelle est le numÊro de rÊfÊrence de cette microbibliothèque ?", - "render": "Cette microbibliothèque du rÊseau {brand} possède le numÊro {ref}" - }, - "public_bookcase-start_date": { - "question": "Quand a ÊtÊ installÊe cette microbibliothèque ?", - "render": "InstallÊe le {start_date}" - }, - "public_bookcase-website": { - "question": "Y a-t-il un site web avec plus d'informations sur cette microbibliothèque ?", - "render": "Plus d'infos sur le site web" - } - }, - "title": { - "mappings": { - "0": { - "then": "Microbibliothèque {name}" - } - }, - "render": "Microbibliothèque" - } - }, - "shops": { - "description": "Un magasin", - "name": "Magasin", - "presets": { - "0": { - "description": "Ajouter un nouveau magasin", - "title": "Magasin" - } - }, - "tagRenderings": { - "shops-email": { - "question": "Quelle est l'adresse Êlectronique de ce magasin ?", - "render": "{email}" - }, - "shops-name": { - "question": "Qu'est-ce que le nom de ce magasin?" - }, - "shops-opening_hours": { - "question": "Quels sont les horaires d'ouverture de ce magasin ?", - "render": "{opening_hours_table(opening_hours)}" - }, - "shops-phone": { - "question": "Quel est le numÊro de tÊlÊphone ?", - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "0": { - "then": "Épicerie/superette" - }, - "1": { - "then": "SupermarchÊ" - }, - "2": { - "then": "Magasin de vÃĒtements" - }, - "3": { - "then": "Coiffeur" - }, - "4": { - "then": "Boulangerie" - }, - "5": { - "then": "Garage de rÊparation automobile" - }, - "6": { - "then": "Concessionnaire" - } - }, - "question": "Que vends ce magasin ?", - "render": "Ce magasin vends {shop}" - }, - "shops-website": { - "question": "Quel est le site internet de ce magasin ?", - "render": "{website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "{shop}" - } - }, - "render": "Magasin" - } - }, - "slow_roads": { - "tagRenderings": { - "slow_roads-surface": { - "mappings": { - "0": { - "then": "La surface est en herbe" - }, - "1": { - "then": "La surface est en terre" - }, - "2": { - "then": "La surface est non pavÊe" - }, - "3": { - "then": "La surface est en sable" - }, - "4": { - "then": "La surface est en pierres pavÊes" - }, - "5": { - "then": "La surface est en bitume" - }, - "6": { - "then": "La surface est en bÊton" - }, - "7": { - "then": "La surface est pavÊe" - } - }, - "render": "La surface en {surface}" - } - } - }, - "sport_pitch": { - "description": "Un terrain de sport", - "name": "Terrains de sport", - "presets": { - "0": { - "title": "Table de ping-pong" - }, - "1": { - "title": "Terrain de sport" - } - }, - "tagRenderings": { - "sport-pitch-access": { - "mappings": { - "0": { - "then": "Accessible au public" - }, - "1": { - "then": "Accès limitÊ (par exemple uniquement sur rÊservation, à certains horairesâ€Ļ)" - }, - "2": { - "then": "Accessible uniquement aux membres du club" - }, - "3": { - "then": "PrivÊ - Pas accessible au public" - } - }, - "question": "Est-ce que ce terrain de sport est accessible au public ?" - }, - "sport-pitch-reservation": { - "mappings": { - "0": { - "then": "Il est obligatoire de rÊserver pour utiliser ce terrain de sport" - }, - "1": { - "then": "Il est recommendÊ de rÊserver pour utiliser ce terrain de sport" - }, - "2": { - "then": "Il est possible de rÊserver, mais ce n'est pas nÊcÊssaire pour utiliser ce terrain de sport" - }, - "3": { - "then": "On ne peut pas rÊserver" - } - }, - "question": "Doit-on rÊserver pour utiliser ce terrain de sport ?" - }, - "sport_pitch-email": { - "question": "Quelle est l'adresse courriel du gÊrant ?" - }, - "sport_pitch-opening_hours": { - "mappings": { - "1": { - "then": "Accessible en permanence" - } - }, - "question": "Quand ce terrain est-il accessible ?" - }, - "sport_pitch-phone": { - "question": "Quel est le numÊro de tÊlÊphone du gÊrant ?" - }, - "sport_pitch-sport": { - "mappings": { - "0": { - "then": "Ici, on joue au basketball" - }, - "1": { - "then": "Ici, on joue au football" - }, - "2": { - "then": "C'est une table de ping-pong" - }, - "3": { - "then": "Ici, on joue au tennis" - }, - "4": { - "then": "Ici, on joue au korfball" - }, - "5": { - "then": "Ici, on joue au basketball" - } - }, - "question": "À quel sport peut-on jouer ici ?", - "render": "Ici on joue au {sport}" - }, - "sport_pitch-surface": { - "mappings": { - "0": { - "then": "La surface est de l'herbe" - }, - "1": { - "then": "La surface est du sable" - }, - "2": { - "then": "La surface est des pavÊs" - }, - "3": { - "then": "La surface est de l'asphalte" - }, - "4": { - "then": "La surface est du bÊton" - } - }, - "question": "De quelle surface est fait ce terrain de sport ?", - "render": "La surface est {surface}" - } - }, - "title": { - "render": "Terrain de sport" - } - }, - "surveillance_camera": { - "name": "CamÊras de surveillance", - "tagRenderings": { - "Camera type: fixed; panning; dome": { - "mappings": { - "0": { - "then": "Une camÊra fixe (non mobile)" - }, - "1": { - "then": "Une camÊra dôme (qui peut tourner)" - }, - "2": { - "then": "Une camÊra panoramique" - } - }, - "question": "Quel genre de camÊra est-ce ?" - }, - "Indoor camera? This isn't clear for 'public'-cameras": { - "mappings": { - "0": { - "then": "Cette camÊra est situÊe à l'intÊrieur" - }, - "1": { - "then": "Cette camÊra est situÊe à l'extÊrieur" - }, - "2": { - "then": "Cette camÊra est probablement situÊe à l'extÊrieur" - } - }, - "question": "L'espace public surveillÊ par cette camÊra est-il un espace intÊrieur ou extÊrieur ?" - }, - "Level": { - "question": "À quel niveau se trouve cette camÊra ?", - "render": "SituÊ au niveau {level}" - }, - "Operator": { - "question": "Qui exploite ce système de vidÊosurveillance ?", - "render": "ExploitÊ par {operator}" - }, - "Surveillance type: public, outdoor, indoor": { - "mappings": { - "0": { - "then": "Une zone publique est surveillÊe, telle qu'une rue, un pont, une place, un parc, une gare, un couloir ou un tunnel publicâ€Ļ" - }, - "1": { - "then": "Une zone extÊrieure, mais privÊe, est surveillÊe (par exemple, un parking, une station-service, une cour, une entrÊe, une allÊe privÊe, etc.)" - }, - "2": { - "then": "Une zone intÊrieure privÊe est surveillÊe, par exemple un magasin, un parking souterrain privÊâ€Ļ" - } - }, - "question": "Quel genre de surveillance est cette camÊra" - }, - "Surveillance:zone": { - "mappings": { - "0": { - "then": "Surveille un parking" - }, - "1": { - "then": "Surveille la circulation" - }, - "2": { - "then": "Surveille une entrÊe" - }, - "3": { - "then": "Surveille un couloir" - }, - "4": { - "then": "Surveille un quai de transport public" - }, - "5": { - "then": "Surveille un magasin" - } - }, - "question": "Qu'est-ce qui est surveillÊ ici ?", - "render": " Surveille un(e) {surveillance:zone}" - }, - "camera:mount": { - "mappings": { - "0": { - "then": "Cette camÊra est placÊe contre un mur" - }, - "1": { - "then": "Cette camÊra est placÊe sur un poteau" - }, - "2": { - "then": "Cette camÊra est placÊe au plafond" - } - }, - "question": "Comment cette camÊra est-elle placÊe ?", - "render": "MÊthode de montage : {mount}" - }, - "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { - "mappings": { - "0": { - "then": "Filme dans une direction {direction}" - } - }, - "question": "Dans quelle direction gÊographique cette camÊra filme-t-elle ?", - "render": "Filme dans une direction {camera:direction}" - } - }, - "title": { - "render": "CamÊra de surveillance" - } - }, - "toilet": { - "name": "Toilettes", - "presets": { - "0": { - "description": "Des toilettes", - "title": "toilettes" - }, - "1": { - "description": "Toilettes avec au moins un WC accessible aux personnes à mobilitÊ rÊduite", - "title": "toilettes accessible aux personnes à mobilitÊ rÊduite" - } - }, - "tagRenderings": { - "toilet-access": { - "mappings": { - "0": { - "then": "Accès publique" - }, - "1": { - "then": "Accès rÊservÊ aux clients" - }, - "2": { - "then": "Toilettes privÊes" - }, - "3": { - "then": "Accessible, mais vous devez demander la clÊ" - }, - "4": { - "then": "Accès publique" - } - }, - "question": "Ces toilettes sont-elles accessibles au public ?", - "render": "L'accès est {access}" - }, - "toilet-changing_table:location": { - "mappings": { - "0": { - "then": "La table à langer est dans les toilettes pour femmes. " - }, - "1": { - "then": "La table à langer est dans les toilettes pour hommes. " - }, - "2": { - "then": "La table à langer est dans les toilettes pour personnes à mobilitÊ rÊduite. " - }, - "3": { - "then": "La table à langer est dans un espace dÊdiÊ. " - } - }, - "question": "OÚ se situe la table à langer ?", - "render": "Emplacement de la table à langer : {changing_table:location}" - }, - "toilet-charge": { - "question": "Quel est le prix d'accès de ces toilettes ?", - "render": "Le prix est {charge}" - }, - "toilets-changing-table": { - "mappings": { - "0": { - "then": "Une table à langer est disponible" - }, - "1": { - "then": "Aucune table à langer" - } - }, - "question": "Ces toilettes disposent-elles d'une table à langer ?" - }, - "toilets-fee": { - "mappings": { - "0": { - "then": "Toilettes payantes" - }, - "1": { - "then": "Toilettes gratuites" - } - }, - "question": "Ces toilettes sont-elles payantes ?" - }, - "toilets-type": { - "mappings": { - "0": { - "then": "Il y a uniquement des sièges de toilettes" - }, - "1": { - "then": "Il y a uniquement des urinoirs" - }, - "2": { - "then": "Il y a uniquement des toilettes turques" - }, - "3": { - "then": "Il y a des sièges de toilettes et des urinoirs" - } - }, - "question": "De quel type sont ces toilettes ?" - }, - "toilets-wheelchair": { - "mappings": { - "0": { - "then": "Il y a des toilettes rÊservÊes pour les personnes à mobilitÊ rÊduite" - }, - "1": { - "then": "Non accessible aux personnes à mobilitÊ rÊduite" - } - }, - "question": "Y a-t-il des toilettes rÊservÊes aux personnes en fauteuil roulant ?" - } - }, - "title": { - "render": "Toilettes" - } - }, - "tree_node": { - "name": "Arbre", - "presets": { - "0": { - "description": "Un arbre d'une espèce avec de larges feuilles, comme le chÃĒne ou le peuplier.", - "title": "Arbre feuillu" - }, - "1": { - "description": "Une espèce d’arbre avec des Êpines comme le pin ou l’ÊpicÊa.", - "title": "Arbre rÊsineux" - }, - "2": { - "description": "Si vous n'ÃĒtes pas sÃģr(e) de savoir s'il s'agit d'un arbre à feuilles larges ou à aiguilles.", - "title": "Arbre" - } - }, - "tagRenderings": { - "tree-decidouous": { - "mappings": { - "0": { - "then": "Caduc : l’arbre perd son feuillage une partie de l’annÊe." - }, - "1": { - "then": "À feuilles persistantes." - } - }, - "question": "L’arbre est-il à feuillage persistant ou caduc ?" - }, - "tree-denotation": { - "mappings": { - "0": { - "then": "L'arbre est remarquable en raison de sa taille ou de son emplacement proÊminent. Il est utile pour la navigation." - }, - "1": { - "then": "Cet arbre est un monument naturel (ex : Ãĸge, espèce, etcâ€Ļ)" - }, - "2": { - "then": "Cet arbre est utilisÊ à but d’agriculture (ex : dans un verger)" - }, - "3": { - "then": "Cet arbre est dans un parc ou une aire similaire (ex : cimetière, cour d’Êcole, â€Ļ)." - }, - "4": { - "then": "Cet arbre est dans une cour rÊsidentielle." - }, - "5": { - "then": "C'est un arbre le long d'une avenue." - }, - "6": { - "then": "L'arbre est une zone urbaine." - }, - "7": { - "then": "Cet arbre est en zone rurale." - } - }, - "question": "Quelle est l'importance de cet arbre ? Choisissez la première rÊponse qui s'applique." - }, - "tree-height": { - "mappings": { - "0": { - "then": "Hauteur : {height} m" - } - }, - "render": "Hauteur : {height}" - }, - "tree-heritage": { - "mappings": { - "0": { - "then": "\"\"/ Fait partie du patrimoine par Onroerend Erfgoed" - }, - "1": { - "then": "EnregistrÊ comme patrimoine par la Direction du Patrimoine culturel Bruxelles" - }, - "2": { - "then": "EnregistrÊ comme patrimoine par une autre organisation" - }, - "3": { - "then": "Non enregistrÊ comme patrimoine" - }, - "4": { - "then": "EnregistrÊ comme patrimoine par une autre organisation" - } - }, - "question": "Cet arbre est-il inscrit au patrimoine ?" - }, - "tree-leaf_type": { - "mappings": { - "0": { - "then": "\"\"/ Feuillu" - }, - "1": { - "then": "\"\"/ RÊsineux" - }, - "2": { - "then": "\"\"/ Sans feuilles (Permanent)" - } - }, - "question": "Cet arbre est-il un feuillu ou un rÊsineux ?" - }, - "tree_node-name": { - "mappings": { - "0": { - "then": "L'arbre n'a pas de nom." - } - }, - "question": "L'arbre a-t-il un nom ?", - "render": "Nom : {name}" - }, - "tree_node-ref:OnroerendErfgoed": { - "question": "Quel est son identifiant donnÊ par Onroerend Erfgoed ?", - "render": "\"\"/ Identifiant Onroerend Erfgoed : {ref:OnroerendErfgoed}" - }, - "tree_node-wikidata": { - "question": "Quel est l'identifiant Wikidata de cet arbre ?", - "render": "\"\"/ Wikidata : {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Arbre" - } - }, - "viewpoint": { - "description": "Un beau point de vue ou une belle vue. IdÊal pour ajouter une image si aucune autre catÊgorie ne convient", - "name": "Point de vue", - "presets": { - "0": { - "title": "Point de vue" - } - }, - "tagRenderings": { - "viewpoint-description": { - "question": "Voulez-vous ajouter une description ?" - } - }, - "title": { - "render": "Point de vue" + "title": { + "mappings": { + "0": { + "then": "Œuvre d'art {name}" } + }, + "render": "Œuvre d'art" } + }, + "bench": { + "name": "Bancs", + "presets": { + "0": { + "title": "banc" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Dossier : Oui" + }, + "1": { + "then": "Dossier : Non" + } + }, + "question": "Ce banc dispose-t-il d'un dossier ?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Couleur : marron" + }, + "1": { + "then": "Couleur : verte" + }, + "2": { + "then": "Couleur : gris" + }, + "3": { + "then": "Couleur : blanc" + }, + "4": { + "then": "Couleur : rouge" + }, + "5": { + "then": "Couleur : noire" + }, + "6": { + "then": "Couleur : bleu" + }, + "7": { + "then": "Couleur : jaune" + } + }, + "question": "Quelle est la couleur de ce banc ?", + "render": "Couleur : {colour}" + }, + "bench-direction": { + "question": "Dans quelle direction regardez-vous quand vous ÃĒtes assis sur le banc ?", + "render": "Assis sur le banc, on regarde vers {direction}°." + }, + "bench-material": { + "mappings": { + "0": { + "then": "MatÊriau : bois" + }, + "1": { + "then": "MatÊriau : mÊtal" + }, + "2": { + "then": "MatÊriau : pierre" + }, + "3": { + "then": "MatÊriau : bÊton" + }, + "4": { + "then": "MatÊriau : plastique" + }, + "5": { + "then": "MatÊriau : acier" + } + }, + "question": "De quel matÊriau ce banc est-il fait ?", + "render": "MatÊriau : {material}" + }, + "bench-seats": { + "question": "De combien de places dispose ce banc ?", + "render": "{seats} places" + }, + "bench-survey:date": { + "question": "Quand ce banc a-t-il ÊtÊ contrôlÊ pour la dernière fois ?", + "render": "Ce banc a ÊtÊ contrôlÊ pour la dernière fois le {survey:date}" + } + }, + "title": { + "render": "Banc" + } + }, + "bench_at_pt": { + "name": "Bancs des arrÃĒts de transport en commun", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "1": { + "then": "Banc assis debout" + } + } + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Banc d'un arrÃĒt de transport en commun" + }, + "1": { + "then": "Banc dans un abri" + } + }, + "render": "Banc" + } + }, + "bicycle_library": { + "description": "Un lieu oÚ des vÊlos peuvent ÃĒtre empruntÊs pour un temps plus long", + "name": "VÊlothèque", + "presets": { + "0": { + "description": "Une vÊlothèque a une flotte de vÊlos qui peuvent ÃĒtre empruntÊs", + "title": "VÊlothèque" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "VÊlos pour enfants disponibles" + }, + "1": { + "then": "VÊlos pour adultes disponibles" + }, + "2": { + "then": "VÊlos pour personnes handicapÊes disponibles" + } + }, + "question": "Qui peut emprunter des vÊlos ici ?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "L'emprunt de vÊlo est gratuit" + }, + "1": { + "then": "Emprunter un vÊlo coÃģte 20 â‚Ŧ/an et 20 â‚Ŧ de garantie" + } + }, + "question": "Combien coÃģte l'emprunt d'un vÊlo ?", + "render": "Emprunter un vÊlo coÃģte {charge}" + }, + "bicycle_library-name": { + "question": "Quel est le nom de cette vÊlothèque ?", + "render": "Cette vÊlothèque s'appelle {name}" + } + }, + "title": { + "render": "VÊlothèque" + } + }, + "bicycle_tube_vending_machine": { + "name": "Distributeur automatique de chambre à air de vÊlo", + "presets": { + "0": { + "title": "Distributeur automatique de chambre à air de vÊlo" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Le distributeur automatique fonctionne" + }, + "1": { + "then": "Le distributeur automatique est en panne" + }, + "2": { + "then": "Le distributeur automatique est fermÊ" + } + }, + "question": "Cette machine est-elle encore opÊrationelle ?", + "render": "L'Êtat opÊrationnel est {operational_status}" + } + }, + "title": { + "render": "Distributeur automatique de chambre à air de vÊlo" + } + }, + "bike_cafe": { + "name": "CafÊ vÊlo", + "presets": { + "0": { + "title": "CafÊ VÊlo" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "Ce CafÊ vÊlo offre une pompe en libre accès" + }, + "1": { + "then": "Ce CafÊ vÊlo n'offre pas de pompe en libre accès" + } + }, + "question": "Est-ce que ce CafÊ vÊlo propose une pompe en libre accès ?" + }, + "bike_cafe-email": { + "question": "Quelle est l'adresse Êlectronique de {name} ?" + }, + "bike_cafe-name": { + "question": "Quel est le nom de ce CafÊ vÊlo ?", + "render": "Ce CafÊ vÊlo s'appelle {name}" + }, + "bike_cafe-opening_hours": { + "question": "Quand ce CafÊ vÊlo est-t-il ouvert ?" + }, + "bike_cafe-phone": { + "question": "Quel est le numÊro de tÊlÊphone de {name} ?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "Ce CafÊ vÊlo rÊpare les vÊlos" + }, + "1": { + "then": "Ce CafÊ vÊlo ne rÊpare pas les vÊlos" + } + }, + "question": "Est-ce que ce CafÊ vÊlo rÊpare les vÊlos ?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "Ce CafÊ vÊlo propose des outils pour rÊparer son vÊlo soi-mÃĒme" + }, + "1": { + "then": "Ce CafÊ vÊlo ne propose pas d'outils pour rÊparer son vÊlo soi-mÃĒme" + } + }, + "question": "Est-ce qu'il y a des outils pour rÊparer soi-mÃĒme son vÊlo ?" + }, + "bike_cafe-website": { + "question": "Quel est le site web de {name} ?" + } + }, + "title": { + "mappings": { + "0": { + "then": "CafÊ VÊlo {name}" + } + }, + "render": "CafÊ VÊlo" + } + }, + "bike_cleaning": { + "name": "Service de nettoyage de vÊlo", + "presets": { + "0": { + "title": "Service de nettoyage de vÊlo" + } + }, + "title": { + "mappings": { + "0": { + "then": "Service de nettoyage de vÊlo {name}" + } + }, + "render": "Service de nettoyage de vÊlo" + } + }, + "bike_parking": { + "name": "Parking à vÊlo", + "presets": { + "0": { + "title": "Parking à vÊlo" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "Accessible publiquement" + }, + "1": { + "then": "Accès destinÊ principalement aux visiteurs d'un lieu" + }, + "2": { + "then": "Accès limitÊ aux membres d'une Êcole, entreprise ou organisation" + } + }, + "question": "Qui peut utiliser ce parking à vÊlo ?", + "render": "{access}" + }, + "Bicycle parking type": { + "mappings": { + "0": { + "then": "Arceaux " + }, + "1": { + "then": "Pinces-roues " + }, + "2": { + "then": "Support guidon " + }, + "3": { + "then": "RÃĸtelier " + }, + "4": { + "then": "SuperposÊ " + }, + "5": { + "then": "Abri " + }, + "6": { + "then": "Potelet " + }, + "7": { + "then": "Zone au sol qui est marquÊe pour le stationnement des vÊlos" + } + }, + "question": "Quel type de parking à vÊlos est-ce ?", + "render": "Ceci est un parking à vÊlo de type {bicycle_parking}" + }, + "Capacity": { + "question": "Combien de vÊlos entrent dans ce parking à vÊlos (y compris les Êventuels vÊlos de transport) ?", + "render": "Place pour {capacity} vÊlos" + }, + "Cargo bike capacity?": { + "question": "Combien de vÊlos de transport entrent dans ce parking à vÊlos ?", + "render": "Ce parking a de la place pour {capacity:cargo_bike} vÊlos de transport" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "Ce parking a de la place pour les vÊlos cargo" + }, + "1": { + "then": "Ce parking a des emplacements (officiellement) destinÊs aux vÊlos cargo." + }, + "2": { + "then": "Il est interdit de garer des vÊlos cargo" + } + }, + "question": "Est-ce que ce parking à vÊlo a des emplacements pour des vÊlos cargo ?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "Ce parking est couvert (il a un toit)" + }, + "1": { + "then": "Ce parking n'est pas couvert" + } + }, + "question": "Ce parking est-il couvert ? SÊlectionnez aussi \"couvert\" pour les parkings en intÊrieur." + }, + "Underground?": { + "mappings": { + "0": { + "then": "Parking souterrain" + }, + "1": { + "then": "Parking en surface" + }, + "2": { + "then": "Parking sur un toit" + }, + "3": { + "then": "Parking en surface" + }, + "4": { + "then": "Parking sur un toit" + } + }, + "question": "Quelle est la position relative de ce parking à vÊlo ?" + } + }, + "title": { + "render": "Parking à vÊlo" + } + }, + "bike_repair_station": { + "name": "Station velo (rÊparation, pompe à vÊlo)", + "presets": { + "0": { + "description": "Un dispositif pour gonfler vos pneus sur un emplacement fixe dans l'espace public.

Exemples de pompes à vÊlo

", + "title": "Pompe à vÊlo" + }, + "1": { + "description": "Un dispositif avec des outils pour rÊparer votre vÊlo combinÊ à une pompe a un emplacement fixe. Les outils sont souvent attachÊs par une chaÃŽne pour empÃĒcher le vol.

Exemple

", + "title": "Point de rÊparation vÊlo avec pompe" + }, + "2": { + "title": "Point de rÊparation vÊlo sans pompe" + } + }, + "tagRenderings": { + "Operational status": { + "mappings": { + "0": { + "then": "La pompe à vÊlo est cassÊe" + }, + "1": { + "then": "La pompe est opÊrationnelle" + } + }, + "question": "La pompe à vÊlo fonctionne-t-elle toujours ?" + }, + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "Il y a seulement une pompe" + }, + "1": { + "then": "Il y a seulement des outils (tournevis, pinces...)" + }, + "2": { + "then": "Il y a des outils et une pompe" + } + }, + "question": "Quels services sont valables à cette station vÊlo ?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "Il y a un outil pour rÊparer la chaine" + }, + "1": { + "then": "Il n'y a pas d'outil pour rÊparer la chaine" + } + }, + "question": "Est-ce que cette station vÊlo a un outil specifique pour rÊparer la chaÃŽne du vÊlo ?" + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "Il y a un crochet ou une accroche" + }, + "1": { + "then": "Il n'y pas de crochet ou d'accroche" + } + }, + "question": "Est-ce que cette station vÊlo à un crochet pour suspendre son vÊlo ou une accroche pour l'ÊlevÊ ?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Pompe manuelle" + }, + "1": { + "then": "Pompe Êlectrique" + } + }, + "question": "Est-ce que cette pompe est Êlectrique ?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "Il y a un manomètre" + }, + "1": { + "then": "Il n'y a pas de manomètre" + }, + "2": { + "then": "Il y a un manomètre mais il est cassÊ" + } + }, + "question": "Est-ce que la pompe à un manomètre integrÊ ?" + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "Ouvert en permanence" + }, + "1": { + "then": "Ouvert en permanence" + } + }, + "question": "Quand ce point de rÊparation de vÊlo est-il ouvert ?" + }, + "bike_repair_station-operator": { + "question": "Qui maintient cette pompe à vÊlo ?", + "render": "Mantenue par {operator}" + }, + "bike_repair_station-valves": { + "mappings": { + "0": { + "then": "Sclaverand (aussi appelÊ Presta)" + }, + "1": { + "then": "Dunlop" + }, + "2": { + "then": "Schrader (les valves de voitures)" + } + }, + "question": "Quelles valves sont compatibles ?", + "render": "Cette pompe est compatible avec les valves suivantes : {valves}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Point de rÊparation velo" + }, + "1": { + "then": "Point de rÊparation" + }, + "2": { + "then": "Pompe cassÊe" + }, + "3": { + "then": "Pompe de vÊlo {name}" + }, + "4": { + "then": "Pompe de vÊlo" + } + }, + "render": "Point station velo avec pompe" + } + }, + "bike_shop": { + "description": "Un magasin vendant spÊcifiquement des vÊlos ou des objets en lien", + "name": "Magasin ou rÊparateur de vÊlo", + "presets": { + "0": { + "title": "Magasin et rÊparateur de vÊlo" + } + }, + "tagRenderings": { + "bike_repair_bike-pump-service": { + "mappings": { + "0": { + "then": "Ce magasin offre une pompe en acces libre" + }, + "1": { + "then": "Ce magasin n'offre pas de pompe en libre accès" + }, + "2": { + "then": "Il y a une pompe à vÊlo, c'est indiquÊ comme un point sÊparÊ " + } + }, + "question": "Est-ce que ce magasin offre une pompe en accès libre ?" + }, + "bike_repair_bike-wash": { + "mappings": { + "0": { + "then": "Ce magasin lave les vÊlos" + }, + "1": { + "then": "Ce magasin a une installation pour laver soi mÃĒme des vÊlos" + }, + "2": { + "then": "Ce magasin ne fait pas le nettoyage de vÊlo" + } + }, + "question": "Lave-t-on les vÊlos ici ?" + }, + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Ce magasin loue des vÊlos" + }, + "1": { + "then": "Ce magasin ne loue pas de vÊlos" + } + }, + "question": "Est-ce ce magasin loue des vÊlos ?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Ce magasin rÊpare des vÊlos" + }, + "1": { + "then": "Ce magasin ne rÊpare pas les vÊlos" + }, + "2": { + "then": "Ce magasin ne rÊpare seulement les vÊlos achetÊs là-bas" + }, + "3": { + "then": "Ce magasin ne rÊpare seulement des marques spÊcifiques" + } + }, + "question": "Est-ce que ce magasin rÊpare des vÊlos ?" + }, + "bike_repair_second-hand-bikes": { + "mappings": { + "0": { + "then": "Ce magasin vend des vÊlos d'occasion" + }, + "1": { + "then": "Ce magasin ne vend pas de vÊlos d'occasion" + }, + "2": { + "then": "Ce magasin vend seulement des vÊlos d'occasion" + } + }, + "question": "Est-ce ce magasin vend des vÊlos d'occasion ?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "Ce magasin vend des vÊlos" + }, + "1": { + "then": "Ce magasin ne vend pas de vÊlo" + } + }, + "question": "Est-ce que ce magasin vend des vÊlos ?" + }, + "bike_repair_tools-service": { + "mappings": { + "0": { + "then": "Ce magasin offre des outils pour rÊparer son vÊlo soi-mÃĒme" + }, + "1": { + "then": "Ce magasin n'offre pas des outils pour rÊparer son vÊlo soi-mÃĒme" + }, + "2": { + "then": "Des outils d'auto-rÊparation sont disponibles uniquement si vous avez achetÊ ou louÊ le vÊlo dans ce magasin" + } + }, + "question": "Est-ce qu'il y a des outils pour rÊparer son vÊlo dans ce magasin ?" + }, + "bike_shop-email": { + "question": "Quelle est l'adresse Êlectronique de {name} ?" + }, + "bike_shop-is-bicycle_shop": { + "render": "Ce magasin est spÊcialisÊ dans la vente de {shop} et a des activitÊs liÊes au vÊlo" + }, + "bike_shop-name": { + "question": "Quel est le nom du magasin de vÊlos ?", + "render": "Ce magasin s'appelle {name}" + }, + "bike_shop-phone": { + "question": "Quel est le numÊro de tÊlÊphone de {name} ?" + }, + "bike_shop-website": { + "question": "Quel est le site web de {name} ?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Magasin de sport {name}" + }, + "2": { + "then": "Location de vÊlo {name}" + }, + "3": { + "then": "RÊparateur de vÊlo {name}" + }, + "4": { + "then": "Magasin de vÊlo {name}" + }, + "5": { + "then": "Magasin ou rÊparateur de vÊlo {name}" + } + }, + "render": "Magasin ou rÊparateur de vÊlo" + } + }, + "bike_themed_object": { + "name": "Objet cycliste", + "title": { + "mappings": { + "1": { + "then": "Piste cyclable" + } + }, + "render": "Objet cycliste" + } + }, + "defibrillator": { + "name": "DÊfibrillateurs", + "presets": { + "0": { + "title": "DÊfibrillateur" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "Librement accessible" + }, + "1": { + "then": "Librement accessible" + }, + "2": { + "then": "RÊservÊ aux clients du lieu" + }, + "3": { + "then": "Non accessible au public (par exemple rÊservÊ au personnel, au propriÊtaire, ...)" + }, + "4": { + "then": "Pas accessible, peut-ÃĒtre uniquement à usage professionnel" + } + }, + "question": "Ce dÊfibrillateur est-il librement accessible ?", + "render": "{access} accessible" + }, + "defibrillator-defibrillator": { + "mappings": { + "0": { + "then": "Il n'y a pas d'information sur le type de dispositif" + }, + "1": { + "then": "C'est un dÊfibrillateur manuel pour professionnel" + }, + "2": { + "then": "C'est un dÊfibrillateur automatique manuel" + } + }, + "question": "Est-ce un dÊfibrillateur automatique normal ou un dÊfibrillateur manuel à usage professionnel uniquement ?" + }, + "defibrillator-defibrillator:location": { + "question": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (dans la langue local)", + "render": "Informations supplÊmentaires à propos de l'emplacement (dans la langue locale) :
{defibrillator:location}" + }, + "defibrillator-defibrillator:location:en": { + "question": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en englais)", + "render": "Informations supplÊmentaires à propos de l'emplacement (en anglais) :
{defibrillator:location:en}" + }, + "defibrillator-defibrillator:location:fr": { + "question": "Veuillez indiquez plus prÊcisÊment oÚ se situe le dÊfibrillateur (en français)", + "render": "Informations supplÊmentaires à propos de l'emplacement (en Français) :
{defibrillator:location:fr}" + }, + "defibrillator-description": { + "question": "Y a-t-il des informations utiles pour les utilisateurs que vous n'avez pas pu dÊcrire ci-dessus ? (laisser vide sinon)", + "render": "Informations supplÊmentaires : {description}" + }, + "defibrillator-email": { + "question": "Quelle est l'adresse Êlectronique pour des questions à propos de ce dÊfibrillateur ?", + "render": "Adresse Êlectronique pour des questions à propos de ce dÊfibrillateur : {email}" + }, + "defibrillator-fixme": { + "question": "Y a-t-il quelque chose qui ne va pas dans la manière dont ça a ÊtÊ cartographiÊ, et que vous n'avez pas pu rÊparer ici ? (laisser une note pour les experts d'OpenStreetMap)", + "render": "Informations supplÊmentaires pour les experts d'OpenStreetMap : {fixme}" + }, + "defibrillator-indoors": { + "mappings": { + "0": { + "then": "Ce dÊfibrillateur est en intÊrieur (dans un batiment)" + }, + "1": { + "then": "Ce dÊfibrillateur est situÊ en extÊrieur" + } + }, + "question": "Ce dÊfibrillateur est-il disposÊ en intÊrieur ?" + }, + "defibrillator-level": { + "mappings": { + "0": { + "then": "Ce dÊfibrillateur est au rez-de-chaussÊe" + }, + "1": { + "then": "Ce dÊfibrillateur est au premier Êtage" + } + }, + "question": "À quel Êtage est situÊ ce dÊfibrillateur ?", + "render": "Ce dÊfibrillateur est à l'Êtage {level}" + }, + "defibrillator-opening_hours": { + "mappings": { + "0": { + "then": "Ouvert 24/7 (jours feriÊs inclus)" + } + }, + "question": "À quels horaires ce dÊfibrillateur est-il accessible ?", + "render": "{opening_hours_table(opening_hours)}" + }, + "defibrillator-phone": { + "question": "Quel est le numÊro de tÊlÊphone pour questions sur le dÊfibrillateur ?", + "render": "NumÊro de tÊlÊphone pour questions sur le dÊfibrillateur : {phone}" + }, + "defibrillator-ref": { + "question": "Quel est le numÊro d'identification officiel de ce dispositif ? (si il est visible sur le dispositif)", + "render": "NumÊro d'identification officiel de ce dispositif : {ref}" + }, + "defibrillator-survey:date": { + "mappings": { + "0": { + "then": "VÊrifiÊ aujourd'hui !" + } + }, + "question": "Quand le dÊfibrillateur a-t-il ÊtÊ vÊrifiÊ pour la dernière fois ?", + "render": "Ce dÊfibrillateur a ÊtÊ vÊrifiÊ pour la dernière fois le {survey:date}" + } + }, + "title": { + "render": "DÊfibrillateur" + } + }, + "direction": { + "description": "Cette couche visualise les directions", + "name": "Visualisation de la direction" + }, + "drinking_water": { + "name": "Eau potable", + "presets": { + "0": { + "title": "eau potable" + } + }, + "tagRenderings": { + "Bottle refill": { + "mappings": { + "0": { + "then": "Il est facile de remplir les bouteilles d'eau" + }, + "1": { + "then": "Les bouteilles d'eau peuvent ne pas passer" + } + }, + "question": "Est-il facile de remplir des bouteilles d'eau ?" + }, + "Still in use?": { + "mappings": { + "0": { + "then": "Cette fontaine fonctionne" + }, + "1": { + "then": "Cette fontaine est cassÊe" + }, + "2": { + "then": "Cette fontaine est fermÊe" + } + }, + "question": "Ce point d'eau potable est-il toujours opÊrationnel ?", + "render": "L'Êtat opÊrationnel est {operational_status}" + }, + "render-closest-drinking-water": { + "render": "Une autre source d’eau potable est à {_closest_other_drinking_water_distance} mètres a>" + } + }, + "title": { + "render": "Eau potable" + } + }, + "food": { + "tagRenderings": { + "friture-oil": { + "mappings": { + "0": { + "then": "Huile vÊgÊtale" + }, + "1": { + "then": "Graisse animale" + } + }, + "question": "Cette friteuse fonctionne-t-elle avec de la graisse animale ou vÊgÊtale ?" + }, + "friture-take-your-container": { + "mappings": { + "0": { + "then": "Vous pouvez apporter vos contenants pour votre commande, limitant l’usage de matÊriaux à usage unique et les dÊchets" + }, + "1": { + "then": "Apporter ses propres contenants n’est pas permis" + }, + "2": { + "then": "Il est obligatoire d’apporter ses propres contenants" + } + }, + "question": "Est-il proposÊ d’utiliser ses propres contenants pour sa commande ?
" + }, + "friture-vegan": { + "mappings": { + "0": { + "then": "Des collations vÊgÊtaliens sont disponibles" + }, + "1": { + "then": "Quelques snacks vÊgÊtaliens seulement" + }, + "2": { + "then": "Pas d'en-cas vÊgÊtaliens disponibles" + } + }, + "question": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtaliens ?" + }, + "friture-vegetarian": { + "mappings": { + "0": { + "then": "Des collations vÊgÊtariens sont disponibles" + }, + "1": { + "then": "Quelques snacks vÊgÊtariens seulement" + }, + "2": { + "then": "Pas d'en-cas vÊgÊtariens disponibles" + } + }, + "question": "Cette friterie est-elle ÊquipÊe de snacks vÊgÊtariens ?" + } + } + }, + "ghost_bike": { + "name": "VÊlos fantômes", + "presets": { + "0": { + "title": "VÊlo fantôme" + } + }, + "tagRenderings": { + "ghost-bike-explanation": { + "render": "Un vÊlo fantôme est un monument commÊmoratif pour un cycliste dÊcÊdÊ dans un accident de la route, sous la forme d'un vÊlo blanc placÊ en permanence près du lieu de l'accident." + }, + "ghost_bike-inscription": { + "question": "Quelle est l'inscription sur ce vÊlo fantôme ?", + "render": "{inscription}" + }, + "ghost_bike-name": { + "mappings": { + "0": { + "then": "Aucun nom n'est marquÊ sur le vÊlo" + } + }, + "question": "À qui est dÊdiÊ ce vÊlo fantôme ?
Veuillez respecter la vie privÊe – ajoutez le nom seulement s'il est largement publiÊ ou marquÊ sur le vÊlo. Choisissez de ne pas indiquer le nom de famille
", + "render": "En souvenir de {name}" + }, + "ghost_bike-source": { + "question": "Sur quelle page web peut-on trouver plus d'informations sur le VÊlo fantôme ou l'accident ?", + "render": "
Plus d'informations sont disponibles" + }, + "ghost_bike-start_date": { + "question": "Quand ce vÊlo fantôme a-t-il ÊtÊ installÊe ?", + "render": "PlacÊ le {start_date}" + } + }, + "title": { + "mappings": { + "0": { + "then": "VÊlo fantôme en souvenir de {name}" + } + }, + "render": "VÊlo fantôme" + } + }, + "information_board": { + "name": "Panneaux d'informations", + "presets": { + "0": { + "title": "panneau d'informations" + } + }, + "title": { + "render": "Panneau d'informations" + } + }, + "map": { + "description": "Une carte, destinÊe aux touristes, installÊe en permanence dans l'espace public", + "name": "Cartes", + "presets": { + "0": { + "description": "Ajouter une carte manquante", + "title": "Carte" + } + }, + "tagRenderings": { + "map-attribution": { + "mappings": { + "0": { + "then": "L’attribution est clairement inscrite ainsi que la licence ODBL" + }, + "1": { + "then": "L’attribution est clairement inscrite mais la licence est absente" + }, + "2": { + "then": "OpenStreetMap n’est pas mentionnÊ, un sticker OpenStreetMap a ÊtÊ collÊ" + }, + "3": { + "then": "Il n'y a aucune attribution" + }, + "4": { + "then": "Il n'y a aucune attribution" + } + }, + "question": "L’attribution à OpenStreetMap est elle-prÊsente ?" + }, + "map-map_source": { + "mappings": { + "0": { + "then": "Cette carte est basÊe sur OpenStreetMap" + } + }, + "question": "Sur quelles donnÊes cette carte est-elle basÊe ?", + "render": "Cette carte est basÊe sur {map_source}" + } + }, + "title": { + "render": "Carte" + } + }, + "nature_reserve": { + "tagRenderings": { + "Curator": { + "question": "Qui est en charge de la conservation de la rÊserve ?
À ne remplir seulement que si le nom est diffusÊ au public", + "render": "{curator} est en charge de la conservation de la rÊserve" + }, + "Dogs?": { + "mappings": { + "0": { + "then": "Les chiens doivent ÃĒtre tenus en laisse" + }, + "1": { + "then": "Chiens interdits" + }, + "2": { + "then": "Les chiens sont autorisÊs à se promener librement" + } + }, + "question": "Les chiens sont-ils autorisÊs dans cette rÊserve naturelle ?" + }, + "Email": { + "question": "À quelle adresse courriel peut-on envoyer des questions et des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez une adresse Êlectronique personnelle seulement si celle-ci est largement publiÊe", + "render": "{email}" + }, + "Surface area": { + "render": "Superficie : {_surface:ha} ha" + }, + "Website": { + "question": "Sur quelle page web peut-on trouver plus d'informations sur cette rÊserve naturelle ?" + }, + "phone": { + "question": "Quel numÊro de tÊlÊphone peut-on appeler pour poser des questions et rÊsoudre des problèmes concernant cette rÊserve naturelle ?
Respecter la vie privÊe – renseignez un numÊro de tÊlÊphone personnel seulement si celui-ci est largement publiÊ", + "render": "{phone}" + } + } + }, + "picnic_table": { + "description": "La couche montrant les tables de pique-nique", + "name": "Tables de pique-nique", + "presets": { + "0": { + "title": "table de pique-nique" + } + }, + "tagRenderings": { + "picnic_table-material": { + "mappings": { + "0": { + "then": "C’est une table en bois" + }, + "1": { + "then": "C’est une table en bÊton" + } + }, + "question": "En quel matÊriau est faite la table de pique-nique ?", + "render": "La table est faite en {material}" + } + }, + "title": { + "render": "Table de pique-nique" + } + }, + "playground": { + "description": "Aire de jeu", + "name": "Aire de jeu", + "presets": { + "0": { + "title": "Terrain de jeux" + } + }, + "tagRenderings": { + "Playground-wheelchair": { + "mappings": { + "0": { + "then": "Entièrement accessible aux personnes en fauteuil roulant" + }, + "1": { + "then": "AccessibilitÊ limitÊe pour les personnes en fauteuil roulant" + }, + "2": { + "then": "Non accessible aux personnes en fauteuil roulant" + } + }, + "question": "Ce terrain de jeux est-il accessible aux personnes en fauteuil roulant ?" + }, + "playground-access": { + "mappings": { + "0": { + "then": "Accessible au public" + }, + "1": { + "then": "Accessible au public" + }, + "2": { + "then": "RÊservÊe aux clients" + }, + "3": { + "then": "RÊservÊe aux Êlèves de l’Êcole" + }, + "4": { + "then": "Non accessible" + } + }, + "question": "L’aire de jeu est-elle accessible au public ?" + }, + "playground-email": { + "question": "Quelle est l'adresse Êlectronique du responsable de l'aire de jeux ?", + "render": "{email}" + }, + "playground-lit": { + "mappings": { + "0": { + "then": "L’aire de jeu est ÊclairÊe de nuit" + }, + "1": { + "then": "L’aire de jeu n’est pas ÊclairÊe de nuit" + } + }, + "question": "Ce terrain de jeux est-il ÊclairÊ la nuit ?" + }, + "playground-max_age": { + "question": "Quel est l’Ãĸge maximum autorisÊ pour utiliser l’aire de jeu ?", + "render": "Accessible aux enfants de {max_age} au maximum" + }, + "playground-min_age": { + "question": "Quel est l'Ãĸge minimal requis pour accÊder à ce terrain de jeux ?", + "render": "Accessible aux enfants de plus de {min_age} ans" + }, + "playground-opening_hours": { + "mappings": { + "0": { + "then": "Accessible du lever au coucher du soleil" + }, + "1": { + "then": "Toujours accessible" + }, + "2": { + "then": "Toujours accessible" + } + }, + "question": "Quand ce terrain de jeux est-il accessible ?" + }, + "playground-operator": { + "question": "Qui est en charge de l’exploitation de l’aire de jeu ?", + "render": "ExploitÊ par {operator}" + }, + "playground-phone": { + "question": "Quel est le numÊro de tÊlÊphone du responsable du terrain de jeux ?", + "render": "{phone}" + }, + "playground-surface": { + "mappings": { + "0": { + "then": "La surface est en gazon" + }, + "1": { + "then": "La surface est en sable" + }, + "2": { + "then": "La surface est en copeaux de bois" + }, + "3": { + "then": "La surface est en pavÊs" + }, + "4": { + "then": "La surface est en bitume" + }, + "5": { + "then": "La surface est en bÊton" + }, + "6": { + "then": "La surface n’a pas de revÃĒtement" + }, + "7": { + "then": "La surface a un revÃĒtement" + } + }, + "question": "De quelle matière est la surface de l’aire de jeu ?
Pour plusieurs matières, sÊlectionner la principale", + "render": "La surface est en {surface}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Aire de jeu {name}" + } + }, + "render": "Aire de jeu" + } + }, + "public_bookcase": { + "description": "Une armoire ou une boite contenant des livres en libre accès", + "name": "Microbibliothèque", + "presets": { + "0": { + "title": "Microbibliothèque" + } + }, + "tagRenderings": { + "bookcase-booktypes": { + "mappings": { + "0": { + "then": "Livres pour enfants" + }, + "1": { + "then": "Livres pour les adultes" + }, + "2": { + "then": "Livres pour enfants et adultes Êgalement" + } + }, + "question": "Quel type de livres peut-on dans cette microbibliothèque ?" + }, + "bookcase-is-accessible": { + "mappings": { + "0": { + "then": "Accèssible au public" + }, + "1": { + "then": "Accèssible aux clients" + } + }, + "question": "Cette microbibliothèque est-elle librement accèssible ?" + }, + "bookcase-is-indoors": { + "mappings": { + "0": { + "then": "Cette microbibliothèque est en intÊrieur" + }, + "1": { + "then": "Cette microbibliothèque est en extÊrieur" + }, + "2": { + "then": "Cette microbibliothèque est en extÊrieur" + } + }, + "question": "Cette microbiliothèque est-elle en extÊrieur ?" + }, + "public_bookcase-brand": { + "mappings": { + "0": { + "then": "Fait partie du rÊseau Little Free Library" + }, + "1": { + "then": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe" + } + }, + "question": "Cette microbibliothèque fait-elle partie d'un rÊseau/groupe ?", + "render": "Cette microbibliothèque fait partie du groupe {brand}" + }, + "public_bookcase-capacity": { + "question": "Combien de livres peuvent entrer dans cette microbibliothèque ?", + "render": "{capacity} livres peuvent entrer dans cette microbibliothèque" + }, + "public_bookcase-name": { + "mappings": { + "0": { + "then": "Cette microbibliothèque n'a pas de nom" + } + }, + "question": "Quel est le nom de cette microbibliothèque ?", + "render": "Le nom de cette microbibliothèque est {name}" + }, + "public_bookcase-operator": { + "question": "Qui entretien cette microbibliothèque ?", + "render": "Entretenue par {operator}" + }, + "public_bookcase-ref": { + "mappings": { + "0": { + "then": "Cette microbibliothèque ne fait pas partie d'un rÊseau/groupe" + } + }, + "question": "Quelle est le numÊro de rÊfÊrence de cette microbibliothèque ?", + "render": "Cette microbibliothèque du rÊseau {brand} possède le numÊro {ref}" + }, + "public_bookcase-start_date": { + "question": "Quand a ÊtÊ installÊe cette microbibliothèque ?", + "render": "InstallÊe le {start_date}" + }, + "public_bookcase-website": { + "question": "Y a-t-il un site web avec plus d'informations sur cette microbibliothèque ?", + "render": "Plus d'infos sur le site web" + } + }, + "title": { + "mappings": { + "0": { + "then": "Microbibliothèque {name}" + } + }, + "render": "Microbibliothèque" + } + }, + "shops": { + "description": "Un magasin", + "name": "Magasin", + "presets": { + "0": { + "description": "Ajouter un nouveau magasin", + "title": "Magasin" + } + }, + "tagRenderings": { + "shops-email": { + "question": "Quelle est l'adresse Êlectronique de ce magasin ?", + "render": "{email}" + }, + "shops-name": { + "question": "Qu'est-ce que le nom de ce magasin?" + }, + "shops-opening_hours": { + "question": "Quels sont les horaires d'ouverture de ce magasin ?", + "render": "{opening_hours_table(opening_hours)}" + }, + "shops-phone": { + "question": "Quel est le numÊro de tÊlÊphone ?", + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "0": { + "then": "Épicerie/superette" + }, + "1": { + "then": "SupermarchÊ" + }, + "2": { + "then": "Magasin de vÃĒtements" + }, + "3": { + "then": "Coiffeur" + }, + "4": { + "then": "Boulangerie" + }, + "5": { + "then": "Garage de rÊparation automobile" + }, + "6": { + "then": "Concessionnaire" + } + }, + "question": "Que vends ce magasin ?", + "render": "Ce magasin vends {shop}" + }, + "shops-website": { + "question": "Quel est le site internet de ce magasin ?", + "render": "{website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "{shop}" + } + }, + "render": "Magasin" + } + }, + "slow_roads": { + "tagRenderings": { + "slow_roads-surface": { + "mappings": { + "0": { + "then": "La surface est en herbe" + }, + "1": { + "then": "La surface est en terre" + }, + "2": { + "then": "La surface est non pavÊe" + }, + "3": { + "then": "La surface est en sable" + }, + "4": { + "then": "La surface est en pierres pavÊes" + }, + "5": { + "then": "La surface est en bitume" + }, + "6": { + "then": "La surface est en bÊton" + }, + "7": { + "then": "La surface est pavÊe" + } + }, + "render": "La surface en {surface}" + } + } + }, + "sport_pitch": { + "description": "Un terrain de sport", + "name": "Terrains de sport", + "presets": { + "0": { + "title": "Table de ping-pong" + }, + "1": { + "title": "Terrain de sport" + } + }, + "tagRenderings": { + "sport-pitch-access": { + "mappings": { + "0": { + "then": "Accessible au public" + }, + "1": { + "then": "Accès limitÊ (par exemple uniquement sur rÊservation, à certains horairesâ€Ļ)" + }, + "2": { + "then": "Accessible uniquement aux membres du club" + }, + "3": { + "then": "PrivÊ - Pas accessible au public" + } + }, + "question": "Est-ce que ce terrain de sport est accessible au public ?" + }, + "sport-pitch-reservation": { + "mappings": { + "0": { + "then": "Il est obligatoire de rÊserver pour utiliser ce terrain de sport" + }, + "1": { + "then": "Il est recommendÊ de rÊserver pour utiliser ce terrain de sport" + }, + "2": { + "then": "Il est possible de rÊserver, mais ce n'est pas nÊcÊssaire pour utiliser ce terrain de sport" + }, + "3": { + "then": "On ne peut pas rÊserver" + } + }, + "question": "Doit-on rÊserver pour utiliser ce terrain de sport ?" + }, + "sport_pitch-email": { + "question": "Quelle est l'adresse courriel du gÊrant ?" + }, + "sport_pitch-opening_hours": { + "mappings": { + "1": { + "then": "Accessible en permanence" + } + }, + "question": "Quand ce terrain est-il accessible ?" + }, + "sport_pitch-phone": { + "question": "Quel est le numÊro de tÊlÊphone du gÊrant ?" + }, + "sport_pitch-sport": { + "mappings": { + "0": { + "then": "Ici, on joue au basketball" + }, + "1": { + "then": "Ici, on joue au football" + }, + "2": { + "then": "C'est une table de ping-pong" + }, + "3": { + "then": "Ici, on joue au tennis" + }, + "4": { + "then": "Ici, on joue au korfball" + }, + "5": { + "then": "Ici, on joue au basketball" + } + }, + "question": "À quel sport peut-on jouer ici ?", + "render": "Ici on joue au {sport}" + }, + "sport_pitch-surface": { + "mappings": { + "0": { + "then": "La surface est de l'herbe" + }, + "1": { + "then": "La surface est du sable" + }, + "2": { + "then": "La surface est des pavÊs" + }, + "3": { + "then": "La surface est de l'asphalte" + }, + "4": { + "then": "La surface est du bÊton" + } + }, + "question": "De quelle surface est fait ce terrain de sport ?", + "render": "La surface est {surface}" + } + }, + "title": { + "render": "Terrain de sport" + } + }, + "surveillance_camera": { + "name": "CamÊras de surveillance", + "tagRenderings": { + "Camera type: fixed; panning; dome": { + "mappings": { + "0": { + "then": "Une camÊra fixe (non mobile)" + }, + "1": { + "then": "Une camÊra dôme (qui peut tourner)" + }, + "2": { + "then": "Une camÊra panoramique" + } + }, + "question": "Quel genre de camÊra est-ce ?" + }, + "Level": { + "question": "À quel niveau se trouve cette camÊra ?", + "render": "SituÊ au niveau {level}" + }, + "Operator": { + "question": "Qui exploite ce système de vidÊosurveillance ?", + "render": "ExploitÊ par {operator}" + }, + "Surveillance type: public, outdoor, indoor": { + "mappings": { + "0": { + "then": "Une zone publique est surveillÊe, telle qu'une rue, un pont, une place, un parc, une gare, un couloir ou un tunnel publicâ€Ļ" + }, + "1": { + "then": "Une zone extÊrieure, mais privÊe, est surveillÊe (par exemple, un parking, une station-service, une cour, une entrÊe, une allÊe privÊe, etc.)" + }, + "2": { + "then": "Une zone intÊrieure privÊe est surveillÊe, par exemple un magasin, un parking souterrain privÊâ€Ļ" + } + }, + "question": "Quel genre de surveillance est cette camÊra" + }, + "Surveillance:zone": { + "mappings": { + "0": { + "then": "Surveille un parking" + }, + "1": { + "then": "Surveille la circulation" + }, + "2": { + "then": "Surveille une entrÊe" + }, + "3": { + "then": "Surveille un couloir" + }, + "4": { + "then": "Surveille un quai de transport public" + }, + "5": { + "then": "Surveille un magasin" + } + }, + "question": "Qu'est-ce qui est surveillÊ ici ?", + "render": " Surveille un(e) {surveillance:zone}" + }, + "camera:mount": { + "mappings": { + "0": { + "then": "Cette camÊra est placÊe contre un mur" + }, + "1": { + "then": "Cette camÊra est placÊe sur un poteau" + }, + "2": { + "then": "Cette camÊra est placÊe au plafond" + } + }, + "question": "Comment cette camÊra est-elle placÊe ?", + "render": "MÊthode de montage : {camera:mount}" + }, + "camera_direction": { + "mappings": { + "0": { + "then": "Filme dans une direction {direction}" + } + }, + "question": "Dans quelle direction gÊographique cette camÊra filme-t-elle ?", + "render": "Filme dans une direction {camera:direction}" + }, + "is_indoor": { + "mappings": { + "0": { + "then": "Cette camÊra est situÊe à l'intÊrieur" + }, + "1": { + "then": "Cette camÊra est situÊe à l'extÊrieur" + }, + "2": { + "then": "Cette camÊra est probablement situÊe à l'extÊrieur" + } + }, + "question": "L'espace public surveillÊ par cette camÊra est-il un espace intÊrieur ou extÊrieur ?" + } + }, + "title": { + "render": "CamÊra de surveillance" + } + }, + "toilet": { + "name": "Toilettes", + "presets": { + "0": { + "description": "Des toilettes", + "title": "toilettes" + }, + "1": { + "description": "Toilettes avec au moins un WC accessible aux personnes à mobilitÊ rÊduite", + "title": "toilettes accessible aux personnes à mobilitÊ rÊduite" + } + }, + "tagRenderings": { + "toilet-access": { + "mappings": { + "0": { + "then": "Accès publique" + }, + "1": { + "then": "Accès rÊservÊ aux clients" + }, + "2": { + "then": "Toilettes privÊes" + }, + "3": { + "then": "Accessible, mais vous devez demander la clÊ" + }, + "4": { + "then": "Accès publique" + } + }, + "question": "Ces toilettes sont-elles accessibles au public ?", + "render": "L'accès est {access}" + }, + "toilet-changing_table:location": { + "mappings": { + "0": { + "then": "La table à langer est dans les toilettes pour femmes. " + }, + "1": { + "then": "La table à langer est dans les toilettes pour hommes. " + }, + "2": { + "then": "La table à langer est dans les toilettes pour personnes à mobilitÊ rÊduite. " + }, + "3": { + "then": "La table à langer est dans un espace dÊdiÊ. " + } + }, + "question": "OÚ se situe la table à langer ?", + "render": "Emplacement de la table à langer : {changing_table:location}" + }, + "toilet-charge": { + "question": "Quel est le prix d'accès de ces toilettes ?", + "render": "Le prix est {charge}" + }, + "toilets-changing-table": { + "mappings": { + "0": { + "then": "Une table à langer est disponible" + }, + "1": { + "then": "Aucune table à langer" + } + }, + "question": "Ces toilettes disposent-elles d'une table à langer ?" + }, + "toilets-fee": { + "mappings": { + "0": { + "then": "Toilettes payantes" + }, + "1": { + "then": "Toilettes gratuites" + } + }, + "question": "Ces toilettes sont-elles payantes ?" + }, + "toilets-type": { + "mappings": { + "0": { + "then": "Il y a uniquement des sièges de toilettes" + }, + "1": { + "then": "Il y a uniquement des urinoirs" + }, + "2": { + "then": "Il y a uniquement des toilettes turques" + }, + "3": { + "then": "Il y a des sièges de toilettes et des urinoirs" + } + }, + "question": "De quel type sont ces toilettes ?" + }, + "toilets-wheelchair": { + "mappings": { + "0": { + "then": "Il y a des toilettes rÊservÊes pour les personnes à mobilitÊ rÊduite" + }, + "1": { + "then": "Non accessible aux personnes à mobilitÊ rÊduite" + } + }, + "question": "Y a-t-il des toilettes rÊservÊes aux personnes en fauteuil roulant ?" + } + }, + "title": { + "render": "Toilettes" + } + }, + "tree_node": { + "name": "Arbre", + "presets": { + "0": { + "description": "Un arbre d'une espèce avec de larges feuilles, comme le chÃĒne ou le peuplier.", + "title": "Arbre feuillu" + }, + "1": { + "description": "Une espèce d’arbre avec des Êpines comme le pin ou l’ÊpicÊa.", + "title": "Arbre rÊsineux" + }, + "2": { + "description": "Si vous n'ÃĒtes pas sÃģr(e) de savoir s'il s'agit d'un arbre à feuilles larges ou à aiguilles.", + "title": "Arbre" + } + }, + "tagRenderings": { + "tree-decidouous": { + "mappings": { + "0": { + "then": "Caduc : l’arbre perd son feuillage une partie de l’annÊe." + }, + "1": { + "then": "À feuilles persistantes." + } + }, + "question": "L’arbre est-il à feuillage persistant ou caduc ?" + }, + "tree-denotation": { + "mappings": { + "0": { + "then": "L'arbre est remarquable en raison de sa taille ou de son emplacement proÊminent. Il est utile pour la navigation." + }, + "1": { + "then": "Cet arbre est un monument naturel (ex : Ãĸge, espèce, etcâ€Ļ)" + }, + "2": { + "then": "Cet arbre est utilisÊ à but d’agriculture (ex : dans un verger)" + }, + "3": { + "then": "Cet arbre est dans un parc ou une aire similaire (ex : cimetière, cour d’Êcole, â€Ļ)." + }, + "4": { + "then": "Cet arbre est dans une cour rÊsidentielle." + }, + "5": { + "then": "C'est un arbre le long d'une avenue." + }, + "6": { + "then": "L'arbre est une zone urbaine." + }, + "7": { + "then": "Cet arbre est en zone rurale." + } + }, + "question": "Quelle est l'importance de cet arbre ? Choisissez la première rÊponse qui s'applique." + }, + "tree-height": { + "mappings": { + "0": { + "then": "Hauteur : {height} m" + } + }, + "render": "Hauteur : {height}" + }, + "tree-heritage": { + "mappings": { + "0": { + "then": "\"\"/ Fait partie du patrimoine par Onroerend Erfgoed" + }, + "1": { + "then": "EnregistrÊ comme patrimoine par la Direction du Patrimoine culturel Bruxelles" + }, + "2": { + "then": "EnregistrÊ comme patrimoine par une autre organisation" + }, + "3": { + "then": "Non enregistrÊ comme patrimoine" + }, + "4": { + "then": "EnregistrÊ comme patrimoine par une autre organisation" + } + }, + "question": "Cet arbre est-il inscrit au patrimoine ?" + }, + "tree-leaf_type": { + "mappings": { + "0": { + "then": "\"\"/ Feuillu" + }, + "1": { + "then": "\"\"/ RÊsineux" + }, + "2": { + "then": "\"\"/ Sans feuilles (Permanent)" + } + }, + "question": "Cet arbre est-il un feuillu ou un rÊsineux ?" + }, + "tree_node-name": { + "mappings": { + "0": { + "then": "L'arbre n'a pas de nom." + } + }, + "question": "L'arbre a-t-il un nom ?", + "render": "Nom : {name}" + }, + "tree_node-ref:OnroerendErfgoed": { + "question": "Quel est son identifiant donnÊ par Onroerend Erfgoed ?", + "render": "\"\"/ Identifiant Onroerend Erfgoed : {ref:OnroerendErfgoed}" + }, + "tree_node-wikidata": { + "question": "Quel est l'identifiant Wikidata de cet arbre ?", + "render": "\"\"/ Wikidata : {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Arbre" + } + }, + "viewpoint": { + "description": "Un beau point de vue ou une belle vue. IdÊal pour ajouter une image si aucune autre catÊgorie ne convient", + "name": "Point de vue", + "presets": { + "0": { + "title": "Point de vue" + } + }, + "tagRenderings": { + "viewpoint-description": { + "question": "Voulez-vous ajouter une description ?" + } + }, + "title": { + "render": "Point de vue" + } + } } \ No newline at end of file diff --git a/langs/layers/gl.json b/langs/layers/gl.json index 0dfb570cb..8beb2543f 100644 --- a/langs/layers/gl.json +++ b/langs/layers/gl.json @@ -1,403 +1,403 @@ { - "artwork": { - "presets": { - "0": { - "title": "Obra de arte" - } - }, - "title": { - "mappings": { - "0": { - "then": "Obra de arte {name}" - } - }, - "render": "Obra de arte" - } + "artwork": { + "presets": { + "0": { + "title": "Obra de arte" + } }, - "bike_cafe": { - "name": "CafÊ de ciclistas", - "presets": { - "0": { - "title": "CafÊ de ciclistas" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "Este cafÊ de ciclistas ofrece unha bomba de ar" - }, - "1": { - "then": "Este cafÊ de ciclistas non ofrece unha bomba de ar" - } - }, - "question": "Este cafÊ de ciclistas ofrece unha bomba de ar para que calquera persoa poida usala?" - }, - "bike_cafe-email": { - "question": "Cal Ê o enderezo de correo electrÃŗnico de {name}?" - }, - "bike_cafe-name": { - "question": "Cal Ê o nome deste cafÊ de ciclistas?", - "render": "Este cafÊ de ciclistas chÃĄmase {name}" - }, - "bike_cafe-phone": { - "question": "Cal Ê o nÃēmero de telÊfono de {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "Este cafÊ de ciclistas arranxa bicicletas" - }, - "1": { - "then": "Este cafÊ de ciclistas non arranxa bicicletas" - } - }, - "question": "Este cafÊ de ciclistas arranxa bicicletas?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta" - }, - "1": { - "then": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta" - } - }, - "question": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?" - }, - "bike_cafe-website": { - "question": "Cal Ê a pÃĄxina web de {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "CafÊ de ciclistas {name}" - } - }, - "render": "CafÊ de ciclistas" - } - }, - "bike_parking": { - "name": "Aparcadoiro de bicicletas", - "presets": { - "0": { - "title": "Aparcadoiro de bicicletas" - } - }, - "tagRenderings": { - "Bicycle parking type": { - "mappings": { - "0": { - "then": "De roda (Stands) " - }, - "1": { - "then": "Aros " - }, - "2": { - "then": "Cadeado para guiador " - }, - "3": { - "then": "Cremalleira " - }, - "4": { - "then": "Dobre cremalleira " - }, - "5": { - "then": "Abeiro " - } - }, - "question": "Que tipo de aparcadoiro de bicicletas Ê?", - "render": "Este Ê un aparcadoiro de bicicletas do tipo: {bicycle_parking}" - }, - "Capacity": { - "question": "Cantas bicicletas caben neste aparcadoiro de bicicletas (incluídas as posíbeis bicicletas de carga)?", - "render": "Lugar para {capacity} bicicletas" - }, - "Cargo bike capacity?": { - "question": "Cantas bicicletas de carga caben neste aparcadoiro de bicicletas?", - "render": "Neste aparcadoiro caben {capacity:cargo_bike} bicicletas de carga" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "Este aparcadoiro ten espazo para bicicletas de carga." - }, - "1": { - "then": "Este aparcadoiro ten espazos designados (oficiais) para bicicletas de carga." - }, - "2": { - "then": "Non estÃĄ permitido aparcar bicicletas de carga" - } - }, - "question": "Este aparcadoiro de bicicletas ten espazo para bicicletas de carga?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "Este aparcadoiro estÃĄ cuberto (ten un teito)" - }, - "1": { - "then": "Este aparcadoiro non estÃĄ cuberto" - } - }, - "question": "Este aparcadoiro estÃĄ cuberto? TamÊn escolle \"cuberto\" para aparcadoiros interiores." - } - }, - "title": { - "render": "Aparcadoiro de bicicletas" - } - }, - "bike_repair_station": { - "name": "EstaciÃŗn de bicicletas (arranxo, bomba de ar ou ambos)", - "presets": { - "0": { - "title": "Bomba de ar" - }, - "1": { - "title": "EstaciÃŗn de arranxo de bicicletas con bomba de ar" - }, - "2": { - "title": "EstaciÃŗn de arranxo de bicicletas sin bomba de ar" - } - }, - "tagRenderings": { - "Operational status": { - "mappings": { - "0": { - "then": "A bomba de ar estÃĄ estragada" - }, - "1": { - "then": "A bomba de ar estÃĄ operativa" - } - }, - "question": "Segue a funcionar a bomba de ar?" - }, - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "SÃŗ hai unha bomba de ar presente" - }, - "1": { - "then": "SÃŗ hai ferramentas (desaparafusadores, alicates...) presentes" - }, - "2": { - "then": "Hai ferramentas e unha bomba de ar presentes" - } - }, - "question": "Que servizos estÃĄn dispoÃąÃ­beis nesta estaciÃŗn de bicicletas?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "Hai unha ferramenta para a cadea" - }, - "1": { - "then": "Non hai unha ferramenta para a cadea" - } - }, - "question": "Esta estaciÃŗn de arranxo de bicicletas ten unha ferramenta especial para arranxar a cadea da tÃēa bicicleta?" - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "Hai un guindastre ou soporte" - }, - "1": { - "then": "Non hai un guindastre ou soporte" - } - }, - "question": "Esta estaciÃŗn de bicicletas ten un guindastre para pendurar a tÃēa bicicleta ou un soporte para elevala?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Bomba de ar manual" - }, - "1": { - "then": "Bomba de ar elÊctrica" - } - }, - "question": "Esta Ê unha bomba de ar elÊctrica?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "Hai manÃŗmetro" - }, - "1": { - "then": "Non hai manÃŗmetro" - }, - "2": { - "then": "Hai manÃŗmetro pero estÃĄ estragado" - } - }, - "question": "Ten a bomba de ar un indicador de presiÃŗn ou un manÃŗmetro?" - }, - "bike_repair_station-valves": { - "mappings": { - "0": { - "then": "Sclaverand (tamÊn coÃąecido como Presta)" - }, - "1": { - "then": "Dunlop" - }, - "2": { - "then": "Schrader (para automÃŗbiles)" - } - }, - "question": "Que vÃĄlvulas son compatíbeis?", - "render": "Esta bomba de ar admite as seguintes vÃĄlvulas: {valves}" - } - }, - "title": { - "mappings": { - "0": { - "then": "EstaciÃŗn de arranxo de bicicletas" - }, - "1": { - "then": "EstaciÃŗn de arranxo de bicicletas" - }, - "2": { - "then": "Bomba de ar estragada" - }, - "3": { - "then": "Bomba de ar {name}" - }, - "4": { - "then": "Bomba de ar" - } - }, - "render": "EstaciÃŗn de bicicletas (arranxo e bomba de ar)" - } - }, - "bike_shop": { - "name": "Tenda/arranxo de bicicletas", - "presets": { - "0": { - "title": "Tenda/arranxo de bicicletas" - } - }, - "tagRenderings": { - "bike_repair_bike-pump-service": { - "mappings": { - "0": { - "then": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa" - }, - "1": { - "then": "Esta tenda non ofrece unha bomba de ar para uso de calquera persoa" - } - }, - "question": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa?" - }, - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Esta tenda aluga bicicletas" - }, - "1": { - "then": "Esta tenda non aluga bicicletas" - } - }, - "question": "Esta tenda aluga bicicletas?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Esta tenda arranxa bicicletas" - }, - "1": { - "then": "Esta tenda non arranxa bicicletas" - }, - "2": { - "then": "Esta tenda sÃŗ arranxa bicicletas mercadas aquí" - }, - "3": { - "then": "Esta tenda sÃŗ arranxa bicicletas dunha certa marca" - } - }, - "question": "Esta tenda arranxa bicicletas?" - }, - "bike_repair_second-hand-bikes": { - "mappings": { - "0": { - "then": "Esta tenda vende bicicletas de segunda man" - }, - "1": { - "then": "Esta tenda non vende bicicletas de segunda man" - }, - "2": { - "then": "Esta tenda sÃŗ vende bicicletas de segunda man" - } - }, - "question": "Esta tenda vende bicicletas de segunda man?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "Esta tenda vende bicicletas" - }, - "1": { - "then": "Esta tenda non vende bicicletas" - } - }, - "question": "Esta tenda vende bicicletas?" - }, - "bike_repair_tools-service": { - "mappings": { - "0": { - "then": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta" - }, - "1": { - "then": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta" - } - }, - "question": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?" - }, - "bike_shop-email": { - "question": "Cal Ê o enderezo de correo electrÃŗnico de {name}?" - }, - "bike_shop-name": { - "question": "Cal Ê o nome desta tenda de bicicletas?", - "render": "Esta tenda de bicicletas chÃĄmase {name}" - }, - "bike_shop-phone": { - "question": "Cal Ê o nÃēmero de telÊfono de {name}?" - }, - "bike_shop-website": { - "question": "Cal Ê a pÃĄxina web de {name}?" - } - }, - "title": { - "mappings": { - "3": { - "then": "Arranxo de bicicletas {name}" - }, - "4": { - "then": "Tenda de bicicletas {name}" - }, - "5": { - "then": "Tenda/arranxo de bicicletas {name}" - } - }, - "render": "Tenda/arranxo de bicicletas" - } - }, - "drinking_water": { - "name": "Auga potÃĄbel", - "presets": { - "0": { - "title": "auga potÃĄbel" - } - }, - "title": { - "render": "Auga potÃĄbel" - } - }, - "ghost_bike": { - "name": "Bicicleta pantasma", - "title": { - "render": "Bicicleta pantasma" + "title": { + "mappings": { + "0": { + "then": "Obra de arte {name}" } + }, + "render": "Obra de arte" } + }, + "bike_cafe": { + "name": "CafÊ de ciclistas", + "presets": { + "0": { + "title": "CafÊ de ciclistas" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "Este cafÊ de ciclistas ofrece unha bomba de ar" + }, + "1": { + "then": "Este cafÊ de ciclistas non ofrece unha bomba de ar" + } + }, + "question": "Este cafÊ de ciclistas ofrece unha bomba de ar para que calquera persoa poida usala?" + }, + "bike_cafe-email": { + "question": "Cal Ê o enderezo de correo electrÃŗnico de {name}?" + }, + "bike_cafe-name": { + "question": "Cal Ê o nome deste cafÊ de ciclistas?", + "render": "Este cafÊ de ciclistas chÃĄmase {name}" + }, + "bike_cafe-phone": { + "question": "Cal Ê o nÃēmero de telÊfono de {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "Este cafÊ de ciclistas arranxa bicicletas" + }, + "1": { + "then": "Este cafÊ de ciclistas non arranxa bicicletas" + } + }, + "question": "Este cafÊ de ciclistas arranxa bicicletas?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta" + }, + "1": { + "then": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta" + } + }, + "question": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?" + }, + "bike_cafe-website": { + "question": "Cal Ê a pÃĄxina web de {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "CafÊ de ciclistas {name}" + } + }, + "render": "CafÊ de ciclistas" + } + }, + "bike_parking": { + "name": "Aparcadoiro de bicicletas", + "presets": { + "0": { + "title": "Aparcadoiro de bicicletas" + } + }, + "tagRenderings": { + "Bicycle parking type": { + "mappings": { + "0": { + "then": "De roda (Stands) " + }, + "1": { + "then": "Aros " + }, + "2": { + "then": "Cadeado para guiador " + }, + "3": { + "then": "Cremalleira " + }, + "4": { + "then": "Dobre cremalleira " + }, + "5": { + "then": "Abeiro " + } + }, + "question": "Que tipo de aparcadoiro de bicicletas Ê?", + "render": "Este Ê un aparcadoiro de bicicletas do tipo: {bicycle_parking}" + }, + "Capacity": { + "question": "Cantas bicicletas caben neste aparcadoiro de bicicletas (incluídas as posíbeis bicicletas de carga)?", + "render": "Lugar para {capacity} bicicletas" + }, + "Cargo bike capacity?": { + "question": "Cantas bicicletas de carga caben neste aparcadoiro de bicicletas?", + "render": "Neste aparcadoiro caben {capacity:cargo_bike} bicicletas de carga" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "Este aparcadoiro ten espazo para bicicletas de carga." + }, + "1": { + "then": "Este aparcadoiro ten espazos designados (oficiais) para bicicletas de carga." + }, + "2": { + "then": "Non estÃĄ permitido aparcar bicicletas de carga" + } + }, + "question": "Este aparcadoiro de bicicletas ten espazo para bicicletas de carga?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "Este aparcadoiro estÃĄ cuberto (ten un teito)" + }, + "1": { + "then": "Este aparcadoiro non estÃĄ cuberto" + } + }, + "question": "Este aparcadoiro estÃĄ cuberto? TamÊn escolle \"cuberto\" para aparcadoiros interiores." + } + }, + "title": { + "render": "Aparcadoiro de bicicletas" + } + }, + "bike_repair_station": { + "name": "EstaciÃŗn de bicicletas (arranxo, bomba de ar ou ambos)", + "presets": { + "0": { + "title": "Bomba de ar" + }, + "1": { + "title": "EstaciÃŗn de arranxo de bicicletas con bomba de ar" + }, + "2": { + "title": "EstaciÃŗn de arranxo de bicicletas sin bomba de ar" + } + }, + "tagRenderings": { + "Operational status": { + "mappings": { + "0": { + "then": "A bomba de ar estÃĄ estragada" + }, + "1": { + "then": "A bomba de ar estÃĄ operativa" + } + }, + "question": "Segue a funcionar a bomba de ar?" + }, + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "SÃŗ hai unha bomba de ar presente" + }, + "1": { + "then": "SÃŗ hai ferramentas (desaparafusadores, alicates...) presentes" + }, + "2": { + "then": "Hai ferramentas e unha bomba de ar presentes" + } + }, + "question": "Que servizos estÃĄn dispoÃąÃ­beis nesta estaciÃŗn de bicicletas?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "Hai unha ferramenta para a cadea" + }, + "1": { + "then": "Non hai unha ferramenta para a cadea" + } + }, + "question": "Esta estaciÃŗn de arranxo de bicicletas ten unha ferramenta especial para arranxar a cadea da tÃēa bicicleta?" + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "Hai un guindastre ou soporte" + }, + "1": { + "then": "Non hai un guindastre ou soporte" + } + }, + "question": "Esta estaciÃŗn de bicicletas ten un guindastre para pendurar a tÃēa bicicleta ou un soporte para elevala?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Bomba de ar manual" + }, + "1": { + "then": "Bomba de ar elÊctrica" + } + }, + "question": "Esta Ê unha bomba de ar elÊctrica?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "Hai manÃŗmetro" + }, + "1": { + "then": "Non hai manÃŗmetro" + }, + "2": { + "then": "Hai manÃŗmetro pero estÃĄ estragado" + } + }, + "question": "Ten a bomba de ar un indicador de presiÃŗn ou un manÃŗmetro?" + }, + "bike_repair_station-valves": { + "mappings": { + "0": { + "then": "Sclaverand (tamÊn coÃąecido como Presta)" + }, + "1": { + "then": "Dunlop" + }, + "2": { + "then": "Schrader (para automÃŗbiles)" + } + }, + "question": "Que vÃĄlvulas son compatíbeis?", + "render": "Esta bomba de ar admite as seguintes vÃĄlvulas: {valves}" + } + }, + "title": { + "mappings": { + "0": { + "then": "EstaciÃŗn de arranxo de bicicletas" + }, + "1": { + "then": "EstaciÃŗn de arranxo de bicicletas" + }, + "2": { + "then": "Bomba de ar estragada" + }, + "3": { + "then": "Bomba de ar {name}" + }, + "4": { + "then": "Bomba de ar" + } + }, + "render": "EstaciÃŗn de bicicletas (arranxo e bomba de ar)" + } + }, + "bike_shop": { + "name": "Tenda/arranxo de bicicletas", + "presets": { + "0": { + "title": "Tenda/arranxo de bicicletas" + } + }, + "tagRenderings": { + "bike_repair_bike-pump-service": { + "mappings": { + "0": { + "then": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa" + }, + "1": { + "then": "Esta tenda non ofrece unha bomba de ar para uso de calquera persoa" + } + }, + "question": "Esta tenda ofrece unha bomba de ar para uso de calquera persoa?" + }, + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Esta tenda aluga bicicletas" + }, + "1": { + "then": "Esta tenda non aluga bicicletas" + } + }, + "question": "Esta tenda aluga bicicletas?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Esta tenda arranxa bicicletas" + }, + "1": { + "then": "Esta tenda non arranxa bicicletas" + }, + "2": { + "then": "Esta tenda sÃŗ arranxa bicicletas mercadas aquí" + }, + "3": { + "then": "Esta tenda sÃŗ arranxa bicicletas dunha certa marca" + } + }, + "question": "Esta tenda arranxa bicicletas?" + }, + "bike_repair_second-hand-bikes": { + "mappings": { + "0": { + "then": "Esta tenda vende bicicletas de segunda man" + }, + "1": { + "then": "Esta tenda non vende bicicletas de segunda man" + }, + "2": { + "then": "Esta tenda sÃŗ vende bicicletas de segunda man" + } + }, + "question": "Esta tenda vende bicicletas de segunda man?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "Esta tenda vende bicicletas" + }, + "1": { + "then": "Esta tenda non vende bicicletas" + } + }, + "question": "Esta tenda vende bicicletas?" + }, + "bike_repair_tools-service": { + "mappings": { + "0": { + "then": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta" + }, + "1": { + "then": "Non hai ferramentas aquí para arranxar a tÃēa propia bicicleta" + } + }, + "question": "Hai ferramentas aquí para arranxar a tÃēa propia bicicleta?" + }, + "bike_shop-email": { + "question": "Cal Ê o enderezo de correo electrÃŗnico de {name}?" + }, + "bike_shop-name": { + "question": "Cal Ê o nome desta tenda de bicicletas?", + "render": "Esta tenda de bicicletas chÃĄmase {name}" + }, + "bike_shop-phone": { + "question": "Cal Ê o nÃēmero de telÊfono de {name}?" + }, + "bike_shop-website": { + "question": "Cal Ê a pÃĄxina web de {name}?" + } + }, + "title": { + "mappings": { + "3": { + "then": "Arranxo de bicicletas {name}" + }, + "4": { + "then": "Tenda de bicicletas {name}" + }, + "5": { + "then": "Tenda/arranxo de bicicletas {name}" + } + }, + "render": "Tenda/arranxo de bicicletas" + } + }, + "drinking_water": { + "name": "Auga potÃĄbel", + "presets": { + "0": { + "title": "auga potÃĄbel" + } + }, + "title": { + "render": "Auga potÃĄbel" + } + }, + "ghost_bike": { + "name": "Bicicleta pantasma", + "title": { + "render": "Bicicleta pantasma" + } + } } \ No newline at end of file diff --git a/langs/layers/hu.json b/langs/layers/hu.json index 1bddd2f35..3610384ba 100644 --- a/langs/layers/hu.json +++ b/langs/layers/hu.json @@ -1,229 +1,231 @@ { - "artwork": { - "presets": { - "0": { - "title": "MÅąalkotÃĄs" - } - }, - "title": { - "mappings": { - "0": { - "then": "MÅąalkotÃĄs {name}" - } - }, - "render": "MÅąalkotÃĄs" - } + "artwork": { + "presets": { + "0": { + "title": "MÅąalkotÃĄs" + } }, - "bench": { - "name": "Padok", - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "HÃĄttÃĄmla: Igen" - }, - "1": { - "then": "HÃĄttÃĄmla: Nem" - } - }, - "question": "Van hÃĄttÃĄmlÃĄja ennek a padnak?", - "render": "HÃĄttÃĄmla" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Szín: barna" - }, - "1": { - "then": "Szín: zÃļld" - }, - "2": { - "then": "Szín: szÃŧrke" - }, - "3": { - "then": "Szín: fehÊr" - }, - "4": { - "then": "Szín: piros" - }, - "5": { - "then": "Szín: fekete" - }, - "6": { - "then": "Szín: kÊk" - }, - "7": { - "then": "Szín: sÃĄrga" - } - }, - "question": "Milyen színÅą a pad?", - "render": "Szín: {colour}" - }, - "bench-direction": { - "question": "Milyen irÃĄnyba nÊz a pad?", - "render": "A pad {direction}° felÊ nÊz." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Anyag: fa" - }, - "1": { - "then": "Anyag: fÊm" - }, - "2": { - "then": "Anyag: kő" - }, - "3": { - "then": "Anyag: beton" - }, - "4": { - "then": "Anyag: mÅąanyag" - }, - "5": { - "then": "Anyag: acÊl" - } - }, - "question": "Miből van a pad (Ãŧlő rÊsze)?", - "render": "Anyag: {material}" - }, - "bench-seats": { - "question": "HÃĄny Ãŧlőhely van ezen a padon?", - "render": "{seats} Ãŧlőhely" - } - }, - "title": { - "render": "Pad" - } - }, - "bench_at_pt": { - "name": "Padok megÃĄllÃŗkban", - "tagRenderings": { - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Pad megÃĄllÃŗban" - }, - "1": { - "then": "Pad fedett helyen" - } - }, - "render": "Pad" - } - }, - "bicycle_library": { - "description": "LÊtesítmÊny, ahonnan kerÊkpÃĄr kÃļlcsÃļnÃļzhető hosszabb időre", - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "" - } - }, - "question": "Ki kÃļlcsÃļnÃļzhet itt kerÊkpÃĄrt?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "A kerÊkpÃĄrkÃļlcsÃļnzÊs ingyenes" - } - }, - "question": "Mennyibe kerÃŧl egy kerÊkpÃĄr kÃļlcsÃļnzÊse?", - "render": "Egy kerÊkpÃĄr kÃļlcsÃļnzÊse {charge}" - } - } - }, - "bicycle_tube_vending_machine": { - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Az automata mÅąkÃļdik" - }, - "1": { - "then": "Az automata elromlott" - }, - "2": { - "then": "Az automata zÃĄrva van" - } - } - } - } - }, - "bike_parking": { - "name": "KerÊkpÃĄros parkolÃŗ", - "presets": { - "0": { - "title": "KerÊkpÃĄros parkolÃŗ" - } - }, - "tagRenderings": { - "Bicycle parking type": { - "mappings": { - "0": { - "then": "\"U\" " - }, - "1": { - "then": "Kengyeles " - }, - "4": { - "then": "KÊtszintÅą " - }, - "5": { - "then": "FÊszer " - } - }, - "question": "Milyen típusÃē ez a kerÊkpÃĄros parkolÃŗ?", - "render": "Ez egy {bicycle_parking} típusÃē kerÊkpÃĄros parkolÃŗ" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "A parkolÃŗ fedett" - }, - "1": { - "then": "A parkolÃŗ nem fedett" - } - }, - "question": "Fedett ez a parkolÃŗ? (BeltÊri parkolÃŗ esetÊn is vÃĄlaszd a \"fedett\" opciÃŗt.)" - }, - "Underground?": { - "mappings": { - "2": { - "then": "Felszíni parkolÃŗ" - }, - "3": { - "then": "Felszíni parkolÃŗ" - }, - "4": { - "then": "TetőparkolÃŗ" - } - } - } - }, - "title": { - "render": "KerÊkpÃĄros parkolÃŗ" - } - }, - "ghost_bike": { - "name": "EmlÊkkerÊkpÃĄr", - "title": { - "render": "EmlÊkkerÊkpÃĄr" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "AutÃŗszerelő" - } - } - } + "title": { + "mappings": { + "0": { + "then": "MÅąalkotÃĄs {name}" } + }, + "render": "MÅąalkotÃĄs" } + }, + "bench": { + "name": "Padok", + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "HÃĄttÃĄmla: Igen" + }, + "1": { + "then": "HÃĄttÃĄmla: Nem" + } + }, + "question": "Van hÃĄttÃĄmlÃĄja ennek a padnak?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Szín: barna" + }, + "1": { + "then": "Szín: zÃļld" + }, + "2": { + "then": "Szín: szÃŧrke" + }, + "3": { + "then": "Szín: fehÊr" + }, + "4": { + "then": "Szín: piros" + }, + "5": { + "then": "Szín: fekete" + }, + "6": { + "then": "Szín: kÊk" + }, + "7": { + "then": "Szín: sÃĄrga" + } + }, + "question": "Milyen színÅą a pad?", + "render": "Szín: {colour}" + }, + "bench-direction": { + "question": "Milyen irÃĄnyba nÊz a pad?", + "render": "A pad {direction}° felÊ nÊz." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Anyag: fa" + }, + "1": { + "then": "Anyag: fÊm" + }, + "2": { + "then": "Anyag: kő" + }, + "3": { + "then": "Anyag: beton" + }, + "4": { + "then": "Anyag: mÅąanyag" + }, + "5": { + "then": "Anyag: acÊl" + } + }, + "question": "Miből van a pad (Ãŧlő rÊsze)?", + "render": "Anyag: {material}" + }, + "bench-seats": { + "question": "HÃĄny Ãŧlőhely van ezen a padon?", + "render": "{seats} Ãŧlőhely" + } + }, + "title": { + "render": "Pad" + } + }, + "bench_at_pt": { + "name": "Padok megÃĄllÃŗkban", + "tagRenderings": { + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Pad megÃĄllÃŗban" + }, + "1": { + "then": "Pad fedett helyen" + } + }, + "render": "Pad" + } + }, + "bicycle_library": { + "description": "LÊtesítmÊny, ahonnan kerÊkpÃĄr kÃļlcsÃļnÃļzhető hosszabb időre", + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "" + } + }, + "question": "Ki kÃļlcsÃļnÃļzhet itt kerÊkpÃĄrt?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "A kerÊkpÃĄrkÃļlcsÃļnzÊs ingyenes" + } + }, + "question": "Mennyibe kerÃŧl egy kerÊkpÃĄr kÃļlcsÃļnzÊse?", + "render": "Egy kerÊkpÃĄr kÃļlcsÃļnzÊse {charge}" + } + } + }, + "bicycle_tube_vending_machine": { + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Az automata mÅąkÃļdik" + }, + "1": { + "then": "Az automata elromlott" + }, + "2": { + "then": "Az automata zÃĄrva van" + } + } + } + } + }, + "bike_parking": { + "name": "KerÊkpÃĄros parkolÃŗ", + "presets": { + "0": { + "title": "KerÊkpÃĄros parkolÃŗ" + } + }, + "tagRenderings": { + "Bicycle parking type": { + "mappings": { + "0": { + "then": "\"U\" " + }, + "1": { + "then": "Kengyeles " + }, + "4": { + "then": "KÊtszintÅą " + }, + "5": { + "then": "FÊszer " + } + }, + "question": "Milyen típusÃē ez a kerÊkpÃĄros parkolÃŗ?", + "render": "Ez egy {bicycle_parking} típusÃē kerÊkpÃĄros parkolÃŗ" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "A parkolÃŗ fedett" + }, + "1": { + "then": "A parkolÃŗ nem fedett" + } + }, + "question": "Fedett ez a parkolÃŗ? (BeltÊri parkolÃŗ esetÊn is vÃĄlaszd a \"fedett\" opciÃŗt.)" + }, + "Underground?": { + "mappings": { + "1": { + "then": "Felszíni parkolÃŗ" + }, + "2": { + "then": "TetőparkolÃŗ" + }, + "3": { + "then": "Felszíni parkolÃŗ" + }, + "4": { + "then": "TetőparkolÃŗ" + } + } + } + }, + "title": { + "render": "KerÊkpÃĄros parkolÃŗ" + } + }, + "ghost_bike": { + "name": "EmlÊkkerÊkpÃĄr", + "title": { + "render": "EmlÊkkerÊkpÃĄr" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "AutÃŗszerelő" + } + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/id.json b/langs/layers/id.json index 1d8623ce9..3ac8616f9 100644 --- a/langs/layers/id.json +++ b/langs/layers/id.json @@ -1,181 +1,364 @@ { - "artwork": { - "name": "Karya seni", - "presets": { - "0": { - "title": "Karya Seni" - } + "artwork": { + "description": "Beragam karya seni", + "name": "Karya seni", + "presets": { + "0": { + "title": "Karya Seni" + } + }, + "tagRenderings": { + "artwork-artist_name": { + "question": "Seniman mana yang menciptakan ini?", + "render": "Dibuat oleh {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "Arsitektur" + }, + "1": { + "then": "Mural" + }, + "2": { + "then": "Lukisan" + }, + "3": { + "then": "Patung" + }, + "6": { + "then": "Batu" + }, + "7": { + "then": "Instalasi" + }, + "8": { + "then": "Graffiti" + }, + "9": { + "then": "Relief" + }, + "10": { + "then": "Azulejo (ubin dekoratif Spanyol)" + } }, - "tagRenderings": { - "artwork-website": { - "render": "Info lanjut tersedia di laman web ini." - } - }, - "title": { - "mappings": { - "0": { - "then": "Karya Seni {name}" - } - }, - "render": "Karya Seni" - } + "question": "Apa jenis karya seni ini?", + "render": "Ini adalah {artwork_type}" + }, + "artwork-website": { + "question": "Adakah situs web mengenai informasi lebih lanjut tentang karya seni ini?", + "render": "Info lanjut tersedia di laman web ini" + }, + "artwork-wikidata": { + "question": "Entri Wikidata mana yang sesuai dengan karya seni ini?", + "render": "Sesuai dengan {wikidata}" + } }, - "bench": { - "name": "Bangku", - "presets": { - "0": { - "title": "bangku" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Sandaran: Ya" - }, - "1": { - "then": "Sandaran: Tidak" - } - }, - "question": "Apakah bangku ini memiliki sandaran?", - "render": "Sandaran" - }, - "bench-colour": { - "render": "Warna: {colour}" - }, - "bench-seats": { - "render": "{seats} kursi" - } - }, - "title": { - "render": "Bangku" - } - }, - "bench_at_pt": { - "tagRenderings": { - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "render": "Bangku" - } - }, - "bike_parking": { - "tagRenderings": { - "Access": { - "render": "{access}" - } - } - }, - "bike_shop": { - "tagRenderings": { - "bike_shop-website": { - "question": "URL {name} apa?" - } - } - }, - "defibrillator": { - "tagRenderings": { - "defibrillator-description": { - "render": "Informasi tambahan: {description}" - } - } - }, - "drinking_water": { - "name": "Air minum", - "presets": { - "0": { - "title": "air minum" - } - }, - "title": { - "render": "Air minum" - } - }, - "ghost_bike": { - "tagRenderings": { - "ghost_bike-inscription": { - "render": "{inscription}" - }, - "ghost_bike-source": { - "render": "Informasi lanjut tersedia" - } - } - }, - "nature_reserve": { - "tagRenderings": { - "Email": { - "render": "{email}" - }, - "phone": { - "render": "{phone}" - } - } - }, - "playground": { - "tagRenderings": { - "playground-email": { - "render": "{email}" - }, - "playground-phone": { - "render": "{phone}" - } - } - }, - "shops": { - "tagRenderings": { - "shops-email": { - "render": "{email}" - }, - "shops-phone": { - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "5": { - "then": "Bengkel Mobil" - } - } - }, - "shops-website": { - "render": "{website}" - } - } - }, - "tree_node": { - "presets": { - "2": { - "title": "Pohon" - } - }, - "tagRenderings": { - "tree_node-name": { - "render": "Nama: {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - } - } - }, - "viewpoint": { - "name": "Sudut pandang", - "presets": { - "0": { - "title": "Sudut pandang" - } - }, - "tagRenderings": { - "viewpoint-description": { - "question": "Apakah Anda ingin menambahkan deskripsi?" - } - }, - "title": { - "render": "Sudut pandang" + "title": { + "mappings": { + "0": { + "then": "Karya Seni {name}" } + }, + "render": "Karya Seni" } + }, + "bench": { + "name": "Bangku", + "presets": { + "0": { + "title": "bangku" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Sandaran: Ya" + }, + "1": { + "then": "Sandaran: Tidak" + } + }, + "question": "Apakah bangku ini memiliki sandaran?" + }, + "bench-colour": { + "render": "Warna: {colour}" + }, + "bench-seats": { + "render": "{seats} kursi" + } + }, + "title": { + "render": "Bangku" + } + }, + "bench_at_pt": { + "tagRenderings": { + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "render": "Bangku" + } + }, + "bike_parking": { + "tagRenderings": { + "Access": { + "render": "{access}" + } + } + }, + "bike_shop": { + "tagRenderings": { + "bike_shop-website": { + "question": "URL {name} apa?" + } + } + }, + "cycleways_and_roads": { + "tagRenderings": { + "Maxspeed (for road)": { + "mappings": { + "3": { + "then": "Kecepatan maksimum 70 km/jam" + }, + "4": { + "then": "Kecepatan maksimum 90 km/jam" + } + }, + "question": "Berapa kecepatan maksimum di jalan ini?", + "render": "Kecepatan maksimum di jalan ini adalah {maxspeed} km/jam" + }, + "Surface of the road": { + "mappings": { + "1": { + "then": "Jalur sepeda ini diaspal" + }, + "2": { + "then": "Jalur sepeda ini terbuat dari aspal" + }, + "3": { + "then": "Jalur sepeda ini terbuat dari batu paving halus" + }, + "4": { + "then": "Jalur sepeda ini terbuat dari beton" + }, + "5": { + "then": "Jalur sepeda ini terbuat dari cobblestone (unhewn atau sett)" + }, + "6": { + "then": "Jalur sepeda ini terbuat dari batu bulat alami" + }, + "8": { + "then": "Jalur sepeda ini terbuat dari kayu" + }, + "9": { + "then": "Jalur sepeda ini terbuat dari kerikil" + }, + "10": { + "then": "Jalur sepeda ini terbuat dari kerikil halus" + }, + "11": { + "then": "Jalur sepeda ini terbuat dari batu kerikil" + }, + "12": { + "then": "Jalur sepeda ini terbuat dari tanah alami" + } + }, + "question": "Permukaan jalannya terbuat dari apa?", + "render": "Jalan ini terbuat dari {surface}" + }, + "Surface of the street": { + "mappings": { + "0": { + "then": "Dapat digunakan untuk roller tipis: rollerblade, skateboard" + }, + "1": { + "then": "Dapat digunakan untuk roda tipis: sepeda balap" + }, + "2": { + "then": "Dapat digunakan untuk roda normal: sepeda kota, kursi roda, skuter" + }, + "3": { + "then": "Dapat digunakan untuk roda yang kuat: sepeda trekking, mobil, becak" + }, + "5": { + "then": "Dapat digunakan untuk kendaraan off-road: kendaraan off-road berat" + }, + "6": { + "then": "Dapat digunakan untuk kendaraan off-road khusus: traktor, ATV" + } + } + }, + "cyclelan-segregation": { + "mappings": { + "0": { + "then": "Jalur sepeda ini dipisahkan oleh garis putus-putus" + }, + "1": { + "then": "Jalur sepeda ini dipisahkan oleh garis solid" + }, + "2": { + "then": "Jalur sepeda ini dipisahkan oleh jalur parkir" + }, + "3": { + "then": "Jalur sepeda ini dipisahkan oleh kerb" + } + }, + "question": "Bagaimana jalur sepeda ini terpisah dari jalan?" + }, + "cycleway-lane-track-traffic-signs": { + "mappings": { + "0": { + "then": "Jalur sepeda wajib " + }, + "1": { + "then": "Jalur sepeda wajib (dengan tanda tambahan)
" + }, + "2": { + "then": "Jalur pejalan kaki/sepeda terpisah " + }, + "3": { + "then": "Jalur pejalan kaki/sepeda tidak terpisah " + }, + "4": { + "then": "Tidak ada rambu lalu lintas" + } + }, + "question": "Rambu lalu lintas apa yang dimiliki jalur sepeda ini?" + }, + "cycleway-segregation": { + "mappings": { + "0": { + "then": "Jalur sepeda ini dipisahkan oleh garis putus-putus" + }, + "1": { + "then": "Jalur sepeda ini dipisahkan oleh garis solid" + }, + "2": { + "then": "Jalur sepeda ini dipisahkan oleh jalur parkir" + }, + "3": { + "then": "Jalur sepeda ini dipisahkan oleh kerb" + } + }, + "question": "Bagaimana jalur sepeda ini dipisahkan dari jalan?" + }, + "cycleway-traffic-signs": { + "mappings": { + "0": { + "then": "Jalur sepeda wajib " + } + } + } + } + }, + "defibrillator": { + "tagRenderings": { + "defibrillator-description": { + "render": "Informasi tambahan: {description}" + } + } + }, + "drinking_water": { + "name": "Air minum", + "presets": { + "0": { + "title": "air minum" + } + }, + "title": { + "render": "Air minum" + } + }, + "ghost_bike": { + "tagRenderings": { + "ghost_bike-inscription": { + "render": "{inscription}" + }, + "ghost_bike-source": { + "render": "Informasi lanjut tersedia" + } + } + }, + "nature_reserve": { + "tagRenderings": { + "Email": { + "render": "{email}" + }, + "phone": { + "render": "{phone}" + } + } + }, + "playground": { + "tagRenderings": { + "playground-email": { + "render": "{email}" + }, + "playground-phone": { + "render": "{phone}" + } + } + }, + "shops": { + "tagRenderings": { + "shops-email": { + "render": "{email}" + }, + "shops-phone": { + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "5": { + "then": "Bengkel Mobil" + } + } + }, + "shops-website": { + "render": "{website}" + } + } + }, + "tree_node": { + "presets": { + "2": { + "title": "Pohon" + } + }, + "tagRenderings": { + "tree_node-name": { + "render": "Nama: {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + } + } + }, + "viewpoint": { + "name": "Sudut pandang", + "presets": { + "0": { + "title": "Sudut pandang" + } + }, + "tagRenderings": { + "viewpoint-description": { + "question": "Apakah Anda ingin menambahkan deskripsi?" + } + }, + "title": { + "render": "Sudut pandang" + } + }, + "watermill": { + "name": "Kincir Air" + } } \ No newline at end of file diff --git a/langs/layers/it.json b/langs/layers/it.json index 48c8dda42..2f034ce89 100644 --- a/langs/layers/it.json +++ b/langs/layers/it.json @@ -1,1836 +1,1823 @@ { - "artwork": { - "description": "Diverse opere d’arte", - "name": "Opere d’arte", - "presets": { - "0": { - "title": "Opera d’arte" - } - }, - "tagRenderings": { - "artwork-artist_name": { - "question": "Quale artista ha creato quest’opera?", - "render": "Creato da {artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "Architettura" - }, - "1": { - "then": "Murale" - }, - "2": { - "then": "Dipinto" - }, - "3": { - "then": "Scultura" - }, - "4": { - "then": "Statua" - }, - "5": { - "then": "Busto" - }, - "6": { - "then": "Masso" - }, - "7": { - "then": "Istallazione" - }, - "8": { - "then": "Graffiti" - }, - "9": { - "then": "Rilievo" - }, - "10": { - "then": "Azulejo (ornamento decorativo piastrellato spagnolo)" - }, - "11": { - "then": "Mosaico di piastrelle" - } - }, - "question": "Che tipo di opera d’arte è questo?", - "render": "Si tratta di un {artwork_type}" - }, - "artwork-website": { - "question": "Esiste un sito web con maggiori informazioni su quest’opera?", - "render": "Ulteriori informazioni su questo sito web" - }, - "artwork-wikidata": { - "question": "Quale elemento Wikidata corrisponde a quest’opera d’arte?", - "render": "Corrisponde a {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Opera {name}" - } - }, - "render": "Opera d’arte" - } + "artwork": { + "description": "Diverse opere d’arte", + "name": "Opere d’arte", + "presets": { + "0": { + "title": "Opera d’arte" + } }, - "bench": { - "name": "Panchine", - "presets": { - "0": { - "title": "panchina" - } + "tagRenderings": { + "artwork-artist_name": { + "question": "Quale artista ha creato quest’opera?", + "render": "Creato da {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "Architettura" + }, + "1": { + "then": "Murale" + }, + "2": { + "then": "Dipinto" + }, + "3": { + "then": "Scultura" + }, + "4": { + "then": "Statua" + }, + "5": { + "then": "Busto" + }, + "6": { + "then": "Masso" + }, + "7": { + "then": "Istallazione" + }, + "8": { + "then": "Graffiti" + }, + "9": { + "then": "Rilievo" + }, + "10": { + "then": "Azulejo (ornamento decorativo piastrellato spagnolo)" + }, + "11": { + "then": "Mosaico di piastrelle" + } }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Schienale: SÃŦ" - }, - "1": { - "then": "Schienale: No" - } - }, - "question": "Questa panchina ha lo schienale?", - "render": "Schienale" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Colore: marrone" - }, - "1": { - "then": "Colore: verde" - }, - "2": { - "then": "Colore: grigio" - }, - "3": { - "then": "Colore: bianco" - }, - "4": { - "then": "Colore: rosso" - }, - "5": { - "then": "Colore: nero" - }, - "6": { - "then": "Colore: blu" - }, - "7": { - "then": "Colore: giallo" - } - }, - "question": "Di che colore è questa panchina?", - "render": "Colore: {colour}" - }, - "bench-direction": { - "question": "In che direzione si guarda quando si è seduti su questa panchina?", - "render": "Quando si è seduti su questa panchina, si guarda verso {direction}°." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Materiale: legno" - }, - "1": { - "then": "Materiale: metallo" - }, - "2": { - "then": "Materiale: pietra" - }, - "3": { - "then": "Materiale: cemento" - }, - "4": { - "then": "Materiale: plastica" - }, - "5": { - "then": "Materiale: acciaio" - } - }, - "question": "Di che materiale è fatta questa panchina?", - "render": "Materiale: {material}" - }, - "bench-seats": { - "question": "Quanti posti ha questa panchina?", - "render": "{seats} posti" - }, - "bench-survey:date": { - "question": "Quando è stata verificata l’ultima volta questa panchina?", - "render": "Questa panchina è stata controllata l’ultima volta in data {survey:date}" - } - }, - "title": { - "render": "Panchina" - } + "question": "Che tipo di opera d’arte è questo?", + "render": "Si tratta di un {artwork_type}" + }, + "artwork-website": { + "question": "Esiste un sito web con maggiori informazioni su quest’opera?", + "render": "Ulteriori informazioni su questo sito web" + }, + "artwork-wikidata": { + "question": "Quale elemento Wikidata corrisponde a quest’opera d’arte?", + "render": "Corrisponde a {wikidata}" + } }, - "bench_at_pt": { - "name": "Panchine alle fermate del trasporto pubblico", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "Panca in piedi" - }, - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Panchina alla fermata del trasporto pubblico" - }, - "1": { - "then": "Panchina in un riparo" - } - }, - "render": "Panchina" - } - }, - "bicycle_library": { - "description": "Una struttura dove le biciclette possono essere prestate per periodi di tempo piÚ lunghi", - "name": "Bici in prestito", - "presets": { - "0": { - "description": "Una ciclo-teca o ÂĢbici in prestitoÂģ ha una collezione di bici che possno essere prestate", - "title": "Bici in prestito" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "Sono disponibili biciclette per bambini" - }, - "1": { - "then": "Sono disponibili biciclette per adulti" - }, - "2": { - "then": "Sono disponibili biciclette per disabili" - } - }, - "question": "Chi puÃ˛ prendere in prestito le biciclette qua?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "Il prestito di una bicicletta è gratuito" - }, - "1": { - "then": "Il prestito di una bicicletta costa 20 â‚Ŧ/anno piÚ 20 â‚Ŧ di garanzia" - } - }, - "question": "Quanto costa il prestito di una bicicletta?", - "render": "Il prestito di una bicicletta costa {charge}" - }, - "bicycle_library-name": { - "question": "Qual è il nome di questo “bici in prestito”?", - "render": "Il “bici in prestito” è chiamato {name}" - } - }, - "title": { - "render": "Bici in prestito" - } - }, - "bicycle_tube_vending_machine": { - "name": "Distributore automatico di camere d’aria per bici", - "presets": { - "0": { - "title": "Distributore automatico di camere d’aria per bici" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Il distributore automatico funziona" - }, - "1": { - "then": "Il distributore automatico è guasto" - }, - "2": { - "then": "Il distributore automatico è spento" - } - }, - "question": "Questo distributore automatico funziona ancora?", - "render": "Lo stato operativo è {operational_status}" - } - }, - "title": { - "render": "Distributore automatico di camere d’aria per bici" - } - }, - "bike_cafe": { - "name": "Caffè in bici", - "presets": { - "0": { - "title": "Caffè in bici" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "Questo caffè in bici offre una pompa per bici liberamente utilizzabile" - }, - "1": { - "then": "Questo caffè in bici non offre una pompa per bici liberamente utilizzabile" - } - }, - "question": "Questo caffè in bici offre una pompa per bici che chiunque puÃ˛ utilizzare?" - }, - "bike_cafe-email": { - "question": "Qual è l’indirizzo email di {name}?" - }, - "bike_cafe-name": { - "question": "Qual è il nome di questo caffè in bici?", - "render": "Questo caffè in bici è chiamato {name}" - }, - "bike_cafe-opening_hours": { - "question": "Quando è aperto questo caffè in bici?" - }, - "bike_cafe-phone": { - "question": "Qual è il numero di telefono di {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "Questo caffè in bici ripara le bici" - }, - "1": { - "then": "Questo caffè in bici non ripara le bici" - } - }, - "question": "Questo caffè in bici ripara le bici?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "Questo caffè in bici fornisce degli attrezzi per la riparazione fai-da-te" - }, - "1": { - "then": "Questo caffè in bici non fornisce degli attrezzi per la riparazione fai-da-te" - } - }, - "question": "Ci sono degli strumenti per riparare la propria bicicletta?" - }, - "bike_cafe-website": { - "question": "Qual è il sito web di {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Caffè in bici {name}" - } - }, - "render": "Caffè in bici" - } - }, - "bike_cleaning": { - "name": "Servizio lavaggio bici", - "presets": { - "0": { - "title": "Servizio lavaggio bici" - } - }, - "title": { - "mappings": { - "0": { - "then": "Servizio lavaggio bici {name}" - } - }, - "render": "Servizio lavaggio bici" - } - }, - "bike_parking": { - "name": "Parcheggio bici", - "presets": { - "0": { - "title": "Parcheggio bici" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "Accessibile pubblicamente" - }, - "1": { - "then": "Accesso destinato principalmente ai visitatori di un’attività" - }, - "2": { - "then": "Accesso limitato ai membri di una scuola, una compagnia o un’organizzazione" - } - }, - "question": "Chi puÃ˛ usare questo parcheggio bici?", - "render": "{access}" - }, - "Bicycle parking type": { - "mappings": { - "0": { - "then": "Archetti " - }, - "1": { - "then": "Scolapiatti " - }, - "2": { - "then": "Blocca manubrio " - }, - "3": { - "then": "Rastrelliera " - }, - "4": { - "then": "A due piani " - }, - "5": { - "then": "Rimessa " - }, - "6": { - "then": "Colonnina " - }, - "7": { - "then": "Una zona del pavimento che è marcata per il parcheggio delle bici" - } - }, - "question": "Di che tipo di parcheggio bici si tratta?", - "render": "È un parcheggio bici del tipo: {bicycle_parking}" - }, - "Capacity": { - "question": "Quante biciclette entrano in questo parcheggio per bici (incluse le eventuali bici da trasporto)?", - "render": "Posti per {capacity} bici" - }, - "Cargo bike capacity?": { - "question": "Quante bici da trasporto entrano in questo parcheggio per bici?", - "render": "Questo parcheggio puÃ˛ contenere {capacity:cargo_bike} bici da trasporto" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "Questo parcheggio ha posto per bici da trasporto" - }, - "1": { - "then": "Questo parcheggio ha posti destinati (ufficialmente) alle bici da trasporto." - }, - "2": { - "then": "Il parcheggio delle bici da trasporto è proibito" - } - }, - "question": "Questo parcheggio dispone di posti specifici per le bici da trasporto?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "È un parcheggio coperto (ha un tetto)" - }, - "1": { - "then": "Non è un parcheggio coperto" - } - }, - "question": "È un parcheggio coperto? Indicare “coperto” per parcheggi all’interno." - }, - "Underground?": { - "mappings": { - "0": { - "then": "Parcheggio sotterraneo" - }, - "1": { - "then": "Parcheggio sotterraneo" - }, - "2": { - "then": "Parcheggio in superficie" - }, - "3": { - "then": "Parcheggio in superficie" - }, - "4": { - "then": "Parcheggio sul tetto" - } - }, - "question": "Qual è la posizione relativa di questo parcheggio bici?" - } - }, - "title": { - "render": "Parcheggio bici" - } - }, - "bike_repair_station": { - "name": "Stazioni bici (riparazione, gonfiaggio o entrambi)", - "presets": { - "0": { - "description": "Un dispositivo per gonfiare le proprie gomme in un luogo fisso pubblicamente accessibile.

Esempi di pompe per biciclette

", - "title": "Pompa per bici" - }, - "1": { - "description": "Un dispositivo con attrezzi per riparare la tua bici e una pompa in un luogo fisso. Gli attrezzi sono spesso attaccati ad una catena per prevenire il furto.

Esempio

", - "title": "Stazione di riparazione bici e pompa" - }, - "2": { - "title": "Stazione di riparazione bici senza pompa" - } - }, - "tagRenderings": { - "Operational status": { - "mappings": { - "0": { - "then": "La pompa per bici è guasta" - }, - "1": { - "then": "La pompa per bici funziona" - } - }, - "question": "La pompa per bici è sempre funzionante?" - }, - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "C’è solamente una pompa presente" - }, - "1": { - "then": "Ci sono solo degli attrezzi (cacciaviti, pinzeâ€Ļ) presenti" - }, - "2": { - "then": "Ci sono sia attrezzi che pompa presenti" - } - }, - "question": "Quali servizi sono disponibili in questa stazione per bici?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "È presente un utensile per riparare la catena" - }, - "1": { - "then": "Non è presente un utensile per riparare la catena" - } - }, - "question": "Questa stazione di riparazione bici ha un attrezzo speciale per riparare la catena della bici?" - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "C’è un gancio o un supporto" - }, - "1": { - "then": "Non c’è nÊ un gancio nÊ un supporto" - } - }, - "question": "Questa stazione bici ha un gancio per tenere sospesa la bici o un supporto per alzarla?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Pompa manuale" - }, - "1": { - "then": "Pompa elettrica" - } - }, - "question": "Questa pompa per bici è elettrica?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "C’è un manometro" - }, - "1": { - "then": "Non c’è un manometro" - }, - "2": { - "then": "C’è un manometro ma è rotto" - } - }, - "question": "Questa pompa ha l’indicatore della pressione o il manometro?" - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "Sempre aperto" - }, - "1": { - "then": "Sempre aperto" - } - }, - "question": "Quando è aperto questo punto riparazione bici?" - }, - "bike_repair_station-operator": { - "question": "Chi gestisce questa pompa per bici?", - "render": "Manutenuta da {operator}" - }, - "bike_repair_station-valves": { - "mappings": { - "0": { - "then": "Sclaverand (detta anche Presta)" - }, - "1": { - "then": "Dunlop" - }, - "2": { - "then": "Schrader (valvola delle auto)" - } - }, - "question": "Quali valvole sono supportate?", - "render": "Questa pompa è compatibile con le seguenti valvole: {valves}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Stazione riparazione bici" - }, - "1": { - "then": "Stazione riparazione bici" - }, - "2": { - "then": "Pompa rotta" - }, - "3": { - "then": "Pompa per bici {name}" - }, - "4": { - "then": "Pompa per bici" - } - }, - "render": "Stazione bici (gonfiaggio & riparazione)" - } - }, - "bike_shop": { - "description": "Un negozio che vende specificatamente biciclette o articoli similari", - "name": "Venditore/riparatore bici", - "presets": { - "0": { - "title": "Negozio/riparatore di bici" - } - }, - "tagRenderings": { - "bike_repair_bike-pump-service": { - "mappings": { - "0": { - "then": "Questo negozio offre l’uso pubblico di una pompa per bici" - }, - "1": { - "then": "Questo negozio non offre l’uso pubblico di una pompa per bici" - }, - "2": { - "then": "C’è una pompa per bici, è mostrata come punto separato " - } - }, - "question": "Questo negozio offre l’uso a chiunque di una pompa per bici?" - }, - "bike_repair_bike-wash": { - "mappings": { - "0": { - "then": "Questo negozio lava le biciclette" - }, - "1": { - "then": "Questo negozio ha una struttura dove è possibile pulire la propria bici" - }, - "2": { - "then": "Questo negozio non offre la pulizia della bicicletta" - } - }, - "question": "Vengono lavate le bici qua?" - }, - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Questo negozio noleggia le bici" - }, - "1": { - "then": "Questo negozio non noleggia le bici" - } - }, - "question": "Questo negozio noleggia le bici?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Questo negozio ripara bici" - }, - "1": { - "then": "Questo negozio non ripara bici" - }, - "2": { - "then": "Questo negozio ripara solo le bici che sono state acquistate qua" - }, - "3": { - "then": "Questo negozio ripara solo le biciclette di una certa marca" - } - }, - "question": "Questo negozio ripara bici?" - }, - "bike_repair_second-hand-bikes": { - "mappings": { - "0": { - "then": "Questo negozio vende bici usate" - }, - "1": { - "then": "Questo negozio non vende bici usate" - }, - "2": { - "then": "Questo negozio vende solamente bici usate" - } - }, - "question": "Questo negozio vende bici usate?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "Questo negozio vende bici" - }, - "1": { - "then": "Questo negozio non vende bici" - } - }, - "question": "Questo negozio vende bici?" - }, - "bike_repair_tools-service": { - "mappings": { - "0": { - "then": "Questo negozio offre degli attrezzi per la riparazione fai-da-te" - }, - "1": { - "then": "Questo negozio non offre degli attrezzi per la riparazione fai-da-te" - }, - "2": { - "then": "Gli attrezzi per la riparazione fai-da-te sono disponibili solamente se hai acquistato/noleggiato la bici nel negozio" - } - }, - "question": "Sono presenti degli attrezzi per riparare la propria bici?" - }, - "bike_shop-email": { - "question": "Qual è l’indirizzo email di {name}?" - }, - "bike_shop-is-bicycle_shop": { - "render": "Questo negozio è specializzato nella vendita di {shop} ed effettua attività relative alle biciclette" - }, - "bike_shop-name": { - "question": "Qual è il nome di questo negozio di biciclette?", - "render": "Questo negozio di biciclette è chiamato {name}" - }, - "bike_shop-phone": { - "question": "Qual è il numero di telefono di {name}?" - }, - "bike_shop-website": { - "question": "Qual è il sito web di {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Negozio di articoli sportivi {name}" - }, - "2": { - "then": "Noleggio di biciclette {name}" - }, - "3": { - "then": "Riparazione biciclette {name" - }, - "4": { - "then": "Negozio di biciclette {name}" - }, - "5": { - "then": "Venditore/riparatore bici {name}" - } - }, - "render": "Venditore/riparatore bici" - } - }, - "bike_themed_object": { - "name": "Oggetto relativo alle bici", - "title": { - "mappings": { - "1": { - "then": "Pista ciclabile" - } - }, - "render": "Oggetto relativo alle bici" - } - }, - "charging_station": { - "tagRenderings": { - "Network": { - "question": "A quale rete appartiene questa stazione di ricarica?", - "render": "{network}" - }, - "OH": { - "question": "Quali sono gli orari di apertura di questa stazione di ricarica?" - } - } - }, - "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, - "name": "Defibrillatori", - "presets": { - "0": { - "title": "Defibrillatore" - } - }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "Pubblicamente accessibile" - }, - "1": { - "then": "Pubblicamente accessibile" - }, - "2": { - "then": "Accessibile solo ai clienti" - }, - "3": { - "then": "Non accessibile al pubblico (ad esempio riservato al personale, ai proprietari, etc.)" - }, - "4": { - "then": "Non accessibile, potrebbe essere solo per uso professionale" - } - }, - "question": "Questo defibrillatore è liberamente accessibile?", - "render": "Accesso è {access}" - }, - "defibrillator-defibrillator": { - "mappings": { - "0": { - "then": "Questo è un defibrillatore manuale per professionisti" - }, - "1": { - "then": "È un normale defibrillatore automatico" - } - }, - "question": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?", - "render": "Non vi sono informazioni riguardanti il tipo di questo dispositivo" - }, - "defibrillator-defibrillator:location": { - "question": "Indica piÚ precisamente dove si trova il defibrillatore (in lingua locale)", - "render": "Informazioni supplementari circa la posizione (in lingua locale):
{defibrillator:location}" - }, - "defibrillator-defibrillator:location:en": { - "question": "Indica piÚ precisamente dove si trova il defibrillatore (in inglese)", - "render": "Informazioni supplementari circa la posizione (in inglese):
{defibrillator:location:en}" - }, - "defibrillator-defibrillator:location:fr": { - "question": "Indica piÚ precisamente dove si trova il defibrillatore (in francese)", - "render": "Informazioni supplementari circa la posizione (in francese):
{defibrillator:location:fr}" - }, - "defibrillator-description": { - "question": "Vi sono altre informazioni utili agli utenti che non è stato possibile aggiungere prima? (lasciare vuoto in caso negativo)", - "render": "Informazioni supplementari: {description}" - }, - "defibrillator-email": { - "question": "Qual è l’indirizzo email per le domande riguardanti questo defibrillatore?", - "render": "Indirizzo email per le domande su questo defibrillatore:{email}" - }, - "defibrillator-fixme": { - "question": "C’è qualcosa di sbagliato riguardante come è stato mappato, che non si è potuto correggere qua? (lascia una nota agli esperti di OpenStreetMap)", - "render": "Informazioni supplementari per gli esperti di OpenStreetMap: {fixme}" - }, - "defibrillator-indoors": { - "mappings": { - "0": { - "then": "Questo defibrillatore si trova all’interno" - }, - "1": { - "then": "Questo defibrillatore si trova all’esterno" - } - }, - "question": "Questo defibrillatore si trova all’interno?" - }, - "defibrillator-level": { - "mappings": { - "0": { - "then": "Questo defibrillatore è al pian terreno" - }, - "1": { - "then": "Questo defibrillatore è al primo piano" - } - }, - "question": "A che piano si trova questo defibrillatore?", - "render": "Questo defibrillatore è al piano {level}" - }, - "defibrillator-opening_hours": { - "mappings": { - "0": { - "then": "Aperto 24/7 (festivi inclusi)" - } - }, - "question": "In quali orari è disponibile questo defibrillatore?", - "render": "{opening_hours_table(opening_hours)}" - }, - "defibrillator-phone": { - "question": "Qual è il numero di telefono per le domande riguardanti questo defibrillatore?", - "render": "Numero di telefono per le domande su questo defibrillatore:{phone}" - }, - "defibrillator-ref": { - "question": "Qual è il numero identificativo ufficiale di questo dispositivo? (se visibile sul dispositivo)", - "render": "Numero identificativo ufficiale di questo dispositivo:{ref}" - }, - "defibrillator-survey:date": { - "mappings": { - "0": { - "then": "Verificato oggi!" - } - }, - "question": "Quando è stato verificato per l’ultima volta questo defibrillatore?", - "render": "Questo defibrillatore è stato verificato per l‘ultima volta in data {survey:date}" - } - }, - "title": { - "render": "Defibrillatore" - } - }, - "direction": { - "description": "Questo livello visualizza le direzioni", - "name": "Visualizzazione della direzione" - }, - "drinking_water": { - "name": "Acqua potabile", - "presets": { - "0": { - "title": "acqua potabile" - } - }, - "tagRenderings": { - "Bottle refill": { - "mappings": { - "0": { - "then": "È facile riempire d’acqua le bottiglie" - }, - "1": { - "then": "Le bottiglie d’acqua potrebbero non entrare" - } - }, - "question": "Quanto è facile riempire d’acqua le bottiglie?" - }, - "Still in use?": { - "mappings": { - "0": { - "then": "La fontanella funziona" - }, - "1": { - "then": "La fontanella è guasta" - }, - "2": { - "then": "La fontanella è chiusa" - } - }, - "question": "Questo punto di acqua potabile è sempre funzionante?", - "render": "Lo stato operativo è {operational_status}" - }, - "render-closest-drinking-water": { - "render": "C’è un’altra fontanella a {_closest_other_drinking_water_distance} metri" - } - }, - "title": { - "render": "Acqua potabile" - } - }, - "ghost_bike": { - "name": "Bici fantasma", - "presets": { - "0": { - "title": "Bici fantasma" - } - }, - "tagRenderings": { - "ghost-bike-explanation": { - "render": "Una bici fantasma è il memoriale di un ciclista che è morto in un incidente stradale e che ha la forma di una bicicletta bianca piazzata in maniera stabile vicino al luogo dell’incidente." - }, - "ghost_bike-inscription": { - "question": "Che cosa è scritto sulla bici fantasma?", - "render": "{inscription}" - }, - "ghost_bike-name": { - "mappings": { - "0": { - "then": "Nessun nome scritto sulla bici" - } - }, - "question": "A chi è dedicata questa bici fantasma?
Rispetta la privacy (compila solo il nome se questo è stato ampiamente pubblicato o se è scritto sulla bici). Decidi se è il caso di non inserire il cognome.
", - "render": "In ricordo di {name}" - }, - "ghost_bike-source": { - "question": "In quale pagina web si possono trovare informazioni sulla bici fantasma o l’incidente?", - "render": "Sono disponibili ulteriori informazioni" - }, - "ghost_bike-start_date": { - "question": "Quando è stata installata questa bici fantasma?", - "render": "Piazzata in data {start_date}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Bici fantasma in ricordo di {name}" - } - }, - "render": "Bici fantasma" - } - }, - "information_board": { - "name": "Pannelli informativi", - "presets": { - "0": { - "title": "pannello informativo" - } - }, - "title": { - "render": "Pannello informativo" - } - }, - "map": { - "description": "Una mappa, destinata ai turisti e che è sistemata in maniera permanente in uno spazio pubblico", - "name": "Mappe", - "presets": { - "0": { - "description": "Aggiungi una mappa mancante", - "title": "Mappa" - } - }, - "tagRenderings": { - "map-attribution": { - "mappings": { - "0": { - "then": "L’attribuzione a OpenStreetMap è chiaramente specificata, inclusa la licenza ODBL" - }, - "1": { - "then": "L’attribuzione a OpenStreetMap è chiaramente specificata ma la licenza non compare" - }, - "2": { - "then": "Non era presente alcun cenno a OpenStreetMap ma qualcuno vi ha attaccato un adesivo di OpenStreetMap" - }, - "3": { - "then": "Non c’è alcuna attribuzione" - }, - "4": { - "then": "Non c’è alcuna attribuzione" - } - }, - "question": "L’attribuzione a OpenStreetMap è presente?" - }, - "map-map_source": { - "mappings": { - "0": { - "then": "Questa mappa si basa su OpenStreetMap" - } - }, - "question": "Su quali dati si basa questa mappa?", - "render": "Questa mappa si basa su {map_source}" - } - }, - "title": { - "render": "Mappa" - } - }, - "nature_reserve": { - "tagRenderings": { - "Curator": { - "question": "Chi è il curatore di questa riserva naturale?
Rispetta la privacy (scrivi il nome solo se questo è noto pubblicamente)", - "render": "{curator} è il curatore di questa riserva naturale" - }, - "Dogs?": { - "mappings": { - "0": { - "then": "I cani devono essere tenuti al guinzaglio" - }, - "1": { - "then": "I cani non sono ammessi" - }, - "2": { - "then": "I cani sono liberi di girare liberi" - } - }, - "question": "I cani sono ammessi in questa riserva naturale?" - }, - "Email": { - "question": "Qual è l’indirizzo email a cui scrivere per fare domande o segnalare problemi su questa riserva naturale?
Rispetta la privacy (compila l’indirizzo email personale solo se è stato reso pubblico)", - "render": "{email}" - }, - "Surface area": { - "render": "Area: {_surface:ha} ha" - }, - "Website": { - "question": "In quale pagina web si possono trovare altre informazioni riguardanti questa riserva naturale?" - }, - "phone": { - "question": "Quale numero di telefono comporre per fare domande o segnalare problemi riguardanti questa riserva naturale?br/>Rispetta la privacy (inserisci il numero di telefono privato solo se questo è noto pubblicamente)", - "render": "{phone}" - } - } - }, - "picnic_table": { - "description": "Il livello che mostra i tavoli da picnic", - "name": "Tavoli da picnic", - "presets": { - "0": { - "title": "tavolo da picnic" - } - }, - "tagRenderings": { - "picnic_table-material": { - "mappings": { - "0": { - "then": "È un tavolo da picnic in legno" - }, - "1": { - "then": "È un tavolo da picnic in cemento" - } - }, - "question": "Di che materiale è fatto questo tavolo da picnic?", - "render": "Questo tavolo da picnic è fatto di {material}" - } - }, - "title": { - "render": "Tavolo da picnic" - } - }, - "playground": { - "description": "Parchi giochi", - "name": "Campi da gioco", - "presets": { - "0": { - "title": "Campetto" - } - }, - "tagRenderings": { - "Playground-wheelchair": { - "mappings": { - "0": { - "then": "Completamente accessibile in sedia a rotelle" - }, - "1": { - "then": "Accesso limitato in sedia a rotelle" - }, - "2": { - "then": "Non accessibile in sedia a rotelle" - } - }, - "question": "Il campetto è accessibile a persone in sedia a rotelle?" - }, - "playground-access": { - "mappings": { - "0": { - "then": "Accessibile pubblicamente" - }, - "1": { - "then": "Accessibile pubblicamente" - }, - "2": { - "then": "Accessibile solamente ai clienti dell’attività che lo gestisce" - }, - "3": { - "then": "Accessibile solamente agli studenti della scuola" - }, - "4": { - "then": "Non accessibile" - } - }, - "question": "Questo parco giochi è pubblicamente accessibile?" - }, - "playground-email": { - "question": "Qual è l’indirizzo email del gestore di questo parco giochi?", - "render": "{email}" - }, - "playground-lit": { - "mappings": { - "0": { - "then": "Questo parco giochi è illuminato di notte" - }, - "1": { - "then": "Questo parco giochi non è illuminato di notte" - } - }, - "question": "È illuminato di notte questo parco giochi?" - }, - "playground-max_age": { - "question": "Qual è l’età massima per accedere a questo parco giochi?", - "render": "Accessibile ai bambini di età inferiore a {max_age}" - }, - "playground-min_age": { - "question": "Qual è l’età minima per accedere a questo parco giochi?", - "render": "Accessibile ai bambini di almeno {min_age} anni" - }, - "playground-opening_hours": { - "mappings": { - "0": { - "then": "Si puÃ˛ accedere dall'alba al tramonto" - }, - "1": { - "then": "Si puÃ˛ sempre accedere" - }, - "2": { - "then": "Si puÃ˛ sempre accedere" - } - }, - "question": "Quando si puÃ˛ accedere a questo campetto?" - }, - "playground-operator": { - "question": "Chi è il responsabile di questo parco giochi?", - "render": "Gestito da {operator}" - }, - "playground-phone": { - "question": "Qual è il numero di telefono del gestore del campetto?", - "render": "{phone}" - }, - "playground-surface": { - "mappings": { - "0": { - "then": "La superficie è prato" - }, - "1": { - "then": "La superficie è sabbia" - }, - "2": { - "then": "La superficie consiste di trucioli di legno" - }, - "3": { - "then": "La superficie è mattonelle regolari" - }, - "4": { - "then": "La superficie è asfalto" - }, - "5": { - "then": "La superficie è cemento" - }, - "6": { - "then": "La superficie è non pavimentato" - }, - "7": { - "then": "La superficie è pavimentato" - } - }, - "question": "Qual è la superficie di questo parco giochi?
Se ve ne è piÚ di una, seleziona quella predominante", - "render": "La superficie è {surface}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Parco giochi {name}" - } - }, - "render": "Parco giochi" - } - }, - "public_bookcase": { - "description": "Una vetrinetta ai bordi della strada contenente libri, aperta al pubblico", - "name": "Microbiblioteche", - "presets": { - "0": { - "title": "Microbiblioteca" - } - }, - "tagRenderings": { - "bookcase-booktypes": { - "mappings": { - "0": { - "then": "Principalmente libri per l'infanzia" - }, - "1": { - "then": "Principalmente libri per persone in età adulta" - }, - "2": { - "then": "Sia libri per l'infanzia, sia per l'età adulta" - } - }, - "question": "Che tipo di libri si possono trovare in questa microbiblioteca?" - }, - "bookcase-is-accessible": { - "mappings": { - "0": { - "then": "È ad accesso libero" - }, - "1": { - "then": "L'accesso è riservato ai clienti" - } - }, - "question": "Questa microbiblioteca è ad accesso libero?" - }, - "bookcase-is-indoors": { - "mappings": { - "0": { - "then": "Questa microbiblioteca si trova al chiuso" - }, - "1": { - "then": "Questa microbiblioteca si trova all'aperto" - }, - "2": { - "then": "Questa microbiblioteca si trova all'aperto" - } - }, - "question": "Questa microbiblioteca si trova all'aperto?" - }, - "public_bookcase-brand": { - "mappings": { - "0": { - "then": "Fa parte della rete 'Little Free Library'" - }, - "1": { - "then": "Questa microbiblioteca non fa parte di una rete" - } - }, - "question": "Questa microbiblioteca fa parte di una rete?", - "render": "Questa microbiblioteca fa parte di {brand}" - }, - "public_bookcase-capacity": { - "question": "Quanti libri puÃ˛ contenere questa microbiblioteca?", - "render": "Questa microbiblioteca puÃ˛ contenere fino a {capacity} libri" - }, - "public_bookcase-name": { - "mappings": { - "0": { - "then": "Questa microbiblioteca non ha un nome proprio" - } - }, - "question": "Come si chiama questa microbiblioteca pubblica?", - "render": "Questa microbiblioteca si chiama {name}" - }, - "public_bookcase-operator": { - "question": "Chi mantiene questa microbiblioteca?", - "render": "È gestita da {operator}" - }, - "public_bookcase-ref": { - "mappings": { - "0": { - "then": "Questa microbiblioteca non fa parte di una rete" - } - }, - "question": "Qual è il numero identificativo di questa microbiblioteca?", - "render": "Il numero identificativo di questa microbiblioteca nella rete {brand} è {ref}" - }, - "public_bookcase-start_date": { - "question": "Quando è stata inaugurata questa microbiblioteca?", - "render": "È stata inaugurata il {start_date}" - }, - "public_bookcase-website": { - "question": "C'è un sito web con maggiori informazioni su questa microbiblioteca?", - "render": "Maggiori informazioni sul sito web" - } - }, - "title": { - "mappings": { - "0": { - "then": "Microbiblioteca pubblica {name}" - } - }, - "render": "Microbiblioteca" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "Autofficina" - } - } - } - } - }, - "slow_roads": { - "tagRenderings": { - "slow_roads-surface": { - "mappings": { - "0": { - "then": "La superficie è erba" - }, - "1": { - "then": "La superficie è terreno" - }, - "2": { - "then": "La superficie è non pavimentata" - }, - "3": { - "then": "La superficie è sabbia" - }, - "4": { - "then": "La superficie è pietre irregolari" - }, - "5": { - "then": "La superficie è asfalto" - }, - "6": { - "then": "La superficie è calcestruzzo" - }, - "7": { - "then": "La superficie è pavimentata" - } - }, - "render": "La superficie è {surface}" - } - } - }, - "sport_pitch": { - "description": "Un campo sportivo", - "name": "Campi sportivi", - "presets": { - "0": { - "title": "Tavolo da tennistavolo" - }, - "1": { - "title": "Campo sportivo" - } - }, - "tagRenderings": { - "sport-pitch-access": { - "mappings": { - "0": { - "then": "Aperto al pubblico" - }, - "1": { - "then": "Accesso limitato (p.es. solo con prenotazione, in certi orari, ...)" - }, - "2": { - "then": "Accesso limitato ai membri dell'associazione" - }, - "3": { - "then": "Privato - non aperto al pubblico" - } - }, - "question": "Questo campo sportivo è aperto al pubblico?" - }, - "sport-pitch-reservation": { - "mappings": { - "0": { - "then": "La prenotazione è obbligatoria per usare questo campo sportivo" - }, - "1": { - "then": "La prenotazione è consigliata per usare questo campo sportivo" - }, - "2": { - "then": "La prenotazione è consentita, ma non è obbligatoria per usare questo campo sportivo" - }, - "3": { - "then": "Non è possibile prenotare" - } - }, - "question": "È necessario prenotarsi per usare questo campo sportivo?" - }, - "sport_pitch-email": { - "question": "Qual è l'indirizzo email del gestore?" - }, - "sport_pitch-opening_hours": { - "mappings": { - "1": { - "then": "Sempre aperto" - } - }, - "question": "Quando è aperto questo campo sportivo?" - }, - "sport_pitch-phone": { - "question": "Qual è il numero di telefono del gestore?" - }, - "sport_pitch-sport": { - "mappings": { - "0": { - "then": "Qui si gioca a basket" - }, - "1": { - "then": "Qui si gioca a calcio" - }, - "2": { - "then": "Questo è un tavolo da ping pong" - }, - "3": { - "then": "Qui si gioca a tennis" - }, - "4": { - "then": "Qui si gioca a korfball" - }, - "5": { - "then": "Qui si gioca a basket" - } - }, - "question": "Quale sport si gioca qui?", - "render": "Qui si gioca a {sport}" - }, - "sport_pitch-surface": { - "mappings": { - "0": { - "then": "La superficie è erba" - }, - "1": { - "then": "La superficie è sabbia" - }, - "2": { - "then": "La superficie è pietre irregolari" - }, - "3": { - "then": "La superficie è asfalto" - }, - "4": { - "then": "La superficie è calcestruzzo" - } - }, - "question": "Qual è la superficie di questo campo sportivo?", - "render": "La superficie è {surface}" - } - }, - "title": { - "render": "Campo sportivo" - } - }, - "surveillance_camera": { - "name": "Videocamere di sorveglianza", - "tagRenderings": { - "Camera type: fixed; panning; dome": { - "mappings": { - "0": { - "then": "Una videocamera fissa (non semovente)" - }, - "1": { - "then": "Una videocamera a cupola (che puÃ˛ ruotare)" - }, - "2": { - "then": "Una videocamera panoramica" - } - }, - "question": "Di che tipo di videocamera si tratta?" - }, - "Indoor camera? This isn't clear for 'public'-cameras": { - "mappings": { - "0": { - "then": "Questa videocamera si trova al chiuso" - }, - "1": { - "then": "Questa videocamera si trova all'aperto" - }, - "2": { - "then": "Questa videocamera si trova probabilmente all'esterno" - } - }, - "question": "Lo spazio pubblico sorvegliato da questa videocamera è all'aperto o al chiuso?" - }, - "Level": { - "question": "A che piano si trova questa videocamera?", - "render": "Si trova al piano {level}" - }, - "Operator": { - "question": "Chi gestisce questa videocamera a circuito chiuso?", - "render": "È gestita da {operator}" - }, - "Surveillance type: public, outdoor, indoor": { - "mappings": { - "0": { - "then": "Sorveglia un'area pubblica, come una strada, un ponte, una piazza, un parco, una stazione, un passaggio o un sottopasso pubblico, ..." - }, - "1": { - "then": "Sorveglia un'area esterna di proprietà privata (un parcheggio, una stazione di servizio, un cortile, un ingresso, un vialetto privato, ...)" - }, - "2": { - "then": "Sorveglia un ambiente interno di proprietà privata, per esempio un negozio, un parcheggio sotterraneo privato, ..." - } - }, - "question": "Che cosa sorveglia questa videocamera" - }, - "Surveillance:zone": { - "mappings": { - "0": { - "then": "Sorveglia un parcheggio" - }, - "1": { - "then": "Sorveglia il traffico" - }, - "2": { - "then": "Sorveglia un ingresso" - }, - "3": { - "then": "Sorveglia un corridoio" - }, - "4": { - "then": "Sorveglia una pensilina del trasporto pubblico" - }, - "5": { - "then": "Sorveglia un negozio" - } - }, - "question": "Che cosa è sorvegliato qui?", - "render": " Sorveglia una {surveillance:zone}" - }, - "camera:mount": { - "mappings": { - "0": { - "then": "Questa telecamera è posizionata contro un muro" - }, - "1": { - "then": "Questa telecamera è posizionata su un palo" - }, - "2": { - "then": "Questa telecamera è posizionata sul soffitto" - } - }, - "question": "Com'è posizionata questa telecamera?", - "render": "Metodo di montaggio: {mount}" - }, - "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { - "mappings": { - "0": { - "then": "Punta in direzione {direction}" - } - }, - "question": "In quale direzione geografica punta questa videocamera?", - "render": "Punta in direzione {camera:direction}" - } - }, - "title": { - "render": "Videocamera di sorveglianza" - } - }, - "toilet": { - "name": "Servizi igienici", - "presets": { - "0": { - "description": "Servizi igienici aperti al pubblico", - "title": "servizi igienici" - }, - "1": { - "description": "Servizi igienici che hanno almeno una toilette accessibile a persone in sedia a rotelle", - "title": "servizi igienici accessibili per persone in sedia a rotelle" - } - }, - "tagRenderings": { - "toilet-access": { - "mappings": { - "0": { - "then": "Accesso pubblico" - }, - "1": { - "then": "Accesso riservato ai clienti e alle clienti" - }, - "2": { - "then": "Non accessibile" - }, - "3": { - "then": "Accessibile, ma occorre chiedere una chiave per accedere" - }, - "4": { - "then": "Accesso pubblico" - } - }, - "question": "Questi servizi igienici sono aperti al pubblico?", - "render": "L'accesso è {access}" - }, - "toilet-changing_table:location": { - "mappings": { - "0": { - "then": "Il fasciatoio è nei servizi igienici femminili. " - }, - "1": { - "then": "Il fasciatoio è nei servizi igienici maschili. " - }, - "2": { - "then": "Il fasciatoio è nei servizi igienici per persone in sedia a rotelle. " - }, - "3": { - "then": "Il fasciatoio è in una stanza dedicata. " - } - }, - "question": "Dove si trova il fasciatoio?", - "render": "Il fasciatoio si trova presso {changing_table:location}" - }, - "toilet-charge": { - "question": "Quanto costa l'accesso a questi servizi igienici?", - "render": "La tariffa è {charge}" - }, - "toilets-changing-table": { - "mappings": { - "0": { - "then": "È disponibile un fasciatoio" - }, - "1": { - "then": "Non è disponibile un fasciatoio" - } - }, - "question": "È disponibile un fasciatoio (per cambiare i pannolini)?" - }, - "toilets-fee": { - "mappings": { - "0": { - "then": "Questi servizi igienici sono a pagamento" - }, - "1": { - "then": "Gratis" - } - }, - "question": "Questi servizi igienici sono gratuiti?" - }, - "toilets-type": { - "mappings": { - "0": { - "then": "Ci sono solo WC con sedile" - }, - "1": { - "then": "Ci sono solo urinali" - }, - "2": { - "then": "Ci sono solo turche" - }, - "3": { - "then": "Ci sono sia sedili, sia urinali" - } - }, - "question": "Di che tipo di servizi igienici si tratta?" - }, - "toilets-wheelchair": { - "mappings": { - "0": { - "then": "C'è un WC riservato alle persone in sedia a rotelle" - }, - "1": { - "then": "Non accessibile in sedia a rotelle" - } - }, - "question": "C'è un WC riservato alle persone in sedia a rotelle" - } - }, - "title": { - "render": "Servizi igienici" - } - }, - "tree_node": { - "name": "Albero", - "presets": { - "0": { - "description": "Un albero di una specie con foglie larghe come la quercia o il pioppo.", - "title": "Albero latifoglia" - }, - "1": { - "description": "Un albero di una specie con aghi come il pino o l’abete.", - "title": "Albero aghifoglia" - }, - "2": { - "description": "Qualora non si sia sicuri se si tratta di un albero latifoglia o aghifoglia.", - "title": "Albero" - } - }, - "tagRenderings": { - "tree-decidouous": { - "mappings": { - "0": { - "then": "Caduco: l’albero perde le sue foglie per un periodo dell’anno." - }, - "1": { - "then": "Sempreverde." - } - }, - "question": "È un sempreverde o caduco?" - }, - "tree-denotation": { - "mappings": { - "0": { - "then": "È un albero notevole per le sue dimensioni o per la posizione prominente. È utile alla navigazione." - }, - "1": { - "then": "L’albero è un monumento naturale, ad esempio perchÊ specialmente antico o appartenente a specie importanti." - }, - "2": { - "then": "L’albero è usato per scopi agricoli, ad esempio in un frutteto." - }, - "3": { - "then": "L’albero è in un parco o qualcosa di simile (cimitero, aree didattiche, etc.)." - }, - "4": { - "then": "L’albero è un giardino residenziale." - }, - "5": { - "then": "Fa parte di un viale alberato." - }, - "6": { - "then": "L’albero si trova in un’area urbana." - }, - "7": { - "then": "L’albero si trova fuori dall’area urbana." - } - }, - "question": "Quanto significativo è questo albero? Scegli la prima risposta che corrisponde." - }, - "tree-height": { - "mappings": { - "0": { - "then": "Altezza: {height} m" - } - }, - "render": "Altezza: {height}" - }, - "tree-heritage": { - "mappings": { - "0": { - "then": "\"\"/Registrato come patrimonio da Onroerend Erfgoed Flanders" - }, - "1": { - "then": "Registrato come patrimonio da Direction du Patrimoine culturel di Bruxelles" - }, - "2": { - "then": "Registrato come patrimonio da un’organizzazione differente" - }, - "3": { - "then": "Non è registrato come patrimonio" - }, - "4": { - "then": "Registrato come patrimonio da un’organizzazione differente" - } - }, - "question": "Quest’albero è registrato come patrimonio?" - }, - "tree-leaf_type": { - "mappings": { - "0": { - "then": "\"\"/ Latifoglia" - }, - "1": { - "then": "\"\"/ Aghifoglia" - }, - "2": { - "then": "\"\"/ Privo di foglie (permanente)" - } - }, - "question": "Si tratta di un albero latifoglia o aghifoglia?" - }, - "tree_node-name": { - "mappings": { - "0": { - "then": "L’albero non ha un nome." - } - }, - "question": "L’albero ha un nome?", - "render": "Nome: {name}" - }, - "tree_node-ref:OnroerendErfgoed": { - "question": "Qual è l’ID rilasciato da Onroerend Erfgoed Flanders?", - "render": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}" - }, - "tree_node-wikidata": { - "question": "Qual è l’ID Wikidata per questo albero?", - "render": "\"\"/ Wikidata: {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Albero" - } - }, - "viewpoint": { - "description": "Un punto panoramico che offre una bella vista. L'ideale è aggiungere un'immagine, se nessun'altra categoria è appropriata", - "name": "Punto panoramico", - "presets": { - "0": { - "title": "Punto panoramico" - } - }, - "tagRenderings": { - "viewpoint-description": { - "question": "Vuoi aggiungere una descrizione?" - } - }, - "title": { - "render": "Punto panoramico" + "title": { + "mappings": { + "0": { + "then": "Opera {name}" } + }, + "render": "Opera d’arte" } + }, + "bench": { + "name": "Panchine", + "presets": { + "0": { + "title": "panchina" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Schienale: SÃŦ" + }, + "1": { + "then": "Schienale: No" + } + }, + "question": "Questa panchina ha lo schienale?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Colore: marrone" + }, + "1": { + "then": "Colore: verde" + }, + "2": { + "then": "Colore: grigio" + }, + "3": { + "then": "Colore: bianco" + }, + "4": { + "then": "Colore: rosso" + }, + "5": { + "then": "Colore: nero" + }, + "6": { + "then": "Colore: blu" + }, + "7": { + "then": "Colore: giallo" + } + }, + "question": "Di che colore è questa panchina?", + "render": "Colore: {colour}" + }, + "bench-direction": { + "question": "In che direzione si guarda quando si è seduti su questa panchina?", + "render": "Quando si è seduti su questa panchina, si guarda verso {direction}°." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Materiale: legno" + }, + "1": { + "then": "Materiale: metallo" + }, + "2": { + "then": "Materiale: pietra" + }, + "3": { + "then": "Materiale: cemento" + }, + "4": { + "then": "Materiale: plastica" + }, + "5": { + "then": "Materiale: acciaio" + } + }, + "question": "Di che materiale è fatta questa panchina?", + "render": "Materiale: {material}" + }, + "bench-seats": { + "question": "Quanti posti ha questa panchina?", + "render": "{seats} posti" + }, + "bench-survey:date": { + "question": "Quando è stata verificata l’ultima volta questa panchina?", + "render": "Questa panchina è stata controllata l’ultima volta in data {survey:date}" + } + }, + "title": { + "render": "Panchina" + } + }, + "bench_at_pt": { + "name": "Panchine alle fermate del trasporto pubblico", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "1": { + "then": "Panca in piedi" + } + } + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Panchina alla fermata del trasporto pubblico" + }, + "1": { + "then": "Panchina in un riparo" + } + }, + "render": "Panchina" + } + }, + "bicycle_library": { + "description": "Una struttura dove le biciclette possono essere prestate per periodi di tempo piÚ lunghi", + "name": "Bici in prestito", + "presets": { + "0": { + "description": "Una ciclo-teca o ÂĢbici in prestitoÂģ ha una collezione di bici che possno essere prestate", + "title": "Bici in prestito" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "Sono disponibili biciclette per bambini" + }, + "1": { + "then": "Sono disponibili biciclette per adulti" + }, + "2": { + "then": "Sono disponibili biciclette per disabili" + } + }, + "question": "Chi puÃ˛ prendere in prestito le biciclette qua?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "Il prestito di una bicicletta è gratuito" + }, + "1": { + "then": "Il prestito di una bicicletta costa 20 â‚Ŧ/anno piÚ 20 â‚Ŧ di garanzia" + } + }, + "question": "Quanto costa il prestito di una bicicletta?", + "render": "Il prestito di una bicicletta costa {charge}" + }, + "bicycle_library-name": { + "question": "Qual è il nome di questo “bici in prestito”?", + "render": "Il “bici in prestito” è chiamato {name}" + } + }, + "title": { + "render": "Bici in prestito" + } + }, + "bicycle_tube_vending_machine": { + "name": "Distributore automatico di camere d’aria per bici", + "presets": { + "0": { + "title": "Distributore automatico di camere d’aria per bici" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Il distributore automatico funziona" + }, + "1": { + "then": "Il distributore automatico è guasto" + }, + "2": { + "then": "Il distributore automatico è spento" + } + }, + "question": "Questo distributore automatico funziona ancora?", + "render": "Lo stato operativo è {operational_status}" + } + }, + "title": { + "render": "Distributore automatico di camere d’aria per bici" + } + }, + "bike_cafe": { + "name": "Caffè in bici", + "presets": { + "0": { + "title": "Caffè in bici" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "Questo caffè in bici offre una pompa per bici liberamente utilizzabile" + }, + "1": { + "then": "Questo caffè in bici non offre una pompa per bici liberamente utilizzabile" + } + }, + "question": "Questo caffè in bici offre una pompa per bici che chiunque puÃ˛ utilizzare?" + }, + "bike_cafe-email": { + "question": "Qual è l’indirizzo email di {name}?" + }, + "bike_cafe-name": { + "question": "Qual è il nome di questo caffè in bici?", + "render": "Questo caffè in bici è chiamato {name}" + }, + "bike_cafe-opening_hours": { + "question": "Quando è aperto questo caffè in bici?" + }, + "bike_cafe-phone": { + "question": "Qual è il numero di telefono di {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "Questo caffè in bici ripara le bici" + }, + "1": { + "then": "Questo caffè in bici non ripara le bici" + } + }, + "question": "Questo caffè in bici ripara le bici?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "Questo caffè in bici fornisce degli attrezzi per la riparazione fai-da-te" + }, + "1": { + "then": "Questo caffè in bici non fornisce degli attrezzi per la riparazione fai-da-te" + } + }, + "question": "Ci sono degli strumenti per riparare la propria bicicletta?" + }, + "bike_cafe-website": { + "question": "Qual è il sito web di {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Caffè in bici {name}" + } + }, + "render": "Caffè in bici" + } + }, + "bike_cleaning": { + "name": "Servizio lavaggio bici", + "presets": { + "0": { + "title": "Servizio lavaggio bici" + } + }, + "title": { + "mappings": { + "0": { + "then": "Servizio lavaggio bici {name}" + } + }, + "render": "Servizio lavaggio bici" + } + }, + "bike_parking": { + "name": "Parcheggio bici", + "presets": { + "0": { + "title": "Parcheggio bici" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "Accessibile pubblicamente" + }, + "1": { + "then": "Accesso destinato principalmente ai visitatori di un’attività" + }, + "2": { + "then": "Accesso limitato ai membri di una scuola, una compagnia o un’organizzazione" + } + }, + "question": "Chi puÃ˛ usare questo parcheggio bici?", + "render": "{access}" + }, + "Bicycle parking type": { + "mappings": { + "0": { + "then": "Archetti " + }, + "1": { + "then": "Scolapiatti " + }, + "2": { + "then": "Blocca manubrio " + }, + "3": { + "then": "Rastrelliera " + }, + "4": { + "then": "A due piani " + }, + "5": { + "then": "Rimessa " + }, + "6": { + "then": "Colonnina " + }, + "7": { + "then": "Una zona del pavimento che è marcata per il parcheggio delle bici" + } + }, + "question": "Di che tipo di parcheggio bici si tratta?", + "render": "È un parcheggio bici del tipo: {bicycle_parking}" + }, + "Capacity": { + "question": "Quante biciclette entrano in questo parcheggio per bici (incluse le eventuali bici da trasporto)?", + "render": "Posti per {capacity} bici" + }, + "Cargo bike capacity?": { + "question": "Quante bici da trasporto entrano in questo parcheggio per bici?", + "render": "Questo parcheggio puÃ˛ contenere {capacity:cargo_bike} bici da trasporto" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "Questo parcheggio ha posto per bici da trasporto" + }, + "1": { + "then": "Questo parcheggio ha posti destinati (ufficialmente) alle bici da trasporto." + }, + "2": { + "then": "Il parcheggio delle bici da trasporto è proibito" + } + }, + "question": "Questo parcheggio dispone di posti specifici per le bici da trasporto?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "È un parcheggio coperto (ha un tetto)" + }, + "1": { + "then": "Non è un parcheggio coperto" + } + }, + "question": "È un parcheggio coperto? Indicare “coperto” per parcheggi all’interno." + }, + "Underground?": { + "mappings": { + "0": { + "then": "Parcheggio sotterraneo" + }, + "1": { + "then": "Parcheggio in superficie" + }, + "2": { + "then": "Parcheggio sul tetto" + }, + "3": { + "then": "Parcheggio in superficie" + }, + "4": { + "then": "Parcheggio sul tetto" + } + }, + "question": "Qual è la posizione relativa di questo parcheggio bici?" + } + }, + "title": { + "render": "Parcheggio bici" + } + }, + "bike_repair_station": { + "name": "Stazioni bici (riparazione, gonfiaggio o entrambi)", + "presets": { + "0": { + "description": "Un dispositivo per gonfiare le proprie gomme in un luogo fisso pubblicamente accessibile.

Esempi di pompe per biciclette

", + "title": "Pompa per bici" + }, + "1": { + "description": "Un dispositivo con attrezzi per riparare la tua bici e una pompa in un luogo fisso. Gli attrezzi sono spesso attaccati ad una catena per prevenire il furto.

Esempio

", + "title": "Stazione di riparazione bici e pompa" + }, + "2": { + "title": "Stazione di riparazione bici senza pompa" + } + }, + "tagRenderings": { + "Operational status": { + "mappings": { + "0": { + "then": "La pompa per bici è guasta" + }, + "1": { + "then": "La pompa per bici funziona" + } + }, + "question": "La pompa per bici è sempre funzionante?" + }, + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "C’è solamente una pompa presente" + }, + "1": { + "then": "Ci sono solo degli attrezzi (cacciaviti, pinzeâ€Ļ) presenti" + }, + "2": { + "then": "Ci sono sia attrezzi che pompa presenti" + } + }, + "question": "Quali servizi sono disponibili in questa stazione per bici?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "È presente un utensile per riparare la catena" + }, + "1": { + "then": "Non è presente un utensile per riparare la catena" + } + }, + "question": "Questa stazione di riparazione bici ha un attrezzo speciale per riparare la catena della bici?" + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "C’è un gancio o un supporto" + }, + "1": { + "then": "Non c’è nÊ un gancio nÊ un supporto" + } + }, + "question": "Questa stazione bici ha un gancio per tenere sospesa la bici o un supporto per alzarla?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Pompa manuale" + }, + "1": { + "then": "Pompa elettrica" + } + }, + "question": "Questa pompa per bici è elettrica?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "C’è un manometro" + }, + "1": { + "then": "Non c’è un manometro" + }, + "2": { + "then": "C’è un manometro ma è rotto" + } + }, + "question": "Questa pompa ha l’indicatore della pressione o il manometro?" + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "Sempre aperto" + }, + "1": { + "then": "Sempre aperto" + } + }, + "question": "Quando è aperto questo punto riparazione bici?" + }, + "bike_repair_station-operator": { + "question": "Chi gestisce questa pompa per bici?", + "render": "Manutenuta da {operator}" + }, + "bike_repair_station-valves": { + "mappings": { + "0": { + "then": "Sclaverand (detta anche Presta)" + }, + "1": { + "then": "Dunlop" + }, + "2": { + "then": "Schrader (valvola delle auto)" + } + }, + "question": "Quali valvole sono supportate?", + "render": "Questa pompa è compatibile con le seguenti valvole: {valves}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Stazione riparazione bici" + }, + "1": { + "then": "Stazione riparazione bici" + }, + "2": { + "then": "Pompa rotta" + }, + "3": { + "then": "Pompa per bici {name}" + }, + "4": { + "then": "Pompa per bici" + } + }, + "render": "Stazione bici (gonfiaggio & riparazione)" + } + }, + "bike_shop": { + "description": "Un negozio che vende specificatamente biciclette o articoli similari", + "name": "Venditore/riparatore bici", + "presets": { + "0": { + "title": "Negozio/riparatore di bici" + } + }, + "tagRenderings": { + "bike_repair_bike-pump-service": { + "mappings": { + "0": { + "then": "Questo negozio offre l’uso pubblico di una pompa per bici" + }, + "1": { + "then": "Questo negozio non offre l’uso pubblico di una pompa per bici" + }, + "2": { + "then": "C’è una pompa per bici, è mostrata come punto separato " + } + }, + "question": "Questo negozio offre l’uso a chiunque di una pompa per bici?" + }, + "bike_repair_bike-wash": { + "mappings": { + "0": { + "then": "Questo negozio lava le biciclette" + }, + "1": { + "then": "Questo negozio ha una struttura dove è possibile pulire la propria bici" + }, + "2": { + "then": "Questo negozio non offre la pulizia della bicicletta" + } + }, + "question": "Vengono lavate le bici qua?" + }, + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Questo negozio noleggia le bici" + }, + "1": { + "then": "Questo negozio non noleggia le bici" + } + }, + "question": "Questo negozio noleggia le bici?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Questo negozio ripara bici" + }, + "1": { + "then": "Questo negozio non ripara bici" + }, + "2": { + "then": "Questo negozio ripara solo le bici che sono state acquistate qua" + }, + "3": { + "then": "Questo negozio ripara solo le biciclette di una certa marca" + } + }, + "question": "Questo negozio ripara bici?" + }, + "bike_repair_second-hand-bikes": { + "mappings": { + "0": { + "then": "Questo negozio vende bici usate" + }, + "1": { + "then": "Questo negozio non vende bici usate" + }, + "2": { + "then": "Questo negozio vende solamente bici usate" + } + }, + "question": "Questo negozio vende bici usate?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "Questo negozio vende bici" + }, + "1": { + "then": "Questo negozio non vende bici" + } + }, + "question": "Questo negozio vende bici?" + }, + "bike_repair_tools-service": { + "mappings": { + "0": { + "then": "Questo negozio offre degli attrezzi per la riparazione fai-da-te" + }, + "1": { + "then": "Questo negozio non offre degli attrezzi per la riparazione fai-da-te" + }, + "2": { + "then": "Gli attrezzi per la riparazione fai-da-te sono disponibili solamente se hai acquistato/noleggiato la bici nel negozio" + } + }, + "question": "Sono presenti degli attrezzi per riparare la propria bici?" + }, + "bike_shop-email": { + "question": "Qual è l’indirizzo email di {name}?" + }, + "bike_shop-is-bicycle_shop": { + "render": "Questo negozio è specializzato nella vendita di {shop} ed effettua attività relative alle biciclette" + }, + "bike_shop-name": { + "question": "Qual è il nome di questo negozio di biciclette?", + "render": "Questo negozio di biciclette è chiamato {name}" + }, + "bike_shop-phone": { + "question": "Qual è il numero di telefono di {name}?" + }, + "bike_shop-website": { + "question": "Qual è il sito web di {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Negozio di articoli sportivi {name}" + }, + "2": { + "then": "Noleggio di biciclette {name}" + }, + "3": { + "then": "Riparazione biciclette {name" + }, + "4": { + "then": "Negozio di biciclette {name}" + }, + "5": { + "then": "Venditore/riparatore bici {name}" + } + }, + "render": "Venditore/riparatore bici" + } + }, + "bike_themed_object": { + "name": "Oggetto relativo alle bici", + "title": { + "mappings": { + "1": { + "then": "Pista ciclabile" + } + }, + "render": "Oggetto relativo alle bici" + } + }, + "defibrillator": { + "name": "Defibrillatori", + "presets": { + "0": { + "title": "Defibrillatore" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "Pubblicamente accessibile" + }, + "1": { + "then": "Pubblicamente accessibile" + }, + "2": { + "then": "Accessibile solo ai clienti" + }, + "3": { + "then": "Non accessibile al pubblico (ad esempio riservato al personale, ai proprietari, etc.)" + }, + "4": { + "then": "Non accessibile, potrebbe essere solo per uso professionale" + } + }, + "question": "Questo defibrillatore è liberamente accessibile?", + "render": "Accesso è {access}" + }, + "defibrillator-defibrillator": { + "mappings": { + "0": { + "then": "Non vi sono informazioni riguardanti il tipo di questo dispositivo" + }, + "1": { + "then": "Questo è un defibrillatore manuale per professionisti" + }, + "2": { + "then": "È un normale defibrillatore automatico" + } + }, + "question": "Si tratta di un normale defibrillatore automatico o un defibrillatore manuale riservato ai professionisti?" + }, + "defibrillator-defibrillator:location": { + "question": "Indica piÚ precisamente dove si trova il defibrillatore (in lingua locale)", + "render": "Informazioni supplementari circa la posizione (in lingua locale):
{defibrillator:location}" + }, + "defibrillator-defibrillator:location:en": { + "question": "Indica piÚ precisamente dove si trova il defibrillatore (in inglese)", + "render": "Informazioni supplementari circa la posizione (in inglese):
{defibrillator:location:en}" + }, + "defibrillator-defibrillator:location:fr": { + "question": "Indica piÚ precisamente dove si trova il defibrillatore (in francese)", + "render": "Informazioni supplementari circa la posizione (in francese):
{defibrillator:location:fr}" + }, + "defibrillator-description": { + "question": "Vi sono altre informazioni utili agli utenti che non è stato possibile aggiungere prima? (lasciare vuoto in caso negativo)", + "render": "Informazioni supplementari: {description}" + }, + "defibrillator-email": { + "question": "Qual è l’indirizzo email per le domande riguardanti questo defibrillatore?", + "render": "Indirizzo email per le domande su questo defibrillatore:{email}" + }, + "defibrillator-fixme": { + "question": "C’è qualcosa di sbagliato riguardante come è stato mappato, che non si è potuto correggere qua? (lascia una nota agli esperti di OpenStreetMap)", + "render": "Informazioni supplementari per gli esperti di OpenStreetMap: {fixme}" + }, + "defibrillator-indoors": { + "mappings": { + "0": { + "then": "Questo defibrillatore si trova all’interno" + }, + "1": { + "then": "Questo defibrillatore si trova all’esterno" + } + }, + "question": "Questo defibrillatore si trova all’interno?" + }, + "defibrillator-level": { + "mappings": { + "0": { + "then": "Questo defibrillatore è al pian terreno" + }, + "1": { + "then": "Questo defibrillatore è al primo piano" + } + }, + "question": "A che piano si trova questo defibrillatore?", + "render": "Questo defibrillatore è al piano {level}" + }, + "defibrillator-opening_hours": { + "mappings": { + "0": { + "then": "Aperto 24/7 (festivi inclusi)" + } + }, + "question": "In quali orari è disponibile questo defibrillatore?", + "render": "{opening_hours_table(opening_hours)}" + }, + "defibrillator-phone": { + "question": "Qual è il numero di telefono per le domande riguardanti questo defibrillatore?", + "render": "Numero di telefono per le domande su questo defibrillatore:{phone}" + }, + "defibrillator-ref": { + "question": "Qual è il numero identificativo ufficiale di questo dispositivo? (se visibile sul dispositivo)", + "render": "Numero identificativo ufficiale di questo dispositivo:{ref}" + }, + "defibrillator-survey:date": { + "mappings": { + "0": { + "then": "Verificato oggi!" + } + }, + "question": "Quando è stato verificato per l’ultima volta questo defibrillatore?", + "render": "Questo defibrillatore è stato verificato per l‘ultima volta in data {survey:date}" + } + }, + "title": { + "render": "Defibrillatore" + } + }, + "direction": { + "description": "Questo livello visualizza le direzioni", + "name": "Visualizzazione della direzione" + }, + "drinking_water": { + "name": "Acqua potabile", + "presets": { + "0": { + "title": "acqua potabile" + } + }, + "tagRenderings": { + "Bottle refill": { + "mappings": { + "0": { + "then": "È facile riempire d’acqua le bottiglie" + }, + "1": { + "then": "Le bottiglie d’acqua potrebbero non entrare" + } + }, + "question": "Quanto è facile riempire d’acqua le bottiglie?" + }, + "Still in use?": { + "mappings": { + "0": { + "then": "La fontanella funziona" + }, + "1": { + "then": "La fontanella è guasta" + }, + "2": { + "then": "La fontanella è chiusa" + } + }, + "question": "Questo punto di acqua potabile è sempre funzionante?", + "render": "Lo stato operativo è {operational_status}" + }, + "render-closest-drinking-water": { + "render": "C’è un’altra fontanella a {_closest_other_drinking_water_distance} metri" + } + }, + "title": { + "render": "Acqua potabile" + } + }, + "ghost_bike": { + "name": "Bici fantasma", + "presets": { + "0": { + "title": "Bici fantasma" + } + }, + "tagRenderings": { + "ghost-bike-explanation": { + "render": "Una bici fantasma è il memoriale di un ciclista che è morto in un incidente stradale e che ha la forma di una bicicletta bianca piazzata in maniera stabile vicino al luogo dell’incidente." + }, + "ghost_bike-inscription": { + "question": "Che cosa è scritto sulla bici fantasma?", + "render": "{inscription}" + }, + "ghost_bike-name": { + "mappings": { + "0": { + "then": "Nessun nome scritto sulla bici" + } + }, + "question": "A chi è dedicata questa bici fantasma?
Rispetta la privacy (compila solo il nome se questo è stato ampiamente pubblicato o se è scritto sulla bici). Decidi se è il caso di non inserire il cognome.
", + "render": "In ricordo di {name}" + }, + "ghost_bike-source": { + "question": "In quale pagina web si possono trovare informazioni sulla bici fantasma o l’incidente?", + "render": "Sono disponibili ulteriori informazioni" + }, + "ghost_bike-start_date": { + "question": "Quando è stata installata questa bici fantasma?", + "render": "Piazzata in data {start_date}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Bici fantasma in ricordo di {name}" + } + }, + "render": "Bici fantasma" + } + }, + "information_board": { + "name": "Pannelli informativi", + "presets": { + "0": { + "title": "pannello informativo" + } + }, + "title": { + "render": "Pannello informativo" + } + }, + "map": { + "description": "Una mappa, destinata ai turisti e che è sistemata in maniera permanente in uno spazio pubblico", + "name": "Mappe", + "presets": { + "0": { + "description": "Aggiungi una mappa mancante", + "title": "Mappa" + } + }, + "tagRenderings": { + "map-attribution": { + "mappings": { + "0": { + "then": "L’attribuzione a OpenStreetMap è chiaramente specificata, inclusa la licenza ODBL" + }, + "1": { + "then": "L’attribuzione a OpenStreetMap è chiaramente specificata ma la licenza non compare" + }, + "2": { + "then": "Non era presente alcun cenno a OpenStreetMap ma qualcuno vi ha attaccato un adesivo di OpenStreetMap" + }, + "3": { + "then": "Non c’è alcuna attribuzione" + }, + "4": { + "then": "Non c’è alcuna attribuzione" + } + }, + "question": "L’attribuzione a OpenStreetMap è presente?" + }, + "map-map_source": { + "mappings": { + "0": { + "then": "Questa mappa si basa su OpenStreetMap" + } + }, + "question": "Su quali dati si basa questa mappa?", + "render": "Questa mappa si basa su {map_source}" + } + }, + "title": { + "render": "Mappa" + } + }, + "nature_reserve": { + "tagRenderings": { + "Curator": { + "question": "Chi è il curatore di questa riserva naturale?
Rispetta la privacy (scrivi il nome solo se questo è noto pubblicamente)", + "render": "{curator} è il curatore di questa riserva naturale" + }, + "Dogs?": { + "mappings": { + "0": { + "then": "I cani devono essere tenuti al guinzaglio" + }, + "1": { + "then": "I cani non sono ammessi" + }, + "2": { + "then": "I cani sono liberi di girare liberi" + } + }, + "question": "I cani sono ammessi in questa riserva naturale?" + }, + "Email": { + "question": "Qual è l’indirizzo email a cui scrivere per fare domande o segnalare problemi su questa riserva naturale?
Rispetta la privacy (compila l’indirizzo email personale solo se è stato reso pubblico)", + "render": "{email}" + }, + "Surface area": { + "render": "Area: {_surface:ha} ha" + }, + "Website": { + "question": "In quale pagina web si possono trovare altre informazioni riguardanti questa riserva naturale?" + }, + "phone": { + "question": "Quale numero di telefono comporre per fare domande o segnalare problemi riguardanti questa riserva naturale?br/>Rispetta la privacy (inserisci il numero di telefono privato solo se questo è noto pubblicamente)", + "render": "{phone}" + } + } + }, + "picnic_table": { + "description": "Il livello che mostra i tavoli da picnic", + "name": "Tavoli da picnic", + "presets": { + "0": { + "title": "tavolo da picnic" + } + }, + "tagRenderings": { + "picnic_table-material": { + "mappings": { + "0": { + "then": "È un tavolo da picnic in legno" + }, + "1": { + "then": "È un tavolo da picnic in cemento" + } + }, + "question": "Di che materiale è fatto questo tavolo da picnic?", + "render": "Questo tavolo da picnic è fatto di {material}" + } + }, + "title": { + "render": "Tavolo da picnic" + } + }, + "playground": { + "description": "Parchi giochi", + "name": "Campi da gioco", + "presets": { + "0": { + "title": "Campetto" + } + }, + "tagRenderings": { + "Playground-wheelchair": { + "mappings": { + "0": { + "then": "Completamente accessibile in sedia a rotelle" + }, + "1": { + "then": "Accesso limitato in sedia a rotelle" + }, + "2": { + "then": "Non accessibile in sedia a rotelle" + } + }, + "question": "Il campetto è accessibile a persone in sedia a rotelle?" + }, + "playground-access": { + "mappings": { + "0": { + "then": "Accessibile pubblicamente" + }, + "1": { + "then": "Accessibile pubblicamente" + }, + "2": { + "then": "Accessibile solamente ai clienti dell’attività che lo gestisce" + }, + "3": { + "then": "Accessibile solamente agli studenti della scuola" + }, + "4": { + "then": "Non accessibile" + } + }, + "question": "Questo parco giochi è pubblicamente accessibile?" + }, + "playground-email": { + "question": "Qual è l’indirizzo email del gestore di questo parco giochi?", + "render": "{email}" + }, + "playground-lit": { + "mappings": { + "0": { + "then": "Questo parco giochi è illuminato di notte" + }, + "1": { + "then": "Questo parco giochi non è illuminato di notte" + } + }, + "question": "È illuminato di notte questo parco giochi?" + }, + "playground-max_age": { + "question": "Qual è l’età massima per accedere a questo parco giochi?", + "render": "Accessibile ai bambini di età inferiore a {max_age}" + }, + "playground-min_age": { + "question": "Qual è l’età minima per accedere a questo parco giochi?", + "render": "Accessibile ai bambini di almeno {min_age} anni" + }, + "playground-opening_hours": { + "mappings": { + "0": { + "then": "Si puÃ˛ accedere dall'alba al tramonto" + }, + "1": { + "then": "Si puÃ˛ sempre accedere" + }, + "2": { + "then": "Si puÃ˛ sempre accedere" + } + }, + "question": "Quando si puÃ˛ accedere a questo campetto?" + }, + "playground-operator": { + "question": "Chi è il responsabile di questo parco giochi?", + "render": "Gestito da {operator}" + }, + "playground-phone": { + "question": "Qual è il numero di telefono del gestore del campetto?", + "render": "{phone}" + }, + "playground-surface": { + "mappings": { + "0": { + "then": "La superficie è prato" + }, + "1": { + "then": "La superficie è sabbia" + }, + "2": { + "then": "La superficie consiste di trucioli di legno" + }, + "3": { + "then": "La superficie è mattonelle regolari" + }, + "4": { + "then": "La superficie è asfalto" + }, + "5": { + "then": "La superficie è cemento" + }, + "6": { + "then": "La superficie è non pavimentato" + }, + "7": { + "then": "La superficie è pavimentato" + } + }, + "question": "Qual è la superficie di questo parco giochi?
Se ve ne è piÚ di una, seleziona quella predominante", + "render": "La superficie è {surface}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Parco giochi {name}" + } + }, + "render": "Parco giochi" + } + }, + "public_bookcase": { + "description": "Una vetrinetta ai bordi della strada contenente libri, aperta al pubblico", + "name": "Microbiblioteche", + "presets": { + "0": { + "title": "Microbiblioteca" + } + }, + "tagRenderings": { + "bookcase-booktypes": { + "mappings": { + "0": { + "then": "Principalmente libri per l'infanzia" + }, + "1": { + "then": "Principalmente libri per persone in età adulta" + }, + "2": { + "then": "Sia libri per l'infanzia, sia per l'età adulta" + } + }, + "question": "Che tipo di libri si possono trovare in questa microbiblioteca?" + }, + "bookcase-is-accessible": { + "mappings": { + "0": { + "then": "È ad accesso libero" + }, + "1": { + "then": "L'accesso è riservato ai clienti" + } + }, + "question": "Questa microbiblioteca è ad accesso libero?" + }, + "bookcase-is-indoors": { + "mappings": { + "0": { + "then": "Questa microbiblioteca si trova al chiuso" + }, + "1": { + "then": "Questa microbiblioteca si trova all'aperto" + }, + "2": { + "then": "Questa microbiblioteca si trova all'aperto" + } + }, + "question": "Questa microbiblioteca si trova all'aperto?" + }, + "public_bookcase-brand": { + "mappings": { + "0": { + "then": "Fa parte della rete 'Little Free Library'" + }, + "1": { + "then": "Questa microbiblioteca non fa parte di una rete" + } + }, + "question": "Questa microbiblioteca fa parte di una rete?", + "render": "Questa microbiblioteca fa parte di {brand}" + }, + "public_bookcase-capacity": { + "question": "Quanti libri puÃ˛ contenere questa microbiblioteca?", + "render": "Questa microbiblioteca puÃ˛ contenere fino a {capacity} libri" + }, + "public_bookcase-name": { + "mappings": { + "0": { + "then": "Questa microbiblioteca non ha un nome proprio" + } + }, + "question": "Come si chiama questa microbiblioteca pubblica?", + "render": "Questa microbiblioteca si chiama {name}" + }, + "public_bookcase-operator": { + "question": "Chi mantiene questa microbiblioteca?", + "render": "È gestita da {operator}" + }, + "public_bookcase-ref": { + "mappings": { + "0": { + "then": "Questa microbiblioteca non fa parte di una rete" + } + }, + "question": "Qual è il numero identificativo di questa microbiblioteca?", + "render": "Il numero identificativo di questa microbiblioteca nella rete {brand} è {ref}" + }, + "public_bookcase-start_date": { + "question": "Quando è stata inaugurata questa microbiblioteca?", + "render": "È stata inaugurata il {start_date}" + }, + "public_bookcase-website": { + "question": "C'è un sito web con maggiori informazioni su questa microbiblioteca?", + "render": "Maggiori informazioni sul sito web" + } + }, + "title": { + "mappings": { + "0": { + "then": "Microbiblioteca pubblica {name}" + } + }, + "render": "Microbiblioteca" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "Autofficina" + } + } + } + } + }, + "slow_roads": { + "tagRenderings": { + "slow_roads-surface": { + "mappings": { + "0": { + "then": "La superficie è erba" + }, + "1": { + "then": "La superficie è terreno" + }, + "2": { + "then": "La superficie è non pavimentata" + }, + "3": { + "then": "La superficie è sabbia" + }, + "4": { + "then": "La superficie è pietre irregolari" + }, + "5": { + "then": "La superficie è asfalto" + }, + "6": { + "then": "La superficie è calcestruzzo" + }, + "7": { + "then": "La superficie è pavimentata" + } + }, + "render": "La superficie è {surface}" + } + } + }, + "sport_pitch": { + "description": "Un campo sportivo", + "name": "Campi sportivi", + "presets": { + "0": { + "title": "Tavolo da tennistavolo" + }, + "1": { + "title": "Campo sportivo" + } + }, + "tagRenderings": { + "sport-pitch-access": { + "mappings": { + "0": { + "then": "Aperto al pubblico" + }, + "1": { + "then": "Accesso limitato (p.es. solo con prenotazione, in certi orari, ...)" + }, + "2": { + "then": "Accesso limitato ai membri dell'associazione" + }, + "3": { + "then": "Privato - non aperto al pubblico" + } + }, + "question": "Questo campo sportivo è aperto al pubblico?" + }, + "sport-pitch-reservation": { + "mappings": { + "0": { + "then": "La prenotazione è obbligatoria per usare questo campo sportivo" + }, + "1": { + "then": "La prenotazione è consigliata per usare questo campo sportivo" + }, + "2": { + "then": "La prenotazione è consentita, ma non è obbligatoria per usare questo campo sportivo" + }, + "3": { + "then": "Non è possibile prenotare" + } + }, + "question": "È necessario prenotarsi per usare questo campo sportivo?" + }, + "sport_pitch-email": { + "question": "Qual è l'indirizzo email del gestore?" + }, + "sport_pitch-opening_hours": { + "mappings": { + "1": { + "then": "Sempre aperto" + } + }, + "question": "Quando è aperto questo campo sportivo?" + }, + "sport_pitch-phone": { + "question": "Qual è il numero di telefono del gestore?" + }, + "sport_pitch-sport": { + "mappings": { + "0": { + "then": "Qui si gioca a basket" + }, + "1": { + "then": "Qui si gioca a calcio" + }, + "2": { + "then": "Questo è un tavolo da ping pong" + }, + "3": { + "then": "Qui si gioca a tennis" + }, + "4": { + "then": "Qui si gioca a korfball" + }, + "5": { + "then": "Qui si gioca a basket" + } + }, + "question": "Quale sport si gioca qui?", + "render": "Qui si gioca a {sport}" + }, + "sport_pitch-surface": { + "mappings": { + "0": { + "then": "La superficie è erba" + }, + "1": { + "then": "La superficie è sabbia" + }, + "2": { + "then": "La superficie è pietre irregolari" + }, + "3": { + "then": "La superficie è asfalto" + }, + "4": { + "then": "La superficie è calcestruzzo" + } + }, + "question": "Qual è la superficie di questo campo sportivo?", + "render": "La superficie è {surface}" + } + }, + "title": { + "render": "Campo sportivo" + } + }, + "surveillance_camera": { + "name": "Videocamere di sorveglianza", + "tagRenderings": { + "Camera type: fixed; panning; dome": { + "mappings": { + "0": { + "then": "Una videocamera fissa (non semovente)" + }, + "1": { + "then": "Una videocamera a cupola (che puÃ˛ ruotare)" + }, + "2": { + "then": "Una videocamera panoramica" + } + }, + "question": "Di che tipo di videocamera si tratta?" + }, + "Level": { + "question": "A che piano si trova questa videocamera?", + "render": "Si trova al piano {level}" + }, + "Operator": { + "question": "Chi gestisce questa videocamera a circuito chiuso?", + "render": "È gestita da {operator}" + }, + "Surveillance type: public, outdoor, indoor": { + "mappings": { + "0": { + "then": "Sorveglia un'area pubblica, come una strada, un ponte, una piazza, un parco, una stazione, un passaggio o un sottopasso pubblico, ..." + }, + "1": { + "then": "Sorveglia un'area esterna di proprietà privata (un parcheggio, una stazione di servizio, un cortile, un ingresso, un vialetto privato, ...)" + }, + "2": { + "then": "Sorveglia un ambiente interno di proprietà privata, per esempio un negozio, un parcheggio sotterraneo privato, ..." + } + }, + "question": "Che cosa sorveglia questa videocamera" + }, + "Surveillance:zone": { + "mappings": { + "0": { + "then": "Sorveglia un parcheggio" + }, + "1": { + "then": "Sorveglia il traffico" + }, + "2": { + "then": "Sorveglia un ingresso" + }, + "3": { + "then": "Sorveglia un corridoio" + }, + "4": { + "then": "Sorveglia una pensilina del trasporto pubblico" + }, + "5": { + "then": "Sorveglia un negozio" + } + }, + "question": "Che cosa è sorvegliato qui?", + "render": " Sorveglia una {surveillance:zone}" + }, + "camera:mount": { + "mappings": { + "0": { + "then": "Questa telecamera è posizionata contro un muro" + }, + "1": { + "then": "Questa telecamera è posizionata su un palo" + }, + "2": { + "then": "Questa telecamera è posizionata sul soffitto" + } + }, + "question": "Com'è posizionata questa telecamera?", + "render": "Metodo di montaggio: {camera:mount}" + }, + "camera_direction": { + "mappings": { + "0": { + "then": "Punta in direzione {direction}" + } + }, + "question": "In quale direzione geografica punta questa videocamera?", + "render": "Punta in direzione {camera:direction}" + }, + "is_indoor": { + "mappings": { + "0": { + "then": "Questa videocamera si trova al chiuso" + }, + "1": { + "then": "Questa videocamera si trova all'aperto" + }, + "2": { + "then": "Questa videocamera si trova probabilmente all'esterno" + } + }, + "question": "Lo spazio pubblico sorvegliato da questa videocamera è all'aperto o al chiuso?" + } + }, + "title": { + "render": "Videocamera di sorveglianza" + } + }, + "toilet": { + "name": "Servizi igienici", + "presets": { + "0": { + "description": "Servizi igienici aperti al pubblico", + "title": "servizi igienici" + }, + "1": { + "description": "Servizi igienici che hanno almeno una toilette accessibile a persone in sedia a rotelle", + "title": "servizi igienici accessibili per persone in sedia a rotelle" + } + }, + "tagRenderings": { + "toilet-access": { + "mappings": { + "0": { + "then": "Accesso pubblico" + }, + "1": { + "then": "Accesso riservato ai clienti e alle clienti" + }, + "2": { + "then": "Non accessibile" + }, + "3": { + "then": "Accessibile, ma occorre chiedere una chiave per accedere" + }, + "4": { + "then": "Accesso pubblico" + } + }, + "question": "Questi servizi igienici sono aperti al pubblico?", + "render": "L'accesso è {access}" + }, + "toilet-changing_table:location": { + "mappings": { + "0": { + "then": "Il fasciatoio è nei servizi igienici femminili. " + }, + "1": { + "then": "Il fasciatoio è nei servizi igienici maschili. " + }, + "2": { + "then": "Il fasciatoio è nei servizi igienici per persone in sedia a rotelle. " + }, + "3": { + "then": "Il fasciatoio è in una stanza dedicata. " + } + }, + "question": "Dove si trova il fasciatoio?", + "render": "Il fasciatoio si trova presso {changing_table:location}" + }, + "toilet-charge": { + "question": "Quanto costa l'accesso a questi servizi igienici?", + "render": "La tariffa è {charge}" + }, + "toilets-changing-table": { + "mappings": { + "0": { + "then": "È disponibile un fasciatoio" + }, + "1": { + "then": "Non è disponibile un fasciatoio" + } + }, + "question": "È disponibile un fasciatoio (per cambiare i pannolini)?" + }, + "toilets-fee": { + "mappings": { + "0": { + "then": "Questi servizi igienici sono a pagamento" + }, + "1": { + "then": "Gratis" + } + }, + "question": "Questi servizi igienici sono gratuiti?" + }, + "toilets-type": { + "mappings": { + "0": { + "then": "Ci sono solo WC con sedile" + }, + "1": { + "then": "Ci sono solo urinali" + }, + "2": { + "then": "Ci sono solo turche" + }, + "3": { + "then": "Ci sono sia sedili, sia urinali" + } + }, + "question": "Di che tipo di servizi igienici si tratta?" + }, + "toilets-wheelchair": { + "mappings": { + "0": { + "then": "C'è un WC riservato alle persone in sedia a rotelle" + }, + "1": { + "then": "Non accessibile in sedia a rotelle" + } + }, + "question": "C'è un WC riservato alle persone in sedia a rotelle" + } + }, + "title": { + "render": "Servizi igienici" + } + }, + "tree_node": { + "name": "Albero", + "presets": { + "0": { + "description": "Un albero di una specie con foglie larghe come la quercia o il pioppo.", + "title": "Albero latifoglia" + }, + "1": { + "description": "Un albero di una specie con aghi come il pino o l’abete.", + "title": "Albero aghifoglia" + }, + "2": { + "description": "Qualora non si sia sicuri se si tratta di un albero latifoglia o aghifoglia.", + "title": "Albero" + } + }, + "tagRenderings": { + "tree-decidouous": { + "mappings": { + "0": { + "then": "Caduco: l’albero perde le sue foglie per un periodo dell’anno." + }, + "1": { + "then": "Sempreverde." + } + }, + "question": "È un sempreverde o caduco?" + }, + "tree-denotation": { + "mappings": { + "0": { + "then": "È un albero notevole per le sue dimensioni o per la posizione prominente. È utile alla navigazione." + }, + "1": { + "then": "L’albero è un monumento naturale, ad esempio perchÊ specialmente antico o appartenente a specie importanti." + }, + "2": { + "then": "L’albero è usato per scopi agricoli, ad esempio in un frutteto." + }, + "3": { + "then": "L’albero è in un parco o qualcosa di simile (cimitero, aree didattiche, etc.)." + }, + "4": { + "then": "L’albero è un giardino residenziale." + }, + "5": { + "then": "Fa parte di un viale alberato." + }, + "6": { + "then": "L’albero si trova in un’area urbana." + }, + "7": { + "then": "L’albero si trova fuori dall’area urbana." + } + }, + "question": "Quanto significativo è questo albero? Scegli la prima risposta che corrisponde." + }, + "tree-height": { + "mappings": { + "0": { + "then": "Altezza: {height} m" + } + }, + "render": "Altezza: {height}" + }, + "tree-heritage": { + "mappings": { + "0": { + "then": "\"\"/Registrato come patrimonio da Onroerend Erfgoed Flanders" + }, + "1": { + "then": "Registrato come patrimonio da Direction du Patrimoine culturel di Bruxelles" + }, + "2": { + "then": "Registrato come patrimonio da un’organizzazione differente" + }, + "3": { + "then": "Non è registrato come patrimonio" + }, + "4": { + "then": "Registrato come patrimonio da un’organizzazione differente" + } + }, + "question": "Quest’albero è registrato come patrimonio?" + }, + "tree-leaf_type": { + "mappings": { + "0": { + "then": "\"\"/ Latifoglia" + }, + "1": { + "then": "\"\"/ Aghifoglia" + }, + "2": { + "then": "\"\"/ Privo di foglie (permanente)" + } + }, + "question": "Si tratta di un albero latifoglia o aghifoglia?" + }, + "tree_node-name": { + "mappings": { + "0": { + "then": "L’albero non ha un nome." + } + }, + "question": "L’albero ha un nome?", + "render": "Nome: {name}" + }, + "tree_node-ref:OnroerendErfgoed": { + "question": "Qual è l’ID rilasciato da Onroerend Erfgoed Flanders?", + "render": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}" + }, + "tree_node-wikidata": { + "question": "Qual è l’ID Wikidata per questo albero?", + "render": "\"\"/ Wikidata: {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Albero" + } + }, + "viewpoint": { + "description": "Un punto panoramico che offre una bella vista. L'ideale è aggiungere un'immagine, se nessun'altra categoria è appropriata", + "name": "Punto panoramico", + "presets": { + "0": { + "title": "Punto panoramico" + } + }, + "tagRenderings": { + "viewpoint-description": { + "question": "Vuoi aggiungere una descrizione?" + } + }, + "title": { + "render": "Punto panoramico" + } + } } \ No newline at end of file diff --git a/langs/layers/ja.json b/langs/layers/ja.json index a3baa6845..5e70da46e 100644 --- a/langs/layers/ja.json +++ b/langs/layers/ja.json @@ -1,179 +1,168 @@ { - "artwork": { - "description": "多様ãĒäŊœå“", - "name": "įžŽčĄ“品", - "presets": { - "0": { - "title": "ã‚ĸãƒŧトワãƒŧク" - } - }, - "tagRenderings": { - "artwork-artist_name": { - "question": "おぎã‚ĸãƒŧテã‚Ŗ゚トがäŊœãŖたんですか?", - "render": "äŊœæˆč€…:{artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "åģēį‰Š" - }, - "1": { - "then": "åŖį”ģ" - }, - "2": { - "then": "įĩĩį”ģ" - }, - "3": { - "then": "åŊĢåˆģ" - }, - "4": { - "then": "åŊĢ像" - }, - "5": { - "then": "čƒ¸åƒ" - }, - "6": { - "then": "įŸŗ" - }, - "7": { - "then": "イãƒŗã‚šã‚ŋãƒŦãƒŧã‚ˇãƒ§ãƒŗ" - }, - "8": { - "then": "čŊ書き" - }, - "9": { - "then": "ãƒŦãƒĒãƒŧフ" - }, - "10": { - "then": "Azulejo (゚ペイãƒŗぎčŖ…éŖžã‚ŋイãƒĢ)" - }, - "11": { - "then": "ã‚ŋイãƒĢワãƒŧク" - } - }, - "question": "こぎäŊœå“ãŽį¨ŽéĄžã¯äŊ•ã§ã™ã‹?", - "render": "これは{artwork_type}です" - }, - "artwork-website": { - "question": "こぎäŊœå“ãĢついãĻぎčŠŗã—ã„æƒ…å ąã¯ãŠãŽã‚Ļェブã‚ĩイトãĢありぞすか?", - "render": "Webã‚ĩイトãĢčŠŗį´°æƒ…å ąãŒã‚ã‚‹" - }, - "artwork-wikidata": { - "question": "こぎã‚ĸãƒŧトワãƒŧクãĢé–ĸするWikidataぎエãƒŗトãƒĒãƒŧはおれですか?", - "render": "{wikidata}ãĢé–ĸé€Ŗする" - } - }, - "title": { - "mappings": { - "0": { - "then": "ã‚ĸãƒŧトワãƒŧク {name}" - } - }, - "render": "ã‚ĸãƒŧトワãƒŧク" - } + "artwork": { + "description": "多様ãĒäŊœå“", + "name": "įžŽčĄ“品", + "presets": { + "0": { + "title": "ã‚ĸãƒŧトワãƒŧク" + } }, - "charging_station": { - "tagRenderings": { - "Network": { - "question": "こぎ充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļチェãƒŧãƒŗはおこですか?", - "render": "{network}" - }, - "OH": { - "question": "こぎ充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗはいつã‚Ēãƒŧプãƒŗしぞすか?" - } - } - }, - "food": { - "tagRenderings": { - "friture-take-your-container": { - "mappings": { - "0": { - "then": "č‡Ē分ぎ厚器を持ãŖãĻきãĻ、æŗ¨æ–‡ã‚’受け取ることができ、äŊŋい捨ãĻぎæĸąåŒ…材をį¯€į´„しãĻ、į„Ąé§„ã‚’įœãã“とができぞす" - }, - "1": { - "then": "į‹Ŧč‡Ēぎ厚器を持参することはできぞせん" - }, - "2": { - "then": "č‡ĒčēĢぎ厚器がæŗ¨æ–‡ãĢåŋ…čĻã€‚" - } - }, - "question": "おåŽĸ様が持参厚器(čĒŋį†į”¨ãŽé‹ã‚„小さãĒ鍋ãĒお)をもãŖãĻきた場合は、æŗ¨æ–‡ãŽæĸąåŒ…ãĢäŊŋį”¨ã•ã‚Œãžã™ã‹?
" - } - } - }, - "ghost_bike": { - "name": "ゴãƒŧ゚トバイク", - "title": { - "render": "ゴãƒŧ゚トバイク" - } - }, - "shops": { - "description": "ã‚ˇãƒ§ãƒƒãƒ—", - "name": "åē—", - "presets": { - "0": { - "description": "新しいåē—ã‚’čŋŊ加する", - "title": "åē—" - } + "tagRenderings": { + "artwork-artist_name": { + "question": "おぎã‚ĸãƒŧテã‚Ŗ゚トがäŊœãŖたんですか?", + "render": "äŊœæˆč€…:{artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "åģēį‰Š" + }, + "1": { + "then": "åŖį”ģ" + }, + "2": { + "then": "įĩĩį”ģ" + }, + "3": { + "then": "åŊĢåˆģ" + }, + "4": { + "then": "åŊĢ像" + }, + "5": { + "then": "čƒ¸åƒ" + }, + "6": { + "then": "įŸŗ" + }, + "7": { + "then": "イãƒŗã‚šã‚ŋãƒŦãƒŧã‚ˇãƒ§ãƒŗ" + }, + "8": { + "then": "čŊ書き" + }, + "9": { + "then": "ãƒŦãƒĒãƒŧフ" + }, + "10": { + "then": "Azulejo (゚ペイãƒŗぎčŖ…éŖžã‚ŋイãƒĢ)" + }, + "11": { + "then": "ã‚ŋイãƒĢワãƒŧク" + } }, - "tagRenderings": { - "shops-email": { - "question": "こぎおåē—ãŽãƒĄãƒŧãƒĢã‚ĸドãƒŦ゚はäŊ•ã§ã™ã‹?", - "render": "{email}" - }, - "shops-name": { - "question": "こぎおåē—ぎ名前はäŊ•ã§ã™ã‹?" - }, - "shops-opening_hours": { - "question": "こぎåē—ぎå–ļæĨ­æ™‚間はäŊ•æ™‚からäŊ•æ™‚ぞでですか?", - "render": "{opening_hours_table(opening_hours)}" - }, - "shops-phone": { - "question": "é›ģ芹į•Ēåˇã¯äŊ•į•Ēですか?", - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "0": { - "then": "ã‚ŗãƒŗビニエãƒŗ゚゚トã‚ĸ" - }, - "1": { - "then": "ã‚šãƒŧパãƒŧマãƒŧã‚ąãƒƒãƒˆ" - }, - "2": { - "then": "čĄŖ料品åē—" - }, - "3": { - "then": "į†åŽšå¸Ģ" - }, - "4": { - "then": "ベãƒŧã‚ĢãƒĒãƒŧ" - }, - "5": { - "then": "č‡Ē動čģŠäŋŽį†(ã‚ŦãƒŦãƒŧジ)" - }, - "6": { - "then": "č‡Ē動čģŠãƒ‡ã‚Ŗãƒŧナãƒŧ" - } - }, - "question": "こぎおåē—ではäŊ•ã‚’åŖ˛ãŖãĻいぞすか?", - "render": "ã“ãĄã‚‰ãŽãŠåē—では{shop}ã‚’č˛ŠåŖ˛ã—ãĻおりぞす" - }, - "shops-website": { - "question": "こぎおåē—ぎホãƒŧムペãƒŧジはäŊ•ã§ã™ã‹?", - "render": "{website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "{shop}" - } - }, - "render": "åē—" + "question": "こぎäŊœå“ãŽį¨ŽéĄžã¯äŊ•ã§ã™ã‹?", + "render": "これは{artwork_type}です" + }, + "artwork-website": { + "question": "こぎäŊœå“ãĢついãĻぎčŠŗã—ã„æƒ…å ąã¯ãŠãŽã‚Ļェブã‚ĩイトãĢありぞすか?", + "render": "Webã‚ĩイトãĢčŠŗį´°æƒ…å ąãŒã‚ã‚‹" + }, + "artwork-wikidata": { + "question": "こぎã‚ĸãƒŧトワãƒŧクãĢé–ĸするWikidataぎエãƒŗトãƒĒãƒŧはおれですか?", + "render": "{wikidata}ãĢé–ĸé€Ŗする" + } + }, + "title": { + "mappings": { + "0": { + "then": "ã‚ĸãƒŧトワãƒŧク {name}" } + }, + "render": "ã‚ĸãƒŧトワãƒŧク" } + }, + "food": { + "tagRenderings": { + "friture-take-your-container": { + "mappings": { + "0": { + "then": "č‡Ē分ぎ厚器を持ãŖãĻきãĻ、æŗ¨æ–‡ã‚’受け取ることができ、äŊŋい捨ãĻぎæĸąåŒ…材をį¯€į´„しãĻ、į„Ąé§„ã‚’įœãã“とができぞす" + }, + "1": { + "then": "į‹Ŧč‡Ēぎ厚器を持参することはできぞせん" + }, + "2": { + "then": "č‡ĒčēĢぎ厚器がæŗ¨æ–‡ãĢåŋ…čĻã€‚" + } + }, + "question": "おåŽĸ様が持参厚器(čĒŋį†į”¨ãŽé‹ã‚„小さãĒ鍋ãĒお)をもãŖãĻきた場合は、æŗ¨æ–‡ãŽæĸąåŒ…ãĢäŊŋį”¨ã•ã‚Œãžã™ã‹?
" + } + } + }, + "ghost_bike": { + "name": "ゴãƒŧ゚トバイク", + "title": { + "render": "ゴãƒŧ゚トバイク" + } + }, + "shops": { + "description": "ã‚ˇãƒ§ãƒƒãƒ—", + "name": "åē—", + "presets": { + "0": { + "description": "新しいåē—ã‚’čŋŊ加する", + "title": "åē—" + } + }, + "tagRenderings": { + "shops-email": { + "question": "こぎおåē—ãŽãƒĄãƒŧãƒĢã‚ĸドãƒŦ゚はäŊ•ã§ã™ã‹?", + "render": "{email}" + }, + "shops-name": { + "question": "こぎおåē—ぎ名前はäŊ•ã§ã™ã‹?" + }, + "shops-opening_hours": { + "question": "こぎåē—ぎå–ļæĨ­æ™‚間はäŊ•æ™‚からäŊ•æ™‚ぞでですか?", + "render": "{opening_hours_table(opening_hours)}" + }, + "shops-phone": { + "question": "é›ģ芹į•Ēåˇã¯äŊ•į•Ēですか?", + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "0": { + "then": "ã‚ŗãƒŗビニエãƒŗ゚゚トã‚ĸ" + }, + "1": { + "then": "ã‚šãƒŧパãƒŧマãƒŧã‚ąãƒƒãƒˆ" + }, + "2": { + "then": "čĄŖ料品åē—" + }, + "3": { + "then": "į†åŽšå¸Ģ" + }, + "4": { + "then": "ベãƒŧã‚ĢãƒĒãƒŧ" + }, + "5": { + "then": "č‡Ē動čģŠäŋŽį†(ã‚ŦãƒŦãƒŧジ)" + }, + "6": { + "then": "č‡Ē動čģŠãƒ‡ã‚Ŗãƒŧナãƒŧ" + } + }, + "question": "こぎおåē—ではäŊ•ã‚’åŖ˛ãŖãĻいぞすか?", + "render": "ã“ãĄã‚‰ãŽãŠåē—では{shop}ã‚’č˛ŠåŖ˛ã—ãĻおりぞす" + }, + "shops-website": { + "question": "こぎおåē—ぎホãƒŧムペãƒŧジはäŊ•ã§ã™ã‹?", + "render": "{website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "{shop}" + } + }, + "render": "åē—" + } + } } \ No newline at end of file diff --git a/langs/layers/nb_NO.json b/langs/layers/nb_NO.json index e66382ae2..d9d7e4123 100644 --- a/langs/layers/nb_NO.json +++ b/langs/layers/nb_NO.json @@ -1,205 +1,194 @@ { - "artwork": { - "name": "Kunstverk", - "presets": { - "0": { - "title": "Kunstverk" - } + "artwork": { + "name": "Kunstverk", + "presets": { + "0": { + "title": "Kunstverk" + } + }, + "tagRenderings": { + "artwork-artist_name": { + "question": "Hvilken artist lagde dette?", + "render": "Laget av {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "Arkitektur" + }, + "1": { + "then": "Veggmaleri" + }, + "2": { + "then": "Maleri" + }, + "3": { + "then": "Skulptur" + }, + "4": { + "then": "Statue" + }, + "5": { + "then": "Byste" + }, + "6": { + "then": "Stein" + }, + "7": { + "then": "Installasjon" + }, + "8": { + "then": "Graffiti" + }, + "9": { + "then": "Relieff" + }, + "10": { + "then": "Azulejo (Spansk dekorativt flisverk)" + }, + "11": { + "then": "Flisarbeid" + } }, - "tagRenderings": { - "artwork-artist_name": { - "question": "Hvilken artist lagde dette?", - "render": "Laget av {artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "Arkitektur" - }, - "1": { - "then": "Veggmaleri" - }, - "2": { - "then": "Maleri" - }, - "3": { - "then": "Skulptur" - }, - "4": { - "then": "Statue" - }, - "5": { - "then": "Byste" - }, - "6": { - "then": "Stein" - }, - "7": { - "then": "Installasjon" - }, - "8": { - "then": "Graffiti" - }, - "9": { - "then": "Relieff" - }, - "10": { - "then": "Azulejo (Spansk dekorativt flisverk)" - }, - "11": { - "then": "Flisarbeid" - } - }, - "question": "Hvilken type kunstverk er dette?", - "render": "Dette er et kunstverk av typen {artwork_type}" - }, - "artwork-website": { - "question": "Finnes det en nettside med mer info om dette kunstverket?", - "render": "Mer info er ÃĨ finne pÃĨ denne nettsiden" - }, - "artwork-wikidata": { - "question": "Hvilken Wikipedia-oppføring samsvarer med dette kunstverket?", - "render": "Samsvarer med {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Kunstverk {name}" - } - }, - "render": "Kunstverk" - } + "question": "Hvilken type kunstverk er dette?", + "render": "Dette er et kunstverk av typen {artwork_type}" + }, + "artwork-website": { + "question": "Finnes det en nettside med mer info om dette kunstverket?", + "render": "Mer info er ÃĨ finne pÃĨ denne nettsiden" + }, + "artwork-wikidata": { + "question": "Hvilken Wikipedia-oppføring samsvarer med dette kunstverket?", + "render": "Samsvarer med {wikidata}" + } }, - "bench": { - "name": "Benker", - "presets": { - "0": { - "title": "benk" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Rygglene: Ja" - }, - "1": { - "then": "Rygglene: Nei" - } - }, - "question": "Har denne beken et rygglene?", - "render": "Rygglene" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Farge: brun" - }, - "1": { - "then": "Farge: grønn" - }, - "2": { - "then": "Farge: grÃĨ" - }, - "3": { - "then": "Farge: hvit" - }, - "4": { - "then": "Farge: rød" - }, - "5": { - "then": "Farge: svart" - }, - "6": { - "then": "Farge: blÃĨ" - }, - "7": { - "then": "Farge: gul" - } - }, - "render": "Farge: {colour}" - }, - "bench-material": { - "mappings": { - "0": { - "then": "Materiale: tre" - }, - "1": { - "then": "Materiale: metall" - }, - "2": { - "then": "Materiale: stein" - }, - "3": { - "then": "Materiale: betong" - }, - "4": { - "then": "Materiale: plastikk" - }, - "5": { - "then": "Materiale: stÃĨl" - } - }, - "render": "Materiale: {material}" - }, - "bench-seats": { - "question": "Hvor mange sitteplasser har denne benken?", - "render": "{seats} seter" - } - }, - "title": { - "render": "Benk" - } - }, - "bench_at_pt": { - "name": "Benker", - "title": { - "render": "Benk" - } - }, - "bicycle_library": { - "tagRenderings": { - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "Det er gratis ÃĨ leie en sykkel" - } - }, - "question": "Hvor mye koster det ÃĨ leie en sykkel?", - "render": "Sykkelleie koster {charge}" - }, - "bicycle_library-name": { - "question": "Hva heter dette sykkelbiblioteket?", - "render": "Dette sykkelbiblioteket heter {name}" - } - } - }, - "charging_station": { - "tagRenderings": { - "Network": { - "render": "{network}" - }, - "OH": { - "question": "NÃĨr ÃĨpnet denne ladestasjonen?" - } - } - }, - "ghost_bike": { - "name": "Spøkelsessykler", - "title": { - "render": "Spøkelsessykler" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "Bilverksted" - } - } - } + "title": { + "mappings": { + "0": { + "then": "Kunstverk {name}" } + }, + "render": "Kunstverk" } + }, + "bench": { + "name": "Benker", + "presets": { + "0": { + "title": "benk" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Rygglene: Ja" + }, + "1": { + "then": "Rygglene: Nei" + } + }, + "question": "Har denne beken et rygglene?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Farge: brun" + }, + "1": { + "then": "Farge: grønn" + }, + "2": { + "then": "Farge: grÃĨ" + }, + "3": { + "then": "Farge: hvit" + }, + "4": { + "then": "Farge: rød" + }, + "5": { + "then": "Farge: svart" + }, + "6": { + "then": "Farge: blÃĨ" + }, + "7": { + "then": "Farge: gul" + } + }, + "render": "Farge: {colour}" + }, + "bench-material": { + "mappings": { + "0": { + "then": "Materiale: tre" + }, + "1": { + "then": "Materiale: metall" + }, + "2": { + "then": "Materiale: stein" + }, + "3": { + "then": "Materiale: betong" + }, + "4": { + "then": "Materiale: plastikk" + }, + "5": { + "then": "Materiale: stÃĨl" + } + }, + "render": "Materiale: {material}" + }, + "bench-seats": { + "question": "Hvor mange sitteplasser har denne benken?", + "render": "{seats} seter" + } + }, + "title": { + "render": "Benk" + } + }, + "bench_at_pt": { + "name": "Benker", + "title": { + "render": "Benk" + } + }, + "bicycle_library": { + "tagRenderings": { + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "Det er gratis ÃĨ leie en sykkel" + } + }, + "question": "Hvor mye koster det ÃĨ leie en sykkel?", + "render": "Sykkelleie koster {charge}" + }, + "bicycle_library-name": { + "question": "Hva heter dette sykkelbiblioteket?", + "render": "Dette sykkelbiblioteket heter {name}" + } + } + }, + "ghost_bike": { + "name": "Spøkelsessykler", + "title": { + "render": "Spøkelsessykler" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "Bilverksted" + } + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/nl.json b/langs/layers/nl.json index 0c2a569f7..14f425ddf 100644 --- a/langs/layers/nl.json +++ b/langs/layers/nl.json @@ -1,4085 +1,4581 @@ { - "artwork": { - "description": "Verschillende soorten kunstwerken", - "name": "Kunstwerken", - "presets": { - "0": { - "title": "Kunstwerk" - } - }, - "tagRenderings": { - "artwork-artist_name": { - "question": "Welke kunstenaar creÃĢerde dit kunstwerk?", - "render": "GecreÃĢerd door {artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "Architectuur" - }, - "1": { - "then": "Muurschildering" - }, - "2": { - "then": "Schilderij" - }, - "3": { - "then": "Beeldhouwwerk" - }, - "4": { - "then": "Standbeeld" - }, - "5": { - "then": "Buste" - }, - "6": { - "then": "Steen" - }, - "7": { - "then": "Installatie" - }, - "8": { - "then": "Graffiti" - }, - "9": { - "then": "ReliÃĢf" - }, - "10": { - "then": "Azulejo (Spaanse siertegels)" - }, - "11": { - "then": "Tegelwerk" - } - }, - "question": "Wat voor soort kunstwerk is dit?", - "render": "Dit is een {artwork_type}" - }, - "artwork-website": { - "question": "Is er een website met meer informatie over dit kunstwerk?", - "render": "Meer informatie op deze website" - }, - "artwork-wikidata": { - "question": "Welk Wikidata-item beschrijft dit kunstwerk?", - "render": "Komt overeen met {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Kunstwerk {name}" - } - }, - "render": "Kunstwerk" - } + "artwork": { + "description": "Verschillende soorten kunstwerken", + "name": "Kunstwerken", + "presets": { + "0": { + "title": "Kunstwerk" + } }, - "barrier": { - "description": "Hindernissen tijdens het fietsen, zoals paaltjes en fietshekjes", - "name": "Barrières", - "presets": { - "0": { - "description": "Een paaltje in de weg", - "title": "Paaltje" - }, - "1": { - "description": "Fietshekjes, voor het afremmen van fietsers", - "title": "Fietshekjes" - } + "tagRenderings": { + "artwork-artist_name": { + "question": "Welke kunstenaar creÃĢerde dit kunstwerk?", + "render": "GecreÃĢerd door {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "Architectuur" + }, + "1": { + "then": "Muurschildering" + }, + "2": { + "then": "Schilderij" + }, + "3": { + "then": "Beeldhouwwerk" + }, + "4": { + "then": "Standbeeld" + }, + "5": { + "then": "Buste" + }, + "6": { + "then": "Steen" + }, + "7": { + "then": "Installatie" + }, + "8": { + "then": "Graffiti" + }, + "9": { + "then": "ReliÃĢf" + }, + "10": { + "then": "Azulejo (Spaanse siertegels)" + }, + "11": { + "then": "Tegelwerk" + } }, - "tagRenderings": { - "Bollard type": { - "mappings": { - "0": { - "then": "Verwijderbare paal" - }, - "1": { - "then": "Vaste paal" - }, - "2": { - "then": "Paal die platgevouwen kan worden" - }, - "3": { - "then": "Flexibele paal, meestal plastic" - }, - "4": { - "then": "Verzonken poller" - } - }, - "question": "Wat voor soort paal is dit?" - }, - "Cycle barrier type": { - "mappings": { - "0": { - "then": "Enkelvoudig, slechts twee hekjes met ruimte ertussen " - }, - "1": { - "then": "Dubbel, twee hekjes achter elkaar " - }, - "2": { - "then": "Drievoudig, drie hekjes achter elkaar " - }, - "3": { - "then": "Knijppoort, ruimte is smaller aan de top, dan aan de bodem " - } - }, - "question": "Wat voor fietshekjes zijn dit?" - }, - "MaxWidth": { - "question": "Hoe breed is de ruimte naast de barrière?", - "render": "Maximumbreedte: {maxwidth:physical} m" - }, - "Overlap (cyclebarrier)": { - "question": "Hoeveel overlappen de barrières?" - }, - "Space between barrier (cyclebarrier)": { - "question": "Hoeveel ruimte is er tussen de barrières (langs de lengte van de weg)?", - "render": "Ruimte tussen barrières (langs de lengte van de weg): {width:separation} m" - }, - "Width of opening (cyclebarrier)": { - "question": "Hoe breed is de smalste opening naast de barrières?", - "render": "Breedte van de opening: {width:opening} m" - }, - "bicycle=yes/no": { - "mappings": { - "0": { - "then": "Een fietser kan hier langs." - }, - "1": { - "then": "Een fietser kan hier niet langs." - } - }, - "question": "Kan een fietser langs deze barrière?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Paaltje" - }, - "1": { - "then": "Fietshekjes" - } - }, - "render": "Barrière" - } + "question": "Wat voor soort kunstwerk is dit?", + "render": "Dit is een {artwork_type}" + }, + "artwork-website": { + "question": "Is er een website met meer informatie over dit kunstwerk?", + "render": "Meer informatie op deze website" + }, + "artwork-wikidata": { + "question": "Welk Wikidata-item beschrijft dit kunstwerk?", + "render": "Komt overeen met {wikidata}" + } }, - "bench": { - "name": "Zitbanken", - "presets": { - "0": { - "title": "zitbank" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Heeft een rugleuning" - }, - "1": { - "then": "Rugleuning ontbreekt" - } - }, - "question": "Heeft deze zitbank een rugleuning?", - "render": "Rugleuning" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "De kleur is bruin" - }, - "1": { - "then": "De kleur is groen" - }, - "2": { - "then": "De kleur is grijs" - }, - "3": { - "then": "De kleur is wit" - }, - "4": { - "then": "De kleur is rood" - }, - "5": { - "then": "De kleur is zwart" - }, - "6": { - "then": "De kleur is blauw" - }, - "7": { - "then": "De kleur is geel" - } - }, - "question": "Welke kleur heeft deze zitbank?", - "render": "Kleur: {colour}" - }, - "bench-direction": { - "question": "In welke richting kijk je wanneer je op deze zitbank zit?", - "render": "Wanneer je op deze bank zit, dan kijk je in {direction}°." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Gemaakt uit hout" - }, - "1": { - "then": "Gemaakt uit metaal" - }, - "2": { - "then": "Gemaakt uit steen" - }, - "3": { - "then": "Gemaakt uit beton" - }, - "4": { - "then": "Gemaakt uit plastiek" - }, - "5": { - "then": "Gemaakt uit staal" - } - }, - "question": "Uit welk materiaal is het zitgedeelte van deze zitbank gemaakt?", - "render": "Gemaakt van {material}" - }, - "bench-seats": { - "question": "Hoeveel zitplaatsen heeft deze bank?", - "render": "{seats} zitplaatsen" - }, - "bench-survey:date": { - "question": "Wanneer is deze laatste bank laatst gesurveyed?", - "render": "Deze bank is laatst gesurveyd op {survey:date}" - } - }, - "title": { - "render": "Zitbank" - } - }, - "bench_at_pt": { - "name": "Zitbanken aan bushaltes", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "Leunbank" - }, - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Zitbank aan een bushalte" - }, - "1": { - "then": "Zitbank in een schuilhokje" - } - }, - "render": "Zitbank" - } - }, - "bicycle_library": { - "description": "Een plaats waar men voor langere tijd een fiets kan lenen", - "name": "Fietsbibliotheek", - "presets": { - "0": { - "description": "Een fietsbieb heeft een collectie fietsen die leden mogen lenen", - "title": "Bicycle library" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "Aanbod voor kinderen" - }, - "1": { - "then": "Aanbod voor volwassenen" - }, - "2": { - "then": "Aanbod voor personen met een handicap" - } - }, - "question": "Voor wie worden hier fietsen aangeboden?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "Een fiets huren is gratis" - }, - "1": { - "then": "Een fiets huren kost â‚Ŧ20/jaar en â‚Ŧ20 waarborg" - } - }, - "question": "Hoeveel kost het huren van een fiets?", - "render": "Een fiets huren kost {charge}" - }, - "bicycle_library-name": { - "question": "Wat is de naam van deze fietsbieb?", - "render": "Deze fietsbieb heet {name}" - } - }, - "title": { - "render": "Fietsbibliotheek" - } - }, - "bicycle_tube_vending_machine": { - "name": "Fietsbanden-verkoopsautomaat", - "presets": { - "0": { - "title": "Fietsbanden-verkoopsautomaat" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Deze verkoopsautomaat werkt" - }, - "1": { - "then": "Deze verkoopsautomaat is kapot" - }, - "2": { - "then": "Deze verkoopsautomaat is uitgeschakeld" - } - }, - "question": "Is deze verkoopsautomaat nog steeds werkende?", - "render": "Deze verkoopsautomaat is {operational_status}" - } - }, - "title": { - "render": "Fietsbanden-verkoopsautomaat" - } - }, - "bike_cafe": { - "name": "FietscafÊ", - "presets": { - "0": { - "title": "FietscafÊ" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "Dit fietscafÊ biedt een fietspomp aan voor eender wie" - }, - "1": { - "then": "Dit fietscafÊ biedt geen fietspomp aan voor iedereen" - } - }, - "question": "Biedt dit fietscafÊ een fietspomp aan voor iedereen?" - }, - "bike_cafe-email": { - "question": "Wat is het email-adres van {name}?" - }, - "bike_cafe-name": { - "question": "Wat is de naam van dit fietscafÊ?", - "render": "Dit fietscafÊ heet {name}" - }, - "bike_cafe-opening_hours": { - "question": "Wanneer is dit fietscafÊ geopend?" - }, - "bike_cafe-phone": { - "question": "Wat is het telefoonnummer van {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "Dit fietscafÊ herstelt fietsen" - }, - "1": { - "then": "Dit fietscafÊ herstelt geen fietsen" - } - }, - "question": "Herstelt dit fietscafÊ fietsen?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "Dit fietscafÊ biedt gereedschap aan om je fiets zelf te herstellen" - }, - "1": { - "then": "Dit fietscafÊ biedt geen gereedschap aan om je fiets zelf te herstellen" - } - }, - "question": "Biedt dit fietscafÊ gereedschap aan om je fiets zelf te herstellen?" - }, - "bike_cafe-website": { - "question": "Wat is de website van {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "FietscafÊ {name}" - } - }, - "render": "FietscafÊ" - } - }, - "bike_cleaning": { - "name": "Fietsschoonmaakpunt", - "presets": { - "0": { - "title": "Fietsschoonmaakpunt" - } - }, - "title": { - "mappings": { - "0": { - "then": "Fietsschoonmaakpunt {name}" - } - }, - "render": "Fietsschoonmaakpunt" - } - }, - "bike_parking": { - "name": "Fietsparking", - "presets": { - "0": { - "title": "Fietsparking" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "Publiek toegankelijke fietsenstalling" - }, - "1": { - "then": "Klanten van de zaak of winkel" - }, - "2": { - "then": "Private fietsenstalling van een school, een bedrijf, ..." - } - }, - "question": "Wie mag er deze fietsenstalling gebruiken?", - "render": "{access}" - }, - "Bicycle parking type": { - "mappings": { - "0": { - "then": "Nietjes " - }, - "1": { - "then": "Wielrek/lussen " - }, - "2": { - "then": "Stuurhouder " - }, - "3": { - "then": "Rek " - }, - "4": { - "then": "Dubbel (twee verdiepingen) " - }, - "5": { - "then": "Schuur " - }, - "6": { - "then": "Paal met ring " - }, - "7": { - "then": "Een oppervlakte die gemarkeerd is om fietsen te parkeren" - } - }, - "question": "Van welk type is deze fietsparking?", - "render": "Dit is een fietsparking van het type: {bicycle_parking}" - }, - "Capacity": { - "question": "Hoeveel fietsen kunnen in deze fietsparking (inclusief potentiÃĢel bakfietsen)?", - "render": "Plaats voor {capacity} fietsen" - }, - "Cargo bike capacity?": { - "question": "Voor hoeveel bakfietsen heeft deze fietsparking plaats?", - "render": "Deze parking heeft plaats voor {capacity:cargo_bike} fietsen" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "Deze parking heeft plaats voor bakfietsen" - }, - "1": { - "then": "Er zijn speciale plaatsen voorzien voor bakfietsen" - }, - "2": { - "then": "Je mag hier geen bakfietsen parkeren" - } - }, - "question": "Heeft deze fietsparking plaats voor bakfietsen?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "Deze parking is overdekt (er is een afdak)" - }, - "1": { - "then": "Deze parking is niet overdekt" - } - }, - "question": "Is deze parking overdekt? Selecteer ook \"overdekt\" voor fietsparkings binnen een gebouw." - }, - "Underground?": { - "mappings": { - "0": { - "then": "Ondergrondse parking" - }, - "1": { - "then": "Ondergrondse parking" - }, - "2": { - "then": "Parking op de begane grond" - }, - "3": { - "then": "Parking op de begane grond" - }, - "4": { - "then": "Dakparking" - } - }, - "question": "Wat is de relatieve locatie van deze parking??" - } - }, - "title": { - "render": "Fietsparking" - } - }, - "bike_repair_station": { - "name": "Fietspunten (herstel, pomp of allebei)", - "presets": { - "0": { - "description": "Een apparaat waar je je fietsbanden kan oppompen, beschikbaar in de publieke ruimte. De fietspomp in je kelder telt dus niet.

Voorbeelden

Examples of bicycle pumps

", - "title": "Fietspomp" - }, - "1": { - "description": "Een apparaat met zowel gereedschap om je fiets te herstellen, met een pomp. Deze zijn op een vastgemaakt op een plaats in de publieke ruimte, bv. aan een paal.

Voorbeeld

", - "title": "Herstelpunt en pomp" - }, - "2": { - "title": "Herstelpunt zonder pomp" - } - }, - "tagRenderings": { - "Email maintainer": { - "render": "Rapporteer deze fietspomp als kapot" - }, - "Operational status": { - "mappings": { - "0": { - "then": "De fietspomp is kapot" - }, - "1": { - "then": "De fietspomp werkt nog" - } - }, - "question": "Werkt de fietspomp nog?" - }, - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "Er is enkel een pomp aanwezig" - }, - "1": { - "then": "Er is enkel gereedschap aanwezig (schroevendraaier, tang...)" - }, - "2": { - "then": "Er is zowel een pomp als gereedschap aanwezig" - } - }, - "question": "Welke functies biedt dit fietspunt?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "Er is een reparatieset voor je ketting" - }, - "1": { - "then": "Er is geen reparatieset voor je ketting" - } - }, - "question": "Heeft dit herstelpunt een speciale reparatieset voor je ketting?" - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "Er is een haak of standaard" - }, - "1": { - "then": "Er is geen haak of standaard" - } - }, - "question": "Heeft dit herstelpunt een haak of standaard om je fiets op te hangen/zetten?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Manuele pomp" - }, - "1": { - "then": "Electrische pomp" - } - }, - "question": "Is dit een electrische fietspomp?" - }, - "bike_repair_station-email": { - "question": "Wat is het email-adres van de beheerder?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "Er is een luchtdrukmeter" - }, - "1": { - "then": "Er is geen luchtdrukmeter" - }, - "2": { - "then": "Er is een luchtdrukmeter maar die is momenteel defect" - } - }, - "question": "Heeft deze pomp een luchtdrukmeter?" - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "Dag en nacht open" - }, - "1": { - "then": "Dag en nacht open" - } - }, - "question": "Wanneer is dit fietsherstelpunt open?" - }, - "bike_repair_station-operator": { - "question": "Wie beheert deze fietspomp?", - "render": "Beheer door {operator}" - }, - "bike_repair_station-phone": { - "question": "Wat is het telefoonnummer van de beheerder?" - }, - "bike_repair_station-valves": { - "mappings": { - "0": { - "then": "Sclaverand (ook gekend als Presta)" - }, - "1": { - "then": "Dunlop" - }, - "2": { - "then": "Schrader (auto's)" - } - }, - "question": "Welke ventielen werken er met de pomp?", - "render": "Deze pomp werkt met de volgende ventielen: {valves}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Herstelpunt" - }, - "1": { - "then": "Herstelpunt" - }, - "2": { - "then": "Kapotte fietspomp" - }, - "3": { - "then": "Fietspomp {name}" - }, - "4": { - "then": "Fietspomp" - } - }, - "render": "Herstelpunt met pomp" - } - }, - "bike_shop": { - "description": "Een winkel die hoofdzakelijk fietsen en fietstoebehoren verkoopt", - "name": "Fietszaak", - "presets": { - "0": { - "title": "Fietszaak" - } - }, - "tagRenderings": { - "bike_repair_bike-pump-service": { - "mappings": { - "0": { - "then": "Deze winkel biedt een fietspomp aan voor iedereen" - }, - "1": { - "then": "Deze winkel biedt geen fietspomp aan voor eender wie" - }, - "2": { - "then": "Er is een fietspomp, deze is apart aangeduid" - } - }, - "question": "Biedt deze winkel een fietspomp aan voor iedereen?" - }, - "bike_repair_bike-wash": { - "mappings": { - "0": { - "then": "Deze winkel biedt fietsschoonmaak aan" - }, - "1": { - "then": "Deze winkel biedt een installatie aan om zelf je fiets schoon te maken" - }, - "2": { - "then": "Deze winkel biedt geen fietsschoonmaak aan" - } - }, - "question": "Biedt deze winkel een fietsschoonmaak aan?" - }, - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Deze winkel verhuurt fietsen" - }, - "1": { - "then": "Deze winkel verhuurt geen fietsen" - } - }, - "question": "Verhuurt deze winkel fietsen?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Deze winkel herstelt fietsen" - }, - "1": { - "then": "Deze winkel herstelt geen fietsen" - }, - "2": { - "then": "Deze winkel herstelt enkel fietsen die hier werden gekocht" - }, - "3": { - "then": "Deze winkel herstelt enkel fietsen van een bepaald merk" - } - }, - "question": "Herstelt deze winkel fietsen?" - }, - "bike_repair_second-hand-bikes": { - "mappings": { - "0": { - "then": "Deze winkel verkoopt tweedehands fietsen" - }, - "1": { - "then": "Deze winkel verkoopt geen tweedehands fietsen" - }, - "2": { - "then": "Deze winkel verkoopt enkel tweedehands fietsen" - } - }, - "question": "Verkoopt deze winkel tweedehands fietsen?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "Deze winkel verkoopt fietsen" - }, - "1": { - "then": "Deze winkel verkoopt geen fietsen" - } - }, - "question": "Verkoopt deze fietszaak fietsen?" - }, - "bike_repair_tools-service": { - "mappings": { - "0": { - "then": "Deze winkel biedt gereedschap aan om je fiets zelf te herstellen" - }, - "1": { - "then": "Deze winkel biedt geen gereedschap aan om je fiets zelf te herstellen" - }, - "2": { - "then": "Het gereedschap aan om je fiets zelf te herstellen is enkel voor als je de fiets er kocht of huurt" - } - }, - "question": "Biedt deze winkel gereedschap aan om je fiets zelf te herstellen?" - }, - "bike_shop-email": { - "question": "Wat is het email-adres van {name}?" - }, - "bike_shop-is-bicycle_shop": { - "render": "Deze winkel verkoopt {shop} en heeft fiets-gerelateerde activiteiten." - }, - "bike_shop-name": { - "question": "Wat is de naam van deze fietszaak?", - "render": "Deze fietszaak heet {name}" - }, - "bike_shop-phone": { - "question": "Wat is het telefoonnummer van {name}?" - }, - "bike_shop-website": { - "question": "Wat is de website van {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Sportwinkel {name}" - }, - "2": { - "then": "Fietsverhuur {name}" - }, - "3": { - "then": "Fietsenmaker {name}" - }, - "4": { - "then": "Fietswinkel {name}" - }, - "5": { - "then": "Fietszaak {name}" - } - }, - "render": "Fietszaak" - } - }, - "bike_themed_object": { - "name": "Fietsgerelateerd object", - "title": { - "mappings": { - "1": { - "then": "Wielerpiste" - } - }, - "render": "Fietsgerelateerd object" - } - }, - "binocular": { - "description": "Verrekijkers", - "name": "Verrekijkers", - "presets": { - "0": { - "description": "Een telescoop of verrekijker die op een vaste plaats gemonteerd staat waar iedereen door mag kijken. ", - "title": "verrekijker" - } - }, - "tagRenderings": { - "binocular-charge": { - "mappings": { - "0": { - "then": "Gratis te gebruiken" - } - }, - "question": "Hoeveel moet men betalen om deze verrekijker te gebruiken?", - "render": "Deze verrekijker gebruiken kost {charge}" - }, - "binocular-direction": { - "question": "Welke richting kijkt men uit als men door deze verrekijker kijkt?", - "render": "Kijkt richting {direction}°" - } - }, - "title": { - "render": "Verrekijker" - } - }, - "birdhide": { - "color": { - "render": "#94bb28" - }, - "description": "Een vogelkijkhut", - "filter": { - "0": { - "options": { - "0": { - "question": "Rolstoeltoegankelijk" - } - } - }, - "1": { - "options": { - "0": { - "question": "Enkel overdekte kijkhutten" - } - } - } - }, - "icon": { - "render": "./assets/layers/birdhide/birdhide.svg" - }, - "mapRendering": { - "0": { - "icon": { - "render": "./assets/layers/birdhide/birdhide.svg" - } - } - }, - "name": "Vogelkijkhutten", - "presets": { - "0": { - "description": "Een overdekte hut waarbinnen er warm en droog naar vogels gekeken kan worden", - "title": "vogelkijkhut" - }, - "1": { - "description": "Een vogelkijkwand waarachter men kan staan om vogels te kijken", - "title": "vogelkijkwand" - } - }, - "size": { - "render": "40,40,center" - }, - "stroke": { - "render": "3" - }, - "tagRenderings": { - "bird-hide-shelter-or-wall": { - "mappings": { - "0": { - "then": "Vogelkijkwand" - }, - "1": { - "then": "Vogelkijkhut" - }, - "2": { - "then": "Vogelkijktoren" - }, - "3": { - "then": "Vogelkijkhut" - } - }, - "question": "Is dit een kijkwand of kijkhut?" - }, - "bird-hide-wheelchair": { - "mappings": { - "0": { - "then": "Er zijn speciale voorzieningen voor rolstoelen" - }, - "1": { - "then": "Een rolstoel raakt er vlot" - }, - "2": { - "then": "Je kan er raken met een rolstoel, maar het is niet makkelijk" - }, - "3": { - "then": "Niet rolstoeltoegankelijk" - } - }, - "question": "Is deze vogelkijkplaats rolstoeltoegankelijk?" - }, - "birdhide-operator": { - "mappings": { - "0": { - "then": "Beheer door Natuurpunt" - }, - "1": { - "then": "Beheer door het Agentschap Natuur en Bos " - } - }, - "question": "Wie beheert deze vogelkijkplaats?", - "render": "Beheer door {operator}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "Vogelkijkhut {name}" - }, - "2": { - "then": "Vogelkijkwand {name}" - } - }, - "render": "Vogelkijkplaats" - } - }, - "cafe_pub": { - "filter": { - "0": { - "options": { - "0": { - "question": "Nu geopened" - } - } - } - }, - "name": "CafÊs", - "presets": { - "0": { - "description": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk ", - "title": "bruin cafe of kroeg" - }, - "1": { - "description": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek", - "title": "bar" - }, - "2": { - "description": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen.", - "title": "cafe" - } - }, - "tagRenderings": { - "Classification": { - "mappings": { - "0": { - "then": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk " - }, - "1": { - "then": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek" - }, - "2": { - "then": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen." - }, - "3": { - "then": "Dit is een restaurant waar men een maaltijd geserveerd krijgt" - }, - "4": { - "then": "Een open ruimte waar bier geserveerd wordt. Typisch in Duitsland" - } - }, - "question": "Welk soort cafÊ is dit?" - }, - "Name": { - "question": "Wat is de naam van dit cafÊ?", - "render": "De naam van dit cafÊ is {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "CafÊ" - } - }, - "charging_station": { - "description": "Oplaadpunten", - "filter": { - "0": { - "options": { - "0": { - "question": "Alle voertuigen" - }, - "1": { - "question": "Oplaadpunten voor fietsen" - }, - "2": { - "question": "Oplaadpunten voor auto's" - } - } - }, - "1": { - "options": { - "0": { - "question": "Enkel werkende oplaadpunten" - } - } - }, - "2": { - "options": { - "0": { - "question": "Alle types" - }, - "1": { - "question": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "2": { - "question": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "3": { - "question": "Heeft een
Chademo
" - }, - "4": { - "question": "Heeft een
Type 1 met kabel (J1772)
" - }, - "5": { - "question": "Heeft een
Type 1 zonder kabel (J1772)
" - }, - "6": { - "question": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "7": { - "question": "Heeft een
Tesla Supercharger
" - }, - "8": { - "question": "Heeft een
Type 2 (mennekes)
" - }, - "9": { - "question": "Heeft een
Type 2 CCS (mennekes)
" - }, - "10": { - "question": "Heeft een
Type 2 met kabel (J1772)
" - }, - "11": { - "question": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "12": { - "question": "Heeft een
Tesla Supercharger (destination)
" - }, - "13": { - "question": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "14": { - "question": "Heeft een
USB om GSMs en kleine electronica op te laden
" - }, - "15": { - "question": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "16": { - "question": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" - } - } - } - }, - "name": "Oplaadpunten", - "presets": { - "0": { - "title": "laadpunt met gewone stekker(s) (bedoeld om electrische fietsen op te laden)" - }, - "1": { - "title": "oplaadpunt voor elektrische fietsen" - }, - "2": { - "title": "oplaadstation voor elektrische auto's" - }, - "3": { - "title": "oplaadstation" - } - }, - "tagRenderings": { - "Auth phone": { - "question": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", - "render": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}" - }, - "Authentication": { - "mappings": { - "0": { - "then": "Aanmelden met een lidkaart is mogelijk" - }, - "1": { - "then": "Aanmelden via een applicatie is mogelijk" - }, - "2": { - "then": "Aanmelden door te bellen naar een telefoonnummer is mogelijk" - }, - "3": { - "then": "Aanmelden via SMS is mogelijk" - }, - "4": { - "then": "Aanmelden via NFC is mogelijk" - }, - "5": { - "then": "Aanmelden met Money Card is mogelijk" - }, - "6": { - "then": "Aanmelden met een betaalkaart is mogelijk" - }, - "7": { - "then": "Hier opladen is (ook) mogelijk zonder aan te melden" - } - }, - "question": "Hoe kan men zich aanmelden aan dit oplaadstation?" - }, - "Available_charging_stations (generated)": { - "mappings": { - "0": { - "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "1": { - "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "2": { - "then": "
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "3": { - "then": "
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "4": { - "then": "
Chademo
" - }, - "5": { - "then": "
Chademo
" - }, - "6": { - "then": "
Type 1 met kabel (J1772)
" - }, - "7": { - "then": "
Type 1 met kabel (J1772)
" - }, - "8": { - "then": "
Type 1 zonder kabel (J1772)
" - }, - "9": { - "then": "
Type 1 zonder kabel (J1772)
" - }, - "10": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "11": { - "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "12": { - "then": "
Tesla Supercharger
" - }, - "13": { - "then": "
Tesla Supercharger
" - }, - "14": { - "then": "
Type 2 (mennekes)
" - }, - "15": { - "then": "
Type 2 (mennekes)
" - }, - "16": { - "then": "
Type 2 CCS (mennekes)
" - }, - "17": { - "then": "
Type 2 CCS (mennekes)
" - }, - "18": { - "then": "
Type 2 met kabel (J1772)
" - }, - "19": { - "then": "
Type 2 met kabel (J1772)
" - }, - "20": { - "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "21": { - "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "22": { - "then": "
Tesla Supercharger (destination)
" - }, - "23": { - "then": "
Tesla Supercharger (destination)
" - }, - "24": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "25": { - "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "26": { - "then": "
USB om GSMs en kleine electronica op te laden
" - }, - "27": { - "then": "
USB om GSMs en kleine electronica op te laden
" - }, - "28": { - "then": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "29": { - "then": "
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "30": { - "then": "
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "31": { - "then": "
Bosch Active Connect met 5 pinnen aan een kabel
" - } - }, - "question": "Welke aansluitingen zijn hier beschikbaar?" - }, - "Network": { - "mappings": { - "0": { - "then": "Maakt geen deel uit van een groter netwerk" - }, - "1": { - "then": "Maakt geen deel uit van een groter netwerk" - } - }, - "question": "Is dit oplaadpunt deel van een groter netwerk?", - "render": "Maakt deel uit van het {network}-netwerk" - }, - "OH": { - "mappings": { - "0": { - "then": "24/7 open - ook tijdens vakanties" - } - }, - "question": "Wanneer is dit oplaadpunt beschikbaar??" - }, - "Operational status": { - "mappings": { - "0": { - "then": "Dit oplaadpunt werkt" - }, - "1": { - "then": "Dit oplaadpunt is kapot" - }, - "2": { - "then": "Hier zal binnenkort een oplaadpunt gebouwd worden" - }, - "3": { - "then": "Hier wordt op dit moment een oplaadpunt gebouwd" - }, - "4": { - "then": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig" - } - }, - "question": "Is dit oplaadpunt operationeel?" - }, - "Operator": { - "mappings": { - "0": { - "then": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt" - } - }, - "question": "Wie beheert dit oplaadpunt?", - "render": "Wordt beheerd door {operator}" - }, - "Parking:fee": { - "mappings": { - "0": { - "then": "Geen extra parkeerkost tijdens het opladen" - }, - "1": { - "then": "Tijdens het opladen moet er parkeergeld betaald worden" - } - }, - "question": "Moet men parkeergeld betalen tijdens het opladen?" - }, - "Type": { - "mappings": { - "0": { - "then": "Fietsen kunnen hier opgeladen worden" - }, - "1": { - "then": "Elektrische auto's kunnen hier opgeladen worden" - }, - "2": { - "then": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden" - }, - "3": { - "then": "Vrachtwagens kunnen hier opgeladen worden" - }, - "4": { - "then": "Bussen kunnen hier opgeladen worden" - } - }, - "question": "Welke voertuigen kunnen hier opgeladen worden?" - }, - "access": { - "mappings": { - "0": { - "then": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - }, - "1": { - "then": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" - }, - "2": { - "then": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel" - }, - "3": { - "then": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... " - } - }, - "question": "Wie mag er dit oplaadpunt gebruiken?", - "render": "Toegang voor {access}" - }, - "capacity": { - "question": "Hoeveel voertuigen kunnen hier opgeladen worden?", - "render": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden" - }, - "charge": { - "question": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?", - "render": "Dit oplaadpunt gebruiken kost {charge}" - }, - "email": { - "question": "Wat is het email-adres van de operator?", - "render": "Bij problemen, email naar {email}" - }, - "fee": { - "mappings": { - "0": { - "then": "Gratis te gebruiken" - }, - "1": { - "then": "Gratis te gebruiken (zonder aan te melden)" - }, - "2": { - "then": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht" - }, - "3": { - "then": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/cafÊ/ziekenhuis/..." - }, - "4": { - "then": "Betalend" - } - }, - "question": "Moet men betalen om dit oplaadpunt te gebruiken?" - }, - "maxstay": { - "mappings": { - "0": { - "then": "Geen maximum parkeertijd" - } - }, - "question": "Hoelang mag een voertuig hier blijven staan?", - "render": "De maximale parkeertijd hier is {canonical(maxstay)}" - }, - "payment-options": { - "override": { - "mappings+": { - "0": { - "then": "Betalen via een app van het netwerk" - }, - "1": { - "then": "Betalen via een lidkaart van het netwerk" - } - } - } - }, - "phone": { - "question": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?", - "render": "Bij problemen, bel naar {phone}" - }, - "plugs-0": { - "question": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" - }, - "plugs-1": { - "question": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" - }, - "plugs-10": { - "question": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" - }, - "plugs-11": { - "question": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" - }, - "plugs-12": { - "question": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" - }, - "plugs-13": { - "question": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" - }, - "plugs-14": { - "question": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" - }, - "plugs-15": { - "question": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" - }, - "plugs-2": { - "question": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" - }, - "plugs-3": { - "question": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" - }, - "plugs-4": { - "question": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" - }, - "plugs-5": { - "question": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" - }, - "plugs-6": { - "question": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" - }, - "plugs-7": { - "question": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" - }, - "plugs-8": { - "question": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" - }, - "plugs-9": { - "question": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?", - "render": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" - }, - "ref": { - "question": "Wat is het referentienummer van dit oplaadstation?", - "render": "Het referentienummer van dit oplaadpunt is {ref}" - }, - "website": { - "question": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?", - "render": "Meer informatie op {website}" - } - }, - "title": { - "render": "Oplaadpunten" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " minuten", - "humanSingular": " minuut" - }, - "1": { - "human": " uren", - "humanSingular": " uur" - }, - "2": { - "human": " day", - "humanSingular": " dag" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": "volt" - } - } - }, - "2": { - "applicableUnits": { - "0": { - "human": "A" - } - } - }, - "3": { - "applicableUnits": { - "0": { - "human": "kilowatt" - }, - "1": { - "human": "megawatt" - } - } - } - } - }, - "crossings": { - "description": "Oversteekplaatsen voor voetgangers en fietsers", - "name": "Oversteekplaatsen", - "presets": { - "0": { - "description": "Oversteekplaats voor voetgangers en/of fietsers", - "title": "Oversteekplaats" - }, - "1": { - "description": "Verkeerslicht op een weg", - "title": "Verkeerslicht" - } - }, - "tagRenderings": { - "crossing-bicycle-allowed": { - "mappings": { - "0": { - "then": "Een fietser kan deze oversteekplaats gebruiken" - }, - "1": { - "then": "Een fietser kan deze oversteekplaats niet gebruiken" - } - }, - "question": "Is deze oversteekplaats ook voor fietsers" - }, - "crossing-button": { - "mappings": { - "0": { - "then": "Dit verkeerslicht heeft een knop voor groen licht" - }, - "1": { - "then": "Dit verkeerlicht heeft geen knop voor groen licht" - } - }, - "question": "Heeft dit verkeerslicht een knop voor groen licht?" - }, - "crossing-continue-through-red": { - "mappings": { - "0": { - "then": "Een fietser mag wel rechtdoor gaan als het licht rood is " - }, - "1": { - "then": "Een fietser mag wel rechtdoor gaan als het licht rood is" - }, - "2": { - "then": "Een fietser mag niet rechtdoor gaan als het licht rood is" - } - }, - "question": "Mag een fietser rechtdoor gaan als het licht rood is?" - }, - "crossing-has-island": { - "mappings": { - "0": { - "then": "Deze oversteekplaats heeft een verkeerseiland in het midden" - }, - "1": { - "then": "Deze oversteekplaats heeft geen verkeerseiland in het midden" - } - }, - "question": "Heeft deze oversteekplaats een verkeerseiland in het midden?" - }, - "crossing-is-zebra": { - "mappings": { - "0": { - "then": "Dit is een zebrapad" - }, - "1": { - "then": "Dit is geen zebrapad" - } - }, - "question": "Is dit een zebrapad?" - }, - "crossing-right-turn-through-red": { - "mappings": { - "0": { - "then": "Een fietser mag wel rechtsaf slaan als het licht rood is " - }, - "1": { - "then": "Een fietser mag wel rechtsaf slaan als het licht rood is" - }, - "2": { - "then": "Een fietser mag niet rechtsaf slaan als het licht rood is" - } - }, - "question": "Mag een fietser rechtsaf slaan als het licht rood is?" - }, - "crossing-tactile": { - "mappings": { - "0": { - "then": "Deze oversteekplaats heeft een geleidelijn" - }, - "1": { - "then": "Deze oversteekplaats heeft geen geleidelijn" - }, - "2": { - "then": "Deze oversteekplaats heeft een geleidelijn, die incorrect is." - } - }, - "question": "Heeft deze oversteekplaats een geleidelijn?" - }, - "crossing-type": { - "mappings": { - "0": { - "then": "Oversteekplaats, zonder verkeerslichten" - }, - "1": { - "then": "Oversteekplaats met verkeerslichten" - }, - "2": { - "then": "Zebrapad" - } - }, - "question": "Wat voor oversteekplaats is dit?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Verkeerslicht" - }, - "1": { - "then": "Oversteektplaats met verkeerslichten" - } - }, - "render": "Oversteekplaats" - } - }, - "cycleways_and_roads": { - "name": "Fietspaden, straten en wegen", - "tagRenderings": { - "Cycleway type for a road": { - "mappings": { - "0": { - "then": "Er is een fietssuggestiestrook" - }, - "1": { - "then": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)" - }, - "2": { - "then": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg." - }, - "3": { - "then": "Er is een apart getekend fietspad." - }, - "4": { - "then": "Er is geen fietspad aanwezig" - }, - "5": { - "then": "Er is geen fietspad aanwezig" - } - }, - "question": "Wat voor fietspad is hier?" - }, - "Cycleway:smoothness": { - "mappings": { - "0": { - "then": "Geschikt voor fijne rollers: rollerblade, skateboard" - }, - "1": { - "then": "Geschikt voor fijne wielen: racefiets" - }, - "2": { - "then": "Geschikt voor normale wielen: stadsfiets, rolstoel, scooter" - }, - "3": { - "then": "Geschikt voor brede wielen: trekfiets, auto, rickshaw" - }, - "4": { - "then": "Geschikt voor voertuigen met hoge banden: lichte terreinwagen" - }, - "5": { - "then": "Geschikt voor terreinwagens: zware terreinwagen" - }, - "6": { - "then": "Geschikt voor gespecialiseerde terreinwagens: tractor, alleterreinwagen" - }, - "7": { - "then": "Niet geschikt voor voertuigen met wielen" - } - }, - "question": "Wat is de kwaliteit van dit fietspad?" - }, - "Cycleway:surface": { - "mappings": { - "0": { - "then": "Dit fietspad is onverhard" - }, - "1": { - "then": "Dit fietspad is geplaveid" - }, - "2": { - "then": "Dit fietspad is gemaakt van asfalt" - }, - "3": { - "then": "Dit fietspad is gemaakt van straatstenen" - }, - "4": { - "then": "Dit fietspad is gemaakt van beton" - }, - "5": { - "then": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)" - }, - "6": { - "then": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien" - }, - "7": { - "then": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien" - }, - "8": { - "then": "Dit fietspad is gemaakt van hout" - }, - "9": { - "then": "Dit fietspad is gemaakt van grind" - }, - "10": { - "then": "Dit fietspad is gemaakt van fijn grind" - }, - "11": { - "then": "Dit fietspad is gemaakt van kiezelsteentjes" - }, - "12": { - "then": "Dit fietspad is gemaakt van aarde" - } - }, - "question": "Waaruit is het oppervlak van het fietspad van gemaakt?", - "render": "Dit fietspad is gemaakt van {cycleway:surface}" - }, - "Is this a cyclestreet? (For a road)": { - "mappings": { - "0": { - "then": "Dit is een fietsstraat, en dus een 30km/h zone" - }, - "1": { - "then": "Dit is een fietsstraat" - }, - "2": { - "then": "Dit is geen fietsstraat" - } - }, - "question": "Is dit een fietsstraat?" - }, - "Maxspeed (for road)": { - "mappings": { - "0": { - "then": "De maximumsnelheid is 20 km/u" - }, - "1": { - "then": "De maximumsnelheid is 30 km/u" - }, - "2": { - "then": "De maximumsnelheid is 50 km/u" - }, - "3": { - "then": "De maximumsnelheid is 70 km/u" - }, - "4": { - "then": "De maximumsnelheid is 90 km/u" - } - }, - "question": "Wat is de maximumsnelheid in deze straat?", - "render": "De maximumsnelheid op deze weg is {maxspeed} km/u" - }, - "Surface of the road": { - "mappings": { - "0": { - "then": "Dit fietspad is onverhard" - }, - "1": { - "then": "Dit fietspad is geplaveid" - }, - "2": { - "then": "Dit fietspad is gemaakt van asfalt" - }, - "3": { - "then": "Dit fietspad is gemaakt van straatstenen" - }, - "4": { - "then": "Dit fietspad is gemaakt van beton" - }, - "5": { - "then": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)" - }, - "6": { - "then": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien" - }, - "7": { - "then": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien" - }, - "8": { - "then": "Dit fietspad is gemaakt van hout" - }, - "9": { - "then": "Dit fietspad is gemaakt van grind" - }, - "10": { - "then": "Dit fietspad is gemaakt van fijn grind" - }, - "11": { - "then": "Dit fietspad is gemaakt van kiezelsteentjes" - }, - "12": { - "then": "Dit fietspad is gemaakt van aarde" - } - }, - "question": "Waaruit is het oppervlak van de straat gemaakt?", - "render": "Deze weg is gemaakt van {surface}" - }, - "Surface of the street": { - "question": "Wat is de kwaliteit van deze straat?" - }, - "cyclelan-segregation": { - "mappings": { - "0": { - "then": "Dit fietspad is gescheiden van de weg met een onderbroken streep" - }, - "1": { - "then": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep" - }, - "2": { - "then": "Dit fietspad is gescheiden van de weg met parkeervakken" - }, - "3": { - "then": "Dit fietspad is gescheiden van de weg met een stoeprand" - } - }, - "question": "Hoe is dit fietspad gescheiden van de weg?" - }, - "cycleway-lane-track-traffic-signs": { - "mappings": { - "0": { - "then": "Verplicht fietspad " - }, - "1": { - "then": "Verplicht fietspad (met onderbord)
" - }, - "2": { - "then": "Afgescheiden voet-/fietspad " - }, - "3": { - "then": "Gedeeld voet-/fietspad " - }, - "4": { - "then": "Geen verkeersbord aanwezig" - } - }, - "question": "Welk verkeersbord heeft dit fietspad?" - }, - "cycleway-segregation": { - "mappings": { - "0": { - "then": "Dit fietspad is gescheiden van de weg met een onderbroken streep" - }, - "1": { - "then": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep" - }, - "2": { - "then": "Dit fietspad is gescheiden van de weg met parkeervakken" - }, - "3": { - "then": "Dit fietspad is gescheiden van de weg met een stoeprand" - } - }, - "question": "Hoe is dit fietspad gescheiden van de weg?" - }, - "cycleway-traffic-signs": { - "mappings": { - "0": { - "then": "Verplicht fietspad " - }, - "1": { - "then": "Verplicht fietspad (met onderbord)
" - }, - "2": { - "then": "Afgescheiden voet-/fietspad " - }, - "3": { - "then": "Gedeeld voet-/fietspad " - }, - "4": { - "then": "Geen verkeersbord aanwezig" - } - }, - "question": "Welk verkeersbord heeft dit fietspad?" - }, - "cycleway-traffic-signs-D7-supplementary": { - "mappings": { - "0": { - "then": "" - }, - "1": { - "then": "" - }, - "2": { - "then": "" - }, - "3": { - "then": "" - }, - "4": { - "then": "" - }, - "5": { - "then": "" - }, - "6": { - "then": "Geen onderbord aanwezig" - } - }, - "question": "Heeft het verkeersbord D7 () een onderbord?" - }, - "cycleway-traffic-signs-supplementary": { - "mappings": { - "0": { - "then": "" - }, - "1": { - "then": "" - }, - "2": { - "then": "" - }, - "3": { - "then": "" - }, - "4": { - "then": "" - }, - "5": { - "then": "" - }, - "6": { - "then": "Geen onderbord aanwezig" - } - }, - "question": "Heeft het verkeersbord D7 () een onderbord?" - }, - "cycleways_and_roads-cycleway:buffer": { - "question": "Hoe breed is de ruimte tussen het fietspad en de weg?", - "render": "De schrikafstand van dit fietspad is {cycleway:buffer} m" - }, - "is lit?": { - "mappings": { - "0": { - "then": "Deze weg is verlicht" - }, - "1": { - "then": "Deze weg is niet verlicht" - }, - "2": { - "then": "Deze weg is 's nachts verlicht" - }, - "3": { - "then": "Deze weg is 24/7 verlicht" - } - }, - "question": "Is deze weg verlicht?" - }, - "width:carriageway": { - "question": "Hoe breed is de rijbaan in deze straat (in meters)?
Dit is
Meet dit van stoepsteen tot stoepsteen, dus inclusief een parallelle parkeerstrook", - "render": "De breedte van deze rijbaan in deze straat is {width:carriageway}m" - } - }, - "title": { - "mappings": { - "0": { - "then": "Fietsweg" - }, - "1": { - "then": "Fietssuggestiestrook" - }, - "2": { - "then": "Fietsstrook" - }, - "3": { - "then": "Fietsweg naast de weg" - }, - "4": { - "then": "Fietsstraat" - } - }, - "render": "Fietspaden" - } - }, - "defibrillator": { - "name": "Defibrillatoren", - "presets": { - "0": { - "title": "Defibrillator" - } - }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "Publiek toegankelijk" - }, - "1": { - "then": "Publiek toegankelijk" - }, - "2": { - "then": "Enkel toegankelijk voor klanten" - }, - "3": { - "then": "Niet toegankelijk voor het publiek (bv. enkel voor personeel, de eigenaar, ...)" - }, - "4": { - "then": "Niet toegankelijk, mogelijk enkel voor professionals" - } - }, - "question": "Is deze defibrillator vrij toegankelijk?", - "render": "Toegankelijkheid is {access}" - }, - "defibrillator-defibrillator": { - "mappings": { - "0": { - "then": "Dit is een manueel toestel enkel voor professionals" - }, - "1": { - "then": "Dit is een gewone automatische defibrillator" - } - }, - "question": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?", - "render": "Er is geen info over het soort toestel" - }, - "defibrillator-defibrillator:location": { - "question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in de plaatselijke taal)", - "render": "Meer informatie over de locatie (lokale taal):
{defibrillator:location}" - }, - "defibrillator-defibrillator:location:en": { - "question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Engels)", - "render": "Meer informatie over de locatie (in het Engels):
{defibrillator:location:en}" - }, - "defibrillator-defibrillator:location:fr": { - "question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Frans)", - "render": "Meer informatie over de locatie (in het Frans):
{defibrillator:location:fr}" - }, - "defibrillator-description": { - "question": "Is er nog iets bijzonder aan deze defibrillator dat je nog niet hebt kunnen meegeven? (laat leeg indien niet)", - "render": "Aanvullende info: {description}" - }, - "defibrillator-email": { - "question": "Wat is het email-adres voor vragen over deze defibrillator", - "render": "Email voor vragen over deze defibrillator: {email}" - }, - "defibrillator-fixme": { - "question": "Is er iets mis met de informatie over deze defibrillator dat je hier niet opgelost kreeg? (laat hier een berichtje achter voor OpenStreetMap experts)", - "render": "Extra informatie voor OpenStreetMap experts: {fixme}" - }, - "defibrillator-indoors": { - "mappings": { - "0": { - "then": "Deze defibrillator bevindt zich in een gebouw" - }, - "1": { - "then": "Deze defibrillator hangt buiten" - } - }, - "question": "Hangt deze defibrillator binnen of buiten?" - }, - "defibrillator-level": { - "mappings": { - "0": { - "then": "Deze defibrillator bevindt zich gelijkvloers" - }, - "1": { - "then": "Deze defibrillator is op de eerste verdieping" - } - }, - "question": "Op welke verdieping bevindt deze defibrillator zich?", - "render": "De defibrillator bevindt zicht op verdieping {level}" - }, - "defibrillator-opening_hours": { - "mappings": { - "0": { - "then": "24/7 open (inclusief feestdagen)" - } - }, - "question": "Wanneer is deze defibrillator beschikbaar?", - "render": "{opening_hours_table(opening_hours)}" - }, - "defibrillator-phone": { - "question": "Wat is het telefoonnummer voor vragen over deze defibrillator", - "render": "Telefoonnummer voor vragen over deze defibrillator: {phone}" - }, - "defibrillator-ref": { - "question": "Wat is het officieel identificatienummer van het toestel? (indien zichtbaar op toestel)", - "render": "Officieel identificatienummer van het toestel: {ref}" - }, - "defibrillator-survey:date": { - "mappings": { - "0": { - "then": "Vandaag nagekeken!" - } - }, - "question": "Wanneer is deze defibrillator het laatst gecontroleerd in OpenStreetMap?", - "render": "Deze defibrillator is nagekeken in OSM op {survey:date}" - } - }, - "title": { - "render": "Defibrillator" - } - }, - "direction": { - "description": "Deze laag toont de oriÃĢntatie van een object", - "name": "Richtingsvisualisatie" - }, - "drinking_water": { - "name": "Drinkbaar water", - "presets": { - "0": { - "title": "drinkbaar water" - } - }, - "tagRenderings": { - "Bottle refill": { - "mappings": { - "0": { - "then": "Een drinkbus bijvullen gaat makkelijk" - }, - "1": { - "then": "Een drinkbus past moeilijk" - } - }, - "question": "Hoe gemakkelijk is het om drinkbussen bij te vullen?" - }, - "Still in use?": { - "mappings": { - "0": { - "then": "Deze drinkwaterfontein werkt" - }, - "1": { - "then": "Deze drinkwaterfontein is kapot" - }, - "2": { - "then": "Deze drinkwaterfontein is afgesloten" - } - }, - "question": "Is deze drinkwaterkraan nog steeds werkende?", - "render": "Deze waterkraan-status is {operational_status}" - }, - "render-closest-drinking-water": { - "render": "Er bevindt zich een ander drinkwaterpunt op {_closest_other_drinking_water_distance} meter" - } - }, - "title": { - "render": "Drinkbaar water" - } - }, - "etymology": { - "description": "Alle lagen met een gelinkt etymology", - "name": "Heeft etymology info", - "tagRenderings": { - "simple etymology": { - "mappings": { - "0": { - "then": "De oorsprong van deze naam is onbekend in de literatuur" - } - }, - "question": "Naar wat is dit object vernoemd?
Dit staat mogelijks vermeld op het straatnaambordje", - "render": "Vernoemd naar {name:etymology}" - }, - "street-name-sign-image": { - "render": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Voeg afbeelding van straatnaambordje toe)}" - }, - "wikipedia-etymology": { - "question": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?", - "render": "

Wikipedia artikel van de naamgever

{wikipedia(name:etymology:wikidata):max-height:20rem}" - }, - "zoeken op inventaris onroerend erfgoed": { - "render": "Zoeken op inventaris onroerend erfgoed" - } - } - }, - "food": { - "filter": { - "0": { - "options": { - "0": { - "question": "Nu geopened" - } - } - }, - "1": { - "options": { - "0": { - "question": "Heeft een vegetarisch menu" - } - } - }, - "2": { - "options": { - "0": { - "question": "Heeft een veganistisch menu" - } - } - }, - "3": { - "options": { - "0": { - "question": "Heeft een halal menu" - } - } - } - }, - "name": "Eetgelegenheden", - "presets": { - "0": { - "description": "Een eetgegelegenheid waar je aan tafel wordt bediend", - "title": "restaurant" - }, - "1": { - "description": "Een zaak waar je snel bediend wordt, vaak met de focus op afhalen. Zitgelegenheid is eerder beperkt (of zelfs afwezig)", - "title": "fastfood-zaak" - }, - "2": { - "description": "Een fastfood-zaak waar je frieten koopt", - "title": "frituur" - } - }, - "tagRenderings": { - "Cuisine": { - "mappings": { - "0": { - "then": "Dit is een pizzeria" - }, - "1": { - "then": "Dit is een frituur" - }, - "2": { - "then": "Dit is een pastazaak" - }, - "3": { - "then": "Dit is een kebabzaak" - }, - "4": { - "then": "Dit is een broodjeszaak" - }, - "5": { - "then": "Dit is een hamburgerrestaurant" - }, - "6": { - "then": "Dit is een sushirestaurant" - }, - "7": { - "then": "Dit is een koffiezaak" - }, - "8": { - "then": "Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)" - }, - "9": { - "then": "Dit is een Frans restaurant" - }, - "10": { - "then": "Dit is een Chinees restaurant" - }, - "11": { - "then": "Dit is een Grieks restaurant" - }, - "12": { - "then": "Dit is een Indisch restaurant" - }, - "13": { - "then": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)" - }, - "14": { - "then": "Dit is een Thaïs restaurant" - } - }, - "question": "Welk soort gerechten worden hier geserveerd?", - "render": "Deze plaats serveert vooral {cuisine}" - }, - "Fastfood vs restaurant": { - "mappings": { - "0": { - "then": "Dit is een fastfood-zaak. De focus ligt op snelle bediening, zitplaatsen zijn vaak beperkt en functioneel" - }, - "1": { - "then": "Dit is een restaurant. De focus ligt op een aangename ervaring waar je aan tafel wordt bediend" - } - }, - "question": "Wat voor soort zaak is dit?" - }, - "Name": { - "question": "Wat is de naam van deze eetgelegenheid?", - "render": "De naam van deze eetgelegeheid is {name}" - }, - "Takeaway": { - "mappings": { - "0": { - "then": "Hier is enkel afhaal mogelijk" - }, - "1": { - "then": "Eten kan hier afgehaald worden" - }, - "2": { - "then": "Hier is geen afhaalmogelijkheid" - } - }, - "question": "Biedt deze zaak een afhaalmogelijkheid aan?" - }, - "Vegan (no friture)": { - "mappings": { - "0": { - "then": "Geen veganistische opties beschikbaar" - }, - "1": { - "then": "Beperkte veganistische opties zijn beschikbaar" - }, - "2": { - "then": "Veganistische opties zijn beschikbaar" - }, - "3": { - "then": "Enkel veganistische opties zijn beschikbaar" - } - }, - "question": "Heeft deze eetgelegenheid een veganistische optie?" - }, - "Vegetarian (no friture)": { - "mappings": { - "0": { - "then": "Geen vegetarische opties beschikbaar" - }, - "1": { - "then": "Beperkte vegetarische opties zijn beschikbaar" - }, - "2": { - "then": "Vegetarische opties zijn beschikbaar" - }, - "3": { - "then": "Enkel vegetarische opties zijn beschikbaar" - } - }, - "question": "Heeft deze eetgelegenheid een vegetarische optie?" - }, - "friture-oil": { - "mappings": { - "0": { - "then": "Plantaardige olie" - }, - "1": { - "then": "Dierlijk vet" - } - }, - "question": "Bakt deze frituur met dierlijk vet of met plantaardige olie?" - }, - "friture-take-your-container": { - "mappings": { - "0": { - "then": "Je mag je eigen containers meenemen om je bestelling in mee te nemen en zo minder afval te maken" - }, - "1": { - "then": "Je mag geen eigen containers meenemen om je bestelling in mee te nemen" - }, - "2": { - "then": "Je moet je eigen containers meenemen om je bestelling in mee te nemen." - } - }, - "question": "Als je je eigen container (bv. kookpot of kleine potjes voor saus) meeneemt, gebruikt de frituur deze dan om je bestelling in te doen?" - }, - "friture-vegan": { - "mappings": { - "0": { - "then": "Er zijn veganistische snacks aanwezig" - }, - "1": { - "then": "Slechts enkele veganistische snacks" - }, - "2": { - "then": "Geen veganistische snacks beschikbaar" - } - }, - "question": "Heeft deze frituur veganistische snacks?" - }, - "friture-vegetarian": { - "mappings": { - "0": { - "then": "Er zijn vegetarische snacks aanwezig" - }, - "1": { - "then": "Slechts enkele vegetarische snacks" - }, - "2": { - "then": "Geen vegetarische snacks beschikbaar" - } - }, - "question": "Heeft deze frituur vegetarische snacks?" - }, - "halal (no friture)": { - "mappings": { - "0": { - "then": "Er zijn geen halal opties aanwezig" - }, - "1": { - "then": "Er zijn een beperkt aantal halal opties" - }, - "2": { - "then": "Halal menu verkrijgbaar" - }, - "3": { - "then": "Enkel halal opties zijn beschikbaar" - } - }, - "question": "Heeft dit restaurant halal opties?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Restaurant {name}" - }, - "1": { - "then": "Fastfood-zaak {name}" - } - }, - "render": "Eetgelegenheid" - } - }, - "ghost_bike": { - "name": "Witte Fietsen", - "presets": { - "0": { - "title": "Witte fiets" - } - }, - "tagRenderings": { - "ghost-bike-explanation": { - "render": "Een Witte Fiets (of Spookfiets) is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat over een witgeschilderde fiets die geplaatst werd in de buurt van het ongeval." - }, - "ghost_bike-inscription": { - "question": "Wat is het opschrift op deze witte fiets?", - "render": "{inscription}" - }, - "ghost_bike-name": { - "mappings": { - "0": { - "then": "De naam is niet aangeduid op de fiets" - } - }, - "question": "Aan wie is deze witte fiets een eerbetoon?
Respecteer privacy - voeg enkel een naam toe indien die op de fiets staat of gepubliceerd is. Eventueel voeg je enkel de voornaam toe.
", - "render": "Ter nagedachtenis van {name}" - }, - "ghost_bike-source": { - "question": "Op welke website kan men meer informatie vinden over de Witte fiets of over het ongeval?", - "render": "Meer informatie" - }, - "ghost_bike-start_date": { - "question": "Wanneer werd deze witte fiets geplaatst?", - "render": "Geplaatst op {start_date}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Witte fiets ter nagedachtenis van {name}" - } - }, - "render": "Witte Fiets" - } - }, - "grass_in_parks": { - "name": "Toegankelijke grasvelden in parken", - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Speelweide in een park" - } - }, - "information_board": { - "name": "Informatieborden", - "presets": { - "0": { - "title": "informatiebord" - } - }, - "title": { - "render": "Informatiebord" - } - }, - "map": { - "description": "Een permantent geinstalleerde kaart", - "name": "Kaarten", - "presets": { - "0": { - "description": "Voeg een ontbrekende kaart toe", - "title": "Kaart" - } - }, - "tagRenderings": { - "map-attribution": { - "mappings": { - "0": { - "then": "De OpenStreetMap-attributie is duidelijk aangegeven, zelf met vermelding van \"ODBL\" " - }, - "1": { - "then": "OpenStreetMap is duidelijk aangegeven, maar de licentievermelding ontbreekt" - }, - "2": { - "then": "OpenStreetMap was oorspronkelijk niet aangeduid, maar iemand plaatste er een sticker" - }, - "3": { - "then": "Er is geen attributie" - }, - "4": { - "then": "Er is geen attributie" - } - }, - "question": "Is de attributie voor OpenStreetMap aanwezig?" - }, - "map-map_source": { - "mappings": { - "0": { - "then": "Deze kaart is gebaseerd op OpenStreetMap" - } - }, - "question": "Op welke data is deze kaart gebaseerd?", - "render": "Deze kaart is gebaseerd op {map_source}" - } - }, - "title": { - "render": "Kaart" - } - }, - "nature_reserve": { - "description": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.", - "filter": { - "0": { - "options": { - "0": { - "question": "Vrij te bezoeken" - } - } - }, - "1": { - "options": { - "0": { - "question": "Alle natuurgebieden" - }, - "1": { - "question": "Honden mogen vrij rondlopen" - }, - "2": { - "question": "Honden welkom aan de leiband" - } - } - } - }, - "name": "Natuurgebied", - "presets": { - "0": { - "description": "Voeg een ontbrekend, erkend natuurreservaat toe, bv. een gebied dat beheerd wordt door het ANB of natuurpunt", - "title": "natuurreservaat" - } - }, - "tagRenderings": { - "Access tag": { - "mappings": { - "0": { - "then": "Vrij toegankelijk" - }, - "1": { - "then": "Niet toegankelijk" - }, - "2": { - "then": "Niet toegankelijk, want privÊgebied" - }, - "3": { - "then": "Toegankelijk, ondanks dat het privegebied is" - }, - "4": { - "then": "Enkel toegankelijk met een gids of tijdens een activiteit" - }, - "5": { - "then": "Toegankelijk mits betaling" - } - }, - "question": "Is dit gebied toegankelijk?", - "render": "De toegankelijkheid van dit gebied is: {access:description}" - }, - "Curator": { - "question": "Wie is de conservator van dit gebied?
Respecteer privacy - geef deze naam enkel als die duidelijk is gepubliceerd", - "render": "{curator} is de beheerder van dit gebied" - }, - "Dogs?": { - "mappings": { - "0": { - "then": "Honden moeten aan de leiband" - }, - "1": { - "then": "Honden zijn niet toegestaan" - }, - "2": { - "then": "Honden zijn welkom en mogen vrij rondlopen" - } - }, - "question": "Zijn honden toegelaten in dit gebied?" - }, - "Editable description {description:0}": { - "render": "Extra info: {description:0}" - }, - "Email": { - "question": "Waar kan men naartoe emailen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke emailadressen als deze elders zijn gepubliceerd", - "render": "{email}" - }, - "Name tag": { - "mappings": { - "0": { - "then": "Dit gebied heeft geen naam" - } - }, - "question": "Wat is de naam van dit gebied?", - "render": "Dit gebied heet {name}" - }, - "Name:nl-tag": { - "question": "Wat is de Nederlandstalige naam van dit gebied?", - "render": "Dit gebied heet {name:nl}" - }, - "Non-editable description {description}": { - "render": "Extra info: {description}" - }, - "Operator tag": { - "mappings": { - "0": { - "then": "Dit gebied wordt beheerd door Natuurpunt" - }, - "1": { - "then": "Dit gebied wordt beheerd door {operator}" - }, - "2": { - "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" - } - }, - "question": "Wie beheert dit gebied?", - "render": "Beheer door {operator}" - }, - "Surface area": { - "render": "Totale oppervlakte: {_surface:ha}Ha" - }, - "Website": { - "question": "Op welke webpagina kan men meer informatie vinden over dit natuurgebied?" - }, - "phone": { - "question": "Waar kan men naartoe bellen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke telefoonnummers als deze elders zijn gepubliceerd", - "render": "{phone}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name:nl}" - }, - "1": { - "then": "{name}" - } - }, - "render": "Natuurgebied" - } - }, - "observation_tower": { - "description": "Torens om van het uitzicht te genieten", - "name": "Uitkijktorens", - "presets": { - "0": { - "description": "Een publiek toegankelijke uitkijktoren", - "title": "Uitkijktoren" - } - }, - "tagRenderings": { - "Fee": { - "mappings": { - "0": { - "then": "Gratis te bezoeken" - } - }, - "question": "Hoeveel moet men betalen om deze toren te bezoeken?", - "render": "Deze toren bezoeken kost {charge}" - }, - "Height": { - "question": "Hoe hoog is deze toren?", - "render": "Deze toren is {height} hoog" - }, - "Operator": { - "question": "Wie onderhoudt deze toren?", - "render": "Wordt onderhouden door {operator}" - }, - "name": { - "mappings": { - "0": { - "then": "Deze toren heeft geen specifieke naam" - } - }, - "question": "Heeft deze toren een naam?", - "render": "Deze toren heet {name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Uitkijktoren" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " meter" - } - } - } - } - }, - "parking": { - "description": "Parking", - "name": "Parking", - "presets": { - "0": { - "description": "Voeg hier een fietsenstalling toe", - "title": "fietsparking" - }, - "1": { - "description": "Voeg hier een parking voor auto's toe", - "title": "parking" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name:nl}" - }, - "1": { - "then": "{name}" - }, - "2": { - "then": "Fietsenstalling" - } - }, - "render": "Parking" - } - }, - "picnic_table": { - "description": "Deze laag toont picnictafels", - "name": "Picnictafels", - "presets": { - "0": { - "title": "picnic-tafel" - } - }, - "tagRenderings": { - "picnic_table-material": { - "mappings": { - "0": { - "then": "Deze picnictafel is gemaakt uit hout" - }, - "1": { - "then": "Deze picnictafel is gemaakt uit beton" - } - }, - "question": "Van welk materiaal is deze picnictafel gemaakt?", - "render": "Deze picnictafel is gemaakt van {material}" - } - }, - "title": { - "render": "Picnictafel" - } - }, - "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": { - "description": "Speeltuinen", - "name": "Speeltuinen", - "presets": { - "0": { - "title": "Speeltuin" - } - }, - "tagRenderings": { - "Playground-wheelchair": { - "mappings": { - "0": { - "then": "Geheel toegankelijk voor rolstoelgebruikers" - }, - "1": { - "then": "Beperkt toegankelijk voor rolstoelgebruikers" - }, - "2": { - "then": "Niet toegankelijk voor rolstoelgebruikers" - } - }, - "question": "Is deze speeltuin toegankelijk voor rolstoelgebruikers?" - }, - "playground-access": { - "mappings": { - "0": { - "then": "Vrij toegankelijk voor het publiek" - }, - "1": { - "then": "Vrij toegankelijk voor het publiek" - }, - "2": { - "then": "Enkel toegankelijk voor klanten van de bijhorende zaak" - }, - "3": { - "then": "Vrij toegankelijk voor scholieren van de school" - }, - "4": { - "then": "Niet vrij toegankelijk" - } - }, - "question": "Is deze speeltuin vrij toegankelijk voor het publiek?" - }, - "playground-email": { - "question": "Wie kan men emailen indien er problemen zijn met de speeltuin?", - "render": "De bevoegde dienst kan bereikt worden via {email}" - }, - "playground-lit": { - "mappings": { - "0": { - "then": "Deze speeltuin is 's nachts verlicht" - }, - "1": { - "then": "Deze speeltuin is 's nachts niet verlicht" - } - }, - "question": "Is deze speeltuin 's nachts verlicht?" - }, - "playground-max_age": { - "question": "Wat is de maximaal toegestane leeftijd voor deze speeltuin?", - "render": "Toegankelijk tot {max_age}" - }, - "playground-min_age": { - "question": "Wat is de minimale leeftijd om op deze speeltuin te mogen?", - "render": "Toegankelijk vanaf {min_age} jaar oud" - }, - "playground-opening_hours": { - "mappings": { - "0": { - "then": "Van zonsopgang tot zonsondergang" - }, - "1": { - "then": "Dag en nacht toegankelijk" - }, - "2": { - "then": "Dag en nacht toegankelijk" - } - }, - "question": "Op welke uren is deze speeltuin toegankelijk?" - }, - "playground-operator": { - "question": "Wie beheert deze speeltuin?", - "render": "Beheer door {operator}" - }, - "playground-phone": { - "question": "Wie kan men bellen indien er problemen zijn met de speeltuin?", - "render": "De bevoegde dienst kan getelefoneerd worden via {phone}" - }, - "playground-surface": { - "mappings": { - "0": { - "then": "De ondergrond is gras" - }, - "1": { - "then": "De ondergrond is zand" - }, - "2": { - "then": "De ondergrond bestaat uit houtsnippers" - }, - "3": { - "then": "De ondergrond bestaat uit stoeptegels" - }, - "4": { - "then": "De ondergrond is asfalt" - }, - "5": { - "then": "De ondergrond is beton" - }, - "6": { - "then": "De ondergrond is onverhard" - }, - "7": { - "then": "De ondergrond is verhard" - } - }, - "question": "Wat is de ondergrond van deze speeltuin?
Indien er verschillende ondergronden zijn, neem de meest voorkomende", - "render": "De ondergrond is {surface}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Speeltuin {name}" - } - }, - "render": "Speeltuin" - } - }, - "public_bookcase": { - "description": "Een straatkastje met boeken voor iedereen", - "filter": { - "2": { - "options": { - "0": { - "question": "Binnen of buiten" - } - } - } - }, - "name": "Boekenruilkastjes", - "presets": { - "0": { - "title": "Boekenruilkast" - } - }, - "tagRenderings": { - "bookcase-booktypes": { - "mappings": { - "0": { - "then": "Voornamelijk kinderboeken" - }, - "1": { - "then": "Voornamelijk boeken voor volwassenen" - }, - "2": { - "then": "Boeken voor zowel kinderen als volwassenen" - } - }, - "question": "Voor welke doelgroep zijn de meeste boeken in dit boekenruilkastje?" - }, - "bookcase-is-accessible": { - "mappings": { - "0": { - "then": "Publiek toegankelijk" - }, - "1": { - "then": "Enkel toegankelijk voor klanten" - } - }, - "question": "Is dit boekenruilkastje publiek toegankelijk?" - }, - "bookcase-is-indoors": { - "mappings": { - "0": { - "then": "Dit boekenruilkastje staat binnen" - }, - "1": { - "then": "Dit boekenruilkastje staat buiten" - }, - "2": { - "then": "Dit boekenruilkastje staat buiten" - } - }, - "question": "Staat dit boekenruilkastje binnen of buiten?" - }, - "public_bookcase-brand": { - "mappings": { - "0": { - "then": "Deel van het netwerk 'Little Free Library'" - }, - "1": { - "then": "Dit boekenruilkastje maakt geen deel uit van een netwerk" - } - }, - "question": "Is dit boekenruilkastje deel van een netwerk?", - "render": "Dit boekenruilkastje is deel van het netwerk {brand}" - }, - "public_bookcase-capacity": { - "question": "Hoeveel boeken passen er in dit boekenruilkastje?", - "render": "Er passen {capacity} boeken" - }, - "public_bookcase-name": { - "mappings": { - "0": { - "then": "Dit boekenruilkastje heeft geen naam" - } - }, - "question": "Wat is de naam van dit boekenuilkastje?", - "render": "De naam van dit boekenruilkastje is {name}" - }, - "public_bookcase-operator": { - "question": "Wie is verantwoordelijk voor dit boekenruilkastje?", - "render": "Onderhouden door {operator}" - }, - "public_bookcase-ref": { - "mappings": { - "0": { - "then": "Dit boekenruilkastje maakt geen deel uit van een netwerk" - } - }, - "question": "Wat is het referentienummer van dit boekenruilkastje?", - "render": "Het referentienummer binnen {brand} is {ref}" - }, - "public_bookcase-start_date": { - "question": "Op welke dag werd dit boekenruilkastje geinstalleerd?", - "render": "Geplaatst op {start_date}" - }, - "public_bookcase-website": { - "question": "Is er een website over dit boekenruilkastje?", - "render": "Meer info op de website" - } - }, - "title": { - "mappings": { - "0": { - "then": "Boekenruilkast {name}" - } - }, - "render": "Boekenruilkast" - } - }, - "shops": { - "description": "Een winkel", - "name": "Winkel", - "presets": { - "0": { - "description": "Voeg een nieuwe winkel toe", - "title": "Winkel" - } - }, - "tagRenderings": { - "shops-email": { - "question": "Wat is het e-mailadres van deze winkel?", - "render": "{email}" - }, - "shops-name": { - "question": "Wat is de naam van deze winkel?" - }, - "shops-opening_hours": { - "question": "Wat zijn de openingsuren van deze winkel?", - "render": "{opening_hours_table(opening_hours)}" - }, - "shops-phone": { - "question": "Wat is het telefoonnummer?", - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "0": { - "then": "Gemakswinkel" - }, - "1": { - "then": "Supermarkt" - }, - "2": { - "then": "Kledingwinkel" - }, - "3": { - "then": "Kapper" - }, - "4": { - "then": "Bakkerij" - }, - "5": { - "then": "Autogarage" - }, - "6": { - "then": "Autodealer" - } - } - }, - "shops-website": { - "question": "Wat is de website van deze winkel?" - } - }, - "title": { - "render": "Winkel" - } - }, - "slow_roads": { - "name": "Paadjes, trage wegen en autoluwe straten", - "tagRenderings": { - "explanation": { - "mappings": { - "1": { - "then": "Dit is een brede, autovrije straat" - }, - "2": { - "then": "Dit is een voetpaadje" - }, - "3": { - "then": "Dit is een wegeltje of bospad" - }, - "4": { - "then": "Dit is een ruiterswegel" - }, - "5": { - "then": "Dit is een tractorspoor of weg om landbouwgrond te bereikken" - } - } - }, - "slow_roads-surface": { - "mappings": { - "0": { - "then": "De ondergrond is gras" - }, - "1": { - "then": "De ondergrond is aarde" - }, - "2": { - "then": "De ondergrond is onverhard" - }, - "3": { - "then": "De ondergrond is zand" - }, - "4": { - "then": "De ondergrond bestaat uit stoeptegels" - }, - "5": { - "then": "De ondergrond is asfalt" - }, - "6": { - "then": "De ondergrond is beton" - }, - "7": { - "then": "De ondergrond is verhard" - } - }, - "question": "Wat is de wegverharding van dit pad?", - "render": "De ondergrond is {surface}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "Voetpad" - }, - "2": { - "then": "Fietspad" - }, - "3": { - "then": "Voetgangersstraat" - }, - "4": { - "then": "Woonerf" - } - }, - "render": "Trage weg" - } - }, - "sport_pitch": { - "description": "Een sportterrein", - "name": "Sportterrein", - "presets": { - "0": { - "title": "Ping-pong tafel" - }, - "1": { - "title": "Sportterrein" - } - }, - "tagRenderings": { - "sport-pitch-access": { - "mappings": { - "0": { - "then": "Publiek toegankelijk" - }, - "1": { - "then": "Beperkt toegankelijk (enkel na reservatie, tijdens bepaalde uren, ...)" - }, - "2": { - "then": "Enkel toegankelijk voor leden van de bijhorende sportclub" - }, - "3": { - "then": "Privaat en niet toegankelijk" - } - }, - "question": "Is dit sportterrein publiek toegankelijk?" - }, - "sport-pitch-reservation": { - "mappings": { - "0": { - "then": "Reserveren is verplicht om gebruik te maken van dit sportterrein" - }, - "1": { - "then": "Reserveren is sterk aangeraden om gebruik te maken van dit sportterrein" - }, - "2": { - "then": "Reserveren is mogelijk, maar geen voorwaarde" - }, - "3": { - "then": "Reserveren is niet mogelijk" - } - }, - "question": "Moet men reserveren om gebruik te maken van dit sportveld?" - }, - "sport_pitch-email": { - "question": "Wat is het email-adres van de bevoegde dienst of uitbater?" - }, - "sport_pitch-opening_hours": { - "mappings": { - "1": { - "then": "24/7 toegankelijk" - } - }, - "question": "Wanneer is dit sportveld toegankelijk?" - }, - "sport_pitch-phone": { - "question": "Wat is het telefoonnummer van de bevoegde dienst of uitbater?" - }, - "sport_pitch-sport": { - "mappings": { - "0": { - "then": "Hier kan men basketbal spelen" - }, - "1": { - "then": "Hier kan men voetbal spelen" - }, - "2": { - "then": "Dit is een pingpongtafel" - }, - "3": { - "then": "Hier kan men tennis spelen" - }, - "4": { - "then": "Hier kan men korfbal spelen" - }, - "5": { - "then": "Hier kan men basketbal beoefenen" - } - }, - "question": "Welke sporten kan men hier beoefenen?", - "render": "Hier kan men {sport} beoefenen" - }, - "sport_pitch-surface": { - "mappings": { - "0": { - "then": "De ondergrond is gras" - }, - "1": { - "then": "De ondergrond is zand" - }, - "2": { - "then": "De ondergrond bestaat uit stoeptegels" - }, - "3": { - "then": "De ondergrond is asfalt" - }, - "4": { - "then": "De ondergrond is beton" - } - }, - "question": "Wat is de ondergrond van dit sportveld?", - "render": "De ondergrond is {surface}" - } - }, - "title": { - "render": "Sportterrein" - } - }, - "street_lamps": { - "name": "Straatlantaarns", - "presets": { - "0": { - "title": "straatlantaarn" - } - }, - "tagRenderings": { - "colour": { - "mappings": { - "0": { - "then": "Deze lantaarn geeft wit licht" - }, - "1": { - "then": "Deze lantaarn geeft groen licht" - }, - "2": { - "then": "Deze lantaarn geeft oranje licht" - } - }, - "question": "Wat voor kleur licht geeft deze lantaarn?", - "render": "Deze lantaarn geeft {light:colour} licht" - }, - "count": { - "mappings": { - "0": { - "then": "Deze lantaarn heeft 1 lamp" - }, - "1": { - "then": "Deze lantaarn heeft 2 lampen" - } - }, - "question": "Hoeveel lampen heeft deze lantaarn?", - "render": "Deze lantaarn heeft {light:count} lampen" - }, - "direction": { - "question": "Waar is deze lamp heengericht?", - "render": "Deze lantaarn is gericht naar {light:direction}" - }, - "lamp_mount": { - "mappings": { - "0": { - "then": "Deze lantaarn zit boven op een rechte paal" - }, - "1": { - "then": "Deze lantaarn zit aan het eind van een gebogen paal" - } - }, - "question": "Hoe zit deze lantaarn aan de paal?" - }, - "lit": { - "mappings": { - "0": { - "then": "Deze lantaarn is 's nachts verlicht" - }, - "1": { - "then": "Deze lantaarn is 24/7 verlicht" - }, - "2": { - "then": "Deze lantaarn is verlicht op basis van beweging" - }, - "3": { - "then": "Deze lantaarn is verlicht op verzoek (bijv. met een drukknop)" - } - }, - "question": "Wanneer is deze lantaarn verlicht?" - }, - "method": { - "mappings": { - "0": { - "then": "Deze lantaarn is elektrisch verlicht" - }, - "1": { - "then": "Deze lantaarn gebruikt LEDs" - }, - "2": { - "then": "Deze lantaarn gebruikt gloeilampen" - }, - "3": { - "then": "Deze lantaarn gebruikt halogeen verlichting" - }, - "4": { - "then": "Deze lantaarn gebruikt gasontladingslampen (onbekend type)" - }, - "5": { - "then": "Deze lantaarn gebruikt een kwiklamp (enigszins blauwachtig)" - }, - "6": { - "then": "Deze lantaarn gebruikt metaalhalidelampen" - }, - "7": { - "then": "Deze lantaarn gebruikt fluorescentieverlichting (TL en spaarlamp)" - }, - "8": { - "then": "Deze lantaarn gebruikt natriumlampen (onbekend type)" - }, - "9": { - "then": "Deze lantaarn gebruikt lagedruknatriumlampen (monochroom oranje)" - }, - "10": { - "then": "Deze lantaarn gebruikt hogedruknatriumlampen (oranje met wit)" - }, - "11": { - "then": "Deze lantaarn wordt verlicht met gas" - } - }, - "question": "Wat voor verlichting gebruikt deze lantaarn?" - }, - "ref": { - "question": "Wat is het nummer van deze straatlantaarn?", - "render": "Deze straatlantaarn heeft het nummer {ref}" - }, - "support": { - "mappings": { - "0": { - "then": "Deze lantaarn hangt aan kabels" - }, - "1": { - "then": "Deze lantaarn hangt aan een plafond" - }, - "2": { - "then": "Deze lantaarn zit in de grond" - }, - "3": { - "then": "Deze lantaarn zit op een korte paal (meestal < 1.5m)" - }, - "4": { - "then": "Deze lantaarn zit op een paal" - }, - "5": { - "then": "Deze lantaarn hangt direct aan de muur" - }, - "6": { - "then": "Deze lantaarn hangt aan de muur met een metalen balk" - } - }, - "question": "Hoe is deze straatlantaarn gemonteerd?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Straatlantaarn {ref}" - } - }, - "render": "Straatlantaarn" - } - }, - "surveillance_camera": { - "name": "Bewakingscamera's", - "tagRenderings": { - "Camera type: fixed; panning; dome": { - "mappings": { - "0": { - "then": "Een vaste camera" - }, - "1": { - "then": "Een dome (bolvormige camera die kan draaien)" - }, - "2": { - "then": "Een camera die (met een motor) van links naar rechts kan draaien" - } - }, - "question": "Wat voor soort camera is dit?" - }, - "Indoor camera? This isn't clear for 'public'-cameras": { - "mappings": { - "0": { - "then": "Deze camera bevindt zich binnen" - }, - "1": { - "then": "Deze camera bevindt zich buiten" - }, - "2": { - "then": "Deze camera bevindt zich waarschijnlijk buiten" - } - }, - "question": "Bevindt de bewaakte publieke ruimte camera zich binnen of buiten?" - }, - "Level": { - "question": "Op welke verdieping bevindt deze camera zich?", - "render": "Bevindt zich op verdieping {level}" - }, - "Operator": { - "question": "Wie beheert deze bewakingscamera?", - "render": "Beheer door {operator}" - }, - "Surveillance type: public, outdoor, indoor": { - "mappings": { - "0": { - "then": "Bewaking van de publieke ruilmte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel..." - }, - "1": { - "then": "Een buitenruimte met privaat karakter (zoals een privÊ-oprit, een parking, tankstation, ...)" - }, - "2": { - "then": "Een private binnenruimte wordt bewaakt, bv. een winkel, een parkeergarage, ..." - } - }, - "question": "Wat soort bewaking wordt hier uitgevoerd?" - }, - "Surveillance:zone": { - "mappings": { - "0": { - "then": "Bewaakt een parking" - }, - "1": { - "then": "Bewaakt het verkeer" - }, - "2": { - "then": "Bewaakt een ingang" - }, - "3": { - "then": "Bewaakt een gang" - }, - "4": { - "then": "Bewaakt een perron of bushalte" - }, - "5": { - "then": "Bewaakt een winkel" - } - }, - "question": "Wat wordt hier precies bewaakt?", - "render": "Bewaakt een {surveillance:zone}" - }, - "camera:mount": { - "mappings": { - "0": { - "then": "Deze camera hangt aan een muur" - }, - "1": { - "then": "Deze camera staat op een paal" - }, - "2": { - "then": "Deze camera hangt aan het plafond" - } - }, - "question": "Hoe is deze camera geplaatst?", - "render": "Montage: {camera:mount}" - }, - "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view": { - "mappings": { - "0": { - "then": "Filmt in kompasrichting {direction}" - } - }, - "question": "In welke geografische richting filmt deze camera?", - "render": "Filmt in kompasrichting {camera:direction}" - } - }, - "title": { - "render": "Bewakingscamera" - } - }, - "toilet": { - "filter": { - "0": { - "options": { - "0": { - "question": "Rolstoel toegankelijk" - } - } - }, - "1": { - "options": { - "0": { - "question": "Heeft een luiertafel" - } - } - }, - "2": { - "options": { - "0": { - "question": "Gratis toegankelijk" - } - } - } - }, - "name": "Toiletten", - "presets": { - "0": { - "description": "Een publieke toilet", - "title": "toilet" - }, - "1": { - "description": "Deze toiletten hebben op zijn minst ÊÊn rolstoeltoegankelijke WC", - "title": "een rolstoeltoegankelijke toilet" - } - }, - "tagRenderings": { - "toilet-access": { - "mappings": { - "0": { - "then": "Publiek toegankelijk" - }, - "1": { - "then": "Enkel toegang voor klanten" - }, - "2": { - "then": "Niet toegankelijk" - }, - "3": { - "then": "Toegankelijk na het vragen van de sleutel" - }, - "4": { - "then": "Publiek toegankelijk" - } - }, - "question": "Zijn deze toiletten publiek toegankelijk?", - "render": "Toegankelijkheid is {access}" - }, - "toilet-changing_table:location": { - "mappings": { - "0": { - "then": "De luiertafel bevindt zich in de vrouwentoiletten " - }, - "1": { - "then": "De luiertafel bevindt zich in de herentoiletten " - }, - "2": { - "then": "De luiertafel bevindt zich in de rolstoeltoegankelijke toilet " - }, - "3": { - "then": "De luiertafel bevindt zich in een daartoe voorziene kamer " - } - }, - "question": "Waar bevindt de luiertafel zich?", - "render": "De luiertafel bevindt zich in {changing_table:location}" - }, - "toilet-charge": { - "question": "Hoeveel moet men betalen om deze toiletten te gebruiken?", - "render": "De toiletten gebruiken kost {charge}" - }, - "toilet-handwashing": { - "mappings": { - "0": { - "then": "Deze toiletten hebben een lavabo waar men de handen kan wassen" - }, - "1": { - "then": "Deze toiletten hebben geen lavabo waar men de handen kan wassen" - } - }, - "question": "Hebben deze toiletten een lavabo om de handen te wassen?" - }, - "toilet-has-paper": { - "mappings": { - "0": { - "then": "Deze toilet is voorzien van toiletpapier" - }, - "1": { - "then": "Je moet je eigen toiletpapier meebrengen naar deze toilet" - } - }, - "question": "Moet je je eigen toiletpappier meenemen naar deze toilet?" - }, - "toilets-changing-table": { - "mappings": { - "0": { - "then": "Er is een luiertafel" - }, - "1": { - "then": "Geen luiertafel" - } - }, - "question": "Is er een luiertafel beschikbaar?" - }, - "toilets-fee": { - "mappings": { - "0": { - "then": "Men moet betalen om deze toiletten te gebruiken" - }, - "1": { - "then": "Gratis te gebruiken" - } - }, - "question": "Zijn deze toiletten gratis te gebruiken?" - }, - "toilets-type": { - "mappings": { - "0": { - "then": "Er zijn enkel WC's om op te zitten" - }, - "1": { - "then": "Er zijn enkel urinoirs" - }, - "2": { - "then": "Er zijn enkel hurktoiletten" - }, - "3": { - "then": "Er zijn zowel urinoirs als zittoiletten" - } - }, - "question": "Welke toiletten zijn dit?" - }, - "toilets-wheelchair": { - "mappings": { - "0": { - "then": "Er is een toilet voor rolstoelgebruikers" - }, - "1": { - "then": "Niet toegankelijk voor rolstoelgebruikers" - } - }, - "question": "Is er een rolstoeltoegankelijke toilet voorzien?" - } - }, - "title": { - "render": "Toilet" - } - }, - "trail": { - "description": "Aangeduide wandeltochten", - "name": "Wandeltochten", - "tagRenderings": { - "Color": { - "mappings": { - "0": { - "then": "Blauwe wandeling" - }, - "1": { - "then": "Rode wandeling" - }, - "2": { - "then": "Groene wandeling" - }, - "3": { - "then": "Gele wandeling" - } - }, - "question": "Welke kleur heeft deze wandeling?", - "render": "Deze wandeling heeft kleur {colour}" - }, - "Name": { - "question": "Wat is de naam van deze wandeling?", - "render": "Deze wandeling heet {name}" - }, - "Operator tag": { - "mappings": { - "0": { - "then": "Dit gebied wordt beheerd door Natuurpunt" - }, - "1": { - "then": "Dit gebied wordt beheerd door {operator}" - } - }, - "question": "Wie beheert deze wandeltocht?", - "render": "Beheer door {operator}" - }, - "Wheelchair access": { - "mappings": { - "0": { - "then": "deze wandeltocht is toegankelijk met de rolstoel" - }, - "1": { - "then": "deze wandeltocht is niet toegankelijk met de rolstoel" - } - }, - "question": "Is deze wandeling toegankelijk met de rolstoel?" - }, - "pushchair access": { - "mappings": { - "0": { - "then": "deze wandeltocht is toegankelijk met de buggy" - }, - "1": { - "then": "deze wandeltocht is niet toegankelijk met de buggy" - } - }, - "question": "Is deze wandeltocht toegankelijk met de buggy?" - }, - "trail-length": { - "render": "Deze wandeling is {_length:km} kilometer lang" - } - }, - "title": { - "render": "Wandeltocht" - } - }, - "tree_node": { - "name": "Boom", - "presets": { - "0": { - "description": "Een boom van een soort die blaadjes heeft, bijvoorbeeld eik of populier.", - "title": "Loofboom" - }, - "1": { - "description": "Een boom van een soort met naalden, bijvoorbeeld den of spar.", - "title": "Naaldboom" - }, - "2": { - "description": "Wanneer je niet zeker bent of het nu een loof- of naaldboom is.", - "title": "Boom" - } - }, - "tagRenderings": { - "tree-decidouous": { - "mappings": { - "0": { - "then": "Bladverliezend: de boom is een periode van het jaar kaal." - }, - "1": { - "then": "Groenblijvend." - } - }, - "question": "Is deze boom groenblijvend of bladverliezend?" - }, - "tree-denotation": { - "mappings": { - "0": { - "then": "De boom valt op door zijn grootte of prominente locatie. Hij is nuttig voor navigatie." - }, - "1": { - "then": "De boom is een natuurlijk monument, bijvoorbeeld doordat hij bijzonder oud of van een waardevolle soort is." - }, - "2": { - "then": "De boom wordt voor landbouwdoeleinden gebruikt, bijvoorbeeld in een boomgaard." - }, - "3": { - "then": "De boom staat in een park of dergelijke (begraafplaats, schoolterrein, â€Ļ)." - }, - "4": { - "then": "De boom staat in de tuin bij een woning/flatgebouw." - }, - "5": { - "then": "Dit is een laanboom." - }, - "6": { - "then": "De boom staat in een woonkern." - }, - "7": { - "then": "De boom staat buiten een woonkern." - } - }, - "question": "Hoe significant is deze boom? Kies het eerste antwoord dat van toepassing is." - }, - "tree-height": { - "mappings": { - "0": { - "then": "Hoogte: {height} m" - } - }, - "render": "Hoogte: {height}" - }, - "tree-heritage": { - "mappings": { - "0": { - "then": "\"\"/ Erkend als houtig erfgoed door Onroerend Erfgoed Vlaanderen" - }, - "1": { - "then": "Erkend als natuurlijk erfgoed door Directie Cultureel Erfgoed Brussel" - }, - "2": { - "then": "Erkend als erfgoed door een andere organisatie" - }, - "3": { - "then": "Niet erkend als erfgoed" - }, - "4": { - "then": "Erkend als erfgoed door een andere organisatie" - } - }, - "question": "Is deze boom erkend als erfgoed?" - }, - "tree-leaf_type": { - "mappings": { - "0": { - "then": "\"\"/ Loofboom" - }, - "1": { - "then": "\"\"/ Naaldboom" - }, - "2": { - "then": "\"\"/ Permanent bladloos" - } - }, - "question": "Is dit een naald- of loofboom?" - }, - "tree_node-name": { - "mappings": { - "0": { - "then": "De boom heeft geen naam." - } - }, - "question": "Heeft de boom een naam?", - "render": "Naam: {name}" - }, - "tree_node-ref:OnroerendErfgoed": { - "question": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?", - "render": "\"\"/ Onroerend Erfgoed-ID: {ref:OnroerendErfgoed}" - }, - "tree_node-wikidata": { - "question": "Wat is het Wikidata-ID van deze boom?", - "render": "\"\"/ Wikidata: {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Boom" - } - }, - "viewpoint": { - "description": "Een mooi uitzicht - ideaal om een foto toe te voegen wanneer iets niet in een andere categorie past", - "name": "Uitzicht", - "presets": { - "0": { - "title": "Uitzicht" - } - }, - "tagRenderings": { - "viewpoint-description": { - "question": "Zijn er bijzonderheden die je wilt toevoegen?" - } - }, - "title": { - "render": "Uitzicht" - } - }, - "village_green": { - "name": "Speelweide", - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Speelweide" - } - }, - "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}" - } - }, - "render": "{name}" - } - }, - "waste_basket": { - "description": "Dit is een publieke vuilnisbak waar je je afval kan weggooien.", - "iconSize": { - "mappings": { - "0": { - "then": "Vuilnisbak" - } - } - }, - "mapRendering": { - "0": { - "iconSize": { - "mappings": { - "0": { - "then": "Vuilnisbak" - } - } - } - } - }, - "name": "Vuilnisbak", - "presets": { - "0": { - "title": "Vuilnisbak" - } - }, - "tagRenderings": { - "dispensing_dog_bags": { - "mappings": { - "0": { - "then": "Deze vuilnisbak heeft een verdeler voor hondenpoepzakjes" - }, - "1": { - "then": "Deze vuilnisbak heeft geenverdeler voor hondenpoepzakjes" - }, - "2": { - "then": "Deze vuilnisbaak heeft waarschijnlijk geen verdeler voor hondenpoepzakjes" - } - }, - "question": "Heeft deze vuilnisbak een verdeler voor hondenpoepzakjes?" - }, - "waste-basket-waste-types": { - "mappings": { - "0": { - "then": "Een vuilnisbak voor zwerfvuil" - }, - "1": { - "then": "Een vuilnisbak voor zwerfvuil" - }, - "2": { - "then": "Een vuilnisbak specifiek voor hondenuitwerpselen" - }, - "3": { - "then": "Een vuilnisbak voor sigarettenpeuken" - }, - "4": { - "then": "Een vuilnisbak voor (vervallen) medicatie en drugs" - }, - "5": { - "then": "Een vuilnisbak voor injectienaalden en andere scherpe voorwerpen" - } - }, - "question": "Wat voor soort vuilnisbak is dit?" - } - }, - "title": { - "render": "Vuilnisbak" - } - }, - "watermill": { - "description": "Watermolens", - "name": "Watermolens", - "tagRenderings": { - "Access tag": { - "mappings": { - "0": { - "then": "Vrij toegankelijk" - }, - "1": { - "then": "Niet toegankelijk" - }, - "2": { - "then": "Niet toegankelijk, want privÊgebied" - }, - "3": { - "then": "Toegankelijk, ondanks dat het privegebied is" - }, - "4": { - "then": "Enkel toegankelijk met een gids of tijdens een activiteit" - }, - "5": { - "then": "Toegankelijk mits betaling" - } - }, - "question": "Is dit gebied toegankelijk?", - "render": "De toegankelijkheid van dit gebied is: {access:description}" - }, - "Operator tag": { - "mappings": { - "0": { - "then": "Dit gebied wordt beheerd door Natuurpunt" - }, - "1": { - "then": "Dit gebied wordt beheerd door {operator}" - } - }, - "question": "Wie beheert dit pad?", - "render": "Beheer door {operator}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name:nl}" - }, - "1": { - "then": "{name}" - } - }, - "render": "Watermolens" + "title": { + "mappings": { + "0": { + "then": "Kunstwerk {name}" } + }, + "render": "Kunstwerk" } + }, + "barrier": { + "description": "Hindernissen tijdens het fietsen, zoals paaltjes en fietshekjes", + "name": "Barrières", + "presets": { + "0": { + "description": "Een paaltje in de weg", + "title": "Paaltje" + }, + "1": { + "description": "Fietshekjes, voor het afremmen van fietsers", + "title": "Fietshekjes" + } + }, + "tagRenderings": { + "Bollard type": { + "mappings": { + "0": { + "then": "Verwijderbare paal" + }, + "1": { + "then": "Vaste paal" + }, + "2": { + "then": "Paal die platgevouwen kan worden" + }, + "3": { + "then": "Flexibele paal, meestal plastic" + }, + "4": { + "then": "Verzonken poller" + } + }, + "question": "Wat voor soort paal is dit?" + }, + "Cycle barrier type": { + "mappings": { + "0": { + "then": "Enkelvoudig, slechts twee hekjes met ruimte ertussen " + }, + "1": { + "then": "Dubbel, twee hekjes achter elkaar " + }, + "2": { + "then": "Drievoudig, drie hekjes achter elkaar " + }, + "3": { + "then": "Knijppoort, ruimte is smaller aan de top, dan aan de bodem " + } + }, + "question": "Wat voor fietshekjes zijn dit?" + }, + "MaxWidth": { + "question": "Hoe breed is de ruimte naast de barrière?", + "render": "Maximumbreedte: {maxwidth:physical} m" + }, + "Overlap (cyclebarrier)": { + "question": "Hoeveel overlappen de barrières?" + }, + "Space between barrier (cyclebarrier)": { + "question": "Hoeveel ruimte is er tussen de barrières (langs de lengte van de weg)?", + "render": "Ruimte tussen barrières (langs de lengte van de weg): {width:separation} m" + }, + "Width of opening (cyclebarrier)": { + "question": "Hoe breed is de smalste opening naast de barrières?", + "render": "Breedte van de opening: {width:opening} m" + }, + "bicycle=yes/no": { + "mappings": { + "0": { + "then": "Een fietser kan hier langs." + }, + "1": { + "then": "Een fietser kan hier niet langs." + } + }, + "question": "Kan een fietser langs deze barrière?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Paaltje" + }, + "1": { + "then": "Fietshekjes" + } + }, + "render": "Barrière" + } + }, + "bench": { + "name": "Zitbanken", + "presets": { + "0": { + "title": "zitbank" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Heeft een rugleuning" + }, + "1": { + "then": "Rugleuning ontbreekt" + } + }, + "question": "Heeft deze zitbank een rugleuning?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "De kleur is bruin" + }, + "1": { + "then": "De kleur is groen" + }, + "2": { + "then": "De kleur is grijs" + }, + "3": { + "then": "De kleur is wit" + }, + "4": { + "then": "De kleur is rood" + }, + "5": { + "then": "De kleur is zwart" + }, + "6": { + "then": "De kleur is blauw" + }, + "7": { + "then": "De kleur is geel" + } + }, + "question": "Welke kleur heeft deze zitbank?", + "render": "Kleur: {colour}" + }, + "bench-direction": { + "question": "In welke richting kijk je wanneer je op deze zitbank zit?", + "render": "Wanneer je op deze bank zit, dan kijk je in {direction}°." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Gemaakt uit hout" + }, + "1": { + "then": "Gemaakt uit metaal" + }, + "2": { + "then": "Gemaakt uit steen" + }, + "3": { + "then": "Gemaakt uit beton" + }, + "4": { + "then": "Gemaakt uit plastiek" + }, + "5": { + "then": "Gemaakt uit staal" + } + }, + "question": "Uit welk materiaal is het zitgedeelte van deze zitbank gemaakt?", + "render": "Gemaakt van {material}" + }, + "bench-seats": { + "question": "Hoeveel zitplaatsen heeft deze bank?", + "render": "{seats} zitplaatsen" + }, + "bench-survey:date": { + "question": "Wanneer is deze laatste bank laatst gesurveyed?", + "render": "Deze bank is laatst gesurveyd op {survey:date}" + } + }, + "title": { + "render": "Zitbank" + } + }, + "bench_at_pt": { + "name": "Zitbanken aan bushaltes", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "1": { + "then": "Leunbank" + } + }, + "question": "Wat voor soort bank is dit?" + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Zitbank aan een bushalte" + }, + "1": { + "then": "Zitbank in een schuilhokje" + } + }, + "render": "Zitbank" + } + }, + "bicycle_library": { + "description": "Een plaats waar men voor langere tijd een fiets kan lenen", + "name": "Fietsbibliotheek", + "presets": { + "0": { + "description": "Een fietsbieb heeft een collectie fietsen die leden mogen lenen", + "title": "Bicycle library" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "Aanbod voor kinderen" + }, + "1": { + "then": "Aanbod voor volwassenen" + }, + "2": { + "then": "Aanbod voor personen met een handicap" + } + }, + "question": "Voor wie worden hier fietsen aangeboden?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "Een fiets huren is gratis" + }, + "1": { + "then": "Een fiets huren kost â‚Ŧ20/jaar en â‚Ŧ20 waarborg" + } + }, + "question": "Hoeveel kost het huren van een fiets?", + "render": "Een fiets huren kost {charge}" + }, + "bicycle_library-name": { + "question": "Wat is de naam van deze fietsbieb?", + "render": "Deze fietsbieb heet {name}" + } + }, + "title": { + "render": "Fietsbibliotheek" + } + }, + "bicycle_tube_vending_machine": { + "name": "Fietsbanden-verkoopsautomaat", + "presets": { + "0": { + "title": "Fietsbanden-verkoopsautomaat" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Deze verkoopsautomaat werkt" + }, + "1": { + "then": "Deze verkoopsautomaat is kapot" + }, + "2": { + "then": "Deze verkoopsautomaat is uitgeschakeld" + } + }, + "question": "Is deze verkoopsautomaat nog steeds werkende?", + "render": "Deze verkoopsautomaat is {operational_status}" + } + }, + "title": { + "render": "Fietsbanden-verkoopsautomaat" + } + }, + "bike_cafe": { + "name": "FietscafÊ", + "presets": { + "0": { + "title": "FietscafÊ" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "Dit fietscafÊ biedt een fietspomp aan voor eender wie" + }, + "1": { + "then": "Dit fietscafÊ biedt geen fietspomp aan voor iedereen" + } + }, + "question": "Biedt dit fietscafÊ een fietspomp aan voor iedereen?" + }, + "bike_cafe-email": { + "question": "Wat is het email-adres van {name}?" + }, + "bike_cafe-name": { + "question": "Wat is de naam van dit fietscafÊ?", + "render": "Dit fietscafÊ heet {name}" + }, + "bike_cafe-opening_hours": { + "question": "Wanneer is dit fietscafÊ geopend?" + }, + "bike_cafe-phone": { + "question": "Wat is het telefoonnummer van {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "Dit fietscafÊ herstelt fietsen" + }, + "1": { + "then": "Dit fietscafÊ herstelt geen fietsen" + } + }, + "question": "Herstelt dit fietscafÊ fietsen?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "Dit fietscafÊ biedt gereedschap aan om je fiets zelf te herstellen" + }, + "1": { + "then": "Dit fietscafÊ biedt geen gereedschap aan om je fiets zelf te herstellen" + } + }, + "question": "Biedt dit fietscafÊ gereedschap aan om je fiets zelf te herstellen?" + }, + "bike_cafe-website": { + "question": "Wat is de website van {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "FietscafÊ {name}" + } + }, + "render": "FietscafÊ" + } + }, + "bike_cleaning": { + "name": "Fietsschoonmaakpunt", + "presets": { + "0": { + "title": "Fietsschoonmaakpunt" + } + }, + "title": { + "mappings": { + "0": { + "then": "Fietsschoonmaakpunt {name}" + } + }, + "render": "Fietsschoonmaakpunt" + } + }, + "bike_parking": { + "name": "Fietsparking", + "presets": { + "0": { + "title": "Fietsparking" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "Publiek toegankelijke fietsenstalling" + }, + "1": { + "then": "Klanten van de zaak of winkel" + }, + "2": { + "then": "Private fietsenstalling van een school, een bedrijf, ..." + } + }, + "question": "Wie mag er deze fietsenstalling gebruiken?", + "render": "{access}" + }, + "Bicycle parking type": { + "mappings": { + "0": { + "then": "Nietjes " + }, + "1": { + "then": "Wielrek/lussen " + }, + "2": { + "then": "Stuurhouder " + }, + "3": { + "then": "Rek " + }, + "4": { + "then": "Dubbel (twee verdiepingen) " + }, + "5": { + "then": "Schuur " + }, + "6": { + "then": "Paal met ring " + }, + "7": { + "then": "Een oppervlakte die gemarkeerd is om fietsen te parkeren" + } + }, + "question": "Van welk type is deze fietsparking?", + "render": "Dit is een fietsparking van het type: {bicycle_parking}" + }, + "Capacity": { + "question": "Hoeveel fietsen kunnen in deze fietsparking (inclusief potentiÃĢel bakfietsen)?", + "render": "Plaats voor {capacity} fietsen" + }, + "Cargo bike capacity?": { + "question": "Voor hoeveel bakfietsen heeft deze fietsparking plaats?", + "render": "Deze parking heeft plaats voor {capacity:cargo_bike} fietsen" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "Deze parking heeft plaats voor bakfietsen" + }, + "1": { + "then": "Er zijn speciale plaatsen voorzien voor bakfietsen" + }, + "2": { + "then": "Je mag hier geen bakfietsen parkeren" + } + }, + "question": "Heeft deze fietsparking plaats voor bakfietsen?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "Deze parking is overdekt (er is een afdak)" + }, + "1": { + "then": "Deze parking is niet overdekt" + } + }, + "question": "Is deze parking overdekt? Selecteer ook \"overdekt\" voor fietsparkings binnen een gebouw." + }, + "Underground?": { + "mappings": { + "0": { + "then": "Ondergrondse parking" + }, + "1": { + "then": "Parking op de begane grond" + }, + "2": { + "then": "Dakparking" + }, + "3": { + "then": "Parking op de begane grond" + }, + "4": { + "then": "Dakparking" + } + }, + "question": "Wat is de relatieve locatie van deze parking??" + } + }, + "title": { + "render": "Fietsparking" + } + }, + "bike_repair_station": { + "name": "Fietspunten (herstel, pomp of allebei)", + "presets": { + "0": { + "description": "Een apparaat waar je je fietsbanden kan oppompen, beschikbaar in de publieke ruimte. De fietspomp in je kelder telt dus niet.

Voorbeelden

Examples of bicycle pumps

", + "title": "Fietspomp" + }, + "1": { + "description": "Een apparaat met zowel gereedschap om je fiets te herstellen, met een pomp. Deze zijn op een vastgemaakt op een plaats in de publieke ruimte, bv. aan een paal.

Voorbeeld

", + "title": "Herstelpunt en pomp" + }, + "2": { + "title": "Herstelpunt zonder pomp" + } + }, + "tagRenderings": { + "Email maintainer": { + "render": "Rapporteer deze fietspomp als kapot" + }, + "Operational status": { + "mappings": { + "0": { + "then": "De fietspomp is kapot" + }, + "1": { + "then": "De fietspomp werkt nog" + } + }, + "question": "Werkt de fietspomp nog?" + }, + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "Er is enkel een pomp aanwezig" + }, + "1": { + "then": "Er is enkel gereedschap aanwezig (schroevendraaier, tang...)" + }, + "2": { + "then": "Er is zowel een pomp als gereedschap aanwezig" + } + }, + "question": "Welke functies biedt dit fietspunt?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "Er is een reparatieset voor je ketting" + }, + "1": { + "then": "Er is geen reparatieset voor je ketting" + } + }, + "question": "Heeft dit herstelpunt een speciale reparatieset voor je ketting?" + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "Er is een haak of standaard" + }, + "1": { + "then": "Er is geen haak of standaard" + } + }, + "question": "Heeft dit herstelpunt een haak of standaard om je fiets op te hangen/zetten?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Manuele pomp" + }, + "1": { + "then": "Electrische pomp" + } + }, + "question": "Is dit een electrische fietspomp?" + }, + "bike_repair_station-email": { + "question": "Wat is het email-adres van de beheerder?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "Er is een luchtdrukmeter" + }, + "1": { + "then": "Er is geen luchtdrukmeter" + }, + "2": { + "then": "Er is een luchtdrukmeter maar die is momenteel defect" + } + }, + "question": "Heeft deze pomp een luchtdrukmeter?" + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "Dag en nacht open" + }, + "1": { + "then": "Dag en nacht open" + } + }, + "question": "Wanneer is dit fietsherstelpunt open?" + }, + "bike_repair_station-operator": { + "question": "Wie beheert deze fietspomp?", + "render": "Beheer door {operator}" + }, + "bike_repair_station-phone": { + "question": "Wat is het telefoonnummer van de beheerder?" + }, + "bike_repair_station-valves": { + "mappings": { + "0": { + "then": "Sclaverand (ook gekend als Presta)" + }, + "1": { + "then": "Dunlop" + }, + "2": { + "then": "Schrader (auto's)" + } + }, + "question": "Welke ventielen werken er met de pomp?", + "render": "Deze pomp werkt met de volgende ventielen: {valves}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Herstelpunt" + }, + "1": { + "then": "Herstelpunt" + }, + "2": { + "then": "Kapotte fietspomp" + }, + "3": { + "then": "Fietspomp {name}" + }, + "4": { + "then": "Fietspomp" + } + }, + "render": "Herstelpunt met pomp" + } + }, + "bike_shop": { + "description": "Een winkel die hoofdzakelijk fietsen en fietstoebehoren verkoopt", + "name": "Fietszaak", + "presets": { + "0": { + "title": "Fietszaak" + } + }, + "tagRenderings": { + "bike_repair_bike-pump-service": { + "mappings": { + "0": { + "then": "Deze winkel biedt een fietspomp aan voor iedereen" + }, + "1": { + "then": "Deze winkel biedt geen fietspomp aan voor eender wie" + }, + "2": { + "then": "Er is een fietspomp, deze is apart aangeduid" + } + }, + "question": "Biedt deze winkel een fietspomp aan voor iedereen?" + }, + "bike_repair_bike-wash": { + "mappings": { + "0": { + "then": "Deze winkel biedt fietsschoonmaak aan" + }, + "1": { + "then": "Deze winkel biedt een installatie aan om zelf je fiets schoon te maken" + }, + "2": { + "then": "Deze winkel biedt geen fietsschoonmaak aan" + } + }, + "question": "Biedt deze winkel een fietsschoonmaak aan?" + }, + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Deze winkel verhuurt fietsen" + }, + "1": { + "then": "Deze winkel verhuurt geen fietsen" + } + }, + "question": "Verhuurt deze winkel fietsen?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Deze winkel herstelt fietsen" + }, + "1": { + "then": "Deze winkel herstelt geen fietsen" + }, + "2": { + "then": "Deze winkel herstelt enkel fietsen die hier werden gekocht" + }, + "3": { + "then": "Deze winkel herstelt enkel fietsen van een bepaald merk" + } + }, + "question": "Herstelt deze winkel fietsen?" + }, + "bike_repair_second-hand-bikes": { + "mappings": { + "0": { + "then": "Deze winkel verkoopt tweedehands fietsen" + }, + "1": { + "then": "Deze winkel verkoopt geen tweedehands fietsen" + }, + "2": { + "then": "Deze winkel verkoopt enkel tweedehands fietsen" + } + }, + "question": "Verkoopt deze winkel tweedehands fietsen?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "Deze winkel verkoopt fietsen" + }, + "1": { + "then": "Deze winkel verkoopt geen fietsen" + } + }, + "question": "Verkoopt deze fietszaak fietsen?" + }, + "bike_repair_tools-service": { + "mappings": { + "0": { + "then": "Deze winkel biedt gereedschap aan om je fiets zelf te herstellen" + }, + "1": { + "then": "Deze winkel biedt geen gereedschap aan om je fiets zelf te herstellen" + }, + "2": { + "then": "Het gereedschap aan om je fiets zelf te herstellen is enkel voor als je de fiets er kocht of huurt" + } + }, + "question": "Biedt deze winkel gereedschap aan om je fiets zelf te herstellen?" + }, + "bike_shop-email": { + "question": "Wat is het email-adres van {name}?" + }, + "bike_shop-is-bicycle_shop": { + "render": "Deze winkel verkoopt {shop} en heeft fiets-gerelateerde activiteiten." + }, + "bike_shop-name": { + "question": "Wat is de naam van deze fietszaak?", + "render": "Deze fietszaak heet {name}" + }, + "bike_shop-phone": { + "question": "Wat is het telefoonnummer van {name}?" + }, + "bike_shop-website": { + "question": "Wat is de website van {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Sportwinkel {name}" + }, + "2": { + "then": "Fietsverhuur {name}" + }, + "3": { + "then": "Fietsenmaker {name}" + }, + "4": { + "then": "Fietswinkel {name}" + }, + "5": { + "then": "Fietszaak {name}" + } + }, + "render": "Fietszaak" + } + }, + "bike_themed_object": { + "name": "Fietsgerelateerd object", + "title": { + "mappings": { + "1": { + "then": "Wielerpiste" + } + }, + "render": "Fietsgerelateerd object" + } + }, + "binocular": { + "description": "Verrekijkers", + "name": "Verrekijkers", + "presets": { + "0": { + "description": "Een telescoop of verrekijker die op een vaste plaats gemonteerd staat waar iedereen door mag kijken. ", + "title": "verrekijker" + } + }, + "tagRenderings": { + "binocular-charge": { + "mappings": { + "0": { + "then": "Gratis te gebruiken" + } + }, + "question": "Hoeveel moet men betalen om deze verrekijker te gebruiken?", + "render": "Deze verrekijker gebruiken kost {charge}" + }, + "binocular-direction": { + "question": "Welke richting kijkt men uit als men door deze verrekijker kijkt?", + "render": "Kijkt richting {direction}°" + } + }, + "title": { + "render": "Verrekijker" + } + }, + "birdhide": { + "description": "Een vogelkijkhut", + "filter": { + "0": { + "options": { + "0": { + "question": "Rolstoeltoegankelijk" + } + } + }, + "1": { + "options": { + "0": { + "question": "Enkel overdekte kijkhutten" + } + } + } + }, + "mapRendering": { + "0": { + "icon": { + "render": "./assets/layers/birdhide/birdhide.svg" + } + } + }, + "name": "Vogelkijkhutten", + "presets": { + "0": { + "description": "Een overdekte hut waarbinnen er warm en droog naar vogels gekeken kan worden", + "title": "vogelkijkhut" + }, + "1": { + "description": "Een vogelkijkwand waarachter men kan staan om vogels te kijken", + "title": "vogelkijkwand" + } + }, + "size": { + "render": "40,40,center" + }, + "stroke": { + "render": "3" + }, + "tagRenderings": { + "bird-hide-shelter-or-wall": { + "mappings": { + "0": { + "then": "Vogelkijkwand" + }, + "1": { + "then": "Vogelkijkhut" + }, + "2": { + "then": "Vogelkijktoren" + }, + "3": { + "then": "Vogelkijkhut" + } + }, + "question": "Is dit een kijkwand of kijkhut?" + }, + "bird-hide-wheelchair": { + "mappings": { + "0": { + "then": "Er zijn speciale voorzieningen voor rolstoelen" + }, + "1": { + "then": "Een rolstoel raakt er vlot" + }, + "2": { + "then": "Je kan er raken met een rolstoel, maar het is niet makkelijk" + }, + "3": { + "then": "Niet rolstoeltoegankelijk" + } + }, + "question": "Is deze vogelkijkplaats rolstoeltoegankelijk?" + }, + "birdhide-operator": { + "mappings": { + "0": { + "then": "Beheer door Natuurpunt" + }, + "1": { + "then": "Beheer door het Agentschap Natuur en Bos " + } + }, + "question": "Wie beheert deze vogelkijkplaats?", + "render": "Beheer door {operator}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "Vogelkijkhut {name}" + }, + "2": { + "then": "Vogelkijkwand {name}" + } + }, + "render": "Vogelkijkplaats" + } + }, + "cafe_pub": { + "filter": { + "0": { + "options": { + "0": { + "question": "Nu geopened" + } + } + } + }, + "name": "CafÊs", + "presets": { + "0": { + "description": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk ", + "title": "bruin cafe of kroeg" + }, + "1": { + "description": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek", + "title": "bar" + }, + "2": { + "description": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen.", + "title": "cafe" + } + }, + "tagRenderings": { + "Classification": { + "mappings": { + "0": { + "then": "Dit is een bruin cafÊ of een kroeg waar voornamelijk bier wordt gedronken. De inrichting is typisch gezellig met veel houtwerk " + }, + "1": { + "then": "Dit is een bar waar men ter plaatse alcoholische drank nuttigt. De inrichting is typisch modern en commercieel, soms met lichtinstallatie en feestmuziek" + }, + "2": { + "then": "Dit is een cafe - een plaats waar men rustig kan zitten om een thee, koffie of alcoholische drank te nuttigen." + }, + "3": { + "then": "Dit is een restaurant waar men een maaltijd geserveerd krijgt" + }, + "4": { + "then": "Een open ruimte waar bier geserveerd wordt. Typisch in Duitsland" + } + }, + "question": "Welk soort cafÊ is dit?" + }, + "Name": { + "question": "Wat is de naam van dit cafÊ?", + "render": "De naam van dit cafÊ is {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "CafÊ" + } + }, + "charging_station": { + "description": "Oplaadpunten", + "filter": { + "0": { + "options": { + "0": { + "question": "Alle voertuigen" + }, + "1": { + "question": "Oplaadpunten voor fietsen" + }, + "2": { + "question": "Oplaadpunten voor auto's" + } + } + }, + "1": { + "options": { + "0": { + "question": "Enkel werkende oplaadpunten" + } + } + }, + "2": { + "options": { + "0": { + "question": "Alle types" + }, + "1": { + "question": "Heeft een
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "2": { + "question": "Heeft een
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "3": { + "question": "Heeft een
Chademo
" + }, + "4": { + "question": "Heeft een
Type 1 met kabel (J1772)
" + }, + "5": { + "question": "Heeft een
Type 1 zonder kabel (J1772)
" + }, + "6": { + "question": "Heeft een
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "7": { + "question": "Heeft een
Tesla Supercharger
" + }, + "8": { + "question": "Heeft een
Type 2 (mennekes)
" + }, + "9": { + "question": "Heeft een
Type 2 CCS (mennekes)
" + }, + "10": { + "question": "Heeft een
Type 2 met kabel (J1772)
" + }, + "11": { + "question": "Heeft een
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "12": { + "question": "Heeft een
Tesla Supercharger (destination)
" + }, + "13": { + "question": "Heeft een
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "14": { + "question": "Heeft een
USB om GSMs en kleine electronica op te laden
" + }, + "15": { + "question": "Heeft een
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "16": { + "question": "Heeft een
Bosch Active Connect met 5 pinnen aan een kabel
" + } + } + } + }, + "name": "Oplaadpunten", + "presets": { + "0": { + "title": "laadpunt met gewone stekker(s) (bedoeld om electrische fietsen op te laden)" + }, + "1": { + "title": "oplaadpunt voor elektrische fietsen" + }, + "2": { + "title": "oplaadstation voor elektrische auto's" + }, + "3": { + "title": "oplaadstation" + } + }, + "tagRenderings": { + "Auth phone": { + "question": "Wat is het telefoonnummer dat men moet bellen of SMS'en om zich aan te melden?", + "render": "Aanmelden door te bellen of te SMS'en naar {authentication:phone_call:number}" + }, + "Authentication": { + "mappings": { + "0": { + "then": "Aanmelden met een lidkaart is mogelijk" + }, + "1": { + "then": "Aanmelden via een applicatie is mogelijk" + }, + "2": { + "then": "Aanmelden door te bellen naar een telefoonnummer is mogelijk" + }, + "3": { + "then": "Aanmelden via SMS is mogelijk" + }, + "4": { + "then": "Aanmelden via NFC is mogelijk" + }, + "5": { + "then": "Aanmelden met Money Card is mogelijk" + }, + "6": { + "then": "Aanmelden met een betaalkaart is mogelijk" + }, + "7": { + "then": "Hier opladen is (ook) mogelijk zonder aan te melden" + } + }, + "question": "Hoe kan men zich aanmelden aan dit oplaadstation?" + }, + "Available_charging_stations (generated)": { + "mappings": { + "0": { + "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "1": { + "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "2": { + "then": "
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "3": { + "then": "
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "4": { + "then": "
Chademo
" + }, + "5": { + "then": "
Chademo
" + }, + "6": { + "then": "
Type 1 met kabel (J1772)
" + }, + "7": { + "then": "
Type 1 met kabel (J1772)
" + }, + "8": { + "then": "
Type 1 zonder kabel (J1772)
" + }, + "9": { + "then": "
Type 1 zonder kabel (J1772)
" + }, + "10": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "11": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "12": { + "then": "
Tesla Supercharger
" + }, + "13": { + "then": "
Tesla Supercharger
" + }, + "14": { + "then": "
Type 2 (mennekes)
" + }, + "15": { + "then": "
Type 2 (mennekes)
" + }, + "16": { + "then": "
Type 2 CCS (mennekes)
" + }, + "17": { + "then": "
Type 2 CCS (mennekes)
" + }, + "18": { + "then": "
Type 2 met kabel (J1772)
" + }, + "19": { + "then": "
Type 2 met kabel (J1772)
" + }, + "20": { + "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "21": { + "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "22": { + "then": "
Tesla Supercharger (destination)
" + }, + "23": { + "then": "
Tesla Supercharger (destination)
" + }, + "24": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "25": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "26": { + "then": "
USB om GSMs en kleine electronica op te laden
" + }, + "27": { + "then": "
USB om GSMs en kleine electronica op te laden
" + }, + "28": { + "then": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "29": { + "then": "
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "30": { + "then": "
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "31": { + "then": "
Bosch Active Connect met 5 pinnen aan een kabel
" + } + }, + "question": "Welke aansluitingen zijn hier beschikbaar?" + }, + "Network": { + "mappings": { + "0": { + "then": "Maakt geen deel uit van een groter netwerk" + }, + "1": { + "then": "Maakt geen deel uit van een groter netwerk" + } + }, + "question": "Is dit oplaadpunt deel van een groter netwerk?", + "render": "Maakt deel uit van het {network}-netwerk" + }, + "OH": { + "mappings": { + "0": { + "then": "24/7 open - ook tijdens vakanties" + } + }, + "question": "Wanneer is dit oplaadpunt beschikbaar??" + }, + "Operational status": { + "mappings": { + "0": { + "then": "Dit oplaadpunt werkt" + }, + "1": { + "then": "Dit oplaadpunt is kapot" + }, + "2": { + "then": "Hier zal binnenkort een oplaadpunt gebouwd worden" + }, + "3": { + "then": "Hier wordt op dit moment een oplaadpunt gebouwd" + }, + "4": { + "then": "Dit oplaadpunt is niet meer in gebruik maar is wel nog aanwezig" + } + }, + "question": "Is dit oplaadpunt operationeel?" + }, + "Operator": { + "mappings": { + "0": { + "then": "Eigenlijk is {operator} het netwerk waarvan het deel uitmaakt" + } + }, + "question": "Wie beheert dit oplaadpunt?", + "render": "Wordt beheerd door {operator}" + }, + "Parking:fee": { + "mappings": { + "0": { + "then": "Geen extra parkeerkost tijdens het opladen" + }, + "1": { + "then": "Tijdens het opladen moet er parkeergeld betaald worden" + } + }, + "question": "Moet men parkeergeld betalen tijdens het opladen?" + }, + "Type": { + "mappings": { + "0": { + "then": "Fietsen kunnen hier opgeladen worden" + }, + "1": { + "then": "Elektrische auto's kunnen hier opgeladen worden" + }, + "2": { + "then": "Electrische scooters (snorfiets of bromfiets) kunnen hier opgeladen worden" + }, + "3": { + "then": "Vrachtwagens kunnen hier opgeladen worden" + }, + "4": { + "then": "Bussen kunnen hier opgeladen worden" + } + }, + "question": "Welke voertuigen kunnen hier opgeladen worden?" + }, + "access": { + "mappings": { + "0": { + "then": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, + "1": { + "then": "Toegankelijk voor iedereen (mogelijks met aanmelden en/of te betalen)" + }, + "2": { + "then": "Enkel klanten van de bijhorende plaats mogen dit oplaadpunt gebruiken
Bv. op de parking van een hotel en enkel toegankelijk voor klanten van dit hotel" + }, + "3": { + "then": "Niet toegankelijk voor het publiek
Bv. enkel toegankelijk voor de eigenaar, medewerkers ,... " + } + }, + "question": "Wie mag er dit oplaadpunt gebruiken?", + "render": "Toegang voor {access}" + }, + "capacity": { + "question": "Hoeveel voertuigen kunnen hier opgeladen worden?", + "render": "{capacity} voertuigen kunnen hier op hetzelfde moment opgeladen worden" + }, + "charge": { + "question": "Hoeveel moet men betalen om dit oplaadpunt te gebruiken?", + "render": "Dit oplaadpunt gebruiken kost {charge}" + }, + "current-0": { + "mappings": { + "0": { + "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal 16 A" + } + }, + "question": "Welke stroom levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?", + "render": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een stroom van maximaal {socket:schuko:current}A" + }, + "current-1": { + "mappings": { + "0": { + "then": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal 16 A" + } + }, + "question": "Welke stroom levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?", + "render": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een stroom van maximaal {socket:typee:current}A" + }, + "current-10": { + "mappings": { + "0": { + "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 125 A" + }, + "1": { + "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal 350 A" + } + }, + "question": "Welke stroom levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?", + "render": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een stroom van maximaal {socket:tesla_supercharger_ccs:current}A" + }, + "current-11": { + "mappings": { + "0": { + "then": "
Tesla Supercharger (destination)
levert een stroom van maximaal 125 A" + }, + "1": { + "then": "
Tesla Supercharger (destination)
levert een stroom van maximaal 350 A" + } + }, + "question": "Welke stroom levert de stekker van type
Tesla Supercharger (destination)
?", + "render": "
Tesla Supercharger (destination)
levert een stroom van maximaal {socket:tesla_destination:current}A" + }, + "current-12": { + "mappings": { + "0": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 16 A" + }, + "1": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal 32 A" + } + }, + "question": "Welke stroom levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?", + "render": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een stroom van maximaal {socket:tesla_destination:current}A" + }, + "current-13": { + "mappings": { + "0": { + "then": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 1 A" + }, + "1": { + "then": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal 2 A" + } + }, + "question": "Welke stroom levert de stekker van type
USB om GSMs en kleine electronica op te laden
?", + "render": "
USB om GSMs en kleine electronica op te laden
levert een stroom van maximaal {socket:USB-A:current}A" + }, + "current-14": { + "question": "Welke stroom levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?", + "render": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_3pin:current}A" + }, + "current-15": { + "question": "Welke stroom levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?", + "render": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een stroom van maximaal {socket:bosch_5pin:current}A" + }, + "current-2": { + "mappings": { + "0": { + "then": "
Chademo
levert een stroom van maximaal 120 A" + } + }, + "question": "Welke stroom levert de stekker van type
Chademo
?", + "render": "
Chademo
levert een stroom van maximaal {socket:chademo:current}A" + }, + "current-3": { + "mappings": { + "0": { + "then": "
Type 1 met kabel (J1772)
levert een stroom van maximaal 32 A" + } + }, + "question": "Welke stroom levert de stekker van type
Type 1 met kabel (J1772)
?", + "render": "
Type 1 met kabel (J1772)
levert een stroom van maximaal {socket:type1_cable:current}A" + }, + "current-4": { + "mappings": { + "0": { + "then": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal 32 A" + } + }, + "question": "Welke stroom levert de stekker van type
Type 1 zonder kabel (J1772)
?", + "render": "
Type 1 zonder kabel (J1772)
levert een stroom van maximaal {socket:type1:current}A" + }, + "current-5": { + "mappings": { + "0": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 50 A" + }, + "1": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal 125 A" + } + }, + "question": "Welke stroom levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?", + "render": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een stroom van maximaal {socket:type1_combo:current}A" + }, + "current-6": { + "mappings": { + "0": { + "then": "
Tesla Supercharger
levert een stroom van maximaal 125 A" + }, + "1": { + "then": "
Tesla Supercharger
levert een stroom van maximaal 350 A" + } + }, + "question": "Welke stroom levert de stekker van type
Tesla Supercharger
?", + "render": "
Tesla Supercharger
levert een stroom van maximaal {socket:tesla_supercharger:current}A" + }, + "current-7": { + "mappings": { + "0": { + "then": "
Type 2 (mennekes)
levert een stroom van maximaal 16 A" + }, + "1": { + "then": "
Type 2 (mennekes)
levert een stroom van maximaal 32 A" + } + }, + "question": "Welke stroom levert de stekker van type
Type 2 (mennekes)
?", + "render": "
Type 2 (mennekes)
levert een stroom van maximaal {socket:type2:current}A" + }, + "current-8": { + "mappings": { + "0": { + "then": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 125 A" + }, + "1": { + "then": "
Type 2 CCS (mennekes)
levert een stroom van maximaal 350 A" + } + }, + "question": "Welke stroom levert de stekker van type
Type 2 CCS (mennekes)
?", + "render": "
Type 2 CCS (mennekes)
levert een stroom van maximaal {socket:type2_combo:current}A" + }, + "current-9": { + "mappings": { + "0": { + "then": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 16 A" + }, + "1": { + "then": "
Type 2 met kabel (J1772)
levert een stroom van maximaal 32 A" + } + }, + "question": "Welke stroom levert de stekker van type
Type 2 met kabel (J1772)
?", + "render": "
Type 2 met kabel (J1772)
levert een stroom van maximaal {socket:type2_cable:current}A" + }, + "email": { + "question": "Wat is het email-adres van de operator?", + "render": "Bij problemen, email naar {email}" + }, + "fee": { + "mappings": { + "0": { + "then": "Gratis te gebruiken" + }, + "1": { + "then": "Gratis te gebruiken (zonder aan te melden)" + }, + "2": { + "then": "Gratis te gebruiken, maar aanmelden met een applicatie is verplicht" + }, + "3": { + "then": "Betalend te gebruiken, maar gratis voor klanten van het bijhorende hotel/cafÊ/ziekenhuis/..." + }, + "4": { + "then": "Betalend" + } + }, + "question": "Moet men betalen om dit oplaadpunt te gebruiken?" + }, + "maxstay": { + "mappings": { + "0": { + "then": "Geen maximum parkeertijd" + } + }, + "question": "Hoelang mag een voertuig hier blijven staan?", + "render": "De maximale parkeertijd hier is {canonical(maxstay)}" + }, + "payment-options": { + "override": { + "mappings+": { + "0": { + "then": "Betalen via een app van het netwerk" + }, + "1": { + "then": "Betalen via een lidkaart van het netwerk" + } + } + } + }, + "phone": { + "question": "Wat is het telefoonnummer van de beheerder van dit oplaadpunt?", + "render": "Bij problemen, bel naar {phone}" + }, + "plugs-0": { + "question": "Hoeveel stekkers van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:schuko} stekkers van het type
Schuko stekker zonder aardingspin (CEE7/4 type F)
" + }, + "plugs-1": { + "question": "Hoeveel stekkers van type
Europese stekker met aardingspin (CEE7/4 type E)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:typee} stekkers van het type
Europese stekker met aardingspin (CEE7/4 type E)
" + }, + "plugs-10": { + "question": "Hoeveel stekkers van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:tesla_supercharger_ccs} stekkers van het type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
" + }, + "plugs-11": { + "question": "Hoeveel stekkers van type
Tesla Supercharger (destination)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla Supercharger (destination)
" + }, + "plugs-12": { + "question": "Hoeveel stekkers van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:tesla_destination} stekkers van het type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
" + }, + "plugs-13": { + "question": "Hoeveel stekkers van type
USB om GSMs en kleine electronica op te laden
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:USB-A} stekkers van het type
USB om GSMs en kleine electronica op te laden
" + }, + "plugs-14": { + "question": "Hoeveel stekkers van type
Bosch Active Connect met 3 pinnen aan een kabel
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:bosch_3pin} stekkers van het type
Bosch Active Connect met 3 pinnen aan een kabel
" + }, + "plugs-15": { + "question": "Hoeveel stekkers van type
Bosch Active Connect met 5 pinnen aan een kabel
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:bosch_5pin} stekkers van het type
Bosch Active Connect met 5 pinnen aan een kabel
" + }, + "plugs-2": { + "question": "Hoeveel stekkers van type
Chademo
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:chademo} stekkers van het type
Chademo
" + }, + "plugs-3": { + "question": "Hoeveel stekkers van type
Type 1 met kabel (J1772)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:type1_cable} stekkers van het type
Type 1 met kabel (J1772)
" + }, + "plugs-4": { + "question": "Hoeveel stekkers van type
Type 1 zonder kabel (J1772)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:type1} stekkers van het type
Type 1 zonder kabel (J1772)
" + }, + "plugs-5": { + "question": "Hoeveel stekkers van type
Type 1 CCS (ook gekend als Type 1 Combo)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:type1_combo} stekkers van het type
Type 1 CCS (ook gekend als Type 1 Combo)
" + }, + "plugs-6": { + "question": "Hoeveel stekkers van type
Tesla Supercharger
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:tesla_supercharger} stekkers van het type
Tesla Supercharger
" + }, + "plugs-7": { + "question": "Hoeveel stekkers van type
Type 2 (mennekes)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:type2} stekkers van het type
Type 2 (mennekes)
" + }, + "plugs-8": { + "question": "Hoeveel stekkers van type
Type 2 CCS (mennekes)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:type2_combo} stekkers van het type
Type 2 CCS (mennekes)
" + }, + "plugs-9": { + "question": "Hoeveel stekkers van type
Type 2 met kabel (J1772)
heeft dit oplaadpunt?", + "render": "Hier zijn {socket:type2_cable} stekkers van het type
Type 2 met kabel (J1772)
" + }, + "power-output-0": { + "mappings": { + "0": { + "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal 3.6 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
?", + "render": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
levert een vermogen van maximaal {socket:schuko:output}" + }, + "power-output-1": { + "mappings": { + "0": { + "then": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 3 kw" + }, + "1": { + "then": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal 22 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
?", + "render": "
Europese stekker met aardingspin (CEE7/4 type E)
levert een vermogen van maximaal {socket:typee:output}" + }, + "power-output-10": { + "mappings": { + "0": { + "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal 50 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
?", + "render": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
levert een vermogen van maximaal {socket:tesla_supercharger_ccs:output}" + }, + "power-output-11": { + "mappings": { + "0": { + "then": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 120 kw" + }, + "1": { + "then": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 150 kw" + }, + "2": { + "then": "
Tesla Supercharger (destination)
levert een vermogen van maximaal 250 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger (destination)
?", + "render": "
Tesla Supercharger (destination)
levert een vermogen van maximaal {socket:tesla_destination:output}" + }, + "power-output-12": { + "mappings": { + "0": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 11 kw" + }, + "1": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal 22 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
?", + "render": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
levert een vermogen van maximaal {socket:tesla_destination:output}" + }, + "power-output-13": { + "mappings": { + "0": { + "then": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 5w" + }, + "1": { + "then": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal 10w" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
USB om GSMs en kleine electronica op te laden
?", + "render": "
USB om GSMs en kleine electronica op te laden
levert een vermogen van maximaal {socket:USB-A:output}" + }, + "power-output-14": { + "question": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
?", + "render": "
Bosch Active Connect met 3 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_3pin:output}" + }, + "power-output-15": { + "question": "Welk vermogen levert een enkele stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
?", + "render": "
Bosch Active Connect met 5 pinnen aan een kabel
levert een vermogen van maximaal {socket:bosch_5pin:output}" + }, + "power-output-2": { + "mappings": { + "0": { + "then": "
Chademo
levert een vermogen van maximaal 50 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Chademo
?", + "render": "
Chademo
levert een vermogen van maximaal {socket:chademo:output}" + }, + "power-output-3": { + "mappings": { + "0": { + "then": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 3.7 kw" + }, + "1": { + "then": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal 7 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Type 1 met kabel (J1772)
?", + "render": "
Type 1 met kabel (J1772)
levert een vermogen van maximaal {socket:type1_cable:output}" + }, + "power-output-4": { + "mappings": { + "0": { + "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 3.7 kw" + }, + "1": { + "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 6.6 kw" + }, + "2": { + "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7 kw" + }, + "3": { + "then": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal 7.2 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Type 1 zonder kabel (J1772)
?", + "render": "
Type 1 zonder kabel (J1772)
levert een vermogen van maximaal {socket:type1:output}" + }, + "power-output-5": { + "mappings": { + "0": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 50 kw" + }, + "1": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 62.5 kw" + }, + "2": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 150 kw" + }, + "3": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal 350 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
?", + "render": "
Type 1 CCS (ook gekend als Type 1 Combo)
levert een vermogen van maximaal {socket:type1_combo:output}" + }, + "power-output-6": { + "mappings": { + "0": { + "then": "
Tesla Supercharger
levert een vermogen van maximaal 120 kw" + }, + "1": { + "then": "
Tesla Supercharger
levert een vermogen van maximaal 150 kw" + }, + "2": { + "then": "
Tesla Supercharger
levert een vermogen van maximaal 250 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Tesla Supercharger
?", + "render": "
Tesla Supercharger
levert een vermogen van maximaal {socket:tesla_supercharger:output}" + }, + "power-output-7": { + "mappings": { + "0": { + "then": "
Type 2 (mennekes)
levert een vermogen van maximaal 11 kw" + }, + "1": { + "then": "
Type 2 (mennekes)
levert een vermogen van maximaal 22 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Type 2 (mennekes)
?", + "render": "
Type 2 (mennekes)
levert een vermogen van maximaal {socket:type2:output}" + }, + "power-output-8": { + "mappings": { + "0": { + "then": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal 50 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Type 2 CCS (mennekes)
?", + "render": "
Type 2 CCS (mennekes)
levert een vermogen van maximaal {socket:type2_combo:output}" + }, + "power-output-9": { + "mappings": { + "0": { + "then": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 11 kw" + }, + "1": { + "then": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal 22 kw" + } + }, + "question": "Welk vermogen levert een enkele stekker van type
Type 2 met kabel (J1772)
?", + "render": "
Type 2 met kabel (J1772)
levert een vermogen van maximaal {socket:type2_cable:output}" + }, + "questions": { + "render": "

Technische vragen

De vragen hieronder zijn erg technisch - sla deze over indien je hier geen tijd voor hebt
{questions}" + }, + "ref": { + "question": "Wat is het referentienummer van dit oplaadstation?", + "render": "Het referentienummer van dit oplaadpunt is {ref}" + }, + "voltage-0": { + "mappings": { + "0": { + "then": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van 230 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Schuko stekker zonder aardingspin (CEE7/4 type F)
", + "render": "
Schuko stekker zonder aardingspin (CEE7/4 type F)
heeft een spanning van {socket:schuko:voltage} volt" + }, + "voltage-1": { + "mappings": { + "0": { + "then": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van 230 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Europese stekker met aardingspin (CEE7/4 type E)
", + "render": "
Europese stekker met aardingspin (CEE7/4 type E)
heeft een spanning van {socket:typee:voltage} volt" + }, + "voltage-10": { + "mappings": { + "0": { + "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 500 volt" + }, + "1": { + "then": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van 920 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
", + "render": "
Tesla Supercharger CCS (een type2 CCS met Tesla-logo)
heeft een spanning van {socket:tesla_supercharger_ccs:voltage} volt" + }, + "voltage-11": { + "mappings": { + "0": { + "then": "
Tesla Supercharger (destination)
heeft een spanning van 480 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Tesla Supercharger (destination)
", + "render": "
Tesla Supercharger (destination)
heeft een spanning van {socket:tesla_destination:voltage} volt" + }, + "voltage-12": { + "mappings": { + "0": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 230 volt" + }, + "1": { + "then": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van 400 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
", + "render": "
Tesla supercharger (destination (Een Type 2 met kabel en Tesla-logo)
heeft een spanning van {socket:tesla_destination:voltage} volt" + }, + "voltage-13": { + "mappings": { + "0": { + "then": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van 5 volt" + } + }, + "question": "Welke spanning levert de stekker van type
USB om GSMs en kleine electronica op te laden
", + "render": "
USB om GSMs en kleine electronica op te laden
heeft een spanning van {socket:USB-A:voltage} volt" + }, + "voltage-14": { + "question": "Welke spanning levert de stekker van type
Bosch Active Connect met 3 pinnen aan een kabel
", + "render": "
Bosch Active Connect met 3 pinnen aan een kabel
heeft een spanning van {socket:bosch_3pin:voltage} volt" + }, + "voltage-15": { + "question": "Welke spanning levert de stekker van type
Bosch Active Connect met 5 pinnen aan een kabel
", + "render": "
Bosch Active Connect met 5 pinnen aan een kabel
heeft een spanning van {socket:bosch_5pin:voltage} volt" + }, + "voltage-2": { + "mappings": { + "0": { + "then": "
Chademo
heeft een spanning van 500 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Chademo
", + "render": "
Chademo
heeft een spanning van {socket:chademo:voltage} volt" + }, + "voltage-3": { + "mappings": { + "0": { + "then": "
Type 1 met kabel (J1772)
heeft een spanning van 200 volt" + }, + "1": { + "then": "
Type 1 met kabel (J1772)
heeft een spanning van 240 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Type 1 met kabel (J1772)
", + "render": "
Type 1 met kabel (J1772)
heeft een spanning van {socket:type1_cable:voltage} volt" + }, + "voltage-4": { + "mappings": { + "0": { + "then": "
Type 1 zonder kabel (J1772)
heeft een spanning van 200 volt" + }, + "1": { + "then": "
Type 1 zonder kabel (J1772)
heeft een spanning van 240 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Type 1 zonder kabel (J1772)
", + "render": "
Type 1 zonder kabel (J1772)
heeft een spanning van {socket:type1:voltage} volt" + }, + "voltage-5": { + "mappings": { + "0": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 400 volt" + }, + "1": { + "then": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van 1000 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Type 1 CCS (ook gekend als Type 1 Combo)
", + "render": "
Type 1 CCS (ook gekend als Type 1 Combo)
heeft een spanning van {socket:type1_combo:voltage} volt" + }, + "voltage-6": { + "mappings": { + "0": { + "then": "
Tesla Supercharger
heeft een spanning van 480 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Tesla Supercharger
", + "render": "
Tesla Supercharger
heeft een spanning van {socket:tesla_supercharger:voltage} volt" + }, + "voltage-7": { + "mappings": { + "0": { + "then": "
Type 2 (mennekes)
heeft een spanning van 230 volt" + }, + "1": { + "then": "
Type 2 (mennekes)
heeft een spanning van 400 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Type 2 (mennekes)
", + "render": "
Type 2 (mennekes)
heeft een spanning van {socket:type2:voltage} volt" + }, + "voltage-8": { + "mappings": { + "0": { + "then": "
Type 2 CCS (mennekes)
heeft een spanning van 500 volt" + }, + "1": { + "then": "
Type 2 CCS (mennekes)
heeft een spanning van 920 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Type 2 CCS (mennekes)
", + "render": "
Type 2 CCS (mennekes)
heeft een spanning van {socket:type2_combo:voltage} volt" + }, + "voltage-9": { + "mappings": { + "0": { + "then": "
Type 2 met kabel (J1772)
heeft een spanning van 230 volt" + }, + "1": { + "then": "
Type 2 met kabel (J1772)
heeft een spanning van 400 volt" + } + }, + "question": "Welke spanning levert de stekker van type
Type 2 met kabel (J1772)
", + "render": "
Type 2 met kabel (J1772)
heeft een spanning van {socket:type2_cable:voltage} volt" + }, + "website": { + "question": "Wat is de website waar men meer info kan vinden over dit oplaadpunt?", + "render": "Meer informatie op {website}" + } + }, + "title": { + "render": "Oplaadpunten" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " minuten", + "humanSingular": " minuut" + }, + "1": { + "human": " uren", + "humanSingular": " uur" + }, + "2": { + "human": " day", + "humanSingular": " dag" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": "volt" + } + } + }, + "2": { + "applicableUnits": { + "0": { + "human": "A" + } + } + }, + "3": { + "applicableUnits": { + "0": { + "human": "kilowatt" + }, + "1": { + "human": "megawatt" + } + } + } + } + }, + "crossings": { + "description": "Oversteekplaatsen voor voetgangers en fietsers", + "name": "Oversteekplaatsen", + "presets": { + "0": { + "description": "Oversteekplaats voor voetgangers en/of fietsers", + "title": "Oversteekplaats" + }, + "1": { + "description": "Verkeerslicht op een weg", + "title": "Verkeerslicht" + } + }, + "tagRenderings": { + "crossing-bicycle-allowed": { + "mappings": { + "0": { + "then": "Een fietser kan deze oversteekplaats gebruiken" + }, + "1": { + "then": "Een fietser kan deze oversteekplaats niet gebruiken" + } + }, + "question": "Is deze oversteekplaats ook voor fietsers" + }, + "crossing-button": { + "mappings": { + "0": { + "then": "Dit verkeerslicht heeft een knop voor groen licht" + }, + "1": { + "then": "Dit verkeerlicht heeft geen knop voor groen licht" + } + }, + "question": "Heeft dit verkeerslicht een knop voor groen licht?" + }, + "crossing-continue-through-red": { + "mappings": { + "0": { + "then": "Een fietser mag wel rechtdoor gaan als het licht rood is " + }, + "1": { + "then": "Een fietser mag wel rechtdoor gaan als het licht rood is" + }, + "2": { + "then": "Een fietser mag niet rechtdoor gaan als het licht rood is" + } + }, + "question": "Mag een fietser rechtdoor gaan als het licht rood is?" + }, + "crossing-has-island": { + "mappings": { + "0": { + "then": "Deze oversteekplaats heeft een verkeerseiland in het midden" + }, + "1": { + "then": "Deze oversteekplaats heeft geen verkeerseiland in het midden" + } + }, + "question": "Heeft deze oversteekplaats een verkeerseiland in het midden?" + }, + "crossing-is-zebra": { + "mappings": { + "0": { + "then": "Dit is een zebrapad" + }, + "1": { + "then": "Dit is geen zebrapad" + } + }, + "question": "Is dit een zebrapad?" + }, + "crossing-right-turn-through-red": { + "mappings": { + "0": { + "then": "Een fietser mag wel rechtsaf slaan als het licht rood is " + }, + "1": { + "then": "Een fietser mag wel rechtsaf slaan als het licht rood is" + }, + "2": { + "then": "Een fietser mag niet rechtsaf slaan als het licht rood is" + } + }, + "question": "Mag een fietser rechtsaf slaan als het licht rood is?" + }, + "crossing-tactile": { + "mappings": { + "0": { + "then": "Deze oversteekplaats heeft een geleidelijn" + }, + "1": { + "then": "Deze oversteekplaats heeft geen geleidelijn" + }, + "2": { + "then": "Deze oversteekplaats heeft een geleidelijn, die incorrect is." + } + }, + "question": "Heeft deze oversteekplaats een geleidelijn?" + }, + "crossing-type": { + "mappings": { + "0": { + "then": "Oversteekplaats, zonder verkeerslichten" + }, + "1": { + "then": "Oversteekplaats met verkeerslichten" + }, + "2": { + "then": "Zebrapad" + } + }, + "question": "Wat voor oversteekplaats is dit?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Verkeerslicht" + }, + "1": { + "then": "Oversteektplaats met verkeerslichten" + } + }, + "render": "Oversteekplaats" + } + }, + "cycleways_and_roads": { + "name": "Fietspaden, straten en wegen", + "tagRenderings": { + "Cycleway type for a road": { + "mappings": { + "0": { + "then": "Er is een fietssuggestiestrook" + }, + "1": { + "then": "Er is een fietspad aangrenzend aan de weg (gescheiden met verf)" + }, + "2": { + "then": "Er is een fietspad (los van de weg), maar geen fietspad afzonderlijk getekend naast deze weg." + }, + "3": { + "then": "Er is een apart getekend fietspad." + }, + "4": { + "then": "Er is geen fietspad aanwezig" + }, + "5": { + "then": "Er is geen fietspad aanwezig" + } + }, + "question": "Wat voor fietspad is hier?" + }, + "Cycleway:smoothness": { + "mappings": { + "0": { + "then": "Geschikt voor fijne rollers: rollerblade, skateboard" + }, + "1": { + "then": "Geschikt voor fijne wielen: racefiets" + }, + "2": { + "then": "Geschikt voor normale wielen: stadsfiets, rolstoel, scooter" + }, + "3": { + "then": "Geschikt voor brede wielen: trekfiets, auto, rickshaw" + }, + "4": { + "then": "Geschikt voor voertuigen met hoge banden: lichte terreinwagen" + }, + "5": { + "then": "Geschikt voor terreinwagens: zware terreinwagen" + }, + "6": { + "then": "Geschikt voor gespecialiseerde terreinwagens: tractor, alleterreinwagen" + }, + "7": { + "then": "Niet geschikt voor voertuigen met wielen" + } + }, + "question": "Wat is de kwaliteit van dit fietspad?" + }, + "Cycleway:surface": { + "mappings": { + "0": { + "then": "Dit fietspad is onverhard" + }, + "1": { + "then": "Dit fietspad is geplaveid" + }, + "2": { + "then": "Dit fietspad is gemaakt van asfalt" + }, + "3": { + "then": "Dit fietspad is gemaakt van straatstenen" + }, + "4": { + "then": "Dit fietspad is gemaakt van beton" + }, + "5": { + "then": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)" + }, + "6": { + "then": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien" + }, + "7": { + "then": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien" + }, + "8": { + "then": "Dit fietspad is gemaakt van hout" + }, + "9": { + "then": "Dit fietspad is gemaakt van grind" + }, + "10": { + "then": "Dit fietspad is gemaakt van fijn grind" + }, + "11": { + "then": "Dit fietspad is gemaakt van kiezelsteentjes" + }, + "12": { + "then": "Dit fietspad is gemaakt van aarde" + } + }, + "question": "Waaruit is het oppervlak van het fietspad van gemaakt?", + "render": "Dit fietspad is gemaakt van {cycleway:surface}" + }, + "Is this a cyclestreet? (For a road)": { + "mappings": { + "0": { + "then": "Dit is een fietsstraat, en dus een 30km/h zone" + }, + "1": { + "then": "Dit is een fietsstraat" + }, + "2": { + "then": "Dit is geen fietsstraat" + } + }, + "question": "Is dit een fietsstraat?" + }, + "Maxspeed (for road)": { + "mappings": { + "0": { + "then": "De maximumsnelheid is 20 km/u" + }, + "1": { + "then": "De maximumsnelheid is 30 km/u" + }, + "2": { + "then": "De maximumsnelheid is 50 km/u" + }, + "3": { + "then": "De maximumsnelheid is 70 km/u" + }, + "4": { + "then": "De maximumsnelheid is 90 km/u" + } + }, + "question": "Wat is de maximumsnelheid in deze straat?", + "render": "De maximumsnelheid op deze weg is {maxspeed} km/u" + }, + "Surface of the road": { + "mappings": { + "0": { + "then": "Dit fietspad is onverhard" + }, + "1": { + "then": "Dit fietspad is geplaveid" + }, + "2": { + "then": "Dit fietspad is gemaakt van asfalt" + }, + "3": { + "then": "Dit fietspad is gemaakt van straatstenen" + }, + "4": { + "then": "Dit fietspad is gemaakt van beton" + }, + "5": { + "then": "Dit fietspad is gemaakt van kasseien (natuurlijk of verwerkt)" + }, + "6": { + "then": "Dit fietspad is gemaakt van ruwe, natuurlijke kasseien" + }, + "7": { + "then": "Dit fietspad is gemaakt van vlakke, rechthoekige kasseien" + }, + "8": { + "then": "Dit fietspad is gemaakt van hout" + }, + "9": { + "then": "Dit fietspad is gemaakt van grind" + }, + "10": { + "then": "Dit fietspad is gemaakt van fijn grind" + }, + "11": { + "then": "Dit fietspad is gemaakt van kiezelsteentjes" + }, + "12": { + "then": "Dit fietspad is gemaakt van aarde" + } + }, + "question": "Waaruit is het oppervlak van de straat gemaakt?", + "render": "Deze weg is gemaakt van {surface}" + }, + "Surface of the street": { + "question": "Wat is de kwaliteit van deze straat?" + }, + "cyclelan-segregation": { + "mappings": { + "0": { + "then": "Dit fietspad is gescheiden van de weg met een onderbroken streep" + }, + "1": { + "then": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep" + }, + "2": { + "then": "Dit fietspad is gescheiden van de weg met parkeervakken" + }, + "3": { + "then": "Dit fietspad is gescheiden van de weg met een stoeprand" + } + }, + "question": "Hoe is dit fietspad gescheiden van de weg?" + }, + "cycleway-lane-track-traffic-signs": { + "mappings": { + "0": { + "then": "Verplicht fietspad " + }, + "1": { + "then": "Verplicht fietspad (met onderbord)
" + }, + "2": { + "then": "Afgescheiden voet-/fietspad " + }, + "3": { + "then": "Gedeeld voet-/fietspad " + }, + "4": { + "then": "Geen verkeersbord aanwezig" + } + }, + "question": "Welk verkeersbord heeft dit fietspad?" + }, + "cycleway-segregation": { + "mappings": { + "0": { + "then": "Dit fietspad is gescheiden van de weg met een onderbroken streep" + }, + "1": { + "then": "Dit fietspad is gescheiden van de weg met een doorgetrokken streep" + }, + "2": { + "then": "Dit fietspad is gescheiden van de weg met parkeervakken" + }, + "3": { + "then": "Dit fietspad is gescheiden van de weg met een stoeprand" + } + }, + "question": "Hoe is dit fietspad gescheiden van de weg?" + }, + "cycleway-traffic-signs": { + "mappings": { + "0": { + "then": "Verplicht fietspad " + }, + "1": { + "then": "Verplicht fietspad (met onderbord)
" + }, + "2": { + "then": "Afgescheiden voet-/fietspad " + }, + "3": { + "then": "Gedeeld voet-/fietspad " + }, + "4": { + "then": "Geen verkeersbord aanwezig" + } + }, + "question": "Welk verkeersbord heeft dit fietspad?" + }, + "cycleway-traffic-signs-D7-supplementary": { + "mappings": { + "0": { + "then": "" + }, + "1": { + "then": "" + }, + "2": { + "then": "" + }, + "3": { + "then": "" + }, + "4": { + "then": "" + }, + "5": { + "then": "" + }, + "6": { + "then": "Geen onderbord aanwezig" + } + }, + "question": "Heeft het verkeersbord D7 () een onderbord?" + }, + "cycleway-traffic-signs-supplementary": { + "mappings": { + "0": { + "then": "" + }, + "1": { + "then": "" + }, + "2": { + "then": "" + }, + "3": { + "then": "" + }, + "4": { + "then": "" + }, + "5": { + "then": "" + }, + "6": { + "then": "Geen onderbord aanwezig" + } + }, + "question": "Heeft het verkeersbord D7 () een onderbord?" + }, + "cycleways_and_roads-cycleway:buffer": { + "question": "Hoe breed is de ruimte tussen het fietspad en de weg?", + "render": "De schrikafstand van dit fietspad is {cycleway:buffer} m" + }, + "is lit?": { + "mappings": { + "0": { + "then": "Deze weg is verlicht" + }, + "1": { + "then": "Deze weg is niet verlicht" + }, + "2": { + "then": "Deze weg is 's nachts verlicht" + }, + "3": { + "then": "Deze weg is 24/7 verlicht" + } + }, + "question": "Is deze weg verlicht?" + }, + "width:carriageway": { + "question": "Hoe breed is de rijbaan in deze straat (in meters)?
Dit is
Meet dit van stoepsteen tot stoepsteen, dus inclusief een parallelle parkeerstrook", + "render": "De breedte van deze rijbaan in deze straat is {width:carriageway}m" + } + }, + "title": { + "mappings": { + "0": { + "then": "Fietsweg" + }, + "1": { + "then": "Fietssuggestiestrook" + }, + "2": { + "then": "Fietsstrook" + }, + "3": { + "then": "Fietsweg naast de weg" + }, + "4": { + "then": "Fietsstraat" + } + }, + "render": "Fietspaden" + } + }, + "defibrillator": { + "name": "Defibrillatoren", + "presets": { + "0": { + "title": "Defibrillator" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "Publiek toegankelijk" + }, + "1": { + "then": "Publiek toegankelijk" + }, + "2": { + "then": "Enkel toegankelijk voor klanten" + }, + "3": { + "then": "Niet toegankelijk voor het publiek (bv. enkel voor personeel, de eigenaar, ...)" + }, + "4": { + "then": "Niet toegankelijk, mogelijk enkel voor professionals" + } + }, + "question": "Is deze defibrillator vrij toegankelijk?", + "render": "Toegankelijkheid is {access}" + }, + "defibrillator-defibrillator": { + "mappings": { + "0": { + "then": "Er is geen info over het soort toestel" + }, + "1": { + "then": "Dit is een manueel toestel enkel voor professionals" + }, + "2": { + "then": "Dit is een gewone automatische defibrillator" + } + }, + "question": "Is dit een gewone automatische defibrillator of een manueel toestel enkel voor professionals?" + }, + "defibrillator-defibrillator:location": { + "question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in de plaatselijke taal)", + "render": "Meer informatie over de locatie (lokale taal):
{defibrillator:location}" + }, + "defibrillator-defibrillator:location:en": { + "question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Engels)", + "render": "Meer informatie over de locatie (in het Engels):
{defibrillator:location:en}" + }, + "defibrillator-defibrillator:location:fr": { + "question": "Gelieve meer informatie te geven over de exacte locatie van de defibrillator (in het Frans)", + "render": "Meer informatie over de locatie (in het Frans):
{defibrillator:location:fr}" + }, + "defibrillator-description": { + "question": "Is er nog iets bijzonder aan deze defibrillator dat je nog niet hebt kunnen meegeven? (laat leeg indien niet)", + "render": "Aanvullende info: {description}" + }, + "defibrillator-email": { + "question": "Wat is het email-adres voor vragen over deze defibrillator", + "render": "Email voor vragen over deze defibrillator: {email}" + }, + "defibrillator-fixme": { + "question": "Is er iets mis met de informatie over deze defibrillator dat je hier niet opgelost kreeg? (laat hier een berichtje achter voor OpenStreetMap experts)", + "render": "Extra informatie voor OpenStreetMap experts: {fixme}" + }, + "defibrillator-indoors": { + "mappings": { + "0": { + "then": "Deze defibrillator bevindt zich in een gebouw" + }, + "1": { + "then": "Deze defibrillator hangt buiten" + } + }, + "question": "Hangt deze defibrillator binnen of buiten?" + }, + "defibrillator-level": { + "mappings": { + "0": { + "then": "Deze defibrillator bevindt zich gelijkvloers" + }, + "1": { + "then": "Deze defibrillator is op de eerste verdieping" + } + }, + "question": "Op welke verdieping bevindt deze defibrillator zich?", + "render": "De defibrillator bevindt zicht op verdieping {level}" + }, + "defibrillator-opening_hours": { + "mappings": { + "0": { + "then": "24/7 open (inclusief feestdagen)" + } + }, + "question": "Wanneer is deze defibrillator beschikbaar?", + "render": "{opening_hours_table(opening_hours)}" + }, + "defibrillator-phone": { + "question": "Wat is het telefoonnummer voor vragen over deze defibrillator", + "render": "Telefoonnummer voor vragen over deze defibrillator: {phone}" + }, + "defibrillator-ref": { + "question": "Wat is het officieel identificatienummer van het toestel? (indien zichtbaar op toestel)", + "render": "Officieel identificatienummer van het toestel: {ref}" + }, + "defibrillator-survey:date": { + "mappings": { + "0": { + "then": "Vandaag nagekeken!" + } + }, + "question": "Wanneer is deze defibrillator het laatst gecontroleerd in OpenStreetMap?", + "render": "Deze defibrillator is nagekeken in OSM op {survey:date}" + } + }, + "title": { + "render": "Defibrillator" + } + }, + "direction": { + "description": "Deze laag toont de oriÃĢntatie van een object", + "name": "Richtingsvisualisatie" + }, + "drinking_water": { + "name": "Drinkbaar water", + "presets": { + "0": { + "title": "drinkbaar water" + } + }, + "tagRenderings": { + "Bottle refill": { + "mappings": { + "0": { + "then": "Een drinkbus bijvullen gaat makkelijk" + }, + "1": { + "then": "Een drinkbus past moeilijk" + } + }, + "question": "Hoe gemakkelijk is het om drinkbussen bij te vullen?" + }, + "Still in use?": { + "mappings": { + "0": { + "then": "Deze drinkwaterfontein werkt" + }, + "1": { + "then": "Deze drinkwaterfontein is kapot" + }, + "2": { + "then": "Deze drinkwaterfontein is afgesloten" + } + }, + "question": "Is deze drinkwaterkraan nog steeds werkende?", + "render": "Deze waterkraan-status is {operational_status}" + }, + "render-closest-drinking-water": { + "render": "Er bevindt zich een ander drinkwaterpunt op {_closest_other_drinking_water_distance} meter" + } + }, + "title": { + "render": "Drinkbaar water" + } + }, + "etymology": { + "description": "Alle lagen met een gelinkt etymology", + "name": "Heeft etymology info", + "tagRenderings": { + "simple etymology": { + "mappings": { + "0": { + "then": "De oorsprong van deze naam is onbekend in de literatuur" + } + }, + "question": "Naar wat is dit object vernoemd?
Dit staat mogelijks vermeld op het straatnaambordje", + "render": "Vernoemd naar {name:etymology}" + }, + "street-name-sign-image": { + "render": "{image_carousel(image:streetsign)}
{image_upload(image:streetsign, Voeg afbeelding van straatnaambordje toe)}" + }, + "wikipedia-etymology": { + "question": "Wat is het Wikidata-item van hetgeen dit object is naar vernoemd?", + "render": "

Wikipedia artikel van de naamgever

{wikipedia(name:etymology:wikidata):max-height:20rem}" + }, + "zoeken op inventaris onroerend erfgoed": { + "render": "Zoeken op inventaris onroerend erfgoed" + } + } + }, + "food": { + "filter": { + "0": { + "options": { + "0": { + "question": "Nu geopened" + } + } + }, + "1": { + "options": { + "0": { + "question": "Heeft een vegetarisch menu" + } + } + }, + "2": { + "options": { + "0": { + "question": "Heeft een veganistisch menu" + } + } + }, + "3": { + "options": { + "0": { + "question": "Heeft een halal menu" + } + } + } + }, + "name": "Eetgelegenheden", + "presets": { + "0": { + "description": "Een eetgegelegenheid waar je aan tafel wordt bediend", + "title": "restaurant" + }, + "1": { + "description": "Een zaak waar je snel bediend wordt, vaak met de focus op afhalen. Zitgelegenheid is eerder beperkt (of zelfs afwezig)", + "title": "fastfood-zaak" + }, + "2": { + "description": "Een fastfood-zaak waar je frieten koopt", + "title": "frituur" + } + }, + "tagRenderings": { + "Cuisine": { + "mappings": { + "0": { + "then": "Dit is een pizzeria" + }, + "1": { + "then": "Dit is een frituur" + }, + "2": { + "then": "Dit is een pastazaak" + }, + "3": { + "then": "Dit is een kebabzaak" + }, + "4": { + "then": "Dit is een broodjeszaak" + }, + "5": { + "then": "Dit is een hamburgerrestaurant" + }, + "6": { + "then": "Dit is een sushirestaurant" + }, + "7": { + "then": "Dit is een koffiezaak" + }, + "8": { + "then": "Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)" + }, + "9": { + "then": "Dit is een Frans restaurant" + }, + "10": { + "then": "Dit is een Chinees restaurant" + }, + "11": { + "then": "Dit is een Grieks restaurant" + }, + "12": { + "then": "Dit is een Indisch restaurant" + }, + "13": { + "then": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)" + }, + "14": { + "then": "Dit is een Thaïs restaurant" + } + }, + "question": "Welk soort gerechten worden hier geserveerd?", + "render": "Deze plaats serveert vooral {cuisine}" + }, + "Fastfood vs restaurant": { + "mappings": { + "0": { + "then": "Dit is een fastfood-zaak. De focus ligt op snelle bediening, zitplaatsen zijn vaak beperkt en functioneel" + }, + "1": { + "then": "Dit is een restaurant. De focus ligt op een aangename ervaring waar je aan tafel wordt bediend" + } + }, + "question": "Wat voor soort zaak is dit?" + }, + "Name": { + "question": "Wat is de naam van deze eetgelegenheid?", + "render": "De naam van deze eetgelegeheid is {name}" + }, + "Takeaway": { + "mappings": { + "0": { + "then": "Hier is enkel afhaal mogelijk" + }, + "1": { + "then": "Eten kan hier afgehaald worden" + }, + "2": { + "then": "Hier is geen afhaalmogelijkheid" + } + }, + "question": "Biedt deze zaak een afhaalmogelijkheid aan?" + }, + "Vegan (no friture)": { + "mappings": { + "0": { + "then": "Geen veganistische opties beschikbaar" + }, + "1": { + "then": "Beperkte veganistische opties zijn beschikbaar" + }, + "2": { + "then": "Veganistische opties zijn beschikbaar" + }, + "3": { + "then": "Enkel veganistische opties zijn beschikbaar" + } + }, + "question": "Heeft deze eetgelegenheid een veganistische optie?" + }, + "Vegetarian (no friture)": { + "mappings": { + "0": { + "then": "Geen vegetarische opties beschikbaar" + }, + "1": { + "then": "Beperkte vegetarische opties zijn beschikbaar" + }, + "2": { + "then": "Vegetarische opties zijn beschikbaar" + }, + "3": { + "then": "Enkel vegetarische opties zijn beschikbaar" + } + }, + "question": "Heeft deze eetgelegenheid een vegetarische optie?" + }, + "friture-oil": { + "mappings": { + "0": { + "then": "Plantaardige olie" + }, + "1": { + "then": "Dierlijk vet" + } + }, + "question": "Bakt deze frituur met dierlijk vet of met plantaardige olie?" + }, + "friture-take-your-container": { + "mappings": { + "0": { + "then": "Je mag je eigen containers meenemen om je bestelling in mee te nemen en zo minder afval te maken" + }, + "1": { + "then": "Je mag geen eigen containers meenemen om je bestelling in mee te nemen" + }, + "2": { + "then": "Je moet je eigen containers meenemen om je bestelling in mee te nemen." + } + }, + "question": "Als je je eigen container (bv. kookpot of kleine potjes voor saus) meeneemt, gebruikt de frituur deze dan om je bestelling in te doen?" + }, + "friture-vegan": { + "mappings": { + "0": { + "then": "Er zijn veganistische snacks aanwezig" + }, + "1": { + "then": "Slechts enkele veganistische snacks" + }, + "2": { + "then": "Geen veganistische snacks beschikbaar" + } + }, + "question": "Heeft deze frituur veganistische snacks?" + }, + "friture-vegetarian": { + "mappings": { + "0": { + "then": "Er zijn vegetarische snacks aanwezig" + }, + "1": { + "then": "Slechts enkele vegetarische snacks" + }, + "2": { + "then": "Geen vegetarische snacks beschikbaar" + } + }, + "question": "Heeft deze frituur vegetarische snacks?" + }, + "halal (no friture)": { + "mappings": { + "0": { + "then": "Er zijn geen halal opties aanwezig" + }, + "1": { + "then": "Er zijn een beperkt aantal halal opties" + }, + "2": { + "then": "Halal menu verkrijgbaar" + }, + "3": { + "then": "Enkel halal opties zijn beschikbaar" + } + }, + "question": "Heeft dit restaurant halal opties?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Restaurant {name}" + }, + "1": { + "then": "Fastfood-zaak {name}" + } + }, + "render": "Eetgelegenheid" + } + }, + "ghost_bike": { + "name": "Witte Fietsen", + "presets": { + "0": { + "title": "Witte fiets" + } + }, + "tagRenderings": { + "ghost-bike-explanation": { + "render": "Een Witte Fiets (of Spookfiets) is een aandenken aan een fietser die bij een verkeersongeval om het leven kwam. Het gaat over een witgeschilderde fiets die geplaatst werd in de buurt van het ongeval." + }, + "ghost_bike-inscription": { + "question": "Wat is het opschrift op deze witte fiets?", + "render": "{inscription}" + }, + "ghost_bike-name": { + "mappings": { + "0": { + "then": "De naam is niet aangeduid op de fiets" + } + }, + "question": "Aan wie is deze witte fiets een eerbetoon?
Respecteer privacy - voeg enkel een naam toe indien die op de fiets staat of gepubliceerd is. Eventueel voeg je enkel de voornaam toe.
", + "render": "Ter nagedachtenis van {name}" + }, + "ghost_bike-source": { + "question": "Op welke website kan men meer informatie vinden over de Witte fiets of over het ongeval?", + "render": "Meer informatie" + }, + "ghost_bike-start_date": { + "question": "Wanneer werd deze witte fiets geplaatst?", + "render": "Geplaatst op {start_date}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Witte fiets ter nagedachtenis van {name}" + } + }, + "render": "Witte Fiets" + } + }, + "grass_in_parks": { + "name": "Toegankelijke grasvelden in parken", + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Speelweide in een park" + } + }, + "information_board": { + "name": "Informatieborden", + "presets": { + "0": { + "title": "informatiebord" + } + }, + "title": { + "render": "Informatiebord" + } + }, + "map": { + "description": "Een permantent geinstalleerde kaart", + "name": "Kaarten", + "presets": { + "0": { + "description": "Voeg een ontbrekende kaart toe", + "title": "Kaart" + } + }, + "tagRenderings": { + "map-attribution": { + "mappings": { + "0": { + "then": "De OpenStreetMap-attributie is duidelijk aangegeven, zelf met vermelding van \"ODBL\" " + }, + "1": { + "then": "OpenStreetMap is duidelijk aangegeven, maar de licentievermelding ontbreekt" + }, + "2": { + "then": "OpenStreetMap was oorspronkelijk niet aangeduid, maar iemand plaatste er een sticker" + }, + "3": { + "then": "Er is geen attributie" + }, + "4": { + "then": "Er is geen attributie" + } + }, + "question": "Is de attributie voor OpenStreetMap aanwezig?" + }, + "map-map_source": { + "mappings": { + "0": { + "then": "Deze kaart is gebaseerd op OpenStreetMap" + } + }, + "question": "Op welke data is deze kaart gebaseerd?", + "render": "Deze kaart is gebaseerd op {map_source}" + } + }, + "title": { + "render": "Kaart" + } + }, + "nature_reserve": { + "description": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.", + "filter": { + "0": { + "options": { + "0": { + "question": "Vrij te bezoeken" + } + } + }, + "1": { + "options": { + "0": { + "question": "Alle natuurgebieden" + }, + "1": { + "question": "Honden mogen vrij rondlopen" + }, + "2": { + "question": "Honden welkom aan de leiband" + } + } + } + }, + "name": "Natuurgebied", + "presets": { + "0": { + "description": "Voeg een ontbrekend, erkend natuurreservaat toe, bv. een gebied dat beheerd wordt door het ANB of natuurpunt", + "title": "natuurreservaat" + } + }, + "tagRenderings": { + "Access tag": { + "mappings": { + "0": { + "then": "Vrij toegankelijk" + }, + "1": { + "then": "Niet toegankelijk" + }, + "2": { + "then": "Niet toegankelijk, want privÊgebied" + }, + "3": { + "then": "Toegankelijk, ondanks dat het privegebied is" + }, + "4": { + "then": "Enkel toegankelijk met een gids of tijdens een activiteit" + }, + "5": { + "then": "Toegankelijk mits betaling" + } + }, + "question": "Is dit gebied toegankelijk?", + "render": "De toegankelijkheid van dit gebied is: {access:description}" + }, + "Curator": { + "question": "Wie is de conservator van dit gebied?
Respecteer privacy - geef deze naam enkel als die duidelijk is gepubliceerd", + "render": "{curator} is de beheerder van dit gebied" + }, + "Dogs?": { + "mappings": { + "0": { + "then": "Honden moeten aan de leiband" + }, + "1": { + "then": "Honden zijn niet toegestaan" + }, + "2": { + "then": "Honden zijn welkom en mogen vrij rondlopen" + } + }, + "question": "Zijn honden toegelaten in dit gebied?" + }, + "Editable description": { + "render": "Extra info: {description:0}" + }, + "Email": { + "question": "Waar kan men naartoe emailen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke emailadressen als deze elders zijn gepubliceerd", + "render": "{email}" + }, + "Name tag": { + "mappings": { + "0": { + "then": "Dit gebied heeft geen naam" + } + }, + "question": "Wat is de naam van dit gebied?", + "render": "Dit gebied heet {name}" + }, + "Name:nl-tag": { + "question": "Wat is de Nederlandstalige naam van dit gebied?", + "render": "Dit gebied heet {name:nl}" + }, + "Non-editable description": { + "render": "Extra info: {description}" + }, + "Operator tag": { + "mappings": { + "0": { + "then": "Dit gebied wordt beheerd door Natuurpunt" + }, + "1": { + "then": "Dit gebied wordt beheerd door {operator}" + }, + "2": { + "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" + } + }, + "question": "Wie beheert dit gebied?", + "render": "Beheer door {operator}" + }, + "Surface area": { + "render": "Totale oppervlakte: {_surface:ha}Ha" + }, + "Website": { + "question": "Op welke webpagina kan men meer informatie vinden over dit natuurgebied?" + }, + "phone": { + "question": "Waar kan men naartoe bellen voor vragen en meldingen van dit natuurgebied?
Respecteer privacy - geef enkel persoonlijke telefoonnummers als deze elders zijn gepubliceerd", + "render": "{phone}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name:nl}" + }, + "1": { + "then": "{name}" + } + }, + "render": "Natuurgebied" + } + }, + "observation_tower": { + "description": "Torens om van het uitzicht te genieten", + "name": "Uitkijktorens", + "presets": { + "0": { + "description": "Een publiek toegankelijke uitkijktoren", + "title": "Uitkijktoren" + } + }, + "tagRenderings": { + "Fee": { + "mappings": { + "0": { + "then": "Gratis te bezoeken" + } + }, + "question": "Hoeveel moet men betalen om deze toren te bezoeken?", + "render": "Deze toren bezoeken kost {charge}" + }, + "Height": { + "question": "Hoe hoog is deze toren?", + "render": "Deze toren is {height} hoog" + }, + "Operator": { + "question": "Wie onderhoudt deze toren?", + "render": "Wordt onderhouden door {operator}" + }, + "name": { + "mappings": { + "0": { + "then": "Deze toren heeft geen specifieke naam" + } + }, + "question": "Heeft deze toren een naam?", + "render": "Deze toren heet {name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Uitkijktoren" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " meter" + } + } + } + } + }, + "parking": { + "description": "Deze laag toont autoparkings", + "name": "Parking", + "presets": { + "0": { + "title": "parking voor auto's" + } + }, + "title": { + "render": "Parking voor auto's" + } + }, + "picnic_table": { + "description": "Deze laag toont picnictafels", + "name": "Picnictafels", + "presets": { + "0": { + "title": "picnic-tafel" + } + }, + "tagRenderings": { + "picnic_table-material": { + "mappings": { + "0": { + "then": "Deze picnictafel is gemaakt uit hout" + }, + "1": { + "then": "Deze picnictafel is gemaakt uit beton" + } + }, + "question": "Van welk materiaal is deze picnictafel gemaakt?", + "render": "Deze picnictafel is gemaakt van {material}" + } + }, + "title": { + "render": "Picnictafel" + } + }, + "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": { + "description": "Speeltuinen", + "name": "Speeltuinen", + "presets": { + "0": { + "title": "Speeltuin" + } + }, + "tagRenderings": { + "Playground-wheelchair": { + "mappings": { + "0": { + "then": "Geheel toegankelijk voor rolstoelgebruikers" + }, + "1": { + "then": "Beperkt toegankelijk voor rolstoelgebruikers" + }, + "2": { + "then": "Niet toegankelijk voor rolstoelgebruikers" + } + }, + "question": "Is deze speeltuin toegankelijk voor rolstoelgebruikers?" + }, + "playground-access": { + "mappings": { + "0": { + "then": "Vrij toegankelijk voor het publiek" + }, + "1": { + "then": "Vrij toegankelijk voor het publiek" + }, + "2": { + "then": "Enkel toegankelijk voor klanten van de bijhorende zaak" + }, + "3": { + "then": "Vrij toegankelijk voor scholieren van de school" + }, + "4": { + "then": "Niet vrij toegankelijk" + } + }, + "question": "Is deze speeltuin vrij toegankelijk voor het publiek?" + }, + "playground-email": { + "question": "Wie kan men emailen indien er problemen zijn met de speeltuin?", + "render": "De bevoegde dienst kan bereikt worden via {email}" + }, + "playground-lit": { + "mappings": { + "0": { + "then": "Deze speeltuin is 's nachts verlicht" + }, + "1": { + "then": "Deze speeltuin is 's nachts niet verlicht" + } + }, + "question": "Is deze speeltuin 's nachts verlicht?" + }, + "playground-max_age": { + "question": "Wat is de maximaal toegestane leeftijd voor deze speeltuin?", + "render": "Toegankelijk tot {max_age}" + }, + "playground-min_age": { + "question": "Wat is de minimale leeftijd om op deze speeltuin te mogen?", + "render": "Toegankelijk vanaf {min_age} jaar oud" + }, + "playground-opening_hours": { + "mappings": { + "0": { + "then": "Van zonsopgang tot zonsondergang" + }, + "1": { + "then": "Dag en nacht toegankelijk" + }, + "2": { + "then": "Dag en nacht toegankelijk" + } + }, + "question": "Op welke uren is deze speeltuin toegankelijk?" + }, + "playground-operator": { + "question": "Wie beheert deze speeltuin?", + "render": "Beheer door {operator}" + }, + "playground-phone": { + "question": "Wie kan men bellen indien er problemen zijn met de speeltuin?", + "render": "De bevoegde dienst kan getelefoneerd worden via {phone}" + }, + "playground-surface": { + "mappings": { + "0": { + "then": "De ondergrond is gras" + }, + "1": { + "then": "De ondergrond is zand" + }, + "2": { + "then": "De ondergrond bestaat uit houtsnippers" + }, + "3": { + "then": "De ondergrond bestaat uit stoeptegels" + }, + "4": { + "then": "De ondergrond is asfalt" + }, + "5": { + "then": "De ondergrond is beton" + }, + "6": { + "then": "De ondergrond is onverhard" + }, + "7": { + "then": "De ondergrond is verhard" + } + }, + "question": "Wat is de ondergrond van deze speeltuin?
Indien er verschillende ondergronden zijn, neem de meest voorkomende", + "render": "De ondergrond is {surface}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Speeltuin {name}" + } + }, + "render": "Speeltuin" + } + }, + "public_bookcase": { + "description": "Een straatkastje met boeken voor iedereen", + "filter": { + "2": { + "options": { + "0": { + "question": "Binnen of buiten" + } + } + } + }, + "name": "Boekenruilkastjes", + "presets": { + "0": { + "title": "Boekenruilkast" + } + }, + "tagRenderings": { + "bookcase-booktypes": { + "mappings": { + "0": { + "then": "Voornamelijk kinderboeken" + }, + "1": { + "then": "Voornamelijk boeken voor volwassenen" + }, + "2": { + "then": "Boeken voor zowel kinderen als volwassenen" + } + }, + "question": "Voor welke doelgroep zijn de meeste boeken in dit boekenruilkastje?" + }, + "bookcase-is-accessible": { + "mappings": { + "0": { + "then": "Publiek toegankelijk" + }, + "1": { + "then": "Enkel toegankelijk voor klanten" + } + }, + "question": "Is dit boekenruilkastje publiek toegankelijk?" + }, + "bookcase-is-indoors": { + "mappings": { + "0": { + "then": "Dit boekenruilkastje staat binnen" + }, + "1": { + "then": "Dit boekenruilkastje staat buiten" + }, + "2": { + "then": "Dit boekenruilkastje staat buiten" + } + }, + "question": "Staat dit boekenruilkastje binnen of buiten?" + }, + "public_bookcase-brand": { + "mappings": { + "0": { + "then": "Deel van het netwerk 'Little Free Library'" + }, + "1": { + "then": "Dit boekenruilkastje maakt geen deel uit van een netwerk" + } + }, + "question": "Is dit boekenruilkastje deel van een netwerk?", + "render": "Dit boekenruilkastje is deel van het netwerk {brand}" + }, + "public_bookcase-capacity": { + "question": "Hoeveel boeken passen er in dit boekenruilkastje?", + "render": "Er passen {capacity} boeken" + }, + "public_bookcase-name": { + "mappings": { + "0": { + "then": "Dit boekenruilkastje heeft geen naam" + } + }, + "question": "Wat is de naam van dit boekenuilkastje?", + "render": "De naam van dit boekenruilkastje is {name}" + }, + "public_bookcase-operator": { + "question": "Wie is verantwoordelijk voor dit boekenruilkastje?", + "render": "Onderhouden door {operator}" + }, + "public_bookcase-ref": { + "mappings": { + "0": { + "then": "Dit boekenruilkastje maakt geen deel uit van een netwerk" + } + }, + "question": "Wat is het referentienummer van dit boekenruilkastje?", + "render": "Het referentienummer binnen {brand} is {ref}" + }, + "public_bookcase-start_date": { + "question": "Op welke dag werd dit boekenruilkastje geinstalleerd?", + "render": "Geplaatst op {start_date}" + }, + "public_bookcase-website": { + "question": "Is er een website over dit boekenruilkastje?", + "render": "Meer info op de website" + } + }, + "title": { + "mappings": { + "0": { + "then": "Boekenruilkast {name}" + } + }, + "render": "Boekenruilkast" + } + }, + "shops": { + "description": "Een winkel", + "name": "Winkel", + "presets": { + "0": { + "description": "Voeg een nieuwe winkel toe", + "title": "Winkel" + } + }, + "tagRenderings": { + "shops-email": { + "question": "Wat is het e-mailadres van deze winkel?", + "render": "{email}" + }, + "shops-name": { + "question": "Wat is de naam van deze winkel?" + }, + "shops-opening_hours": { + "question": "Wat zijn de openingsuren van deze winkel?", + "render": "{opening_hours_table(opening_hours)}" + }, + "shops-phone": { + "question": "Wat is het telefoonnummer?", + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "0": { + "then": "Gemakswinkel" + }, + "1": { + "then": "Supermarkt" + }, + "2": { + "then": "Kledingwinkel" + }, + "3": { + "then": "Kapper" + }, + "4": { + "then": "Bakkerij" + }, + "5": { + "then": "Autogarage" + }, + "6": { + "then": "Autodealer" + } + } + }, + "shops-website": { + "question": "Wat is de website van deze winkel?" + } + }, + "title": { + "render": "Winkel" + } + }, + "slow_roads": { + "name": "Paadjes, trage wegen en autoluwe straten", + "tagRenderings": { + "explanation": { + "mappings": { + "1": { + "then": "Dit is een brede, autovrije straat" + }, + "2": { + "then": "Dit is een voetpaadje" + }, + "3": { + "then": "Dit is een wegeltje of bospad" + }, + "4": { + "then": "Dit is een ruiterswegel" + }, + "5": { + "then": "Dit is een tractorspoor of weg om landbouwgrond te bereikken" + } + } + }, + "slow_roads-surface": { + "mappings": { + "0": { + "then": "De ondergrond is gras" + }, + "1": { + "then": "De ondergrond is aarde" + }, + "2": { + "then": "De ondergrond is onverhard" + }, + "3": { + "then": "De ondergrond is zand" + }, + "4": { + "then": "De ondergrond bestaat uit stoeptegels" + }, + "5": { + "then": "De ondergrond is asfalt" + }, + "6": { + "then": "De ondergrond is beton" + }, + "7": { + "then": "De ondergrond is verhard" + } + }, + "question": "Wat is de wegverharding van dit pad?", + "render": "De ondergrond is {surface}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "Voetpad" + }, + "2": { + "then": "Fietspad" + }, + "3": { + "then": "Voetgangersstraat" + }, + "4": { + "then": "Woonerf" + } + }, + "render": "Trage weg" + } + }, + "sport_pitch": { + "description": "Een sportterrein", + "name": "Sportterrein", + "presets": { + "0": { + "title": "Ping-pong tafel" + }, + "1": { + "title": "Sportterrein" + } + }, + "tagRenderings": { + "sport-pitch-access": { + "mappings": { + "0": { + "then": "Publiek toegankelijk" + }, + "1": { + "then": "Beperkt toegankelijk (enkel na reservatie, tijdens bepaalde uren, ...)" + }, + "2": { + "then": "Enkel toegankelijk voor leden van de bijhorende sportclub" + }, + "3": { + "then": "Privaat en niet toegankelijk" + } + }, + "question": "Is dit sportterrein publiek toegankelijk?" + }, + "sport-pitch-reservation": { + "mappings": { + "0": { + "then": "Reserveren is verplicht om gebruik te maken van dit sportterrein" + }, + "1": { + "then": "Reserveren is sterk aangeraden om gebruik te maken van dit sportterrein" + }, + "2": { + "then": "Reserveren is mogelijk, maar geen voorwaarde" + }, + "3": { + "then": "Reserveren is niet mogelijk" + } + }, + "question": "Moet men reserveren om gebruik te maken van dit sportveld?" + }, + "sport_pitch-email": { + "question": "Wat is het email-adres van de bevoegde dienst of uitbater?" + }, + "sport_pitch-opening_hours": { + "mappings": { + "1": { + "then": "24/7 toegankelijk" + } + }, + "question": "Wanneer is dit sportveld toegankelijk?" + }, + "sport_pitch-phone": { + "question": "Wat is het telefoonnummer van de bevoegde dienst of uitbater?" + }, + "sport_pitch-sport": { + "mappings": { + "0": { + "then": "Hier kan men basketbal spelen" + }, + "1": { + "then": "Hier kan men voetbal spelen" + }, + "2": { + "then": "Dit is een pingpongtafel" + }, + "3": { + "then": "Hier kan men tennis spelen" + }, + "4": { + "then": "Hier kan men korfbal spelen" + }, + "5": { + "then": "Hier kan men basketbal beoefenen" + } + }, + "question": "Welke sporten kan men hier beoefenen?", + "render": "Hier kan men {sport} beoefenen" + }, + "sport_pitch-surface": { + "mappings": { + "0": { + "then": "De ondergrond is gras" + }, + "1": { + "then": "De ondergrond is zand" + }, + "2": { + "then": "De ondergrond bestaat uit stoeptegels" + }, + "3": { + "then": "De ondergrond is asfalt" + }, + "4": { + "then": "De ondergrond is beton" + } + }, + "question": "Wat is de ondergrond van dit sportveld?", + "render": "De ondergrond is {surface}" + } + }, + "title": { + "render": "Sportterrein" + } + }, + "street_lamps": { + "name": "Straatlantaarns", + "presets": { + "0": { + "title": "straatlantaarn" + } + }, + "tagRenderings": { + "colour": { + "mappings": { + "0": { + "then": "Deze lantaarn geeft wit licht" + }, + "1": { + "then": "Deze lantaarn geeft groen licht" + }, + "2": { + "then": "Deze lantaarn geeft oranje licht" + } + }, + "question": "Wat voor kleur licht geeft deze lantaarn?", + "render": "Deze lantaarn geeft {light:colour} licht" + }, + "count": { + "mappings": { + "0": { + "then": "Deze lantaarn heeft 1 lamp" + }, + "1": { + "then": "Deze lantaarn heeft 2 lampen" + } + }, + "question": "Hoeveel lampen heeft deze lantaarn?", + "render": "Deze lantaarn heeft {light:count} lampen" + }, + "direction": { + "question": "Waar is deze lamp heengericht?", + "render": "Deze lantaarn is gericht naar {light:direction}" + }, + "lamp_mount": { + "mappings": { + "0": { + "then": "Deze lantaarn zit boven op een rechte paal" + }, + "1": { + "then": "Deze lantaarn zit aan het eind van een gebogen paal" + } + }, + "question": "Hoe zit deze lantaarn aan de paal?" + }, + "lit": { + "mappings": { + "0": { + "then": "Deze lantaarn is 's nachts verlicht" + }, + "1": { + "then": "Deze lantaarn is 24/7 verlicht" + }, + "2": { + "then": "Deze lantaarn is verlicht op basis van beweging" + }, + "3": { + "then": "Deze lantaarn is verlicht op verzoek (bijv. met een drukknop)" + } + }, + "question": "Wanneer is deze lantaarn verlicht?" + }, + "method": { + "mappings": { + "0": { + "then": "Deze lantaarn is elektrisch verlicht" + }, + "1": { + "then": "Deze lantaarn gebruikt LEDs" + }, + "2": { + "then": "Deze lantaarn gebruikt gloeilampen" + }, + "3": { + "then": "Deze lantaarn gebruikt halogeen verlichting" + }, + "4": { + "then": "Deze lantaarn gebruikt gasontladingslampen (onbekend type)" + }, + "5": { + "then": "Deze lantaarn gebruikt een kwiklamp (enigszins blauwachtig)" + }, + "6": { + "then": "Deze lantaarn gebruikt metaalhalidelampen" + }, + "7": { + "then": "Deze lantaarn gebruikt fluorescentieverlichting (TL en spaarlamp)" + }, + "8": { + "then": "Deze lantaarn gebruikt natriumlampen (onbekend type)" + }, + "9": { + "then": "Deze lantaarn gebruikt lagedruknatriumlampen (monochroom oranje)" + }, + "10": { + "then": "Deze lantaarn gebruikt hogedruknatriumlampen (oranje met wit)" + }, + "11": { + "then": "Deze lantaarn wordt verlicht met gas" + } + }, + "question": "Wat voor verlichting gebruikt deze lantaarn?" + }, + "ref": { + "question": "Wat is het nummer van deze straatlantaarn?", + "render": "Deze straatlantaarn heeft het nummer {ref}" + }, + "support": { + "mappings": { + "0": { + "then": "Deze lantaarn hangt aan kabels" + }, + "1": { + "then": "Deze lantaarn hangt aan een plafond" + }, + "2": { + "then": "Deze lantaarn zit in de grond" + }, + "3": { + "then": "Deze lantaarn zit op een korte paal (meestal < 1.5m)" + }, + "4": { + "then": "Deze lantaarn zit op een paal" + }, + "5": { + "then": "Deze lantaarn hangt direct aan de muur" + }, + "6": { + "then": "Deze lantaarn hangt aan de muur met een metalen balk" + } + }, + "question": "Hoe is deze straatlantaarn gemonteerd?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Straatlantaarn {ref}" + } + }, + "render": "Straatlantaarn" + } + }, + "surveillance_camera": { + "name": "Bewakingscamera's", + "tagRenderings": { + "Camera type: fixed; panning; dome": { + "mappings": { + "0": { + "then": "Een vaste camera" + }, + "1": { + "then": "Een dome (bolvormige camera die kan draaien)" + }, + "2": { + "then": "Een camera die (met een motor) van links naar rechts kan draaien" + } + }, + "question": "Wat voor soort camera is dit?" + }, + "Level": { + "question": "Op welke verdieping bevindt deze camera zich?", + "render": "Bevindt zich op verdieping {level}" + }, + "Operator": { + "question": "Wie beheert deze bewakingscamera?", + "render": "Beheer door {operator}" + }, + "Surveillance type: public, outdoor, indoor": { + "mappings": { + "0": { + "then": "Bewaking van de publieke ruilmte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel..." + }, + "1": { + "then": "Een buitenruimte met privaat karakter (zoals een privÊ-oprit, een parking, tankstation, ...)" + }, + "2": { + "then": "Een private binnenruimte wordt bewaakt, bv. een winkel, een parkeergarage, ..." + } + }, + "question": "Wat soort bewaking wordt hier uitgevoerd?" + }, + "Surveillance:zone": { + "mappings": { + "0": { + "then": "Bewaakt een parking" + }, + "1": { + "then": "Bewaakt het verkeer" + }, + "2": { + "then": "Bewaakt een ingang" + }, + "3": { + "then": "Bewaakt een gang" + }, + "4": { + "then": "Bewaakt een perron of bushalte" + }, + "5": { + "then": "Bewaakt een winkel" + } + }, + "question": "Wat wordt hier precies bewaakt?", + "render": "Bewaakt een {surveillance:zone}" + }, + "camera:mount": { + "mappings": { + "0": { + "then": "Deze camera hangt aan een muur" + }, + "1": { + "then": "Deze camera staat op een paal" + }, + "2": { + "then": "Deze camera hangt aan het plafond" + } + }, + "question": "Hoe is deze camera geplaatst?", + "render": "Montage: {camera:mount}" + }, + "camera_direction": { + "mappings": { + "0": { + "then": "Filmt in kompasrichting {direction}" + } + }, + "question": "In welke geografische richting filmt deze camera?", + "render": "Filmt in kompasrichting {camera:direction}" + }, + "is_indoor": { + "mappings": { + "0": { + "then": "Deze camera bevindt zich binnen" + }, + "1": { + "then": "Deze camera bevindt zich buiten" + }, + "2": { + "then": "Deze camera bevindt zich waarschijnlijk buiten" + } + }, + "question": "Bevindt de bewaakte publieke ruimte camera zich binnen of buiten?" + } + }, + "title": { + "render": "Bewakingscamera" + } + }, + "toilet": { + "filter": { + "0": { + "options": { + "0": { + "question": "Rolstoel toegankelijk" + } + } + }, + "1": { + "options": { + "0": { + "question": "Heeft een luiertafel" + } + } + }, + "2": { + "options": { + "0": { + "question": "Gratis toegankelijk" + } + } + }, + "3": { + "options": { + "0": { + "question": "Nu geopened" + } + } + } + }, + "name": "Toiletten", + "presets": { + "0": { + "description": "Een publieke toilet", + "title": "toilet" + }, + "1": { + "description": "Deze toiletten hebben op zijn minst ÊÊn rolstoeltoegankelijke WC", + "title": "een rolstoeltoegankelijke toilet" + } + }, + "tagRenderings": { + "Opening-hours": { + "mappings": { + "0": { + "then": "Altijd open" + } + }, + "question": "Wanneer zijn deze toiletten open?" + }, + "toilet-access": { + "mappings": { + "0": { + "then": "Publiek toegankelijk" + }, + "1": { + "then": "Enkel toegang voor klanten" + }, + "2": { + "then": "Niet toegankelijk" + }, + "3": { + "then": "Toegankelijk na het vragen van de sleutel" + }, + "4": { + "then": "Publiek toegankelijk" + } + }, + "question": "Zijn deze toiletten publiek toegankelijk?", + "render": "Toegankelijkheid is {access}" + }, + "toilet-changing_table:location": { + "mappings": { + "0": { + "then": "De luiertafel bevindt zich in de vrouwentoiletten " + }, + "1": { + "then": "De luiertafel bevindt zich in de herentoiletten " + }, + "2": { + "then": "De luiertafel bevindt zich in de rolstoeltoegankelijke toilet " + }, + "3": { + "then": "De luiertafel bevindt zich in een daartoe voorziene kamer " + } + }, + "question": "Waar bevindt de luiertafel zich?", + "render": "De luiertafel bevindt zich in {changing_table:location}" + }, + "toilet-charge": { + "question": "Hoeveel moet men betalen om deze toiletten te gebruiken?", + "render": "De toiletten gebruiken kost {charge}" + }, + "toilet-handwashing": { + "mappings": { + "0": { + "then": "Deze toiletten hebben een lavabo waar men de handen kan wassen" + }, + "1": { + "then": "Deze toiletten hebben geen lavabo waar men de handen kan wassen" + } + }, + "question": "Hebben deze toiletten een lavabo om de handen te wassen?" + }, + "toilet-has-paper": { + "mappings": { + "0": { + "then": "Deze toilet is voorzien van toiletpapier" + }, + "1": { + "then": "Je moet je eigen toiletpapier meebrengen naar deze toilet" + } + }, + "question": "Moet je je eigen toiletpapier meenemen naar deze toilet?" + }, + "toilets-changing-table": { + "mappings": { + "0": { + "then": "Er is een luiertafel" + }, + "1": { + "then": "Geen luiertafel" + } + }, + "question": "Is er een luiertafel beschikbaar?" + }, + "toilets-fee": { + "mappings": { + "0": { + "then": "Men moet betalen om deze toiletten te gebruiken" + }, + "1": { + "then": "Gratis te gebruiken" + } + }, + "question": "Zijn deze toiletten gratis te gebruiken?" + }, + "toilets-type": { + "mappings": { + "0": { + "then": "Er zijn enkel WC's om op te zitten" + }, + "1": { + "then": "Er zijn enkel urinoirs" + }, + "2": { + "then": "Er zijn enkel hurktoiletten" + }, + "3": { + "then": "Er zijn zowel urinoirs als zittoiletten" + } + }, + "question": "Welke toiletten zijn dit?" + }, + "toilets-wheelchair": { + "mappings": { + "0": { + "then": "Er is een toilet voor rolstoelgebruikers" + }, + "1": { + "then": "Niet toegankelijk voor rolstoelgebruikers" + } + }, + "question": "Is er een rolstoeltoegankelijke toilet voorzien?" + } + }, + "title": { + "render": "Toilet" + } + }, + "trail": { + "description": "Aangeduide wandeltochten", + "name": "Wandeltochten", + "tagRenderings": { + "Color": { + "mappings": { + "0": { + "then": "Blauwe wandeling" + }, + "1": { + "then": "Rode wandeling" + }, + "2": { + "then": "Groene wandeling" + }, + "3": { + "then": "Gele wandeling" + } + }, + "question": "Welke kleur heeft deze wandeling?", + "render": "Deze wandeling heeft kleur {colour}" + }, + "Name": { + "question": "Wat is de naam van deze wandeling?", + "render": "Deze wandeling heet {name}" + }, + "Operator tag": { + "mappings": { + "0": { + "then": "Dit gebied wordt beheerd door Natuurpunt" + }, + "1": { + "then": "Dit gebied wordt beheerd door {operator}" + } + }, + "question": "Wie beheert deze wandeltocht?", + "render": "Beheer door {operator}" + }, + "Wheelchair access": { + "mappings": { + "0": { + "then": "deze wandeltocht is toegankelijk met de rolstoel" + }, + "1": { + "then": "deze wandeltocht is niet toegankelijk met de rolstoel" + } + }, + "question": "Is deze wandeling toegankelijk met de rolstoel?" + }, + "pushchair access": { + "mappings": { + "0": { + "then": "deze wandeltocht is toegankelijk met de buggy" + }, + "1": { + "then": "deze wandeltocht is niet toegankelijk met de buggy" + } + }, + "question": "Is deze wandeltocht toegankelijk met de buggy?" + }, + "trail-length": { + "render": "Deze wandeling is {_length:km} kilometer lang" + } + }, + "title": { + "render": "Wandeltocht" + } + }, + "tree_node": { + "name": "Boom", + "presets": { + "0": { + "description": "Een boom van een soort die blaadjes heeft, bijvoorbeeld eik of populier.", + "title": "Loofboom" + }, + "1": { + "description": "Een boom van een soort met naalden, bijvoorbeeld den of spar.", + "title": "Naaldboom" + }, + "2": { + "description": "Wanneer je niet zeker bent of het nu een loof- of naaldboom is.", + "title": "Boom" + } + }, + "tagRenderings": { + "tree-decidouous": { + "mappings": { + "0": { + "then": "Bladverliezend: de boom is een periode van het jaar kaal." + }, + "1": { + "then": "Groenblijvend." + } + }, + "question": "Is deze boom groenblijvend of bladverliezend?" + }, + "tree-denotation": { + "mappings": { + "0": { + "then": "De boom valt op door zijn grootte of prominente locatie. Hij is nuttig voor navigatie." + }, + "1": { + "then": "De boom is een natuurlijk monument, bijvoorbeeld doordat hij bijzonder oud of van een waardevolle soort is." + }, + "2": { + "then": "De boom wordt voor landbouwdoeleinden gebruikt, bijvoorbeeld in een boomgaard." + }, + "3": { + "then": "De boom staat in een park of dergelijke (begraafplaats, schoolterrein, â€Ļ)." + }, + "4": { + "then": "De boom staat in de tuin bij een woning/flatgebouw." + }, + "5": { + "then": "Dit is een laanboom." + }, + "6": { + "then": "De boom staat in een woonkern." + }, + "7": { + "then": "De boom staat buiten een woonkern." + } + }, + "question": "Hoe significant is deze boom? Kies het eerste antwoord dat van toepassing is." + }, + "tree-height": { + "mappings": { + "0": { + "then": "Hoogte: {height} m" + } + }, + "render": "Hoogte: {height}" + }, + "tree-heritage": { + "mappings": { + "0": { + "then": "\"\"/ Erkend als houtig erfgoed door Onroerend Erfgoed Vlaanderen" + }, + "1": { + "then": "Erkend als natuurlijk erfgoed door Directie Cultureel Erfgoed Brussel" + }, + "2": { + "then": "Erkend als erfgoed door een andere organisatie" + }, + "3": { + "then": "Niet erkend als erfgoed" + }, + "4": { + "then": "Erkend als erfgoed door een andere organisatie" + } + }, + "question": "Is deze boom erkend als erfgoed?" + }, + "tree-leaf_type": { + "mappings": { + "0": { + "then": "\"\"/ Loofboom" + }, + "1": { + "then": "\"\"/ Naaldboom" + }, + "2": { + "then": "\"\"/ Permanent bladloos" + } + }, + "question": "Is dit een naald- of loofboom?" + }, + "tree_node-name": { + "mappings": { + "0": { + "then": "De boom heeft geen naam." + } + }, + "question": "Heeft de boom een naam?", + "render": "Naam: {name}" + }, + "tree_node-ref:OnroerendErfgoed": { + "question": "Wat is het ID uitgegeven door Onroerend Erfgoed Vlaanderen?", + "render": "\"\"/ Onroerend Erfgoed-ID: {ref:OnroerendErfgoed}" + }, + "tree_node-wikidata": { + "question": "Wat is het Wikidata-ID van deze boom?", + "render": "\"\"/ Wikidata: {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Boom" + } + }, + "viewpoint": { + "description": "Een mooi uitzicht - ideaal om een foto toe te voegen wanneer iets niet in een andere categorie past", + "name": "Uitzicht", + "presets": { + "0": { + "title": "Uitzicht" + } + }, + "tagRenderings": { + "viewpoint-description": { + "question": "Zijn er bijzonderheden die je wilt toevoegen?" + } + }, + "title": { + "render": "Uitzicht" + } + }, + "village_green": { + "name": "Speelweide", + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Speelweide" + } + }, + "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}" + } + }, + "render": "{name}" + } + }, + "waste_basket": { + "description": "Dit is een publieke vuilnisbak waar je je afval kan weggooien.", + "mapRendering": { + "0": { + "iconSize": { + "mappings": { + "0": { + "then": "Vuilnisbak" + } + } + } + } + }, + "name": "Vuilnisbak", + "presets": { + "0": { + "title": "Vuilnisbak" + } + }, + "tagRenderings": { + "dispensing_dog_bags": { + "mappings": { + "0": { + "then": "Deze vuilnisbak heeft een verdeler voor hondenpoepzakjes" + }, + "1": { + "then": "Deze vuilnisbak heeft geenverdeler voor hondenpoepzakjes" + }, + "2": { + "then": "Deze vuilnisbaak heeft waarschijnlijk geen verdeler voor hondenpoepzakjes" + } + }, + "question": "Heeft deze vuilnisbak een verdeler voor hondenpoepzakjes?" + }, + "waste-basket-waste-types": { + "mappings": { + "0": { + "then": "Een vuilnisbak voor zwerfvuil" + }, + "1": { + "then": "Een vuilnisbak voor zwerfvuil" + }, + "2": { + "then": "Een vuilnisbak specifiek voor hondenuitwerpselen" + }, + "3": { + "then": "Een vuilnisbak voor sigarettenpeuken" + }, + "4": { + "then": "Een vuilnisbak voor (vervallen) medicatie en drugs" + }, + "5": { + "then": "Een vuilnisbak voor injectienaalden en andere scherpe voorwerpen" + } + }, + "question": "Wat voor soort vuilnisbak is dit?" + } + }, + "title": { + "render": "Vuilnisbak" + } + }, + "watermill": { + "description": "Watermolens", + "name": "Watermolens", + "tagRenderings": { + "Access tag": { + "mappings": { + "0": { + "then": "Vrij toegankelijk" + }, + "1": { + "then": "Niet toegankelijk" + }, + "2": { + "then": "Niet toegankelijk, want privÊgebied" + }, + "3": { + "then": "Toegankelijk, ondanks dat het privegebied is" + }, + "4": { + "then": "Enkel toegankelijk met een gids of tijdens een activiteit" + }, + "5": { + "then": "Toegankelijk mits betaling" + } + }, + "question": "Is dit gebied toegankelijk?", + "render": "De toegankelijkheid van dit gebied is: {access:description}" + }, + "Operator tag": { + "mappings": { + "0": { + "then": "Dit gebied wordt beheerd door Natuurpunt" + }, + "1": { + "then": "Dit gebied wordt beheerd door {operator}" + } + }, + "question": "Wie beheert dit pad?", + "render": "Beheer door {operator}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name:nl}" + }, + "1": { + "then": "{name}" + } + }, + "render": "Watermolens" + } + } } \ No newline at end of file diff --git a/langs/layers/pl.json b/langs/layers/pl.json index f1a6ac7fc..9674e16c3 100644 --- a/langs/layers/pl.json +++ b/langs/layers/pl.json @@ -1,217 +1,216 @@ { - "artwork": { - "presets": { - "0": { - "title": "Dzieło sztuki" - } - }, - "title": { - "mappings": { - "0": { - "then": "Dzieło sztuki {name}" - } - }, - "render": "Dzieło sztuki" - } + "artwork": { + "presets": { + "0": { + "title": "Dzieło sztuki" + } }, - "bench": { - "name": "Ławki", - "presets": { - "0": { - "title": "Ławka" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Oparcie: Tak" - }, - "1": { - "then": "Oparcie: Nie" - } - }, - "question": "Czy ta ławka ma oparcie?", - "render": "Oparcie" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Kolor: brązowy" - }, - "1": { - "then": "Kolor: zielony" - }, - "2": { - "then": "Kolor: szary" - }, - "3": { - "then": "Kolor: biały" - }, - "4": { - "then": "Kolor: czerwony" - }, - "5": { - "then": "Kolor: czarny" - }, - "6": { - "then": "Kolor: niebieski" - }, - "7": { - "then": "Kolor: ÅŧÃŗłty" - } - }, - "question": "Jaki kolor ma ta ławka?", - "render": "Kolor: {colour}" - }, - "bench-direction": { - "question": "W jakim kierunku patrzysz siedząc na ławce?", - "render": "Siedząc na ławce, patrzy się w kierunku {direction}°." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Materiał: drewno" - }, - "1": { - "then": "Materiał: metal" - }, - "2": { - "then": "Materiał: kamień" - }, - "3": { - "then": "Materiał: beton" - }, - "4": { - "then": "Materiał: plastik" - }, - "5": { - "then": "Materiał: stal" - } - }, - "question": "Z czego wykonana jest ławka (siedzisko)?", - "render": "Materiał: {material}" - }, - "bench-seats": { - "question": "Ile siedzeń ma ta ławka?", - "render": "{seats} siedzeń" - }, - "bench-survey:date": { - "question": "Kiedy ostatnio badano tę ławkę?", - "render": "Ławka ta była ostatnio badana w dniu {survey:date}" - } - }, - "title": { - "render": "Ławka" - } - }, - "bench_at_pt": { - "name": "Ławki na przystankach komunikacji miejskiej", - "tagRenderings": { - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Ławka na przystanku komunikacji miejskiej" - } - }, - "render": "Ławka" - } - }, - "bicycle_library": { - "description": "Obiekt, w ktÃŗrym rowery moÅŧna wypoÅŧyczyć na dłuÅŧszy okres" - }, - "bike_parking": { - "name": "Parking dla rowerÃŗw", - "presets": { - "0": { - "title": "Parking dla rowerÃŗw" - } - }, - "tagRenderings": { - "Bicycle parking type": { - "question": "Jaki jest typ tego parkingu dla rowerÃŗw?", - "render": "Jest to parking rowerowy typu: {bicycle_parking}" - }, - "Underground?": { - "question": "Jaka jest względna lokalizacja tego parkingu rowerowego?" - } - }, - "title": { - "render": "Parking dla rowerÃŗw" - } - }, - "bike_repair_station": { - "presets": { - "0": { - "description": "Urządzenie do pompowania opon w stałym miejscu w przestrzeni publicznej.

Przykłady pompek rowerowych

", - "title": "Pompka do roweru" - }, - "1": { - "title": "Stacja naprawy rowerÃŗw i pompka" - } - }, - "tagRenderings": { - "Operational status": { - "mappings": { - "0": { - "then": "Pompka rowerowa jest zepsuta" - }, - "1": { - "then": "Pompka rowerowa jest sprawna" - } - }, - "question": "Czy pompka rowerowa jest nadal sprawna?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Pompa ręczna" - }, - "1": { - "then": "Pompka elektryczna" - } - }, - "question": "Czy jest to elektryczna pompka do roweru?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "Jest manometr" - }, - "1": { - "then": "Nie ma manometru" - }, - "2": { - "then": "Jest manometr, ale jest uszkodzony" - } - }, - "question": "Czy pompka posiada wskaÅēnik ciśnienia lub manometr?" - }, - "bike_repair_station-valves": { - "question": "Jakie zawory są obsługiwane?", - "render": "Ta pompka obsługuje następujące zawory: {valves}" - } - } - }, - "ghost_bike": { - "name": "Duch roweru", - "title": { - "render": "Duch roweru" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "Warsztat samochodowy" - } - } - } + "title": { + "mappings": { + "0": { + "then": "Dzieło sztuki {name}" } + }, + "render": "Dzieło sztuki" } + }, + "bench": { + "name": "Ławki", + "presets": { + "0": { + "title": "Ławka" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Oparcie: Tak" + }, + "1": { + "then": "Oparcie: Nie" + } + }, + "question": "Czy ta ławka ma oparcie?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Kolor: brązowy" + }, + "1": { + "then": "Kolor: zielony" + }, + "2": { + "then": "Kolor: szary" + }, + "3": { + "then": "Kolor: biały" + }, + "4": { + "then": "Kolor: czerwony" + }, + "5": { + "then": "Kolor: czarny" + }, + "6": { + "then": "Kolor: niebieski" + }, + "7": { + "then": "Kolor: ÅŧÃŗłty" + } + }, + "question": "Jaki kolor ma ta ławka?", + "render": "Kolor: {colour}" + }, + "bench-direction": { + "question": "W jakim kierunku patrzysz siedząc na ławce?", + "render": "Siedząc na ławce, patrzy się w kierunku {direction}°." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Materiał: drewno" + }, + "1": { + "then": "Materiał: metal" + }, + "2": { + "then": "Materiał: kamień" + }, + "3": { + "then": "Materiał: beton" + }, + "4": { + "then": "Materiał: plastik" + }, + "5": { + "then": "Materiał: stal" + } + }, + "question": "Z czego wykonana jest ławka (siedzisko)?", + "render": "Materiał: {material}" + }, + "bench-seats": { + "question": "Ile siedzeń ma ta ławka?", + "render": "{seats} siedzeń" + }, + "bench-survey:date": { + "question": "Kiedy ostatnio badano tę ławkę?", + "render": "Ławka ta była ostatnio badana w dniu {survey:date}" + } + }, + "title": { + "render": "Ławka" + } + }, + "bench_at_pt": { + "name": "Ławki na przystankach komunikacji miejskiej", + "tagRenderings": { + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Ławka na przystanku komunikacji miejskiej" + } + }, + "render": "Ławka" + } + }, + "bicycle_library": { + "description": "Obiekt, w ktÃŗrym rowery moÅŧna wypoÅŧyczyć na dłuÅŧszy okres" + }, + "bike_parking": { + "name": "Parking dla rowerÃŗw", + "presets": { + "0": { + "title": "Parking dla rowerÃŗw" + } + }, + "tagRenderings": { + "Bicycle parking type": { + "question": "Jaki jest typ tego parkingu dla rowerÃŗw?", + "render": "Jest to parking rowerowy typu: {bicycle_parking}" + }, + "Underground?": { + "question": "Jaka jest względna lokalizacja tego parkingu rowerowego?" + } + }, + "title": { + "render": "Parking dla rowerÃŗw" + } + }, + "bike_repair_station": { + "presets": { + "0": { + "description": "Urządzenie do pompowania opon w stałym miejscu w przestrzeni publicznej.

Przykłady pompek rowerowych

", + "title": "Pompka do roweru" + }, + "1": { + "title": "Stacja naprawy rowerÃŗw i pompka" + } + }, + "tagRenderings": { + "Operational status": { + "mappings": { + "0": { + "then": "Pompka rowerowa jest zepsuta" + }, + "1": { + "then": "Pompka rowerowa jest sprawna" + } + }, + "question": "Czy pompka rowerowa jest nadal sprawna?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Pompa ręczna" + }, + "1": { + "then": "Pompka elektryczna" + } + }, + "question": "Czy jest to elektryczna pompka do roweru?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "Jest manometr" + }, + "1": { + "then": "Nie ma manometru" + }, + "2": { + "then": "Jest manometr, ale jest uszkodzony" + } + }, + "question": "Czy pompka posiada wskaÅēnik ciśnienia lub manometr?" + }, + "bike_repair_station-valves": { + "question": "Jakie zawory są obsługiwane?", + "render": "Ta pompka obsługuje następujące zawory: {valves}" + } + } + }, + "ghost_bike": { + "name": "Duch roweru", + "title": { + "render": "Duch roweru" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "Warsztat samochodowy" + } + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/pt.json b/langs/layers/pt.json index fba18aeb3..be98e0014 100644 --- a/langs/layers/pt.json +++ b/langs/layers/pt.json @@ -1,543 +1,542 @@ { - "artwork": { - "presets": { - "0": { - "title": "Obra de arte" - } - }, - "title": { - "mappings": { - "0": { - "then": "Obra de arte {name}" - } - }, - "render": "Obra de arte" - } + "artwork": { + "presets": { + "0": { + "title": "Obra de arte" + } }, - "bench": { - "name": "Bancos", - "presets": { - "0": { - "title": "banco" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Encosto: Sim" - }, - "1": { - "then": "Encosto: NÃŖo" - } - }, - "question": "Este assento tem um escosto?", - "render": "Encosto" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Cor: castanho" - }, - "1": { - "then": "Cor: verde" - }, - "2": { - "then": "Cor: cinzento" - }, - "3": { - "then": "Cor: branco" - }, - "4": { - "then": "Cor: vermelho" - }, - "5": { - "then": "Cor: preto" - }, - "6": { - "then": "Cor: azul" - }, - "7": { - "then": "Cor: amarelo" - } - }, - "question": "Qual a cor dessa bancada?", - "render": "Cor: {colour}" - }, - "bench-direction": { - "question": "Em que direçÃŖo olha quando estÃĄ sentado no banco?", - "render": "Ao sentar-se no banco, olha-se para {direction} °." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Material: madeira" - }, - "1": { - "then": "Material: metal" - }, - "2": { - "then": "Material: pedra" - }, - "3": { - "then": "Material: concreto" - }, - "4": { - "then": "Material: plÃĄstico" - }, - "5": { - "then": "Material: aço" - } - }, - "question": "De que Ê feito o banco (assento)?", - "render": "Material: {material}" - }, - "bench-seats": { - "question": "Quantos assentos este banco tem?", - "render": "{seats} assentos" - }, - "bench-survey:date": { - "question": "Quando esta bancada foi pesquisada pela Ãēltima vez?", - "render": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}" - } - }, - "title": { - "render": "Banco" - } - }, - "bench_at_pt": { - "name": "Bancos em pontos de transporte pÃēblico", - "tagRenderings": { - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Banco em ponto de transporte pÃēblico" - }, - "1": { - "then": "Banco em abrigo" - } - }, - "render": "Banco" - } - }, - "bicycle_library": { - "description": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos", - "name": "Biblioteca de bicicleta", - "presets": { - "0": { - "title": "Biblioteca de bicicletas" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "Bicicletas para crianças disponíveis" - }, - "1": { - "then": "Bicicletas para adulto disponíveis" - }, - "2": { - "then": "Bicicletas para deficientes físicos disponíveis" - } - }, - "question": "Quem pode emprestar bicicletas aqui?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "Emprestar uma bicicleta Ê grÃĄtis" - }, - "1": { - "then": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia" - } - }, - "question": "Quanto custa um emprÊstimo de bicicleta?", - "render": "Custos de emprÊstimo de bicicleta {charge}" - }, - "bicycle_library-name": { - "question": "Qual o nome desta biblioteca de bicicleta?", - "render": "Esta biblioteca de bicicleta Ê chamada de {name}" - } - }, - "title": { - "render": "Biblioteca de bicicleta" - } - }, - "bicycle_tube_vending_machine": { - "name": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", - "presets": { - "0": { - "title": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Esta mÃĄquina de venda automÃĄtica funciona" - }, - "1": { - "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada" - }, - "2": { - "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada" - } - }, - "question": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?", - "render": "O estado operacional Ê: {operational_status" - } - }, - "title": { - "render": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" - } - }, - "bike_cafe": { - "name": "CafÊ de bicicletas", - "presets": { - "0": { - "title": "CafÊ de bicicleta" - } - }, - "tagRenderings": { - "bike_cafe-email": { - "question": "Qual o endereço de email de {name}?" - }, - "bike_cafe-name": { - "question": "Qual o nome deste cafÊ de bicicleta?", - "render": "Este cafÊ de bicicleta se chama {name}" - }, - "bike_cafe-opening_hours": { - "question": "Quando este cafÊ de bicicleta abre?" - }, - "bike_cafe-phone": { - "question": "Qual Ê o nÃēmero de telefone de {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "Este cafÊ de bicicleta conserta bicicletas" - }, - "1": { - "then": "Este cafÊ de bicicleta nÃŖo conserta bicicletas" - } - }, - "question": "Este cafÊ de bicicleta conserta bicicletas?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo" - }, - "1": { - "then": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo" - } - }, - "question": "HÃĄ ferramentas aqui para consertar a sua prÃŗpria bicicleta?" - }, - "bike_cafe-website": { - "question": "Qual o website de {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "CafÊ de bicicleta {name}" - } - }, - "render": "CafÊ de bicicleta" - } - }, - "bike_cleaning": { - "name": "Serviço de limpeza de bicicletas", - "presets": { - "0": { - "title": "Serviço de limpeza de bicicletas" - } - }, - "title": { - "mappings": { - "0": { - "then": "Serviço de limpeza de bicicletas {name}" - } - }, - "render": "Serviço de limpeza de bicicletas" - } - }, - "bike_parking": { - "name": "Estacionamento de bicicletas", - "presets": { - "0": { - "title": "Estacionamento de bicicletas" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "Acessível ao pÃēblico" - }, - "1": { - "then": "Acesso Ê principalmente para visitantes de uma empresa" - }, - "2": { - "then": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo" - } - }, - "question": "Quem pode usar este estacionamento de bicicletas?", - "render": "{access}" - }, - "Bicycle parking type": { - "question": "Qual o tipo deste estacionamento de bicicletas?", - "render": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}" - }, - "Capacity": { - "render": "Lugar para {capacity} bicicletas" - }, - "Cargo bike capacity?": { - "question": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?", - "render": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "Este estacionamento tem vagas para bicicletas de carga" - }, - "1": { - "then": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga." - }, - "2": { - "then": "NÃŖo tem permissÃŖo para estacionar bicicletas de carga" - } - }, - "question": "O estacionamento de bicicletas tem vagas para bicicletas de carga?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "Este estacionamento Ê coberto (tem um telhado)" - }, - "1": { - "then": "Este estacionamento nÃŖo Ê coberto" - } - }, - "question": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos." - }, - "Underground?": { - "mappings": { - "0": { - "then": "Estacionamento subterrÃĸneo" - }, - "1": { - "then": "Estacionamento subterrÃĸneo" - }, - "2": { - "then": "Estacionamento de superfície" - }, - "3": { - "then": "Estacionamento ao nível da superfície" - }, - "4": { - "then": "Estacionamento no telhado" - } - }, - "question": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?" - } - }, - "title": { - "render": "Estacionamento de bicicletas" - } - }, - "bike_repair_station": { - "presets": { - "0": { - "description": "Um aparelho para encher os seus pneus num local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

" - } - }, - "tagRenderings": { - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "HÃĄ somente uma bomba presente" - }, - "1": { - "then": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes" - }, - "2": { - "then": "HÃĄ tanto ferramentas e uma bomba presente" - } - }, - "question": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "HÃĄ uma ferramenta de corrente" - }, - "1": { - "then": "NÃŖo hÃĄ uma ferramenta de corrente" - } - } - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "HÃĄ um gancho ou um suporte" - }, - "1": { - "then": "NÃŖo hÃĄ um gancho ou um suporte" - } - } - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Bomba manual" - }, - "1": { - "then": "Bomba elÊtrica" - } - } - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "HÃĄ um manômetro" - }, - "1": { - "then": "NÃŖo hÃĄ um manômetro" - }, - "2": { - "then": "HÃĄ um manômetro mas estÃĄ quebrado" - } - } - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "Sempre aberto" - }, - "1": { - "then": "Sempre aberto" - } - } - }, - "bike_repair_station-operator": { - "question": "Quem faz a manutençÃŖo desta bomba de ciclo?", - "render": "Mantida por {operator}" - } - }, - "title": { - "mappings": { - "0": { - "then": "EstaçÃŖo de reparo de bicicletas" - }, - "1": { - "then": "EstaçÃŖo de reparo de bicicletas" - } - } - } - }, - "bike_shop": { - "description": "Uma loja que vende especificamente bicicletas ou itens relacionados", - "name": "Reparo/loja de bicicletas", - "tagRenderings": { - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Esta loja aluga bicicletas" - }, - "1": { - "then": "Esta loja nÃŖo aluga bicicletas" - } - }, - "question": "Esta loja aluga bicicletas?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Esta loja conserta bicicletas" - }, - "1": { - "then": "Esta loja nÃŖo conserta bicicletas" - }, - "2": { - "then": "Esta loja conserta bicicletas compradas aqui" - }, - "3": { - "then": "Esta loja conserta bicicletas de uma certa marca" - } - }, - "question": "Esta loja conserta bicicletas?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "Esta loja vende bicicletas" - }, - "1": { - "then": "Esta loja nÃŖo vende bicicletas" - } - }, - "question": "Esta loja vende bicicletas?" - }, - "bike_shop-email": { - "question": "Qual o endereço de email de {name}?" - }, - "bike_shop-is-bicycle_shop": { - "render": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas" - }, - "bike_shop-name": { - "question": "Qual o nome desta loja de bicicletas?", - "render": "Esta loja de bicicletas se chama {nome}" - }, - "bike_shop-phone": { - "question": "Qual Ê o nÃēmero de telefone de {name}?" - }, - "bike_shop-website": { - "question": "Qual o website de {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Loja de equipamentos desportivos {name}" - }, - "2": { - "then": "Aluguel de bicicletas {name}" - }, - "3": { - "then": "Reparo de bicicletas {name}" - }, - "4": { - "then": "Loja de bicicletas {name}" - }, - "5": { - "then": "Loja/reparo de bicicletas {name}" - } - }, - "render": "Reparo/loja de bicicletas" - } - }, - "ghost_bike": { - "name": "Bicicleta fantasma", - "title": { - "render": "Bicicleta fantasma" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "Oficina de automÃŗveis" - } - } - } + "title": { + "mappings": { + "0": { + "then": "Obra de arte {name}" } + }, + "render": "Obra de arte" } + }, + "bench": { + "name": "Bancos", + "presets": { + "0": { + "title": "banco" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Encosto: Sim" + }, + "1": { + "then": "Encosto: NÃŖo" + } + }, + "question": "Este assento tem um escosto?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Cor: castanho" + }, + "1": { + "then": "Cor: verde" + }, + "2": { + "then": "Cor: cinzento" + }, + "3": { + "then": "Cor: branco" + }, + "4": { + "then": "Cor: vermelho" + }, + "5": { + "then": "Cor: preto" + }, + "6": { + "then": "Cor: azul" + }, + "7": { + "then": "Cor: amarelo" + } + }, + "question": "Qual a cor dessa bancada?", + "render": "Cor: {colour}" + }, + "bench-direction": { + "question": "Em que direçÃŖo olha quando estÃĄ sentado no banco?", + "render": "Ao sentar-se no banco, olha-se para {direction} °." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Material: madeira" + }, + "1": { + "then": "Material: metal" + }, + "2": { + "then": "Material: pedra" + }, + "3": { + "then": "Material: concreto" + }, + "4": { + "then": "Material: plÃĄstico" + }, + "5": { + "then": "Material: aço" + } + }, + "question": "De que Ê feito o banco (assento)?", + "render": "Material: {material}" + }, + "bench-seats": { + "question": "Quantos assentos este banco tem?", + "render": "{seats} assentos" + }, + "bench-survey:date": { + "question": "Quando esta bancada foi pesquisada pela Ãēltima vez?", + "render": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}" + } + }, + "title": { + "render": "Banco" + } + }, + "bench_at_pt": { + "name": "Bancos em pontos de transporte pÃēblico", + "tagRenderings": { + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Banco em ponto de transporte pÃēblico" + }, + "1": { + "then": "Banco em abrigo" + } + }, + "render": "Banco" + } + }, + "bicycle_library": { + "description": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos", + "name": "Biblioteca de bicicleta", + "presets": { + "0": { + "title": "Biblioteca de bicicletas" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "Bicicletas para crianças disponíveis" + }, + "1": { + "then": "Bicicletas para adulto disponíveis" + }, + "2": { + "then": "Bicicletas para deficientes físicos disponíveis" + } + }, + "question": "Quem pode emprestar bicicletas aqui?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "Emprestar uma bicicleta Ê grÃĄtis" + }, + "1": { + "then": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia" + } + }, + "question": "Quanto custa um emprÊstimo de bicicleta?", + "render": "Custos de emprÊstimo de bicicleta {charge}" + }, + "bicycle_library-name": { + "question": "Qual o nome desta biblioteca de bicicleta?", + "render": "Esta biblioteca de bicicleta Ê chamada de {name}" + } + }, + "title": { + "render": "Biblioteca de bicicleta" + } + }, + "bicycle_tube_vending_machine": { + "name": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", + "presets": { + "0": { + "title": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Esta mÃĄquina de venda automÃĄtica funciona" + }, + "1": { + "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada" + }, + "2": { + "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada" + } + }, + "question": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?", + "render": "O estado operacional Ê: {operational_status}" + } + }, + "title": { + "render": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" + } + }, + "bike_cafe": { + "name": "CafÊ de bicicletas", + "presets": { + "0": { + "title": "CafÊ de bicicleta" + } + }, + "tagRenderings": { + "bike_cafe-email": { + "question": "Qual o endereço de email de {name}?" + }, + "bike_cafe-name": { + "question": "Qual o nome deste cafÊ de bicicleta?", + "render": "Este cafÊ de bicicleta se chama {name}" + }, + "bike_cafe-opening_hours": { + "question": "Quando este cafÊ de bicicleta abre?" + }, + "bike_cafe-phone": { + "question": "Qual Ê o nÃēmero de telefone de {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "Este cafÊ de bicicleta conserta bicicletas" + }, + "1": { + "then": "Este cafÊ de bicicleta nÃŖo conserta bicicletas" + } + }, + "question": "Este cafÊ de bicicleta conserta bicicletas?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo" + }, + "1": { + "then": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo" + } + }, + "question": "HÃĄ ferramentas aqui para consertar a sua prÃŗpria bicicleta?" + }, + "bike_cafe-website": { + "question": "Qual o website de {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "CafÊ de bicicleta {name}" + } + }, + "render": "CafÊ de bicicleta" + } + }, + "bike_cleaning": { + "name": "Serviço de limpeza de bicicletas", + "presets": { + "0": { + "title": "Serviço de limpeza de bicicletas" + } + }, + "title": { + "mappings": { + "0": { + "then": "Serviço de limpeza de bicicletas {name}" + } + }, + "render": "Serviço de limpeza de bicicletas" + } + }, + "bike_parking": { + "name": "Estacionamento de bicicletas", + "presets": { + "0": { + "title": "Estacionamento de bicicletas" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "Acessível ao pÃēblico" + }, + "1": { + "then": "Acesso Ê principalmente para visitantes de uma empresa" + }, + "2": { + "then": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo" + } + }, + "question": "Quem pode usar este estacionamento de bicicletas?", + "render": "{access}" + }, + "Bicycle parking type": { + "question": "Qual o tipo deste estacionamento de bicicletas?", + "render": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}" + }, + "Capacity": { + "render": "Lugar para {capacity} bicicletas" + }, + "Cargo bike capacity?": { + "question": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?", + "render": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "Este estacionamento tem vagas para bicicletas de carga" + }, + "1": { + "then": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga." + }, + "2": { + "then": "NÃŖo tem permissÃŖo para estacionar bicicletas de carga" + } + }, + "question": "O estacionamento de bicicletas tem vagas para bicicletas de carga?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "Este estacionamento Ê coberto (tem um telhado)" + }, + "1": { + "then": "Este estacionamento nÃŖo Ê coberto" + } + }, + "question": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos." + }, + "Underground?": { + "mappings": { + "0": { + "then": "Estacionamento subterrÃĸneo" + }, + "1": { + "then": "Estacionamento de superfície" + }, + "2": { + "then": "Estacionamento no telhado" + }, + "3": { + "then": "Estacionamento ao nível da superfície" + }, + "4": { + "then": "Estacionamento no telhado" + } + }, + "question": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?" + } + }, + "title": { + "render": "Estacionamento de bicicletas" + } + }, + "bike_repair_station": { + "presets": { + "0": { + "description": "Um aparelho para encher os seus pneus num local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

" + } + }, + "tagRenderings": { + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "HÃĄ somente uma bomba presente" + }, + "1": { + "then": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes" + }, + "2": { + "then": "HÃĄ tanto ferramentas e uma bomba presente" + } + }, + "question": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "HÃĄ uma ferramenta de corrente" + }, + "1": { + "then": "NÃŖo hÃĄ uma ferramenta de corrente" + } + } + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "HÃĄ um gancho ou um suporte" + }, + "1": { + "then": "NÃŖo hÃĄ um gancho ou um suporte" + } + } + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Bomba manual" + }, + "1": { + "then": "Bomba elÊtrica" + } + } + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "HÃĄ um manômetro" + }, + "1": { + "then": "NÃŖo hÃĄ um manômetro" + }, + "2": { + "then": "HÃĄ um manômetro mas estÃĄ quebrado" + } + } + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "Sempre aberto" + }, + "1": { + "then": "Sempre aberto" + } + } + }, + "bike_repair_station-operator": { + "question": "Quem faz a manutençÃŖo desta bomba de ciclo?", + "render": "Mantida por {operator}" + } + }, + "title": { + "mappings": { + "0": { + "then": "EstaçÃŖo de reparo de bicicletas" + }, + "1": { + "then": "EstaçÃŖo de reparo de bicicletas" + } + } + } + }, + "bike_shop": { + "description": "Uma loja que vende especificamente bicicletas ou itens relacionados", + "name": "Reparo/loja de bicicletas", + "tagRenderings": { + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Esta loja aluga bicicletas" + }, + "1": { + "then": "Esta loja nÃŖo aluga bicicletas" + } + }, + "question": "Esta loja aluga bicicletas?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Esta loja conserta bicicletas" + }, + "1": { + "then": "Esta loja nÃŖo conserta bicicletas" + }, + "2": { + "then": "Esta loja conserta bicicletas compradas aqui" + }, + "3": { + "then": "Esta loja conserta bicicletas de uma certa marca" + } + }, + "question": "Esta loja conserta bicicletas?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "Esta loja vende bicicletas" + }, + "1": { + "then": "Esta loja nÃŖo vende bicicletas" + } + }, + "question": "Esta loja vende bicicletas?" + }, + "bike_shop-email": { + "question": "Qual o endereço de email de {name}?" + }, + "bike_shop-is-bicycle_shop": { + "render": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas" + }, + "bike_shop-name": { + "question": "Qual o nome desta loja de bicicletas?", + "render": "Esta loja de bicicletas se chama {name}" + }, + "bike_shop-phone": { + "question": "Qual Ê o nÃēmero de telefone de {name}?" + }, + "bike_shop-website": { + "question": "Qual o website de {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Loja de equipamentos desportivos {name}" + }, + "2": { + "then": "Aluguel de bicicletas {name}" + }, + "3": { + "then": "Reparo de bicicletas {name}" + }, + "4": { + "then": "Loja de bicicletas {name}" + }, + "5": { + "then": "Loja/reparo de bicicletas {name}" + } + }, + "render": "Reparo/loja de bicicletas" + } + }, + "ghost_bike": { + "name": "Bicicleta fantasma", + "title": { + "render": "Bicicleta fantasma" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "Oficina de automÃŗveis" + } + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/pt_BR.json b/langs/layers/pt_BR.json index 8a16a2ab0..a0f45d6f8 100644 --- a/langs/layers/pt_BR.json +++ b/langs/layers/pt_BR.json @@ -1,555 +1,554 @@ { - "artwork": { - "presets": { - "0": { - "title": "Obra de arte" - } - }, - "title": { - "mappings": { - "0": { - "then": "Obra de arte {name}" - } - }, - "render": "Obra de arte" - } + "artwork": { + "presets": { + "0": { + "title": "Obra de arte" + } }, - "bench": { - "name": "Bancos", - "presets": { - "0": { - "title": "banco" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "Encosto: Sim" - }, - "1": { - "then": "Encosto: NÃŖo" - } - }, - "question": "Este assento tem um escosto?", - "render": "Encosto" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "Cor: marrom" - }, - "1": { - "then": "Cor: verde" - }, - "2": { - "then": "Cor: cinza" - }, - "3": { - "then": "Cor: branco" - }, - "4": { - "then": "Cor: vermelho" - }, - "5": { - "then": "Cor: preto" - }, - "6": { - "then": "Cor: azul" - }, - "7": { - "then": "Cor: amarelo" - } - }, - "question": "Qual a cor dessa bancada?", - "render": "Cor: {colour}" - }, - "bench-direction": { - "question": "Em que direçÃŖo vocÃĒ olha quando estÃĄ sentado no banco?", - "render": "Ao sentar-se no banco, olha-se para {direction} °." - }, - "bench-material": { - "mappings": { - "0": { - "then": "Material: madeira" - }, - "1": { - "then": "Material: metal" - }, - "2": { - "then": "Material: pedra" - }, - "3": { - "then": "Material: concreto" - }, - "4": { - "then": "Material: plÃĄstico" - }, - "5": { - "then": "Material: aço" - } - }, - "question": "De que Ê feito o banco (assento)?", - "render": "Material: {material}" - }, - "bench-seats": { - "question": "Quantos assentos este banco tem?", - "render": "{seats} assentos" - }, - "bench-survey:date": { - "question": "Quando esta bancada foi pesquisada pela Ãēltima vez?", - "render": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}" - } - }, - "title": { - "render": "Banco" - } - }, - "bench_at_pt": { - "name": "Bancos em pontos de transporte pÃēblico", - "tagRenderings": { - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Banco em ponto de transporte pÃēblico" - }, - "1": { - "then": "Banco em abrigo" - } - }, - "render": "Banco" - } - }, - "bicycle_library": { - "description": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos", - "name": "Biblioteca de bicicleta", - "presets": { - "0": { - "title": "Biblioteca de bicicletas" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "Bicicletas para crianças disponíveis" - }, - "1": { - "then": "Bicicletas para adulto disponíveis" - }, - "2": { - "then": "Bicicletas para deficientes físicos disponíveis" - } - }, - "question": "Quem pode emprestar bicicletas aqui?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "Emprestar uma bicicleta Ê grÃĄtis" - }, - "1": { - "then": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia" - } - }, - "question": "Quanto custa um emprÊstimo de bicicleta?", - "render": "Custos de emprÊstimo de bicicleta {charge}" - }, - "bicycle_library-name": { - "question": "Qual o nome desta biblioteca de bicicleta?", - "render": "Esta biblioteca de bicicleta Ê chamada de {name}" - } - }, - "title": { - "render": "Biblioteca de bicicleta" - } - }, - "bicycle_tube_vending_machine": { - "name": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", - "presets": { - "0": { - "title": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Esta mÃĄquina de venda automÃĄtica funciona" - }, - "1": { - "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada" - }, - "2": { - "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada" - } - }, - "question": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?", - "render": "O estado operacional Ê: {operational_status" - } - }, - "title": { - "render": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" - } - }, - "bike_cafe": { - "name": "CafÊ de bicicletas", - "presets": { - "0": { - "title": "CafÊ de bicicleta" - } - }, - "tagRenderings": { - "bike_cafe-email": { - "question": "Qual o endereço de email de {name}?" - }, - "bike_cafe-name": { - "question": "Qual o nome deste cafÊ de bicicleta?", - "render": "Este cafÊ de bicicleta se chama {name}" - }, - "bike_cafe-opening_hours": { - "question": "Quando este cafÊ de bicicleta abre?" - }, - "bike_cafe-phone": { - "question": "Qual o nÃēmero de telefone de {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "Este cafÊ de bicicleta conserta bicicletas" - }, - "1": { - "then": "Este cafÊ de bicicleta nÃŖo conserta bicicletas" - } - }, - "question": "Este cafÊ de bicicleta conserta bicicletas?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo" - }, - "1": { - "then": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo" - } - }, - "question": "HÃĄ ferramentas aqui para consertar sua bicicleta?" - }, - "bike_cafe-website": { - "question": "Qual o website de {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "CafÊ de bicicleta {name}" - } - }, - "render": "CafÊ de bicicleta" - } - }, - "bike_cleaning": { - "name": "Serviço de limpeza de bicicletas", - "presets": { - "0": { - "title": "Serviço de limpeza de bicicletas" - } - }, - "title": { - "mappings": { - "0": { - "then": "Serviço de limpeza de bicicletas {name}" - } - }, - "render": "Serviço de limpeza de bicicletas" - } - }, - "bike_parking": { - "name": "Estacionamento de bicicletas", - "presets": { - "0": { - "title": "Estacionamento de bicicletas" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "Acessível ao pÃēblico" - }, - "1": { - "then": "Acesso Ê principalmente para visitantes de uma empresa" - }, - "2": { - "then": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo" - } - }, - "question": "Quem pode usar este estacionamento de bicicletas?", - "render": "{access}" - }, - "Bicycle parking type": { - "question": "Qual o tipo deste estacionamento de bicicletas?", - "render": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}" - }, - "Capacity": { - "render": "Lugar para {capacity} bicicletas" - }, - "Cargo bike capacity?": { - "question": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?", - "render": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "Este estacionamento tem vagas para bicicletas de carga" - }, - "1": { - "then": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga." - }, - "2": { - "then": "VocÃĒ nÃŖo tem permissÃŖo para estacionar bicicletas de carga" - } - }, - "question": "O estacionamento de bicicletas tem vagas para bicicletas de carga?" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "Este estacionamento Ê coberto (tem um telhado)" - }, - "1": { - "then": "Este estacionamento nÃŖo Ê coberto" - } - }, - "question": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos." - }, - "Underground?": { - "mappings": { - "0": { - "then": "Estacionamento subterrÃĸneo" - }, - "1": { - "then": "Estacionamento subterrÃĸneo" - }, - "2": { - "then": "Estacionamento de superfície" - }, - "3": { - "then": "Estacionamento ao nível da superfície" - }, - "4": { - "then": "Estacionamento no telhado" - } - }, - "question": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?" - } - }, - "title": { - "render": "Estacionamento de bicicletas" - } - }, - "bike_repair_station": { - "name": "EstaçÃĩes de bicicletas (reparo, bomba ou ambos)", - "presets": { - "0": { - "description": "Um dispositivo para encher seus pneus em um local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

", - "title": "Bomba de bicicleta" - } - }, - "tagRenderings": { - "bike_repair_station-available-services": { - "mappings": { - "0": { - "then": "HÃĄ somente uma bomba presente" - }, - "1": { - "then": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes" - }, - "2": { - "then": "HÃĄ tanto ferramentas e uma bomba presente" - } - }, - "question": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?" - }, - "bike_repair_station-bike-chain-tool": { - "mappings": { - "0": { - "then": "HÃĄ uma ferramenta de corrente" - }, - "1": { - "then": "NÃŖo hÃĄ uma ferramenta de corrente" - } - } - }, - "bike_repair_station-bike-stand": { - "mappings": { - "0": { - "then": "HÃĄ um gancho ou um suporte" - }, - "1": { - "then": "NÃŖo hÃĄ um gancho ou um suporte" - } - } - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Bomba manual" - }, - "1": { - "then": "Bomba elÊtrica" - } - } - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "HÃĄ um manômetro" - }, - "1": { - "then": "NÃŖo hÃĄ um manômetro" - }, - "2": { - "then": "HÃĄ um manômetro mas estÃĄ quebrado" - } - } - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "Sempre aberto" - }, - "1": { - "then": "Sempre aberto" - } - } - }, - "bike_repair_station-operator": { - "question": "Quem faz a manutençÃŖo desta bomba de ciclo?", - "render": "Mantida por {operator}" - } - }, - "title": { - "mappings": { - "0": { - "then": "EstaçÃŖo de reparo de bicicletas" - }, - "1": { - "then": "EstaçÃŖo de reparo de bicicletas" - }, - "2": { - "then": "Bomba quebrada" - }, - "3": { - "then": "Bomba de bicicleta {name}" - }, - "4": { - "then": "Bomba de bicicleta" - } - }, - "render": "EstaçÃŖo de bicicletas (bomba e reparo)" - } - }, - "bike_shop": { - "description": "Uma loja que vende especificamente bicicletas ou itens relacionados", - "name": "Reparo/loja de bicicletas", - "tagRenderings": { - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Esta loja aluga bicicletas" - }, - "1": { - "then": "Esta loja nÃŖo aluga bicicletas" - } - }, - "question": "Esta loja aluga bicicletas?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Esta loja conserta bicicletas" - }, - "1": { - "then": "Esta loja nÃŖo conserta bicicletas" - }, - "2": { - "then": "Esta loja conserta bicicletas compradas aqui" - }, - "3": { - "then": "Esta loja conserta bicicletas de uma certa marca" - } - }, - "question": "Esta loja conserta bicicletas?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "Esta loja vende bicicletas" - }, - "1": { - "then": "Esta loja nÃŖo vende bicicletas" - } - }, - "question": "Esta loja vende bicicletas?" - }, - "bike_shop-email": { - "question": "Qual o endereço de email de {name}?" - }, - "bike_shop-is-bicycle_shop": { - "render": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas" - }, - "bike_shop-name": { - "question": "Qual o nome desta loja de bicicletas?", - "render": "Esta loja de bicicletas se chama {nome}" - }, - "bike_shop-phone": { - "question": "Qual o nÃēmero de telefone de {name}?" - }, - "bike_shop-website": { - "question": "Qual o website de {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Loja de equipamentos esportivos {name}" - }, - "2": { - "then": "Aluguel de bicicletas {name}" - }, - "3": { - "then": "Reparo de bicicletas {name}" - }, - "4": { - "then": "Loja de bicicletas {name}" - }, - "5": { - "then": "Loja/reparo de bicicletas {name}" - } - }, - "render": "Reparo/loja de bicicletas" - } - }, - "ghost_bike": { - "name": "Bicicleta fantasma", - "title": { - "render": "Bicicleta fantasma" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "Oficina MecÃĸnica" - } - } - } + "title": { + "mappings": { + "0": { + "then": "Obra de arte {name}" } + }, + "render": "Obra de arte" } + }, + "bench": { + "name": "Bancos", + "presets": { + "0": { + "title": "banco" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "Encosto: Sim" + }, + "1": { + "then": "Encosto: NÃŖo" + } + }, + "question": "Este assento tem um escosto?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "Cor: marrom" + }, + "1": { + "then": "Cor: verde" + }, + "2": { + "then": "Cor: cinza" + }, + "3": { + "then": "Cor: branco" + }, + "4": { + "then": "Cor: vermelho" + }, + "5": { + "then": "Cor: preto" + }, + "6": { + "then": "Cor: azul" + }, + "7": { + "then": "Cor: amarelo" + } + }, + "question": "Qual a cor dessa bancada?", + "render": "Cor: {colour}" + }, + "bench-direction": { + "question": "Em que direçÃŖo vocÃĒ olha quando estÃĄ sentado no banco?", + "render": "Ao sentar-se no banco, olha-se para {direction} °." + }, + "bench-material": { + "mappings": { + "0": { + "then": "Material: madeira" + }, + "1": { + "then": "Material: metal" + }, + "2": { + "then": "Material: pedra" + }, + "3": { + "then": "Material: concreto" + }, + "4": { + "then": "Material: plÃĄstico" + }, + "5": { + "then": "Material: aço" + } + }, + "question": "De que Ê feito o banco (assento)?", + "render": "Material: {material}" + }, + "bench-seats": { + "question": "Quantos assentos este banco tem?", + "render": "{seats} assentos" + }, + "bench-survey:date": { + "question": "Quando esta bancada foi pesquisada pela Ãēltima vez?", + "render": "Esta bancada foi pesquisada pela Ãēltima vez em {survey:date}" + } + }, + "title": { + "render": "Banco" + } + }, + "bench_at_pt": { + "name": "Bancos em pontos de transporte pÃēblico", + "tagRenderings": { + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Banco em ponto de transporte pÃēblico" + }, + "1": { + "then": "Banco em abrigo" + } + }, + "render": "Banco" + } + }, + "bicycle_library": { + "description": "Uma instalaçÃŖo onde as bicicletas podem ser emprestadas por períodos mais longos", + "name": "Biblioteca de bicicleta", + "presets": { + "0": { + "title": "Biblioteca de bicicletas" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "Bicicletas para crianças disponíveis" + }, + "1": { + "then": "Bicicletas para adulto disponíveis" + }, + "2": { + "then": "Bicicletas para deficientes físicos disponíveis" + } + }, + "question": "Quem pode emprestar bicicletas aqui?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "Emprestar uma bicicleta Ê grÃĄtis" + }, + "1": { + "then": "Emprestar uma bicicleta custa â‚Ŧ20/ano e â‚Ŧ20 de garantia" + } + }, + "question": "Quanto custa um emprÊstimo de bicicleta?", + "render": "Custos de emprÊstimo de bicicleta {charge}" + }, + "bicycle_library-name": { + "question": "Qual o nome desta biblioteca de bicicleta?", + "render": "Esta biblioteca de bicicleta Ê chamada de {name}" + } + }, + "title": { + "render": "Biblioteca de bicicleta" + } + }, + "bicycle_tube_vending_machine": { + "name": "MÃĄquina de venda automÃĄtica de tubos de bicicleta", + "presets": { + "0": { + "title": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Esta mÃĄquina de venda automÃĄtica funciona" + }, + "1": { + "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ quebrada" + }, + "2": { + "then": "Esta mÃĄquina de venda automÃĄtica estÃĄ fechada" + } + }, + "question": "Esta mÃĄquina de venda automÃĄtica ainda estÃĄ operacional?", + "render": "O estado operacional Ê: {operational_status}" + } + }, + "title": { + "render": "MÃĄquina de venda automÃĄtica de tubos de bicicleta" + } + }, + "bike_cafe": { + "name": "CafÊ de bicicletas", + "presets": { + "0": { + "title": "CafÊ de bicicleta" + } + }, + "tagRenderings": { + "bike_cafe-email": { + "question": "Qual o endereço de email de {name}?" + }, + "bike_cafe-name": { + "question": "Qual o nome deste cafÊ de bicicleta?", + "render": "Este cafÊ de bicicleta se chama {name}" + }, + "bike_cafe-opening_hours": { + "question": "Quando este cafÊ de bicicleta abre?" + }, + "bike_cafe-phone": { + "question": "Qual o nÃēmero de telefone de {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "Este cafÊ de bicicleta conserta bicicletas" + }, + "1": { + "then": "Este cafÊ de bicicleta nÃŖo conserta bicicletas" + } + }, + "question": "Este cafÊ de bicicleta conserta bicicletas?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "Este cafÊ de bicicleta oferece ferramentas de reparo faça vocÃĒ mesmo" + }, + "1": { + "then": "Este cafÊ de bicicleta nÃŖo oferece ferramentas de reparo faça vocÃĒ mesmo" + } + }, + "question": "HÃĄ ferramentas aqui para consertar sua bicicleta?" + }, + "bike_cafe-website": { + "question": "Qual o website de {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "CafÊ de bicicleta {name}" + } + }, + "render": "CafÊ de bicicleta" + } + }, + "bike_cleaning": { + "name": "Serviço de limpeza de bicicletas", + "presets": { + "0": { + "title": "Serviço de limpeza de bicicletas" + } + }, + "title": { + "mappings": { + "0": { + "then": "Serviço de limpeza de bicicletas {name}" + } + }, + "render": "Serviço de limpeza de bicicletas" + } + }, + "bike_parking": { + "name": "Estacionamento de bicicletas", + "presets": { + "0": { + "title": "Estacionamento de bicicletas" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "Acessível ao pÃēblico" + }, + "1": { + "then": "Acesso Ê principalmente para visitantes de uma empresa" + }, + "2": { + "then": "Acesso Ê limitado aos membros de uma escola, companhia ou organizaçÃŖo" + } + }, + "question": "Quem pode usar este estacionamento de bicicletas?", + "render": "{access}" + }, + "Bicycle parking type": { + "question": "Qual o tipo deste estacionamento de bicicletas?", + "render": "Este Ê um estacionamento de bicicletas do tipo: {bicycle_parking}" + }, + "Capacity": { + "render": "Lugar para {capacity} bicicletas" + }, + "Cargo bike capacity?": { + "question": "Quantas bicicletas de carga cabem neste estacionamento de bicicletas?", + "render": "Neste estacionamento cabem {capacity:cargo_bike} bicicletas de carga" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "Este estacionamento tem vagas para bicicletas de carga" + }, + "1": { + "then": "Este estacionamento tem vagas (oficiais) projetadas para bicicletas de carga." + }, + "2": { + "then": "VocÃĒ nÃŖo tem permissÃŖo para estacionar bicicletas de carga" + } + }, + "question": "O estacionamento de bicicletas tem vagas para bicicletas de carga?" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "Este estacionamento Ê coberto (tem um telhado)" + }, + "1": { + "then": "Este estacionamento nÃŖo Ê coberto" + } + }, + "question": "Este estacionamento Ê coberto? TambÊm selecione \"coberto\" para estacionamentos internos." + }, + "Underground?": { + "mappings": { + "0": { + "then": "Estacionamento subterrÃĸneo" + }, + "1": { + "then": "Estacionamento de superfície" + }, + "2": { + "then": "Estacionamento no telhado" + }, + "3": { + "then": "Estacionamento ao nível da superfície" + }, + "4": { + "then": "Estacionamento no telhado" + } + }, + "question": "Qual a localizaçÃŖo relativa deste estacionamento de bicicletas?" + } + }, + "title": { + "render": "Estacionamento de bicicletas" + } + }, + "bike_repair_station": { + "name": "EstaçÃĩes de bicicletas (reparo, bomba ou ambos)", + "presets": { + "0": { + "description": "Um dispositivo para encher seus pneus em um local fixa no espaço pÃēblico

Exemplos de bombas de bicicletas

", + "title": "Bomba de bicicleta" + } + }, + "tagRenderings": { + "bike_repair_station-available-services": { + "mappings": { + "0": { + "then": "HÃĄ somente uma bomba presente" + }, + "1": { + "then": "HÃĄ somente ferramentas (chaves de fenda, alicates...) presentes" + }, + "2": { + "then": "HÃĄ tanto ferramentas e uma bomba presente" + } + }, + "question": "Quais serviços estÃŖo disponíveis nesta estaçÃŖo de bicicletas?" + }, + "bike_repair_station-bike-chain-tool": { + "mappings": { + "0": { + "then": "HÃĄ uma ferramenta de corrente" + }, + "1": { + "then": "NÃŖo hÃĄ uma ferramenta de corrente" + } + } + }, + "bike_repair_station-bike-stand": { + "mappings": { + "0": { + "then": "HÃĄ um gancho ou um suporte" + }, + "1": { + "then": "NÃŖo hÃĄ um gancho ou um suporte" + } + } + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Bomba manual" + }, + "1": { + "then": "Bomba elÊtrica" + } + } + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "HÃĄ um manômetro" + }, + "1": { + "then": "NÃŖo hÃĄ um manômetro" + }, + "2": { + "then": "HÃĄ um manômetro mas estÃĄ quebrado" + } + } + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "Sempre aberto" + }, + "1": { + "then": "Sempre aberto" + } + } + }, + "bike_repair_station-operator": { + "question": "Quem faz a manutençÃŖo desta bomba de ciclo?", + "render": "Mantida por {operator}" + } + }, + "title": { + "mappings": { + "0": { + "then": "EstaçÃŖo de reparo de bicicletas" + }, + "1": { + "then": "EstaçÃŖo de reparo de bicicletas" + }, + "2": { + "then": "Bomba quebrada" + }, + "3": { + "then": "Bomba de bicicleta {name}" + }, + "4": { + "then": "Bomba de bicicleta" + } + }, + "render": "EstaçÃŖo de bicicletas (bomba e reparo)" + } + }, + "bike_shop": { + "description": "Uma loja que vende especificamente bicicletas ou itens relacionados", + "name": "Reparo/loja de bicicletas", + "tagRenderings": { + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Esta loja aluga bicicletas" + }, + "1": { + "then": "Esta loja nÃŖo aluga bicicletas" + } + }, + "question": "Esta loja aluga bicicletas?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Esta loja conserta bicicletas" + }, + "1": { + "then": "Esta loja nÃŖo conserta bicicletas" + }, + "2": { + "then": "Esta loja conserta bicicletas compradas aqui" + }, + "3": { + "then": "Esta loja conserta bicicletas de uma certa marca" + } + }, + "question": "Esta loja conserta bicicletas?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "Esta loja vende bicicletas" + }, + "1": { + "then": "Esta loja nÃŖo vende bicicletas" + } + }, + "question": "Esta loja vende bicicletas?" + }, + "bike_shop-email": { + "question": "Qual o endereço de email de {name}?" + }, + "bike_shop-is-bicycle_shop": { + "render": "Esta loja Ê especializada em vender {shop} e faz atividades relacionadas à bicicletas" + }, + "bike_shop-name": { + "question": "Qual o nome desta loja de bicicletas?", + "render": "Esta loja de bicicletas se chama {name}" + }, + "bike_shop-phone": { + "question": "Qual o nÃēmero de telefone de {name}?" + }, + "bike_shop-website": { + "question": "Qual o website de {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Loja de equipamentos esportivos {name}" + }, + "2": { + "then": "Aluguel de bicicletas {name}" + }, + "3": { + "then": "Reparo de bicicletas {name}" + }, + "4": { + "then": "Loja de bicicletas {name}" + }, + "5": { + "then": "Loja/reparo de bicicletas {name}" + } + }, + "render": "Reparo/loja de bicicletas" + } + }, + "ghost_bike": { + "name": "Bicicleta fantasma", + "title": { + "render": "Bicicleta fantasma" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "Oficina MecÃĸnica" + } + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/ru.json b/langs/layers/ru.json index 8aede7391..447b79dca 100644 --- a/langs/layers/ru.json +++ b/langs/layers/ru.json @@ -1,1468 +1,1409 @@ { - "artwork": { - "description": "РаСĐŊООйŅ€Đ°ĐˇĐŊŅ‹Đĩ ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", - "name": "ПŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", - "presets": { - "0": { - "title": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°" - } + "artwork": { + "description": "РаСĐŊООйŅ€Đ°ĐˇĐŊŅ‹Đĩ ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", + "name": "ПŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиŅ иŅĐēŅƒŅŅŅ‚ва", + "presets": { + "0": { + "title": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°" + } + }, + "tagRenderings": { + "artwork-artist_name": { + "question": "КаĐēОК Ņ…ŅƒĐ´ĐžĐļĐŊиĐē ŅĐžĐˇĐ´Đ°Đģ ŅŅ‚Đž?", + "render": "ХОСдаĐŊĐž {artist_name}" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "АŅ€Ņ…иŅ‚ĐĩĐēŅ‚ŅƒŅ€Đ°" + }, + "1": { + "then": "ФŅ€ĐĩŅĐēĐ°" + }, + "2": { + "then": "ЖивоĐŋиŅŅŒ" + }, + "3": { + "then": "ĐĄĐēŅƒĐģŅŒĐŋŅ‚ŅƒŅ€Đ°" + }, + "4": { + "then": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ" + }, + "5": { + "then": "БŅŽŅŅ‚" + }, + "6": { + "then": "КаĐŧĐĩĐŊŅŒ" + }, + "7": { + "then": "ИĐŊŅŅ‚Đ°ĐģĐģŅŅ†Đ¸Ņ" + }, + "8": { + "then": "ГŅ€Đ°Ņ„Ņ„иŅ‚и" + }, + "9": { + "then": "Đ ĐĩĐģŅŒĐĩŅ„" + }, + "10": { + "then": "АСŅƒĐģĐĩĖĐļŅƒ (иŅĐŋĐ°ĐŊŅĐēĐ°Ņ Ņ€ĐžŅĐŋиŅŅŒ ĐŗĐģаСŅƒŅ€ĐžĐ˛Đ°ĐŊĐŊОК ĐēĐĩŅ€Đ°ĐŧиŅ‡ĐĩŅĐēОК ĐŋĐģиŅ‚Đēи)" + }, + "11": { + "then": "ПĐģиŅ‚ĐēĐ° (ĐŧОСаиĐēĐ°)" + } }, - "tagRenderings": { - "artwork-artist_name": { - "question": "КаĐēОК Ņ…ŅƒĐ´ĐžĐļĐŊиĐē ŅĐžĐˇĐ´Đ°Đģ ŅŅ‚Đž?", - "render": "ХОСдаĐŊĐž {artist_name}" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "АŅ€Ņ…иŅ‚ĐĩĐēŅ‚ŅƒŅ€Đ°" - }, - "1": { - "then": "ФŅ€ĐĩŅĐēĐ°" - }, - "2": { - "then": "ЖивоĐŋиŅŅŒ" - }, - "3": { - "then": "ĐĄĐēŅƒĐģŅŒĐŋŅ‚ŅƒŅ€Đ°" - }, - "4": { - "then": "ĐĄŅ‚Đ°Ņ‚ŅƒŅ" - }, - "5": { - "then": "БŅŽŅŅ‚" - }, - "6": { - "then": "КаĐŧĐĩĐŊŅŒ" - }, - "7": { - "then": "ИĐŊŅŅ‚Đ°ĐģĐģŅŅ†Đ¸Ņ" - }, - "8": { - "then": "ГŅ€Đ°Ņ„Ņ„иŅ‚и" - }, - "9": { - "then": "Đ ĐĩĐģŅŒĐĩŅ„" - }, - "10": { - "then": "АСŅƒĐģĐĩĖĐļŅƒ (иŅĐŋĐ°ĐŊŅĐēĐ°Ņ Ņ€ĐžŅĐŋиŅŅŒ ĐŗĐģаСŅƒŅ€ĐžĐ˛Đ°ĐŊĐŊОК ĐēĐĩŅ€Đ°ĐŧиŅ‡ĐĩŅĐēОК ĐŋĐģиŅ‚Đēи)" - }, - "11": { - "then": "ПĐģиŅ‚ĐēĐ° (ĐŧОСаиĐēĐ°)" - } - }, - "question": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° Ņ€Đ°ĐąĐžŅ‚Đ°?", - "render": "Đ­Ņ‚Đž {artwork_type}" - }, - "artwork-website": { - "question": "ЕŅŅ‚ŅŒ Đģи ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", - "render": "БоĐģŅŒŅˆĐĩ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Đ¸ ĐŊĐ° ŅŅ‚ĐžĐŧ ŅĐ°ĐšŅ‚Đĩ" - }, - "artwork-wikidata": { - "question": "КаĐēĐ°Ņ СаĐŋиŅŅŒ в Wikidata ŅĐžĐžŅ‚вĐĩŅ‚ŅĐ˛ŅƒĐĩŅ‚ ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", - "render": "ЗаĐŋиŅŅŒ Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ в wikidata: {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ° {name}" - } - }, - "render": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°" + "question": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° Ņ€Đ°ĐąĐžŅ‚Đ°?", + "render": "Đ­Ņ‚Đž {artwork_type}" + }, + "artwork-website": { + "question": "ЕŅŅ‚ŅŒ Đģи ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", + "render": "БоĐģŅŒŅˆĐĩ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Đ¸ ĐŊĐ° ŅŅ‚ĐžĐŧ ŅĐ°ĐšŅ‚Đĩ" + }, + "artwork-wikidata": { + "question": "КаĐēĐ°Ņ СаĐŋиŅŅŒ в Wikidata ŅĐžĐžŅ‚вĐĩŅ‚ŅĐ˛ŅƒĐĩŅ‚ ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ?", + "render": "ЗаĐŋиŅŅŒ Ой ŅŅ‚ОК Ņ€Đ°ĐąĐžŅ‚Đĩ в wikidata: {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ° {name}" } - }, - "barrier": { - "name": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виŅ", - "presets": { - "0": { - "title": "ПŅ€Đ¸ĐēĐžĐģ" - } - }, - "title": { - "mappings": { - "0": { - "then": "ПŅ€Đ¸ĐēĐžĐģ" - } - }, - "render": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виĐĩ" - } - }, - "bench": { - "name": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи", - "presets": { - "0": { - "title": "cĐēĐ°ĐŧĐĩĐšĐēĐ°" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "ĐĄĐž ŅĐŋиĐŊĐēОК" - }, - "1": { - "then": "БĐĩС ŅĐŋиĐŊĐēи" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ŅĐŋиĐŊĐēĐ°?", - "render": "ĐĄĐŋиĐŊĐēĐ°" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "ĐĻвĐĩŅ‚: ĐēĐžŅ€Đ¸Ņ‡ĐŊĐĩвŅ‹Đš" - }, - "1": { - "then": "ĐĻвĐĩŅ‚: СĐĩĐģĐĩĐŊŅ‹Đš" - }, - "2": { - "then": "ĐĻвĐĩŅ‚: ŅĐĩŅ€Ņ‹Đš" - }, - "3": { - "then": "ĐĻвĐĩŅ‚: ĐąĐĩĐģŅ‹Đš" - }, - "4": { - "then": "ĐĻвĐĩŅ‚: ĐēŅ€Đ°ŅĐŊŅ‹Đš" - }, - "5": { - "then": "ĐĻвĐĩŅ‚: Ņ‡Ņ‘Ņ€ĐŊŅ‹Đš" - }, - "6": { - "then": "ĐĻвĐĩŅ‚: ŅĐ¸ĐŊиК" - }, - "7": { - "then": "ĐĻвĐĩŅ‚: ĐļĐĩĐģŅ‚Ņ‹Đš" - } - }, - "question": "КаĐēĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", - "render": "ĐĻвĐĩŅ‚: {colour}" - }, - "bench-direction": { - "question": "В ĐēĐ°ĐēĐžĐŧ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊии вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ, ĐēĐžĐŗĐ´Đ° ŅĐ¸Đ´Đ¸Ņ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", - "render": "ХидŅ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ, вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ в ŅŅ‚ĐžŅ€ĐžĐŊŅƒ {direction}°." - }, - "bench-material": { - "mappings": { - "0": { - "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: Đ´ĐĩŅ€ĐĩвО" - }, - "1": { - "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŧĐĩŅ‚Đ°ĐģĐģ" - }, - "2": { - "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐēĐ°ĐŧĐĩĐŊŅŒ" - }, - "3": { - "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐąĐĩŅ‚ĐžĐŊ" - }, - "4": { - "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŋĐģĐ°ŅŅ‚иĐē" - }, - "5": { - "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ŅŅ‚Đ°ĐģŅŒ" - } - }, - "question": "ИС ĐēĐ°ĐēĐžĐŗĐž ĐŧĐ°Ņ‚ĐĩŅ€Đ¸Đ°ĐģĐ° ŅĐ´ĐĩĐģĐ°ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", - "render": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: {material}" - }, - "bench-seats": { - "question": "ĐĄĐēĐžĐģŅŒĐēĐž ĐŧĐĩŅŅ‚ ĐŊĐ° ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", - "render": "{seats} ĐŧĐĩŅŅ‚" - }, - "bench-survey:date": { - "question": "КоĐŗĐ´Đ° ĐŋĐžŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐģи ŅŅ‚Ņƒ ŅĐēĐ°ĐŧĐĩĐšĐēŅƒ?", - "render": "ПоŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐŊиĐĩ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ĐŋŅ€ĐžĐ˛ĐžĐ´Đ¸ĐģĐžŅŅŒ {survey:date}" - } - }, - "title": { - "render": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°" - } - }, - "bench_at_pt": { - "name": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐ°Ņ… ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "ВŅŅ‚Đ°ĐŊŅŒŅ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ" - }, - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐĩ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°" - }, - "1": { - "then": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° в ŅƒĐēŅ€Ņ‹Ņ‚ии" - } - }, - "render": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°" - } - }, - "bicycle_library": { - "description": "ĐŖŅ‡Ņ€ĐĩĐļĐ´ĐĩĐŊиĐĩ, ĐŗĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ ĐŧĐžĐļĐĩŅ‚ ĐąŅ‹Ņ‚ŅŒ Đ°Ņ€ĐĩĐŊдОваĐŊ ĐŊĐ° йОĐģĐĩĐĩ Đ´ĐģиŅ‚ĐĩĐģŅŒĐŊŅ‹Đš ŅŅ€ĐžĐē", - "name": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", - "presets": { - "0": { - "description": "В вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊОК йийĐģиОŅ‚ĐĩĐēĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ Đ°Ņ€ĐĩĐŊĐ´Ņ‹", - "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ Đ´ĐĩŅ‚ŅĐēиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - }, - "1": { - "then": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" - }, - "2": { - "then": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ ĐģŅŽĐ´ĐĩĐš Ņ ĐžĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đŧи вОСĐŧĐžĐļĐŊĐžŅŅ‚ŅĐŧи" - } - }, - "question": "КŅ‚Đž СдĐĩŅŅŒ ĐŧĐžĐļĐĩŅ‚ Đ°Ņ€ĐĩĐŊдОваŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´?" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐĩĐŊ" - }, - "1": { - "then": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° ŅŅ‚ОиŅ‚ â‚Ŧ20/ĐŗОд и â‚Ŧ20 СаĐģĐžĐŗ" - } - }, - "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?", - "render": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ Đ°Ņ€ĐĩĐŊĐ´Ņ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° {charge}" - }, - "bicycle_library-name": { - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°?", - "render": "Đ­Ņ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ° ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" - } - }, - "title": { - "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°" - } - }, - "bicycle_tube_vending_machine": { - "name": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов", - "presets": { - "0": { - "title": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚" - }, - "1": { - "then": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ ŅĐģĐžĐŧĐ°ĐŊ" - }, - "2": { - "then": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ СаĐēŅ€Ņ‹Ņ‚" - } - }, - "question": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?", - "render": "РайОŅ‡Đ¸Đš ŅŅ‚Đ°Ņ‚ŅƒŅ: {operational_status" - } - }, - "title": { - "render": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов" - } - }, - "bike_cafe": { - "name": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", - "presets": { - "0": { - "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?" - }, - "bike_cafe-email": { - "question": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?" - }, - "bike_cafe-name": { - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đž йаКĐē-ĐēĐ°Ņ„Đĩ?", - "render": "Đ­Ņ‚Đž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" - }, - "bike_cafe-opening_hours": { - "question": "КаĐēОв Ņ€ĐĩĐļиĐŧ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐēĐ°Ņ„Đĩ?" - }, - "bike_cafe-phone": { - "question": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ?" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ов Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ваŅˆĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?" - }, - "bike_cafe-website": { - "question": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ {name}" - } - }, - "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ" - } - }, - "bike_parking": { - "name": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°", - "presets": { - "0": { - "title": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°" - } - }, - "tagRenderings": { - "Access": { - "question": "КŅ‚Đž ĐŧĐžĐļĐĩŅ‚ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēОК?", - "render": "{access}" - }, - "Bicycle parking type": { - "mappings": { - "3": { - "then": "ĐĄŅ‚ОКĐēĐ° " - }, - "4": { - "then": "ДвŅƒŅ…ŅƒŅ€ĐžĐ˛ĐŊĐĩваŅ " - }, - "5": { - "then": "НавĐĩŅ " - } - }, - "question": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°?", - "render": "Đ­Ņ‚Đž вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ° Ņ‚иĐŋĐ° {bicycle_parking}" - }, - "Capacity": { - "render": "МĐĩŅŅ‚Đž Đ´ĐģŅ {capacity} вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°(Ов)" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "Đ­Ņ‚Đž ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ° (ĐĩŅŅ‚ŅŒ ĐēŅ€Ņ‹ŅˆĐ°/ĐŊавĐĩŅ)" - }, - "1": { - "then": "Đ­Ņ‚Đž ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°" - } - } - }, - "Underground?": { - "mappings": { - "0": { - "then": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°" - }, - "1": { - "then": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°" - }, - "4": { - "then": "ПаŅ€ĐēОвĐēĐ° ĐŊĐ° ĐēŅ€Ņ‹ŅˆĐĩ" - } - } - } - }, - "title": { - "render": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°" - } - }, - "bike_repair_station": { - "presets": { - "0": { - "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ" - } - }, - "tagRenderings": { - "Operational status": { - "mappings": { - "0": { - "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ ŅĐģĐžĐŧĐ°ĐŊ" - }, - "1": { - "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚" - } - }, - "question": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?" - }, - "bike_repair_station-electrical_pump": { - "mappings": { - "0": { - "then": "Đ ŅƒŅ‡ĐŊОК ĐŊĐ°ŅĐžŅ" - }, - "1": { - "then": "Đ­ĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК ĐŊĐ°ŅĐžŅ" - } - }, - "question": "Đ­Ņ‚Đž ŅĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ?" - }, - "bike_repair_station-manometer": { - "mappings": { - "0": { - "then": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€" - }, - "1": { - "then": "НĐĩŅ‚ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€Đ°" - }, - "2": { - "then": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€, ĐŊĐž ĐžĐŊ ŅĐģĐžĐŧĐ°ĐŊ" - } - } - }, - "bike_repair_station-opening_hours": { - "mappings": { - "0": { - "then": "ВŅĐĩĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đž" - } - }, - "question": "КоĐŗĐ´Đ° Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚ ŅŅ‚Đ° Ņ‚ĐžŅ‡ĐēĐ° ОйŅĐģŅƒĐļиваĐŊиŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?" - }, - "bike_repair_station-valves": { - "mappings": { - "0": { - "then": "КĐģĐ°ĐŋĐ°ĐŊ Presta (Ņ‚Đ°ĐēĐļĐĩ иСвĐĩŅŅ‚ĐŊŅ‹Đš ĐēĐ°Đē Ņ„Ņ€Đ°ĐŊŅ†ŅƒĐˇŅĐēиК ĐēĐģĐ°ĐŋĐ°ĐŊ)" - }, - "1": { - "then": "КĐģĐ°ĐŋĐ°ĐŊ Dunlop" - } - }, - "render": "Đ­Ņ‚ĐžŅ‚ ĐŊĐ°ŅĐžŅ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ ŅĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đĩ ĐēĐģĐ°ĐŋĐ°ĐŊŅ‹: {valves}" - } - }, - "title": { - "mappings": { - "2": { - "then": "ĐĄĐģĐžĐŧĐ°ĐŊĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ" - }, - "3": { - "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ {name}" - }, - "4": { - "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ" - } - } - } - }, - "bike_shop": { - "description": "МаĐŗаСиĐŊ, ŅĐŋĐĩŅ†Đ¸Đ°ĐģиСиŅ€ŅƒŅŽŅ‰Đ¸ĐšŅŅ ĐŊĐ° ĐŋŅ€ĐžĐ´Đ°ĐļĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв иĐģи ŅĐžĐŋŅƒŅ‚ŅŅ‚вŅƒŅŽŅ‰Đ¸Ņ… Ņ‚ОваŅ€ĐžĐ˛", - "name": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ", - "presets": { - "0": { - "title": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ" - } - }, - "tagRenderings": { - "bike_repair_bike-pump-service": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" - } - }, - "question": "ПŅ€ĐĩĐ´ĐģĐ°ĐŗĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?" - }, - "bike_repair_bike-wash": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐžĐēаСŅ‹Đ˛Đ°ŅŽŅ‚ŅŅ ŅƒŅĐģŅƒĐŗи ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" - }, - "2": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" - } - }, - "question": "ЗдĐĩŅŅŒ ĐŧĐžŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" - }, - "bike_repair_rents-bikes": { - "mappings": { - "0": { - "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ" - }, - "1": { - "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐŊĐ°ĐŋŅ€ĐžĐēĐ°Ņ‚" - } - }, - "question": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ?" - }, - "bike_repair_repairs-bikes": { - "mappings": { - "0": { - "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - }, - "1": { - "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - }, - "2": { - "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ Ņ‚ĐžĐģŅŒĐēĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹, ĐēŅƒĐŋĐģĐĩĐŊĐŊŅ‹Đĩ СдĐĩŅŅŒ" - }, - "3": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ОйŅĐģŅƒĐļиваŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐąŅ€ĐĩĐŊĐ´Đ°" - } - }, - "question": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" - }, - "bike_repair_second-hand-bikes": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - }, - "2": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Ņ‚ĐžĐģŅŒĐēĐž ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - } - }, - "question": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" - }, - "bike_repair_sells-bikes": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" - } - }, - "question": "ПŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Đģи вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?" - }, - "bike_repair_tools-service": { - "mappings": { - "2": { - "then": "ИĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹ Ņ‚ĐžĐģŅŒĐēĐž ĐŋŅ€Đ¸ ĐŋĐžĐēŅƒĐŋĐēĐĩ/Đ°Ņ€ĐĩĐŊĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° в ĐŧĐ°ĐŗаСиĐŊĐĩ" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐžĐąŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?" - }, - "bike_shop-email": { - "question": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?" - }, - "bike_shop-name": { - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?", - "render": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" - }, - "bike_shop-phone": { - "question": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?" - }, - "bike_shop-website": { - "question": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?" - } - }, - "title": { - "mappings": { - "0": { - "then": "МаĐŗаСиĐŊ ŅĐŋĐžŅ€Ņ‚ивĐŊĐžĐŗĐž иĐŊвĐĩĐŊŅ‚Đ°Ņ€Ņ {name}" - }, - "2": { - "then": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}" - }, - "3": { - "then": "Đ ĐĩĐŧĐžĐŊŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}" - }, - "4": { - "then": "МаĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}" - } - }, - "render": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ" - } - }, - "binocular": { - "description": "БиĐŊĐžĐēĐģи", - "name": "БиĐŊĐžĐēĐģŅŒ", - "presets": { - "0": { - "title": "йиĐŊĐžĐēĐģŅŒ" - } - }, - "title": { - "render": "БиĐŊĐžĐēĐģŅŒ" - } - }, - "cafe_pub": { - "presets": { - "0": { - "title": "ĐŋĐ°Đą" - }, - "1": { - "title": "йаŅ€" - }, - "2": { - "title": "ĐēĐ°Ņ„Đĩ" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - } - } - }, - "charging_station": { - "presets": { - "0": { - "title": "ЗаŅ€ŅĐ´ĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ" - } - }, - "tagRenderings": { - "Network": { - "question": "К ĐēĐ°ĐēОК ŅĐĩŅ‚и ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ?", - "render": "{network}" - }, - "OH": { - "question": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚ ŅŅ‚Đ° СаŅ€ŅĐ´ĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ?" - } - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " ĐŧиĐŊŅƒŅ‚", - "humanSingular": " ĐŧиĐŊŅƒŅ‚Đ°" - }, - "1": { - "human": " Ņ‡Đ°ŅĐžĐ˛", - "humanSingular": " Ņ‡Đ°Ņ" - }, - "2": { - "human": " Đ´ĐŊĐĩĐš", - "humanSingular": " Đ´ĐĩĐŊŅŒ" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": "ВоĐģŅŒŅ‚" - } - } - }, - "3": { - "applicableUnits": { - "0": { - "human": "ĐēиĐģОваŅ‚Ņ‚" - }, - "1": { - "human": "ĐŧĐĩĐŗаваŅ‚Ņ‚" - } - } - } - } - }, - "crossings": { - "presets": { - "1": { - "title": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€" - } - }, - "title": { - "mappings": { - "0": { - "then": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€" - } - } - } - }, - "cycleways_and_roads": { - "title": { - "mappings": { - "0": { - "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ Đ´ĐžŅ€ĐžĐļĐēĐ°" - } - }, - "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đĩ Đ´ĐžŅ€ĐžĐļĐēи" - } - }, - "defibrillator": { - "icon": { - "mappings": { - "0": { - "then": "./assets/layers/defibrillator/aed_checked.svg" - } - } - }, - "name": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€Ņ‹", - "presets": { - "0": { - "title": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" - } - }, - "tagRenderings": { - "defibrillator-access": { - "mappings": { - "0": { - "then": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" - }, - "1": { - "then": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" - }, - "2": { - "then": "ДоŅŅ‚ŅƒĐŋĐŊĐž Ņ‚ĐžĐģŅŒĐēĐž Đ´ĐģŅ ĐēĐģиĐĩĐŊŅ‚Ов" - } - } - }, - "defibrillator-defibrillator": { - "mappings": { - "1": { - "then": "Đ­Ņ‚Đž ОйŅ‹Ņ‡ĐŊŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚иŅ‡ĐĩŅĐēиК Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" - } - } - }, - "defibrillator-description": { - "render": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ: {description}" - }, - "defibrillator-fixme": { - "render": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Đ´ĐģŅ ŅĐēŅĐŋĐĩŅ€Ņ‚Ов OpenStreetMap: {fixme}" - }, - "defibrillator-opening_hours": { - "question": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ ŅŅ‚ĐžŅ‚ Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€?", - "render": "{opening_hours_table(opening_hours)}" - }, - "defibrillator-survey:date": { - "mappings": { - "0": { - "then": "ПŅ€ĐžĐ˛ĐĩŅ€ĐĩĐŊĐž ŅĐĩĐŗОдĐŊŅ!" - } - } - } - }, - "title": { - "render": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" - } - }, - "direction": { - "name": "ВизŅƒĐ°ĐģиСаŅ†Đ¸Ņ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиŅ" - }, - "drinking_water": { - "name": "ПиŅ‚ŅŒĐĩваŅ вОда", - "presets": { - "0": { - "title": "ĐŋиŅ‚ŅŒĐĩваŅ вОда" - } - }, - "title": { - "render": "ПиŅ‚ŅŒĐĩваŅ вОда" - } - }, - "food": { - "presets": { - "0": { - "title": "Ņ€ĐĩŅŅ‚ĐžŅ€Đ°ĐŊ" - }, - "1": { - "title": "ĐąŅ‹ŅŅ‚Ņ€ĐžĐĩ ĐŋиŅ‚Đ°ĐŊиĐĩ" - } - }, - "tagRenderings": { - "friture-take-your-container": { - "mappings": { - "1": { - "then": "ПŅ€Đ¸ĐŊĐžŅĐ¸Ņ‚ŅŒ ŅĐ˛ĐžŅŽ Ņ‚Đ°Ņ€Ņƒ ĐŊĐĩ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐĩĐŊĐž" - } - } - } - } - }, - "ghost_bike": { - "name": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost", - "tagRenderings": { - "ghost_bike-inscription": { - "render": "{inscription}" - }, - "ghost_bike-name": { - "render": "В СĐŊĐ°Đē ĐŋĐ°ĐŧŅŅ‚и Đž {name}" - }, - "ghost_bike-source": { - "render": "ДоŅŅ‚ŅƒĐŋĐŊĐ° йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ" - }, - "ghost_bike-start_date": { - "render": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}" - } - }, - "title": { - "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost" - } - }, - "information_board": { - "name": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đĩ Ņ‰Đ¸Ņ‚Ņ‹", - "presets": { - "0": { - "title": "иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" - } - }, - "title": { - "render": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" - } - }, - "map": { - "name": "КаŅ€Ņ‚Ņ‹", - "presets": { - "0": { - "title": "КаŅ€Ņ‚Đ°" - } - }, - "tagRenderings": { - "map-map_source": { - "mappings": { - "0": { - "then": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° OpenStreetMap" - } - }, - "render": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° {map_source}" - } - }, - "title": { - "render": "КаŅ€Ņ‚Đ°" - } - }, - "nature_reserve": { - "tagRenderings": { - "Email": { - "render": "{email}" - }, - "phone": { - "render": "{phone}" - } - } - }, - "observation_tower": { - "name": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Ņ‹Đĩ йаŅˆĐŊи", - "presets": { - "0": { - "title": "ŅĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " ĐŧĐĩŅ‚Ņ€" - } - } - } - } - }, - "picnic_table": { - "description": "ĐĄĐģОК, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ŅŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "name": "ĐĄŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", - "presets": { - "0": { - "title": "ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" - } - }, - "tagRenderings": { - "picnic_table-material": { - "mappings": { - "0": { - "then": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвŅĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" - }, - "1": { - "then": "Đ­Ņ‚Đž ĐąĐĩŅ‚ĐžĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" - } - }, - "question": "ИС Ņ‡ĐĩĐŗĐž иСĐŗĐžŅ‚ОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°?", - "render": "Đ­Ņ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ° ŅĐ´ĐĩĐģĐ°ĐŊ иС {material}" - } - }, - "title": { - "render": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" - } - }, - "playground": { - "description": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", - "name": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", - "presets": { - "0": { - "title": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" - } - }, - "tagRenderings": { - "Playground-wheelchair": { - "mappings": { - "0": { - "then": "ПоĐģĐŊĐžŅŅ‚ŅŒŅŽ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - }, - "1": { - "then": "ЧаŅŅ‚иŅ‡ĐŊĐž Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - }, - "2": { - "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - } - }, - "question": "ДоŅŅ‚ŅƒĐŋĐŊĐ° Đģи Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē?" - }, - "playground-access": { - "mappings": { - "4": { - "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž" - } - } - }, - "playground-email": { - "render": "{email}" - }, - "playground-lit": { - "mappings": { - "0": { - "then": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ" - }, - "1": { - "then": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŊĐĩ ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ" - } - }, - "question": "Đ­Ņ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ?" - }, - "playground-max_age": { - "render": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐĩŅ‚ŅĐŧ Đ´Đž {max_age}" - }, - "playground-min_age": { - "question": "ĐĄ ĐēĐ°ĐēĐžĐŗĐž вОСŅ€Đ°ŅŅ‚Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?", - "render": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš ŅŅ‚Đ°Ņ€ŅˆĐĩ {min_age} ĐģĐĩŅ‚" - }, - "playground-opening_hours": { - "mappings": { - "0": { - "then": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đž ĐžŅ‚ Ņ€Đ°ŅŅĐ˛ĐĩŅ‚Đ° Đ´Đž СаĐēĐ°Ņ‚Đ°" - }, - "1": { - "then": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ" - }, - "2": { - "then": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ" - } - }, - "question": "КоĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ° ŅŅ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?" - }, - "playground-phone": { - "render": "{phone}" - }, - "playground-surface": { - "mappings": { - "0": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°" - }, - "1": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē" - }, - "2": { - "then": "ПоĐēŅ€Ņ‹Ņ‚иĐĩ иС Ņ‰ĐĩĐŋŅ‹" - }, - "3": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°" - }, - "4": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚" - }, - "5": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ" - } - }, - "render": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}" - } - }, - "title": { - "mappings": { - "0": { - "then": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° {name}" - } - }, - "render": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" - } - }, - "public_bookcase": { - "description": "ĐŖĐģиŅ‡ĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ Ņ ĐēĐŊиĐŗĐ°Đŧи, Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đŧи Đ´ĐģŅ вŅĐĩŅ…", - "name": "КĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹", - "presets": { - "0": { - "title": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" - } - }, - "tagRenderings": { - "bookcase-booktypes": { - "mappings": { - "0": { - "then": "В ĐžŅĐŊОвĐŊĐžĐŧ Đ´ĐĩŅ‚ŅĐēиĐĩ ĐēĐŊиĐŗи" - }, - "1": { - "then": "В ĐžŅĐŊОвĐŊĐžĐŧ ĐēĐŊиĐŗи Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" - }, - "2": { - "then": "КĐŊиĐŗи и Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš, и Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" - } - }, - "question": "КаĐēиĐĩ ĐēĐŊиĐŗи ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?" - }, - "bookcase-is-accessible": { - "mappings": { - "0": { - "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" - } - }, - "question": "ИĐŧĐĩĐĩŅ‚ŅŅ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ĐžĐŧŅƒ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧŅƒ ĐēĐŊиĐļĐŊĐžĐŧŅƒ ŅˆĐēĐ°Ņ„Ņƒ?" - }, - "public_bookcase-capacity": { - "question": "ĐĄĐēĐžĐģŅŒĐēĐž ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?", - "render": "{capacity} ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžŅ‚ ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" - }, - "public_bookcase-name": { - "mappings": { - "0": { - "then": "ĐŖ ŅŅ‚ĐžĐŗĐž ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ" - } - }, - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?", - "render": "НазваĐŊиĐĩ ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° — {name}" - }, - "public_bookcase-start_date": { - "question": "КоĐŗĐ´Đ° ĐąŅ‹Đģ ŅƒŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?", - "render": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}" - }, - "public_bookcase-website": { - "question": "ЕŅŅ‚ŅŒ Đģи вĐĩĐą-ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Đĩ?", - "render": "БоĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ ĐŊĐ° ŅĐ°ĐšŅ‚Đĩ" - } - }, - "title": { - "mappings": { - "0": { - "then": "ОбŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ {name}" - } - }, - "render": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" - } - }, - "shops": { - "description": "МаĐŗаСиĐŊ", - "name": "МаĐŗаСиĐŊ", - "presets": { - "0": { - "description": "ДобавиŅ‚ŅŒ ĐŊОвŅ‹Đš ĐŧĐ°ĐŗаСиĐŊ", - "title": "МаĐŗаСиĐŊ" - } - }, - "tagRenderings": { - "shops-email": { - "question": "КаĐēОв Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", - "render": "{email}" - }, - "shops-name": { - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ?" - }, - "shops-opening_hours": { - "question": "КаĐēОвŅ‹ Ņ‡Đ°ŅŅ‹ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", - "render": "{opening_hours_table(opening_hours)}" - }, - "shops-phone": { - "question": "КаĐēОК Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊ?", - "render": "{phone}" - }, - "shops-shop": { - "mappings": { - "1": { - "then": "ĐĄŅƒĐŋĐĩŅ€ĐŧĐ°Ņ€ĐēĐĩŅ‚" - }, - "2": { - "then": "МаĐŗаСиĐŊ ОдĐĩĐļĐ´Ņ‹" - }, - "3": { - "then": "ПаŅ€Đ¸ĐēĐŧĐ°Ņ…ĐĩŅ€ŅĐēĐ°Ņ" - }, - "5": { - "then": "АвŅ‚ĐžĐŧĐ°ŅŅ‚ĐĩŅ€ŅĐēĐ°Ņ" - }, - "6": { - "then": "АвŅ‚ĐžŅĐ°ĐģĐžĐŊ" - } - }, - "question": "ЧŅ‚Đž ĐŋŅ€ĐžĐ´Đ°Ņ‘Ņ‚ŅŅ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?" - }, - "shops-website": { - "question": "КаĐēОК вĐĩĐą-ŅĐ°ĐšŅ‚ Ņƒ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", - "render": "{website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - }, - "1": { - "then": "{shop}" - } - }, - "render": "МаĐŗаСиĐŊ" - } - }, - "slow_roads": { - "tagRenderings": { - "slow_roads-surface": { - "mappings": { - "0": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°" - }, - "1": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - СĐĩĐŧĐģŅ" - }, - "3": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē" - }, - "4": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°" - }, - "5": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚" - }, - "6": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ" - } - }, - "render": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}" - } - } - }, - "sport_pitch": { - "description": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "name": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", - "presets": { - "0": { - "title": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŊĐ°ŅŅ‚ĐžĐģŅŒĐŊĐžĐŗĐž Ņ‚ĐĩĐŊĐŊиŅĐ°" - }, - "1": { - "title": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" - } - }, - "tagRenderings": { - "sport-pitch-access": { - "mappings": { - "0": { - "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" - }, - "1": { - "then": "ОĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ (ĐŊĐ°ĐŋŅ€., Ņ‚ĐžĐģŅŒĐēĐž ĐŋĐž СаĐŋиŅĐ¸, в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊŅ‹Đĩ Ņ‡Đ°ŅŅ‹, ...)" - }, - "2": { - "then": "ДоŅŅ‚ŅƒĐŋ Ņ‚ĐžĐģŅŒĐēĐž Ņ‡ĐģĐĩĐŊĐ°Đŧ ĐēĐģŅƒĐąĐ°" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?" - }, - "sport-pitch-reservation": { - "mappings": { - "1": { - "then": "ЖĐĩĐģĐ°Ņ‚ĐĩĐģŅŒĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ" - }, - "2": { - "then": "ПŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ вОСĐŧĐžĐļĐŊĐ°, ĐŊĐž ĐŊĐĩ ОйŅĐˇĐ°Ņ‚ĐĩĐģŅŒĐŊĐ°" - }, - "3": { - "then": "НĐĩвОСĐŧĐžĐļĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ" - } - }, - "question": "НŅƒĐļĐŊĐ° Đģи ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ?" - }, - "sport_pitch-opening_hours": { - "mappings": { - "1": { - "then": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ" - } - }, - "question": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?" - }, - "sport_pitch-sport": { - "mappings": { - "0": { - "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ" - }, - "1": { - "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ„ŅƒŅ‚йОĐģ" - }, - "2": { - "then": "Đ­Ņ‚Đž ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐŊĐŗ-ĐŋĐžĐŊĐŗĐ°" - }, - "3": { - "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ‚ĐĩĐŊĐŊиŅ" - }, - "4": { - "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в ĐēĐžŅ€Ņ„йОĐģ" - }, - "5": { - "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ" - } - } - }, - "sport_pitch-surface": { - "mappings": { - "0": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°" - }, - "1": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē" - }, - "2": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°" - }, - "3": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚" - }, - "4": { - "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ" - } - }, - "question": "КаĐēĐžĐĩ ĐŋĐžĐēŅ€Ņ‹Ņ‚иĐĩ ĐŊĐ° ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?", - "render": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}" - } - }, - "title": { - "render": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" - } - }, - "surveillance_camera": { - "name": "КаĐŧĐĩŅ€Ņ‹ ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ", - "tagRenderings": { - "Camera type: fixed; panning; dome": { - "mappings": { - "1": { - "then": "КаĐŧĐĩŅ€Đ° Ņ ĐŋОвОŅ€ĐžŅ‚ĐŊŅ‹Đŧ ĐŧĐĩŅ…Đ°ĐŊиСĐŧĐžĐŧ" - }, - "2": { - "then": "ПаĐŊĐžŅ€Đ°ĐŧĐŊĐ°Ņ ĐēĐ°ĐŧĐĩŅ€Đ°" - } - }, - "question": "КаĐēĐ°Ņ ŅŅ‚Đž ĐēĐ°ĐŧĐĩŅ€Đ°?" - }, - "Indoor camera? This isn't clear for 'public'-cameras": { - "mappings": { - "1": { - "then": "Đ­Ņ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи" - }, - "2": { - "then": "ВозĐŧĐžĐļĐŊĐž, ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи" - } - } - }, - "camera:mount": { - "question": "КаĐē Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ°?" - } - }, - "title": { - "render": "КаĐŧĐĩŅ€Đ° ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ" - } - }, - "toilet": { - "name": "ĐĸŅƒĐ°ĐģĐĩŅ‚Ņ‹", - "presets": { - "0": { - "description": "ĐĸŅƒĐ°ĐģĐĩŅ‚ иĐģи ĐēĐžĐŧĐŊĐ°Ņ‚Đ° ĐžŅ‚Đ´Ņ‹Ņ…Đ° ŅĐž ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đŧ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ", - "title": "tŅƒĐ°ĐģĐĩŅ‚" - }, - "1": { - "title": "tŅƒĐ°ĐģĐĩŅ‚ Ņ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ Đ´ĐģŅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - } - }, - "tagRenderings": { - "toilet-access": { - "mappings": { - "0": { - "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" - }, - "2": { - "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž" - }, - "4": { - "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚иĐŧ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°Đŧ?" - }, - "toilet-charge": { - "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋĐžŅĐĩŅ‰ĐĩĐŊиĐĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°?", - "render": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ {charge}" - }, - "toilets-fee": { - "mappings": { - "0": { - "then": "Đ­Ņ‚Đž ĐŋĐģĐ°Ņ‚ĐŊŅ‹Đĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹" - } - } - }, - "toilets-type": { - "question": "КаĐēиĐĩ ŅŅ‚Đž Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹?" - }, - "toilets-wheelchair": { - "mappings": { - "1": { - "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" - } - } - } - }, - "title": { - "render": "ĐĸŅƒĐ°ĐģĐĩŅ‚" - } - }, - "trail": { - "name": "ĐĸŅ€ĐžĐŋŅ‹", - "title": { - "render": "ĐĸŅ€ĐžĐŋĐ°" - } - }, - "tree_node": { - "name": "ДĐĩŅ€ĐĩвО", - "presets": { - "0": { - "title": "ЛиŅŅ‚вĐĩĐŊĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО" - }, - "1": { - "description": "ДĐĩŅ€ĐĩвО Ņ Ņ…вОĐĩĐš (иĐŗĐģĐ°Đŧи), ĐŊĐ°ĐŋŅ€Đ¸ĐŧĐĩŅ€, ŅĐžŅĐŊĐ° иĐģи ĐĩĐģŅŒ.", - "title": "ĐĨвОКĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО" - }, - "2": { - "description": "ЕŅĐģи вŅ‹ ĐŊĐĩ ŅƒĐ˛ĐĩŅ€ĐĩĐŊŅ‹ в Ņ‚ĐžĐŧ, ĐģиŅŅ‚вĐĩĐŊĐŊĐžĐĩ ŅŅ‚Đž Đ´ĐĩŅ€ĐĩвО иĐģи Ņ…вОКĐŊĐžĐĩ.", - "title": "ДĐĩŅ€ĐĩвО" - } - }, - "tagRenderings": { - "tree-decidouous": { - "mappings": { - "0": { - "then": "ЛиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ: Ņƒ Đ´ĐĩŅ€Đĩва ĐžĐŋĐ°Đ´Đ°ŅŽŅ‚ ĐģиŅŅ‚ŅŒŅ в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐĩ вŅ€ĐĩĐŧŅ ĐŗОда." - }, - "1": { - "then": "ВĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ." - } - }, - "question": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвО вĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ иĐģи ĐģиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ?" - }, - "tree-height": { - "mappings": { - "0": { - "then": "ВŅ‹ŅĐžŅ‚Đ°: {height} Đŧ" - } - }, - "render": "ВŅ‹ŅĐžŅ‚Đ°: {height}" - }, - "tree_node-name": { - "mappings": { - "0": { - "then": "ĐŖ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ." - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊаСваĐŊиĐĩ?", - "render": "НазваĐŊиĐĩ: {name}" - }, - "tree_node-ref:OnroerendErfgoed": { - "render": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}" - }, - "tree_node-wikidata": { - "render": "\"\"/ Wikidata: {wikidata}" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "ДĐĩŅ€ĐĩвО" - } - }, - "viewpoint": { - "name": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", - "presets": { - "0": { - "title": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" - } - }, - "tagRenderings": { - "viewpoint-description": { - "question": "ВŅ‹ Ņ…ĐžŅ‚иŅ‚Đĩ дОйавиŅ‚ŅŒ ĐžĐŋиŅĐ°ĐŊиĐĩ?" - } - }, - "title": { - "render": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" - } - }, - "visitor_information_centre": { - "title": { - "mappings": { - "1": { - "then": "{name}" - } - }, - "render": "{name}" - } - }, - "waste_basket": { - "iconSize": { - "mappings": { - "0": { - "then": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°" - } - } - }, - "mapRendering": { - "0": { - "iconSize": { - "mappings": { - "0": { - "then": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°" - } - } - } - } - }, - "name": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", - "presets": { - "0": { - "title": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°" - } - }, - "title": { - "render": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°" - } - }, - "watermill": { - "name": "ВодŅĐŊĐ°Ņ ĐŧĐĩĐģŅŒĐŊиŅ†Đ°" + }, + "render": "ĐĨŅƒĐ´ĐžĐļĐĩŅŅ‚вĐĩĐŊĐŊĐ°Ņ Ņ€Đ°ĐąĐžŅ‚Đ°" } + }, + "barrier": { + "name": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виŅ", + "presets": { + "0": { + "title": "ПŅ€Đ¸ĐēĐžĐģ" + } + }, + "title": { + "mappings": { + "0": { + "then": "ПŅ€Đ¸ĐēĐžĐģ" + } + }, + "render": "ПŅ€ĐĩĐŋŅŅ‚ŅŅ‚виĐĩ" + } + }, + "bench": { + "name": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи", + "presets": { + "0": { + "title": "cĐēĐ°ĐŧĐĩĐšĐēĐ°" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "ĐĄĐž ŅĐŋиĐŊĐēОК" + }, + "1": { + "then": "БĐĩС ŅĐŋиĐŊĐēи" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ŅĐŋиĐŊĐēĐ°?" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "ĐĻвĐĩŅ‚: ĐēĐžŅ€Đ¸Ņ‡ĐŊĐĩвŅ‹Đš" + }, + "1": { + "then": "ĐĻвĐĩŅ‚: СĐĩĐģĐĩĐŊŅ‹Đš" + }, + "2": { + "then": "ĐĻвĐĩŅ‚: ŅĐĩŅ€Ņ‹Đš" + }, + "3": { + "then": "ĐĻвĐĩŅ‚: ĐąĐĩĐģŅ‹Đš" + }, + "4": { + "then": "ĐĻвĐĩŅ‚: ĐēŅ€Đ°ŅĐŊŅ‹Đš" + }, + "5": { + "then": "ĐĻвĐĩŅ‚: Ņ‡Ņ‘Ņ€ĐŊŅ‹Đš" + }, + "6": { + "then": "ĐĻвĐĩŅ‚: ŅĐ¸ĐŊиК" + }, + "7": { + "then": "ĐĻвĐĩŅ‚: ĐļĐĩĐģŅ‚Ņ‹Đš" + } + }, + "question": "КаĐēĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", + "render": "ĐĻвĐĩŅ‚: {colour}" + }, + "bench-direction": { + "question": "В ĐēĐ°ĐēĐžĐŧ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊии вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ, ĐēĐžĐŗĐ´Đ° ŅĐ¸Đ´Đ¸Ņ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", + "render": "ХидŅ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ, вŅ‹ ŅĐŧĐžŅ‚Ņ€Đ¸Ņ‚Đĩ в ŅŅ‚ĐžŅ€ĐžĐŊŅƒ {direction}°." + }, + "bench-material": { + "mappings": { + "0": { + "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: Đ´ĐĩŅ€ĐĩвО" + }, + "1": { + "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŧĐĩŅ‚Đ°ĐģĐģ" + }, + "2": { + "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐēĐ°ĐŧĐĩĐŊŅŒ" + }, + "3": { + "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐąĐĩŅ‚ĐžĐŊ" + }, + "4": { + "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ĐŋĐģĐ°ŅŅ‚иĐē" + }, + "5": { + "then": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: ŅŅ‚Đ°ĐģŅŒ" + } + }, + "question": "ИС ĐēĐ°ĐēĐžĐŗĐž ĐŧĐ°Ņ‚ĐĩŅ€Đ¸Đ°ĐģĐ° ŅĐ´ĐĩĐģĐ°ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐ°?", + "render": "МаŅ‚ĐĩŅ€Đ¸Đ°Đģ: {material}" + }, + "bench-seats": { + "question": "ĐĄĐēĐžĐģŅŒĐēĐž ĐŧĐĩŅŅ‚ ĐŊĐ° ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ?", + "render": "{seats} ĐŧĐĩŅŅ‚" + }, + "bench-survey:date": { + "question": "КоĐŗĐ´Đ° ĐŋĐžŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐģи ŅŅ‚Ņƒ ŅĐēĐ°ĐŧĐĩĐšĐēŅƒ?", + "render": "ПоŅĐģĐĩĐ´ĐŊиК Ņ€Đ°Đˇ ОйŅĐģĐĩдОваĐŊиĐĩ ŅŅ‚ОК ŅĐēĐ°ĐŧĐĩĐšĐēи ĐŋŅ€ĐžĐ˛ĐžĐ´Đ¸ĐģĐžŅŅŒ {survey:date}" + } + }, + "title": { + "render": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°" + } + }, + "bench_at_pt": { + "name": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐ°Ņ… ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "1": { + "then": "ВŅŅ‚Đ°ĐŊŅŒŅ‚Đĩ ĐŊĐ° ŅĐēĐ°ĐŧĐĩĐšĐēĐĩ" + } + } + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° ĐŊĐ° ĐžŅŅ‚Đ°ĐŊОвĐēĐĩ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ°" + }, + "1": { + "then": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ° в ŅƒĐēŅ€Ņ‹Ņ‚ии" + } + }, + "render": "ĐĄĐēĐ°ĐŧĐĩĐšĐēĐ°" + } + }, + "bicycle_library": { + "description": "ĐŖŅ‡Ņ€ĐĩĐļĐ´ĐĩĐŊиĐĩ, ĐŗĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ ĐŧĐžĐļĐĩŅ‚ ĐąŅ‹Ņ‚ŅŒ Đ°Ņ€ĐĩĐŊдОваĐŊ ĐŊĐ° йОĐģĐĩĐĩ Đ´ĐģиŅ‚ĐĩĐģŅŒĐŊŅ‹Đš ŅŅ€ĐžĐē", + "name": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°", + "presets": { + "0": { + "description": "В вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊОК йийĐģиОŅ‚ĐĩĐēĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ Đ°Ņ€ĐĩĐŊĐ´Ņ‹", + "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ Đ´ĐĩŅ‚ŅĐēиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + }, + "1": { + "then": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" + }, + "2": { + "then": "ДоŅŅ‚ŅƒĐŋĐŊŅ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ Đ´ĐģŅ ĐģŅŽĐ´ĐĩĐš Ņ ĐžĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đŧи вОСĐŧĐžĐļĐŊĐžŅŅ‚ŅĐŧи" + } + }, + "question": "КŅ‚Đž СдĐĩŅŅŒ ĐŧĐžĐļĐĩŅ‚ Đ°Ņ€ĐĩĐŊдОваŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´?" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐĩĐŊ" + }, + "1": { + "then": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° ŅŅ‚ОиŅ‚ â‚Ŧ20/ĐŗОд и â‚Ŧ20 СаĐģĐžĐŗ" + } + }, + "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?", + "render": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ Đ°Ņ€ĐĩĐŊĐ´Ņ‹ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° {charge}" + }, + "bicycle_library-name": { + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°?", + "render": "Đ­Ņ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ° ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" + } + }, + "title": { + "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ°" + } + }, + "bicycle_tube_vending_machine": { + "name": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов", + "presets": { + "0": { + "title": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚" + }, + "1": { + "then": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ ŅĐģĐžĐŧĐ°ĐŊ" + }, + "2": { + "then": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ СаĐēŅ€Ņ‹Ņ‚" + } + }, + "question": "Đ­Ņ‚ĐžŅ‚ Ņ‚ĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?", + "render": "РайОŅ‡Đ¸Đš ŅŅ‚Đ°Ņ‚ŅƒŅ: {operational_status}" + } + }, + "title": { + "render": "ĐĸĐžŅ€ĐŗОвŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚ Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов" + } + }, + "bike_cafe": { + "name": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ", + "presets": { + "0": { + "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?" + }, + "bike_cafe-email": { + "question": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?" + }, + "bike_cafe-name": { + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đž йаКĐē-ĐēĐ°Ņ„Đĩ?", + "render": "Đ­Ņ‚Đž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" + }, + "bike_cafe-opening_hours": { + "question": "КаĐēОв Ņ€ĐĩĐļиĐŧ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐēĐ°Ņ„Đĩ?" + }, + "bike_cafe-phone": { + "question": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи ŅƒŅĐģŅƒĐŗи Ņ€ĐĩĐŧĐžĐŊŅ‚Đ° вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв в ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ?" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐĩŅŅ‚ŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŧ ĐēĐ°Ņ„Đĩ ĐŊĐĩŅ‚ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ов Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐ˛ĐžĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ваŅˆĐĩĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?" + }, + "bike_cafe-website": { + "question": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ {name}" + } + }, + "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐĩ ĐēĐ°Ņ„Đĩ" + } + }, + "bike_parking": { + "name": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°", + "presets": { + "0": { + "title": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°" + } + }, + "tagRenderings": { + "Access": { + "question": "КŅ‚Đž ĐŧĐžĐļĐĩŅ‚ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēОК?", + "render": "{access}" + }, + "Bicycle parking type": { + "mappings": { + "3": { + "then": "ĐĄŅ‚ОКĐēĐ° " + }, + "4": { + "then": "ДвŅƒŅ…ŅƒŅ€ĐžĐ˛ĐŊĐĩваŅ " + }, + "5": { + "then": "НавĐĩŅ " + } + }, + "question": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°?", + "render": "Đ­Ņ‚Đž вĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ° Ņ‚иĐŋĐ° {bicycle_parking}" + }, + "Capacity": { + "render": "МĐĩŅŅ‚Đž Đ´ĐģŅ {capacity} вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°(Ов)" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "Đ­Ņ‚Đž ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ° (ĐĩŅŅ‚ŅŒ ĐēŅ€Ņ‹ŅˆĐ°/ĐŊавĐĩŅ)" + }, + "1": { + "then": "Đ­Ņ‚Đž ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°" + } + } + }, + "Underground?": { + "mappings": { + "0": { + "then": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°" + }, + "1": { + "then": "ПодзĐĩĐŧĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°" + }, + "2": { + "then": "ПаŅ€ĐēОвĐēĐ° ĐŊĐ° ĐēŅ€Ņ‹ŅˆĐĩ" + }, + "4": { + "then": "ПаŅ€ĐēОвĐēĐ° ĐŊĐ° ĐēŅ€Ņ‹ŅˆĐĩ" + } + } + } + }, + "title": { + "render": "ВĐĩĐģĐžĐŋĐ°Ņ€ĐēОвĐēĐ°" + } + }, + "bike_repair_station": { + "presets": { + "0": { + "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ" + } + }, + "tagRenderings": { + "Operational status": { + "mappings": { + "0": { + "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ ŅĐģĐžĐŧĐ°ĐŊ" + }, + "1": { + "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚" + } + }, + "question": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ вŅĐĩ ĐĩŅ‰Đĩ Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚?" + }, + "bike_repair_station-electrical_pump": { + "mappings": { + "0": { + "then": "Đ ŅƒŅ‡ĐŊОК ĐŊĐ°ŅĐžŅ" + }, + "1": { + "then": "Đ­ĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК ĐŊĐ°ŅĐžŅ" + } + }, + "question": "Đ­Ņ‚Đž ŅĐģĐĩĐēŅ‚Ņ€Đ¸Ņ‡ĐĩŅĐēиК вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ?" + }, + "bike_repair_station-manometer": { + "mappings": { + "0": { + "then": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€" + }, + "1": { + "then": "НĐĩŅ‚ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€Đ°" + }, + "2": { + "then": "ЕŅŅ‚ŅŒ ĐŧĐ°ĐŊĐžĐŧĐĩŅ‚Ņ€, ĐŊĐž ĐžĐŊ ŅĐģĐžĐŧĐ°ĐŊ" + } + } + }, + "bike_repair_station-opening_hours": { + "mappings": { + "0": { + "then": "ВŅĐĩĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đž" + } + }, + "question": "КоĐŗĐ´Đ° Ņ€Đ°ĐąĐžŅ‚Đ°ĐĩŅ‚ ŅŅ‚Đ° Ņ‚ĐžŅ‡ĐēĐ° ОйŅĐģŅƒĐļиваĐŊиŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?" + }, + "bike_repair_station-valves": { + "mappings": { + "0": { + "then": "КĐģĐ°ĐŋĐ°ĐŊ Presta (Ņ‚Đ°ĐēĐļĐĩ иСвĐĩŅŅ‚ĐŊŅ‹Đš ĐēĐ°Đē Ņ„Ņ€Đ°ĐŊŅ†ŅƒĐˇŅĐēиК ĐēĐģĐ°ĐŋĐ°ĐŊ)" + }, + "1": { + "then": "КĐģĐ°ĐŋĐ°ĐŊ Dunlop" + } + }, + "render": "Đ­Ņ‚ĐžŅ‚ ĐŊĐ°ŅĐžŅ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ ŅĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đĩ ĐēĐģĐ°ĐŋĐ°ĐŊŅ‹: {valves}" + } + }, + "title": { + "mappings": { + "2": { + "then": "ĐĄĐģĐžĐŧĐ°ĐŊĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ" + }, + "3": { + "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ {name}" + }, + "4": { + "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ" + } + } + } + }, + "bike_shop": { + "description": "МаĐŗаСиĐŊ, ŅĐŋĐĩŅ†Đ¸Đ°ĐģиСиŅ€ŅƒŅŽŅ‰Đ¸ĐšŅŅ ĐŊĐ° ĐŋŅ€ĐžĐ´Đ°ĐļĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв иĐģи ŅĐžĐŋŅƒŅ‚ŅŅ‚вŅƒŅŽŅ‰Đ¸Ņ… Ņ‚ОваŅ€ĐžĐ˛", + "name": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ", + "presets": { + "0": { + "title": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ" + } + }, + "tagRenderings": { + "bike_repair_bike-pump-service": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐĩŅŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐžĐŗĐž ĐŊĐ°ŅĐžŅĐ° Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ" + } + }, + "question": "ПŅ€ĐĩĐ´ĐģĐ°ĐŗĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đš ĐŊĐ°ŅĐžŅ Đ´ĐģŅ вŅĐĩОйŅ‰ĐĩĐŗĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ?" + }, + "bike_repair_bike-wash": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐžĐēаСŅ‹Đ˛Đ°ŅŽŅ‚ŅŅ ŅƒŅĐģŅƒĐŗи ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" + }, + "2": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩŅ‚ ŅƒŅĐģŅƒĐŗ ĐŧОКĐēи/Ņ‡Đ¸ŅŅ‚Đēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв" + } + }, + "question": "ЗдĐĩŅŅŒ ĐŧĐžŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" + }, + "bike_repair_rents-bikes": { + "mappings": { + "0": { + "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ" + }, + "1": { + "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐŊĐ°ĐŋŅ€ĐžĐēĐ°Ņ‚" + } + }, + "question": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ŅĐ´Đ°ĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в Đ°Ņ€ĐĩĐŊĐ´Ņƒ?" + }, + "bike_repair_repairs-bikes": { + "mappings": { + "0": { + "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + }, + "1": { + "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ ĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + }, + "2": { + "then": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒĐĩŅ‚ Ņ‚ĐžĐģŅŒĐēĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹, ĐēŅƒĐŋĐģĐĩĐŊĐŊŅ‹Đĩ СдĐĩŅŅŒ" + }, + "3": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ОйŅĐģŅƒĐļиваŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐąŅ€ĐĩĐŊĐ´Đ°" + } + }, + "question": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ Ņ€ĐĩĐŧĐžĐŊŅ‚иŅ€ŅƒŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" + }, + "bike_repair_second-hand-bikes": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + }, + "2": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Ņ‚ĐžĐģŅŒĐēĐž ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + } + }, + "question": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ ĐŋОдĐĩŅ€ĐļĐ°ĐŊĐŊŅ‹Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹?" + }, + "bike_repair_sells-bikes": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ ĐŊĐĩ ĐŋŅ€ĐžĐ´Đ°ŅŽŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹" + } + }, + "question": "ПŅ€ĐžĐ´Đ°ŅŽŅ‚ŅŅ Đģи вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?" + }, + "bike_repair_tools-service": { + "mappings": { + "2": { + "then": "ИĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹ Ņ‚ĐžĐģŅŒĐēĐž ĐŋŅ€Đ¸ ĐŋĐžĐēŅƒĐŋĐēĐĩ/Đ°Ņ€ĐĩĐŊĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ° в ĐŧĐ°ĐŗаСиĐŊĐĩ" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи СдĐĩŅŅŒ иĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ‹ Đ´ĐģŅ ĐŋĐžŅ‡Đ¸ĐŊĐēи ŅĐžĐąŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Đ°?" + }, + "bike_shop-email": { + "question": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?" + }, + "bike_shop-name": { + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв?", + "render": "Đ­Ņ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" + }, + "bike_shop-phone": { + "question": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?" + }, + "bike_shop-website": { + "question": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?" + } + }, + "title": { + "mappings": { + "0": { + "then": "МаĐŗаСиĐŊ ŅĐŋĐžŅ€Ņ‚ивĐŊĐžĐŗĐž иĐŊвĐĩĐŊŅ‚Đ°Ņ€Ņ {name}" + }, + "2": { + "then": "ПŅ€ĐžĐēĐ°Ņ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}" + }, + "3": { + "then": "Đ ĐĩĐŧĐžĐŊŅ‚ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}" + }, + "4": { + "then": "МаĐŗаСиĐŊ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв {name}" + } + }, + "render": "ОбŅĐģŅƒĐļиваĐŊиĐĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв/ĐŧĐ°ĐŗаСиĐŊ" + } + }, + "binocular": { + "description": "БиĐŊĐžĐēĐģи", + "name": "БиĐŊĐžĐēĐģŅŒ", + "presets": { + "0": { + "title": "йиĐŊĐžĐēĐģŅŒ" + } + }, + "title": { + "render": "БиĐŊĐžĐēĐģŅŒ" + } + }, + "cafe_pub": { + "presets": { + "0": { + "title": "ĐŋĐ°Đą" + }, + "1": { + "title": "йаŅ€" + }, + "2": { + "title": "ĐēĐ°Ņ„Đĩ" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + } + } + }, + "crossings": { + "presets": { + "1": { + "title": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€" + } + }, + "title": { + "mappings": { + "0": { + "then": "ХвĐĩŅ‚ĐžŅ„ĐžŅ€" + } + } + } + }, + "cycleways_and_roads": { + "title": { + "mappings": { + "0": { + "then": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ Đ´ĐžŅ€ĐžĐļĐēĐ°" + } + }, + "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đĩ Đ´ĐžŅ€ĐžĐļĐēи" + } + }, + "defibrillator": { + "name": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€Ņ‹", + "presets": { + "0": { + "title": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" + } + }, + "tagRenderings": { + "defibrillator-access": { + "mappings": { + "0": { + "then": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" + }, + "1": { + "then": "ОбŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đš" + }, + "2": { + "then": "ДоŅŅ‚ŅƒĐŋĐŊĐž Ņ‚ĐžĐģŅŒĐēĐž Đ´ĐģŅ ĐēĐģиĐĩĐŊŅ‚Ов" + } + } + }, + "defibrillator-defibrillator": { + "mappings": { + "2": { + "then": "Đ­Ņ‚Đž ОйŅ‹Ņ‡ĐŊŅ‹Đš авŅ‚ĐžĐŧĐ°Ņ‚иŅ‡ĐĩŅĐēиК Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" + } + } + }, + "defibrillator-description": { + "render": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ: {description}" + }, + "defibrillator-fixme": { + "render": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Đ´ĐģŅ ŅĐēŅĐŋĐĩŅ€Ņ‚Ов OpenStreetMap: {fixme}" + }, + "defibrillator-opening_hours": { + "question": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ ŅŅ‚ĐžŅ‚ Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€?", + "render": "{opening_hours_table(opening_hours)}" + }, + "defibrillator-survey:date": { + "mappings": { + "0": { + "then": "ПŅ€ĐžĐ˛ĐĩŅ€ĐĩĐŊĐž ŅĐĩĐŗОдĐŊŅ!" + } + } + } + }, + "title": { + "render": "ДĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€" + } + }, + "direction": { + "name": "ВизŅƒĐ°ĐģиСаŅ†Đ¸Ņ ĐŊĐ°ĐŋŅ€Đ°Đ˛ĐģĐĩĐŊиŅ" + }, + "drinking_water": { + "name": "ПиŅ‚ŅŒĐĩваŅ вОда", + "presets": { + "0": { + "title": "ĐŋиŅ‚ŅŒĐĩваŅ вОда" + } + }, + "title": { + "render": "ПиŅ‚ŅŒĐĩваŅ вОда" + } + }, + "food": { + "presets": { + "0": { + "title": "Ņ€ĐĩŅŅ‚ĐžŅ€Đ°ĐŊ" + }, + "1": { + "title": "ĐąŅ‹ŅŅ‚Ņ€ĐžĐĩ ĐŋиŅ‚Đ°ĐŊиĐĩ" + } + }, + "tagRenderings": { + "friture-take-your-container": { + "mappings": { + "1": { + "then": "ПŅ€Đ¸ĐŊĐžŅĐ¸Ņ‚ŅŒ ŅĐ˛ĐžŅŽ Ņ‚Đ°Ņ€Ņƒ ĐŊĐĩ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐĩĐŊĐž" + } + } + } + } + }, + "ghost_bike": { + "name": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost", + "tagRenderings": { + "ghost_bike-inscription": { + "render": "{inscription}" + }, + "ghost_bike-name": { + "render": "В СĐŊĐ°Đē ĐŋĐ°ĐŧŅŅ‚и Đž {name}" + }, + "ghost_bike-source": { + "render": "ДоŅŅ‚ŅƒĐŋĐŊĐ° йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ" + }, + "ghost_bike-start_date": { + "render": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}" + } + }, + "title": { + "render": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost" + } + }, + "information_board": { + "name": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đĩ Ņ‰Đ¸Ņ‚Ņ‹", + "presets": { + "0": { + "title": "иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" + } + }, + "title": { + "render": "ИĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‰Đ¸Ņ‚" + } + }, + "map": { + "name": "КаŅ€Ņ‚Ņ‹", + "presets": { + "0": { + "title": "КаŅ€Ņ‚Đ°" + } + }, + "tagRenderings": { + "map-map_source": { + "mappings": { + "0": { + "then": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° OpenStreetMap" + } + }, + "render": "Đ­Ņ‚Đ° ĐēĐ°Ņ€Ņ‚Đ° ĐžŅĐŊОваĐŊĐ° ĐŊĐ° {map_source}" + } + }, + "title": { + "render": "КаŅ€Ņ‚Đ°" + } + }, + "nature_reserve": { + "tagRenderings": { + "Email": { + "render": "{email}" + }, + "phone": { + "render": "{phone}" + } + } + }, + "observation_tower": { + "name": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Ņ‹Đĩ йаŅˆĐŊи", + "presets": { + "0": { + "title": "ŅĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ йаŅˆĐŊŅ" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " ĐŧĐĩŅ‚Ņ€" + } + } + } + } + }, + "picnic_table": { + "description": "ĐĄĐģОК, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ŅŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "name": "ĐĄŅ‚ĐžĐģŅ‹ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°", + "presets": { + "0": { + "title": "ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" + } + }, + "tagRenderings": { + "picnic_table-material": { + "mappings": { + "0": { + "then": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвŅĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" + }, + "1": { + "then": "Đ­Ņ‚Đž ĐąĐĩŅ‚ĐžĐŊĐŊŅ‹Đš ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" + } + }, + "question": "ИС Ņ‡ĐĩĐŗĐž иСĐŗĐžŅ‚ОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°?", + "render": "Đ­Ņ‚ĐžŅ‚ ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ° ŅĐ´ĐĩĐģĐ°ĐŊ иС {material}" + } + }, + "title": { + "render": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐēĐŊиĐēĐ°" + } + }, + "playground": { + "description": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", + "name": "ДĐĩŅ‚ŅĐēиĐĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", + "presets": { + "0": { + "title": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" + } + }, + "tagRenderings": { + "Playground-wheelchair": { + "mappings": { + "0": { + "then": "ПоĐģĐŊĐžŅŅ‚ŅŒŅŽ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + }, + "1": { + "then": "ЧаŅŅ‚иŅ‡ĐŊĐž Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + }, + "2": { + "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + } + }, + "question": "ДоŅŅ‚ŅƒĐŋĐŊĐ° Đģи Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē?" + }, + "playground-access": { + "mappings": { + "4": { + "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž" + } + } + }, + "playground-email": { + "render": "{email}" + }, + "playground-lit": { + "mappings": { + "0": { + "then": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ" + }, + "1": { + "then": "Đ­Ņ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŊĐĩ ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ" + } + }, + "question": "Đ­Ņ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐžŅĐ˛ĐĩŅ‰Đ°ĐĩŅ‚ŅŅ ĐŊĐžŅ‡ŅŒŅŽ?" + }, + "playground-max_age": { + "render": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐĩŅ‚ŅĐŧ Đ´Đž {max_age}" + }, + "playground-min_age": { + "question": "ĐĄ ĐēĐ°ĐēĐžĐŗĐž вОСŅ€Đ°ŅŅ‚Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° Đ´ĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?", + "render": "ДоŅŅ‚ŅƒĐŋĐŊĐž Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš ŅŅ‚Đ°Ņ€ŅˆĐĩ {min_age} ĐģĐĩŅ‚" + }, + "playground-opening_hours": { + "mappings": { + "0": { + "then": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đž ĐžŅ‚ Ņ€Đ°ŅŅĐ˛ĐĩŅ‚Đ° Đ´Đž СаĐēĐ°Ņ‚Đ°" + }, + "1": { + "then": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ" + }, + "2": { + "then": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ" + } + }, + "question": "КоĐŗĐ´Đ° ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ° ŅŅ‚Đ° иĐŗŅ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?" + }, + "playground-phone": { + "render": "{phone}" + }, + "playground-surface": { + "mappings": { + "0": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°" + }, + "1": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē" + }, + "2": { + "then": "ПоĐēŅ€Ņ‹Ņ‚иĐĩ иС Ņ‰ĐĩĐŋŅ‹" + }, + "3": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°" + }, + "4": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚" + }, + "5": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ" + } + }, + "render": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}" + } + }, + "title": { + "mappings": { + "0": { + "then": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° {name}" + } + }, + "render": "ДĐĩŅ‚ŅĐēĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" + } + }, + "public_bookcase": { + "description": "ĐŖĐģиŅ‡ĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ Ņ ĐēĐŊиĐŗĐ°Đŧи, Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đŧи Đ´ĐģŅ вŅĐĩŅ…", + "name": "КĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹", + "presets": { + "0": { + "title": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" + } + }, + "tagRenderings": { + "bookcase-booktypes": { + "mappings": { + "0": { + "then": "В ĐžŅĐŊОвĐŊĐžĐŧ Đ´ĐĩŅ‚ŅĐēиĐĩ ĐēĐŊиĐŗи" + }, + "1": { + "then": "В ĐžŅĐŊОвĐŊĐžĐŧ ĐēĐŊиĐŗи Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" + }, + "2": { + "then": "КĐŊиĐŗи и Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš, и Đ´ĐģŅ вСŅ€ĐžŅĐģŅ‹Ņ…" + } + }, + "question": "КаĐēиĐĩ ĐēĐŊиĐŗи ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?" + }, + "bookcase-is-accessible": { + "mappings": { + "0": { + "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" + } + }, + "question": "ИĐŧĐĩĐĩŅ‚ŅŅ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ĐžĐŧŅƒ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧŅƒ ĐēĐŊиĐļĐŊĐžĐŧŅƒ ŅˆĐēĐ°Ņ„Ņƒ?" + }, + "public_bookcase-capacity": { + "question": "ĐĄĐēĐžĐģŅŒĐēĐž ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Ņƒ?", + "render": "{capacity} ĐēĐŊиĐŗ ĐŋĐžĐŧĐĩŅ‰Đ°ĐĩŅ‚ŅŅ в ŅŅ‚ĐžŅ‚ ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" + }, + "public_bookcase-name": { + "mappings": { + "0": { + "then": "ĐŖ ŅŅ‚ĐžĐŗĐž ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ" + } + }, + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?", + "render": "НазваĐŊиĐĩ ĐēĐŊиĐļĐŊĐžĐŗĐž ŅˆĐēĐ°Ņ„Đ° — {name}" + }, + "public_bookcase-start_date": { + "question": "КоĐŗĐ´Đ° ĐąŅ‹Đģ ŅƒŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ ŅŅ‚ĐžŅ‚ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„?", + "render": "ĐŖŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ {start_date}" + }, + "public_bookcase-website": { + "question": "ЕŅŅ‚ŅŒ Đģи вĐĩĐą-ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš Ой ŅŅ‚ĐžĐŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŧ ĐēĐŊиĐļĐŊĐžĐŧ ŅˆĐēĐ°Ņ„Đĩ?", + "render": "БоĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ ĐŊĐ° ŅĐ°ĐšŅ‚Đĩ" + } + }, + "title": { + "mappings": { + "0": { + "then": "ОбŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ {name}" + } + }, + "render": "КĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„" + } + }, + "shops": { + "description": "МаĐŗаСиĐŊ", + "name": "МаĐŗаСиĐŊ", + "presets": { + "0": { + "description": "ДобавиŅ‚ŅŒ ĐŊОвŅ‹Đš ĐŧĐ°ĐŗаСиĐŊ", + "title": "МаĐŗаСиĐŊ" + } + }, + "tagRenderings": { + "shops-email": { + "question": "КаĐēОв Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", + "render": "{email}" + }, + "shops-name": { + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ĐŧĐ°ĐŗаСиĐŊ?" + }, + "shops-opening_hours": { + "question": "КаĐēОвŅ‹ Ņ‡Đ°ŅŅ‹ Ņ€Đ°ĐąĐžŅ‚Ņ‹ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", + "render": "{opening_hours_table(opening_hours)}" + }, + "shops-phone": { + "question": "КаĐēОК Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊ?", + "render": "{phone}" + }, + "shops-shop": { + "mappings": { + "1": { + "then": "ĐĄŅƒĐŋĐĩŅ€ĐŧĐ°Ņ€ĐēĐĩŅ‚" + }, + "2": { + "then": "МаĐŗаСиĐŊ ОдĐĩĐļĐ´Ņ‹" + }, + "3": { + "then": "ПаŅ€Đ¸ĐēĐŧĐ°Ņ…ĐĩŅ€ŅĐēĐ°Ņ" + }, + "5": { + "then": "АвŅ‚ĐžĐŧĐ°ŅŅ‚ĐĩŅ€ŅĐēĐ°Ņ" + }, + "6": { + "then": "АвŅ‚ĐžŅĐ°ĐģĐžĐŊ" + } + }, + "question": "ЧŅ‚Đž ĐŋŅ€ĐžĐ´Đ°Ņ‘Ņ‚ŅŅ в ŅŅ‚ĐžĐŧ ĐŧĐ°ĐŗаСиĐŊĐĩ?" + }, + "shops-website": { + "question": "КаĐēОК вĐĩĐą-ŅĐ°ĐšŅ‚ Ņƒ ŅŅ‚ĐžĐŗĐž ĐŧĐ°ĐŗаСиĐŊĐ°?", + "render": "{website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + }, + "1": { + "then": "{shop}" + } + }, + "render": "МаĐŗаСиĐŊ" + } + }, + "slow_roads": { + "tagRenderings": { + "slow_roads-surface": { + "mappings": { + "0": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°" + }, + "1": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - СĐĩĐŧĐģŅ" + }, + "3": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē" + }, + "4": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°" + }, + "5": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚" + }, + "6": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ" + } + }, + "render": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}" + } + } + }, + "sport_pitch": { + "description": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "name": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", + "presets": { + "0": { + "title": "ĐĄŅ‚ĐžĐģ Đ´ĐģŅ ĐŊĐ°ŅŅ‚ĐžĐģŅŒĐŊĐžĐŗĐž Ņ‚ĐĩĐŊĐŊиŅĐ°" + }, + "1": { + "title": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" + } + }, + "tagRenderings": { + "sport-pitch-access": { + "mappings": { + "0": { + "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" + }, + "1": { + "then": "ОĐŗŅ€Đ°ĐŊиŅ‡ĐĩĐŊĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ (ĐŊĐ°ĐŋŅ€., Ņ‚ĐžĐģŅŒĐēĐž ĐŋĐž СаĐŋиŅĐ¸, в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊŅ‹Đĩ Ņ‡Đ°ŅŅ‹, ...)" + }, + "2": { + "then": "ДоŅŅ‚ŅƒĐŋ Ņ‚ĐžĐģŅŒĐēĐž Ņ‡ĐģĐĩĐŊĐ°Đŧ ĐēĐģŅƒĐąĐ°" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?" + }, + "sport-pitch-reservation": { + "mappings": { + "1": { + "then": "ЖĐĩĐģĐ°Ņ‚ĐĩĐģŅŒĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ" + }, + "2": { + "then": "ПŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ вОСĐŧĐžĐļĐŊĐ°, ĐŊĐž ĐŊĐĩ ОйŅĐˇĐ°Ņ‚ĐĩĐģŅŒĐŊĐ°" + }, + "3": { + "then": "НĐĩвОСĐŧĐžĐļĐŊĐ° ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ" + } + }, + "question": "НŅƒĐļĐŊĐ° Đģи ĐŋŅ€ĐĩдваŅ€Đ¸Ņ‚ĐĩĐģŅŒĐŊĐ°Ņ СаĐŋиŅŅŒ Đ´ĐģŅ Đ´ĐžŅŅ‚ŅƒĐŋĐ° ĐŊĐ° ŅŅ‚Ņƒ ŅĐŋĐžŅ€Ņ‚ивĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ?" + }, + "sport_pitch-opening_hours": { + "mappings": { + "1": { + "then": "ВŅĐĩĐŗĐ´Đ° Đ´ĐžŅŅ‚ŅƒĐŋĐĩĐŊ" + } + }, + "question": "В ĐēĐ°ĐēĐžĐĩ вŅ€ĐĩĐŧŅ Đ´ĐžŅŅ‚ŅƒĐŋĐŊĐ° ŅŅ‚Đ° ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°?" + }, + "sport_pitch-sport": { + "mappings": { + "0": { + "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ" + }, + "1": { + "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ„ŅƒŅ‚йОĐģ" + }, + "2": { + "then": "Đ­Ņ‚Đž ŅŅ‚ĐžĐģ Đ´ĐģŅ ĐŋиĐŊĐŗ-ĐŋĐžĐŊĐŗĐ°" + }, + "3": { + "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в Ņ‚ĐĩĐŊĐŊиŅ" + }, + "4": { + "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в ĐēĐžŅ€Ņ„йОĐģ" + }, + "5": { + "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž иĐŗŅ€Đ°Ņ‚ŅŒ в йаŅĐēĐĩŅ‚йОĐģ" + } + } + }, + "sport_pitch-surface": { + "mappings": { + "0": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Ņ‚Ņ€Đ°Đ˛Đ°" + }, + "1": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐŋĐĩŅĐžĐē" + }, + "2": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąŅ€ŅƒŅŅ‡Đ°Ņ‚ĐēĐ°" + }, + "3": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - Đ°ŅŅ„Đ°ĐģŅŒŅ‚" + }, + "4": { + "then": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - ĐąĐĩŅ‚ĐžĐŊ" + } + }, + "question": "КаĐēĐžĐĩ ĐŋĐžĐēŅ€Ņ‹Ņ‚иĐĩ ĐŊĐ° ŅŅ‚ОК ŅĐŋĐžŅ€Ņ‚ивĐŊОК ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐĩ?", + "render": "ПовĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ - {surface}" + } + }, + "title": { + "render": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" + } + }, + "surveillance_camera": { + "name": "КаĐŧĐĩŅ€Ņ‹ ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ", + "tagRenderings": { + "Camera type: fixed; panning; dome": { + "mappings": { + "1": { + "then": "КаĐŧĐĩŅ€Đ° Ņ ĐŋОвОŅ€ĐžŅ‚ĐŊŅ‹Đŧ ĐŧĐĩŅ…Đ°ĐŊиСĐŧĐžĐŧ" + }, + "2": { + "then": "ПаĐŊĐžŅ€Đ°ĐŧĐŊĐ°Ņ ĐēĐ°ĐŧĐĩŅ€Đ°" + } + }, + "question": "КаĐēĐ°Ņ ŅŅ‚Đž ĐēĐ°ĐŧĐĩŅ€Đ°?" + }, + "camera:mount": { + "question": "КаĐē Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ°?" + }, + "is_indoor": { + "mappings": { + "1": { + "then": "Đ­Ņ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи" + }, + "2": { + "then": "ВозĐŧĐžĐļĐŊĐž, ŅŅ‚Đ° ĐēĐ°ĐŧĐĩŅ€Đ° Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅĐŊĐ°Ņ€ŅƒĐļи" + } + } + } + }, + "title": { + "render": "КаĐŧĐĩŅ€Đ° ĐŊĐ°ĐąĐģŅŽĐ´ĐĩĐŊиŅ" + } + }, + "toilet": { + "name": "ĐĸŅƒĐ°ĐģĐĩŅ‚Ņ‹", + "presets": { + "0": { + "description": "ĐĸŅƒĐ°ĐģĐĩŅ‚ иĐģи ĐēĐžĐŧĐŊĐ°Ņ‚Đ° ĐžŅ‚Đ´Ņ‹Ņ…Đ° ŅĐž ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đŧ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ", + "title": "tŅƒĐ°ĐģĐĩŅ‚" + }, + "1": { + "title": "tŅƒĐ°ĐģĐĩŅ‚ Ņ Đ´ĐžŅŅ‚ŅƒĐŋĐžĐŧ Đ´ĐģŅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģĐĩĐš ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + } + }, + "tagRenderings": { + "toilet-access": { + "mappings": { + "0": { + "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" + }, + "2": { + "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž" + }, + "4": { + "then": "ХвОйОдĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи ŅĐ˛ĐžĐąĐžĐ´ĐŊŅ‹Đš Đ´ĐžŅŅ‚ŅƒĐŋ Đē ŅŅ‚иĐŧ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°Đŧ?" + }, + "toilet-charge": { + "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚ОиŅ‚ ĐŋĐžŅĐĩŅ‰ĐĩĐŊиĐĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Đ°?", + "render": "ĐĄŅ‚ОиĐŧĐžŅŅ‚ŅŒ {charge}" + }, + "toilets-fee": { + "mappings": { + "0": { + "then": "Đ­Ņ‚Đž ĐŋĐģĐ°Ņ‚ĐŊŅ‹Đĩ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹" + } + } + }, + "toilets-type": { + "question": "КаĐēиĐĩ ŅŅ‚Đž Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹?" + }, + "toilets-wheelchair": { + "mappings": { + "1": { + "then": "НĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊĐž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅĐŧ ĐēŅ€ĐĩŅĐĩĐģ-ĐēĐžĐģŅŅĐžĐē" + } + } + } + }, + "title": { + "render": "ĐĸŅƒĐ°ĐģĐĩŅ‚" + } + }, + "trail": { + "name": "ĐĸŅ€ĐžĐŋŅ‹", + "title": { + "render": "ĐĸŅ€ĐžĐŋĐ°" + } + }, + "tree_node": { + "name": "ДĐĩŅ€ĐĩвО", + "presets": { + "0": { + "title": "ЛиŅŅ‚вĐĩĐŊĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО" + }, + "1": { + "description": "ДĐĩŅ€ĐĩвО Ņ Ņ…вОĐĩĐš (иĐŗĐģĐ°Đŧи), ĐŊĐ°ĐŋŅ€Đ¸ĐŧĐĩŅ€, ŅĐžŅĐŊĐ° иĐģи ĐĩĐģŅŒ.", + "title": "ĐĨвОКĐŊĐžĐĩ Đ´ĐĩŅ€ĐĩвО" + }, + "2": { + "description": "ЕŅĐģи вŅ‹ ĐŊĐĩ ŅƒĐ˛ĐĩŅ€ĐĩĐŊŅ‹ в Ņ‚ĐžĐŧ, ĐģиŅŅ‚вĐĩĐŊĐŊĐžĐĩ ŅŅ‚Đž Đ´ĐĩŅ€ĐĩвО иĐģи Ņ…вОКĐŊĐžĐĩ.", + "title": "ДĐĩŅ€ĐĩвО" + } + }, + "tagRenderings": { + "tree-decidouous": { + "mappings": { + "0": { + "then": "ЛиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ: Ņƒ Đ´ĐĩŅ€Đĩва ĐžĐŋĐ°Đ´Đ°ŅŽŅ‚ ĐģиŅŅ‚ŅŒŅ в ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊĐŊĐžĐĩ вŅ€ĐĩĐŧŅ ĐŗОда." + }, + "1": { + "then": "ВĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ." + } + }, + "question": "Đ­Ņ‚Đž Đ´ĐĩŅ€ĐĩвО вĐĩŅ‡ĐŊОСĐĩĐģŅ‘ĐŊĐžĐĩ иĐģи ĐģиŅŅ‚ĐžĐŋĐ°Đ´ĐŊĐžĐĩ?" + }, + "tree-height": { + "mappings": { + "0": { + "then": "ВŅ‹ŅĐžŅ‚Đ°: {height} Đŧ" + } + }, + "render": "ВŅ‹ŅĐžŅ‚Đ°: {height}" + }, + "tree_node-name": { + "mappings": { + "0": { + "then": "ĐŖ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊĐĩŅ‚ ĐŊаСваĐŊиŅ." + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ĐžĐŗĐž Đ´ĐĩŅ€Đĩва ĐŊаСваĐŊиĐĩ?", + "render": "НазваĐŊиĐĩ: {name}" + }, + "tree_node-ref:OnroerendErfgoed": { + "render": "\"\"/ Onroerend Erfgoed ID: {ref:OnroerendErfgoed}" + }, + "tree_node-wikidata": { + "render": "\"\"/ Wikidata: {wikidata}" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "ДĐĩŅ€ĐĩвО" + } + }, + "viewpoint": { + "name": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°", + "presets": { + "0": { + "title": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" + } + }, + "tagRenderings": { + "viewpoint-description": { + "question": "ВŅ‹ Ņ…ĐžŅ‚иŅ‚Đĩ дОйавиŅ‚ŅŒ ĐžĐŋиŅĐ°ĐŊиĐĩ?" + } + }, + "title": { + "render": "ĐĄĐŧĐžŅ‚Ņ€ĐžĐ˛Đ°Ņ ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ°" + } + }, + "visitor_information_centre": { + "title": { + "mappings": { + "1": { + "then": "{name}" + } + }, + "render": "{name}" + } + }, + "waste_basket": { + "mapRendering": { + "0": { + "iconSize": { + "mappings": { + "0": { + "then": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°" + } + } + } + } + }, + "name": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°", + "presets": { + "0": { + "title": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°" + } + }, + "title": { + "render": "КоĐŊŅ‚ĐĩĐšĐŊĐĩŅ€ Đ´ĐģŅ ĐŧŅƒŅĐžŅ€Đ°" + } + }, + "watermill": { + "name": "ВодŅĐŊĐ°Ņ ĐŧĐĩĐģŅŒĐŊиŅ†Đ°" + } } \ No newline at end of file diff --git a/langs/layers/sv.json b/langs/layers/sv.json index 5aca32268..fd555286a 100644 --- a/langs/layers/sv.json +++ b/langs/layers/sv.json @@ -1,34 +1,34 @@ { - "artwork": { - "presets": { - "0": { - "title": "Konstverk" - } - }, - "title": { - "mappings": { - "0": { - "then": "Konstverk {name}" - } - }, - "render": "Konstverk" - } + "artwork": { + "presets": { + "0": { + "title": "Konstverk" + } }, - "ghost_bike": { - "name": "SpÃļkcykel", - "title": { - "render": "SpÃļkcykel" - } - }, - "shops": { - "tagRenderings": { - "shops-shop": { - "mappings": { - "5": { - "then": "Bilverkstad" - } - } - } + "title": { + "mappings": { + "0": { + "then": "Konstverk {name}" } + }, + "render": "Konstverk" } + }, + "ghost_bike": { + "name": "SpÃļkcykel", + "title": { + "render": "SpÃļkcykel" + } + }, + "shops": { + "tagRenderings": { + "shops-shop": { + "mappings": { + "5": { + "then": "Bilverkstad" + } + } + } + } + } } \ No newline at end of file diff --git a/langs/layers/zh_Hans.json b/langs/layers/zh_Hans.json index 360a52c61..c6a570228 100644 --- a/langs/layers/zh_Hans.json +++ b/langs/layers/zh_Hans.json @@ -1,205 +1,208 @@ { - "bench": { - "name": "é•ŋ椅", - "presets": { - "0": { - "title": "é•ŋ椅" - } - }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "靠背īŧšæœ‰" - }, - "1": { - "then": "靠背īŧšæ— " - } - }, - "question": "čŋ™ä¸Ēé•ŋæ¤…æœ‰é čƒŒå—īŧŸ", - "render": "靠背" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "éĸœč‰˛īŧšæŖ•" - }, - "1": { - "then": "éĸœč‰˛īŧšįģŋ" - }, - "2": { - "then": "éĸœč‰˛īŧšį°" - }, - "3": { - "then": "éĸœč‰˛īŧšį™Ŋ" - }, - "4": { - "then": "éĸœč‰˛īŧšįēĸ" - }, - "5": { - "then": "éĸœč‰˛īŧšéģ‘" - }, - "6": { - "then": "éĸœč‰˛īŧšč“" - }, - "7": { - "then": "éĸœč‰˛īŧšéģ„" - } - }, - "question": "čŋ™ä¸Ēé•ŋ椅是äģ€äšˆéĸœč‰˛įš„īŧŸ", - "render": "éĸœč‰˛īŧš {colour}" - }, - "bench-direction": { - "question": "坐在é•ŋ椅上įš„æ—ļ候äŊ į›Žč§†įš„斚向是å“ĒčžšīŧŸ", - "render": "坐在é•ŋ椅上įš„æ—ļ候į›Žč§†æ–šå‘ä¸ē {direction}°斚äŊã€‚" - }, - "bench-material": { - "mappings": { - "0": { - "then": "æč´¨īŧšæœ¨" - }, - "1": { - "then": "æč´¨īŧšé‡‘åąž" - }, - "2": { - "then": "æč´¨īŧšįŸŗ头" - }, - "3": { - "then": "æč´¨īŧšæˇˇå‡åœŸ" - }, - "4": { - "then": "æč´¨īŧšåĄ‘æ–™" - }, - "5": { - "then": "æč´¨īŧšä¸é”ˆé’ĸ" - } - }, - "question": "čŋ™ä¸Ēé•ŋ椅īŧˆæˆ–åē§æ¤…īŧ‰æ˜¯į”¨äģ€äšˆææ–™åšįš„īŧŸ", - "render": "æč´¨: {material}" - }, - "bench-seats": { - "question": "čŋ™ä¸Ēé•ŋ椅有几ä¸Ēåē§äŊīŧŸ" - }, - "bench-survey:date": { - "question": "上æŦĄå¯ščŋ™ä¸Ēé•ŋæ¤…åŽžåœ°č°ƒæŸĨ是äģ€äšˆæ—ļ候īŧŸ", - "render": "čŋ™ä¸Ēé•ŋ椅äēŽ {survey:date}最后一æŦĄåŽžåœ°č°ƒæŸĨ" - } - }, - "title": { - "render": "é•ŋ椅" - } + "bench": { + "name": "é•ŋ椅", + "presets": { + "0": { + "title": "é•ŋ椅" + } }, - "bench_at_pt": { - "name": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "įĢ™įĢ‹é•ŋå‡ŗ" - }, - "bench_at_pt-name": { - "render": "{name}" - } + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "靠背īŧšæœ‰" + }, + "1": { + "then": "靠背īŧšæ— " + } }, - "title": { - "mappings": { - "0": { - "then": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅" - }, - "1": { - "then": "在åē‡æŠ¤æ‰€įš„é•ŋ椅" - } - }, - "render": "é•ŋ椅" - } - }, - "bicycle_library": { - "tagRenderings": { - "bicycle-library-target-group": { - "question": "č°å¯äģĨäģŽčŋ™é‡Œå€Ÿč‡Ē行čŊĻīŧŸ" - } - } - }, - "bicycle_tube_vending_machine": { - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "čŋ™ä¸Ē借čŋ˜æœēæ­Ŗ常åˇĨäŊœ" - }, - "1": { - "then": "čŋ™ä¸Ē借čŋ˜æœēåˇ˛įģæŸå" - }, - "2": { - "then": "čŋ™ä¸Ē借čŋ˜æœēčĸĢå…ŗ闭äē†" - } - } - } - } - }, - "bike_cafe": { - "name": "č‡Ē行čŊĻå’–å•Ą", - "presets": { - "0": { - "title": "č‡Ē行čŊĻå’–å•Ą" - } + "question": "čŋ™ä¸Ēé•ŋæ¤…æœ‰é čƒŒå—īŧŸ" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "éĸœč‰˛īŧšæŖ•" + }, + "1": { + "then": "éĸœč‰˛īŧšįģŋ" + }, + "2": { + "then": "éĸœč‰˛īŧšį°" + }, + "3": { + "then": "éĸœč‰˛īŧšį™Ŋ" + }, + "4": { + "then": "éĸœč‰˛īŧšįēĸ" + }, + "5": { + "then": "éĸœč‰˛īŧšéģ‘" + }, + "6": { + "then": "éĸœč‰˛īŧšč“" + }, + "7": { + "then": "éĸœč‰˛īŧšéģ„" + } }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸Ēäēē提䞛打气į­’" - }, - "1": { - "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ē每ä¸Ēäēē提䞛打气į­’" - } - }, - "question": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸ĒäŊŋį”¨č€…提䞛打气į­’吗īŧŸ" - }, - "bike_cafe-email": { - "question": "{name}įš„į”ĩ子邎įŽąæ˜¯äģ€äšˆīŧŸ" - }, - "bike_cafe-name": { - "question": "čŋ™ä¸Ēč‡Ē行čŊĻå’–å•Ąįš„名字是äģ€äšˆīŧŸ", - "render": "čŋ™åŽļč‡Ē行čŊĻå’–å•ĄåĢ做 {name}" - }, - "bike_cafe-opening_hours": { - "question": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąäģ€äšˆæ—ļ候åŧ€é—¨čĨ业īŧŸ" - }, - "bike_cafe-phone": { - "question": "{name}įš„į”ĩč¯åˇį æ˜¯äģ€äšˆīŧŸ" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąå¯äģĨäŋŽčŊĻ" - }, - "1": { - "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸čƒŊäŋŽčŊĻ" - } - }, - "question": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąt提䞛äŋŽčŊĻæœåŠĄå—īŧŸ" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ" - }, - "1": { - "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ" - } - }, - "question": "čŋ™é‡Œæœ‰äž›äŊ äŋŽčŊĻį”¨įš„åˇĨå…ˇå—īŧŸ" - }, - "bike_cafe-website": { - "question": "{name}įš„įŊ‘įĢ™æ˜¯äģ€äšˆīŧŸ" - } + "question": "čŋ™ä¸Ēé•ŋ椅是äģ€äšˆéĸœč‰˛įš„īŧŸ", + "render": "éĸœč‰˛īŧš {colour}" + }, + "bench-direction": { + "question": "坐在é•ŋ椅上įš„æ—ļ候äŊ į›Žč§†įš„斚向是å“ĒčžšīŧŸ", + "render": "坐在é•ŋ椅上įš„æ—ļ候į›Žč§†æ–šå‘ä¸ē {direction}°斚äŊã€‚" + }, + "bench-material": { + "mappings": { + "0": { + "then": "æč´¨īŧšæœ¨" + }, + "1": { + "then": "æč´¨īŧšé‡‘åąž" + }, + "2": { + "then": "æč´¨īŧšįŸŗ头" + }, + "3": { + "then": "æč´¨īŧšæˇˇå‡åœŸ" + }, + "4": { + "then": "æč´¨īŧšåĄ‘æ–™" + }, + "5": { + "then": "æč´¨īŧšä¸é”ˆé’ĸ" + } }, - "title": { - "mappings": { - "0": { - "then": "č‡Ē行čŊĻå’–å•Ą {name}" - } - }, - "render": "č‡Ē行čŊĻå’–å•Ą" - } + "question": "čŋ™ä¸Ēé•ŋ椅īŧˆæˆ–åē§æ¤…īŧ‰æ˜¯į”¨äģ€äšˆææ–™åšįš„īŧŸ", + "render": "æč´¨: {material}" + }, + "bench-seats": { + "question": "čŋ™ä¸Ēé•ŋ椅有几ä¸Ēåē§äŊīŧŸ" + }, + "bench-survey:date": { + "question": "上æŦĄå¯ščŋ™ä¸Ēé•ŋæ¤…åŽžåœ°č°ƒæŸĨ是äģ€äšˆæ—ļ候īŧŸ", + "render": "čŋ™ä¸Ēé•ŋ椅äēŽ {survey:date}最后一æŦĄåŽžåœ°č°ƒæŸĨ" + } + }, + "title": { + "render": "é•ŋ椅" } + }, + "bench_at_pt": { + "name": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "1": { + "then": "įĢ™įĢ‹é•ŋå‡ŗ" + } + } + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "在å…Ŧäē¤įĢ™į‚šįš„é•ŋ椅" + }, + "1": { + "then": "在åē‡æŠ¤æ‰€įš„é•ŋ椅" + } + }, + "render": "é•ŋ椅" + } + }, + "bicycle_library": { + "tagRenderings": { + "bicycle-library-target-group": { + "question": "č°å¯äģĨäģŽčŋ™é‡Œå€Ÿč‡Ē行čŊĻīŧŸ" + } + } + }, + "bicycle_tube_vending_machine": { + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "čŋ™ä¸Ē借čŋ˜æœēæ­Ŗ常åˇĨäŊœ" + }, + "1": { + "then": "čŋ™ä¸Ē借čŋ˜æœēåˇ˛įģæŸå" + }, + "2": { + "then": "čŋ™ä¸Ē借čŋ˜æœēčĸĢå…ŗ闭äē†" + } + } + } + } + }, + "bike_cafe": { + "name": "č‡Ē行čŊĻå’–å•Ą", + "presets": { + "0": { + "title": "č‡Ē行čŊĻå’–å•Ą" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸Ēäēē提䞛打气į­’" + }, + "1": { + "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ē每ä¸Ēäēē提䞛打气į­’" + } + }, + "question": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ē每ä¸ĒäŊŋį”¨č€…提䞛打气į­’吗īŧŸ" + }, + "bike_cafe-email": { + "question": "{name}įš„į”ĩ子邎įŽąæ˜¯äģ€äšˆīŧŸ" + }, + "bike_cafe-name": { + "question": "čŋ™ä¸Ēč‡Ē行čŊĻå’–å•Ąįš„名字是äģ€äšˆīŧŸ", + "render": "čŋ™åŽļč‡Ē行čŊĻå’–å•ĄåĢ做 {name}" + }, + "bike_cafe-opening_hours": { + "question": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąäģ€äšˆæ—ļ候åŧ€é—¨čĨ业īŧŸ" + }, + "bike_cafe-phone": { + "question": "{name}įš„į”ĩč¯åˇį æ˜¯äģ€äšˆīŧŸ" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąå¯äģĨäŋŽčŊĻ" + }, + "1": { + "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸čƒŊäŋŽčŊĻ" + } + }, + "question": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąt提䞛äŋŽčŊĻæœåŠĄå—īŧŸ" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ" + }, + "1": { + "then": "čŋ™åŽļč‡Ē行čŊĻå’–å•Ąä¸ä¸ēDIYäŋŽį†č€…提䞛åˇĨå…ˇ" + } + }, + "question": "čŋ™é‡Œæœ‰äž›äŊ äŋŽčŊĻį”¨įš„åˇĨå…ˇå—īŧŸ" + }, + "bike_cafe-website": { + "question": "{name}įš„įŊ‘įĢ™æ˜¯äģ€äšˆīŧŸ" + } + }, + "title": { + "mappings": { + "0": { + "then": "č‡Ē行čŊĻå’–å•Ą {name}" + } + }, + "render": "č‡Ē行čŊĻå’–å•Ą" + } + } } \ No newline at end of file diff --git a/langs/layers/zh_Hant.json b/langs/layers/zh_Hant.json index 951be71a1..92fdbfe65 100644 --- a/langs/layers/zh_Hant.json +++ b/langs/layers/zh_Hant.json @@ -1,465 +1,457 @@ { - "artwork": { - "description": "ä¸åŒéĄžåž‹įš„č—čĄ“å“", - "name": "č—čĄ“å“", - "presets": { - "0": { - "title": "č—čĄ“å“" - } - }, - "tagRenderings": { - "artwork-artist_name": { - "question": "å‰ĩ造這個įš„č—čĄ“åŽļ是čĒ°īŧŸ", - "render": "{artist_name} å‰ĩäŊœ" - }, - "artwork-artwork_type": { - "mappings": { - "0": { - "then": "åģēį¯‰į‰Š" - }, - "1": { - "then": "åŖį•Ģ" - }, - "2": { - "then": "įšĒį•Ģ" - }, - "3": { - "then": "é›•åĄ‘" - }, - "4": { - "then": "雕像" - }, - "5": { - "then": "半čēĢ像" - }, - "6": { - "then": "įŸŗé ­" - }, - "7": { - "then": "厉čŖ" - }, - "8": { - "then": "åĄ—é´¨" - }, - "9": { - "then": "å¯Ŧ慰" - }, - "10": { - "then": "Azulejo (čĨŋį­į‰™é›•åĄ‘äŊœå“åį¨ą)" - }, - "11": { - "then": "į“ˇįŖš" - } - }, - "question": "這是äģ€éēŧéĄžåž‹įš„č—čĄ“å“īŧŸ", - "render": "這是 {artwork_type}" - }, - "artwork-website": { - "question": "在é‚Ŗ個įļ˛įĢ™čƒŊå¤ æ‰žåˆ°æ›´å¤šč—čĄ“å“įš„čŗ‡č¨ŠīŧŸ", - "render": "這個įļ˛įĢ™æœ‰æ›´å¤ščŗ‡č¨Š" - }, - "artwork-wikidata": { - "question": "é€™å€‹č—čĄ“å“æœ‰é‚Ŗ個對應įš„ Wikidata 項į›ŽīŧŸ", - "render": "與 {wikidata}對應" - } - }, - "title": { - "mappings": { - "0": { - "then": "č—čĄ“å“{name}" - } - }, - "render": "č—čĄ“å“" - } + "artwork": { + "description": "ä¸åŒéĄžåž‹įš„č—čĄ“å“", + "name": "č—čĄ“å“", + "presets": { + "0": { + "title": "č—čĄ“å“" + } }, - "bench": { - "name": "é•ˇæ¤…", - "presets": { - "0": { - "title": "é•ˇæ¤…" - } + "tagRenderings": { + "artwork-artist_name": { + "question": "å‰ĩ造這個įš„č—čĄ“åŽļ是čĒ°īŧŸ", + "render": "{artist_name} å‰ĩäŊœ" + }, + "artwork-artwork_type": { + "mappings": { + "0": { + "then": "åģēį¯‰į‰Š" + }, + "1": { + "then": "åŖį•Ģ" + }, + "2": { + "then": "įšĒį•Ģ" + }, + "3": { + "then": "é›•åĄ‘" + }, + "4": { + "then": "雕像" + }, + "5": { + "then": "半čēĢ像" + }, + "6": { + "then": "įŸŗé ­" + }, + "7": { + "then": "厉čŖ" + }, + "8": { + "then": "åĄ—é´¨" + }, + "9": { + "then": "å¯Ŧ慰" + }, + "10": { + "then": "Azulejo (čĨŋį­į‰™é›•åĄ‘äŊœå“åį¨ą)" + }, + "11": { + "then": "į“ˇįŖš" + } }, - "tagRenderings": { - "bench-backrest": { - "mappings": { - "0": { - "then": "靠背īŧšæœ‰" - }, - "1": { - "then": "靠背īŧšį„Ą" - } - }, - "question": "é€™å€‹é•ˇæ¤…æ˜¯åĻæœ‰é čƒŒīŧŸ", - "render": "靠背" - }, - "bench-colour": { - "mappings": { - "0": { - "then": "顏色īŧšæŖ•č‰˛" - }, - "1": { - "then": "顏色īŧšįļ č‰˛" - }, - "2": { - "then": "顏色īŧšį°č‰˛" - }, - "3": { - "then": "顏色īŧšį™Ŋ色" - }, - "4": { - "then": "顏色īŧšį´…色" - }, - "5": { - "then": "顏色īŧšéģ‘色" - }, - "6": { - "then": "顏色īŧšč—č‰˛" - }, - "7": { - "then": "顏色īŧšéģƒč‰˛" - } - }, - "question": "é€™å€‹é•ˇæ¤…æ˜¯äģ€éēŧ顏色įš„īŧŸ", - "render": "顏色īŧš{colour}" - }, - "bench-direction": { - "question": "ååœ¨é•ˇæ¤…æ™‚æ˜¯éĸ對é‚Ŗ個斚向īŧŸ", - "render": "į•ļååœ¨é•ˇæ¤…æ™‚īŧŒé‚Ŗ個äēē朝向 {direction}°。" - }, - "bench-material": { - "mappings": { - "0": { - "then": "材čŗĒīŧšæœ¨é ­" - }, - "1": { - "then": "材čŗĒīŧšé‡‘åąŦ" - }, - "2": { - "then": "材čŗĒīŧšįŸŗé ­" - }, - "3": { - "then": "材čŗĒīŧšæ°´æŗĨ" - }, - "4": { - "then": "材čŗĒīŧšåĄ‘膠" - }, - "5": { - "then": "材čŗĒīŧšé‹ŧéĩ" - } - }, - "question": "é€™å€‹é•ˇæ¤… (åē§äŊ) 是äģ€éēŧ做įš„īŧŸ", - "render": "材čŗĒīŧš{material}" - }, - "bench-seats": { - "question": "é€™å€‹é•ˇæ¤…æœ‰åšžå€‹äŊå­īŧŸ", - "render": "{seats} åē§äŊæ•¸" - }, - "bench-survey:date": { - "question": "上一æŦĄæŽĸå¯Ÿé•ˇæ¤…æ˜¯äģ€éēŧ時候īŧŸ", - "render": "é€™å€‹é•ˇæ¤…æœ€åžŒæ˜¯åœ¨ {survey:date} æŽĸæŸĨįš„" - } - }, - "title": { - "render": "é•ˇæ¤…" - } + "question": "這是äģ€éēŧéĄžåž‹įš„č—čĄ“å“īŧŸ", + "render": "這是 {artwork_type}" + }, + "artwork-website": { + "question": "在é‚Ŗ個įļ˛įĢ™čƒŊå¤ æ‰žåˆ°æ›´å¤šč—čĄ“å“įš„čŗ‡č¨ŠīŧŸ", + "render": "這個įļ˛įĢ™æœ‰æ›´å¤ščŗ‡č¨Š" + }, + "artwork-wikidata": { + "question": "é€™å€‹č—čĄ“å“æœ‰é‚Ŗ個對應įš„ Wikidata 項į›ŽīŧŸ", + "render": "與 {wikidata}對應" + } }, - "bench_at_pt": { - "name": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…", - "tagRenderings": { - "bench_at_pt-bench": { - "render": "įĢ™įĢ‹é•ˇæ¤…" - }, - "bench_at_pt-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…" - }, - "1": { - "then": "æļŧäē­å…§įš„é•ˇæ¤…" - } - }, - "render": "é•ˇæ¤…" - } - }, - "bicycle_library": { - "description": "čƒŊå¤ é•ˇæœŸį§Ÿį”¨å–ŽčģŠįš„設æ–Ŋ", - "name": "å–ŽčģŠåœ–書館", - "presets": { - "0": { - "description": "å–ŽčģŠåœ–書館有一大扚喎čģŠäž›äēēį§Ÿå€Ÿ", - "title": "č‡Ē行čģŠåœ–書館 ( Fietsbibliotheek)" - } - }, - "tagRenderings": { - "bicycle-library-target-group": { - "mappings": { - "0": { - "then": "提䞛兒įĢĨå–ŽčģŠ" - }, - "1": { - "then": "有提䞛成äēēå–ŽčģŠ" - }, - "2": { - "then": "æœ‰æäž›čĄŒå‹•ä¸äžŋäēēåŖĢįš„å–ŽčģŠ" - } - }, - "question": "čĒ°å¯äģĨ在這čŖĄį§Ÿå–ŽčģŠīŧŸ" - }, - "bicycle_library-charge": { - "mappings": { - "0": { - "then": "į§Ÿå€Ÿå–ŽčģŠå…č˛ģ" - }, - "1": { - "then": "į§Ÿå€Ÿå–ŽčģŠåƒšéŒĸ â‚Ŧ20/year 與 â‚Ŧ20 äŋč­‰é‡‘" - } - }, - "question": "į§Ÿį”¨å–ŽčģŠįš„č˛ģį”¨å¤šå°‘īŧŸ", - "render": "į§Ÿå€Ÿå–ŽčģŠéœ€čĻ {charge}" - }, - "bicycle_library-name": { - "question": "這個喎čģŠåœ–書館įš„名į¨ąæ˜¯īŧŸ", - "render": "這個喎čģŠåœ–書館åĢ做 {name}" - } - }, - "title": { - "render": "å–ŽčģŠåœ–書館" - } - }, - "bicycle_tube_vending_machine": { - "name": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ", - "presets": { - "0": { - "title": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ" - } - }, - "tagRenderings": { - "Still in use?": { - "mappings": { - "0": { - "then": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģé‹äŊœ" - }, - "1": { - "then": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸæ˛’æœ‰é‹äŊœäē†" - }, - "2": { - "then": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸåˇ˛įļ“關閉äē†" - } - }, - "question": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģæœ‰é‹äŊœå—ŽīŧŸ", - "render": "運äŊœį‹€æ…‹æ˜¯ {operational_status" - } - }, - "title": { - "render": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ" - } - }, - "bike_cafe": { - "name": "å–ŽčģŠå’–å•Ąåģŗ", - "presets": { - "0": { - "title": "å–ŽčģŠå’–å•Ąåģŗ" - } - }, - "tagRenderings": { - "bike_cafe-bike-pump": { - "mappings": { - "0": { - "then": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ" - }, - "1": { - "then": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰į‚ē所有äēē提䞛喎čģŠæ‰“æ°Ŗį”Ŧ" - } - }, - "question": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ嗎īŧŸ" - }, - "bike_cafe-email": { - "question": "{name} įš„é›ģ子éƒĩäģļ地址是īŧŸ" - }, - "bike_cafe-name": { - "question": "這個喎čģŠå’–å•Ąåģŗįš„名į¨ąæ˜¯īŧŸ", - "render": "這個喎čģŠå’–å•ĄåģŗåĢ做 {name}" - }, - "bike_cafe-opening_hours": { - "question": "äŊ•æ™‚這個喎čģŠå’–å•Ąåģŗį‡Ÿé‹īŧŸ" - }, - "bike_cafe-phone": { - "question": "{name} įš„é›ģ話號įĸŧ是īŧŸ" - }, - "bike_cafe-repair-service": { - "mappings": { - "0": { - "then": "這個喎čģŠå’–å•ĄåģŗäŋŽį†å–ŽčģŠ" - }, - "1": { - "then": "這個喎čģŠå’–å•Ąåģŗä¸Ļ不äŋŽį†å–ŽčģŠ" - } - }, - "question": "這個喎čģŠå’–å•Ąåģŗ是åĻčƒŊäŋŽį†å–ŽčģŠīŧŸ" - }, - "bike_cafe-repair-tools": { - "mappings": { - "0": { - "then": "這個喎čģŠå’–å•Ąåģŗ提䞛åˇĨå…ˇčŽ“äŊ äŋŽį†" - }, - "1": { - "then": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰æäž›åˇĨå…ˇčŽ“äŊ äŋŽį†" - } - }, - "question": "這čŖĄæ˜¯åĻ有åˇĨå…ˇäŋŽį†äŊ įš„å–ŽčģŠå—ŽīŧŸ" - }, - "bike_cafe-website": { - "question": "{name} įš„įļ˛įĢ™æ˜¯īŧŸ" - } - }, - "title": { - "mappings": { - "0": { - "then": "å–ŽčģŠå’–å•Ąåģŗ{name}" - } - }, - "render": "å–ŽčģŠå’–å•Ąåģŗ" - } - }, - "bike_cleaning": { - "name": "å–ŽčģŠæ¸…į†æœå‹™", - "presets": { - "0": { - "title": "å–ŽčģŠæ¸…į†æœå‹™" - } - }, - "title": { - "mappings": { - "0": { - "then": "å–ŽčģŠæ¸…į†æœå‹™ {name}" - } - }, - "render": "å–ŽčģŠæ¸…į†æœå‹™" - } - }, - "bike_parking": { - "name": "å–ŽčģŠåœčģŠå ´", - "presets": { - "0": { - "title": "å–ŽčģŠåœčģŠå ´" - } - }, - "tagRenderings": { - "Access": { - "mappings": { - "0": { - "then": "å…Ŧ開可į”¨" - }, - "1": { - "then": "é€ščĄŒæ€§ä¸ģčĻæ˜¯į‚ēäē†äŧæĨ­įš„饧åŽĸ" - }, - "2": { - "then": "é€ščĄŒæ€§åƒ…é™å­¸æ Ąã€å…Ŧ司或įĩ„įš”įš„æˆå“Ą" - } - }, - "question": "čĒ°å¯äģĨäŊŋį”¨é€™å€‹å–ŽčģŠåœčģŠå ´īŧŸ", - "render": "{access}" - }, - "Bicycle parking type": { - "mappings": { - "0": { - "then": "å–ŽčģŠæžļ " - }, - "1": { - "then": "čģŠčŧĒæžļ/圓圈 " - }, - "2": { - "then": "čģŠæŠŠæžļ " - }, - "3": { - "then": "čģŠæžļ" - }, - "4": { - "then": "å…Šåą¤" - }, - "5": { - "then": "čģŠæŖš " - }, - "6": { - "then": "æŸąå­ " - }, - "7": { - "then": "æ¨“åą¤į•ļ中標į¤ēį‚ēå–ŽčģŠåœčģŠå ´įš„區域" - } - }, - "question": "這是é‚Ŗį¨ŽéĄžåž‹įš„å–ŽčģŠåœčģŠå ´īŧŸ", - "render": "這個喎čģŠåœčģŠå ´įš„éĄžåž‹æ˜¯īŧš{bicycle_parking}" - }, - "Capacity": { - "question": "這個喎čģŠåœčģŠå ´čƒŊ攞嚞台喎čģŠ (包æ‹ŦčŖįŽąå–ŽčģŠ)īŧŸ", - "render": "{capacity} å–ŽčģŠįš„地斚" - }, - "Cargo bike spaces?": { - "mappings": { - "0": { - "then": "這個停čģŠå ´æœ‰åœ°æ–šå¯äģĨ攞čŖįŽąå–ŽčģŠ" - }, - "1": { - "then": "這停čģŠå ´æœ‰č¨­č¨ˆ (厘斚) įŠē間įĩĻčŖįŽąįš„å–ŽčģŠã€‚" - } - }, - "question": "這個喎čģŠåœčģŠå ´æœ‰åœ°æ–šæ”žčŖįŽąįš„å–ŽčģŠå—ŽīŧŸ" - }, - "Is covered?": { - "mappings": { - "0": { - "then": "這個停čģŠå ´æœ‰éŽč”Ŋ (æœ‰åą‹é ‚)" - }, - "1": { - "then": "這個停čģŠå ´æ˛’有過č”Ŋ" - } - }, - "question": "這個停čģŠå ´æ˜¯åĻ有čģŠæŖšīŧŸåĻ‚果是厤內停čģŠå ´äšŸčĢ‹é¸æ“‡\"過č”Ŋ\"。" - }, - "Underground?": { - "mappings": { - "0": { - "then": "地下停čģŠå ´" - }, - "1": { - "then": "地下停čģŠå ´" - }, - "2": { - "then": "地éĸ停čģŠå ´" - }, - "3": { - "then": "地éĸåą¤åœčģŠå ´" - }, - "4": { - "then": "åą‹é ‚åœčģŠå ´" - } - }, - "question": "這個喎čģŠåœčģŠå ´įš„į›¸å°äŊįŊŽæ˜¯īŧŸ" - } - }, - "title": { - "render": "å–ŽčģŠåœčģŠå ´" - } - }, - "charging_station": { - "tagRenderings": { - "Network": { - "question": "充é›ģįĢ™æ‰€åąŦįš„įļ˛čˇ¯æ˜¯īŧŸ", - "render": "{network}" - }, - "OH": { - "question": "äŊ•æ™‚是充é›ģįĢ™é–‹æ”žäŊŋį”¨įš„時間īŧŸ" - } - } - }, - "ghost_bike": { - "name": "åšŊ靈喎čģŠ", - "title": { - "render": "åšŊ靈喎čģŠ" + "title": { + "mappings": { + "0": { + "then": "č—čĄ“å“{name}" } + }, + "render": "č—čĄ“å“" } + }, + "bench": { + "name": "é•ˇæ¤…", + "presets": { + "0": { + "title": "é•ˇæ¤…" + } + }, + "tagRenderings": { + "bench-backrest": { + "mappings": { + "0": { + "then": "靠背īŧšæœ‰" + }, + "1": { + "then": "靠背īŧšį„Ą" + } + }, + "question": "é€™å€‹é•ˇæ¤…æ˜¯åĻæœ‰é čƒŒīŧŸ" + }, + "bench-colour": { + "mappings": { + "0": { + "then": "顏色īŧšæŖ•č‰˛" + }, + "1": { + "then": "顏色īŧšįļ č‰˛" + }, + "2": { + "then": "顏色īŧšį°č‰˛" + }, + "3": { + "then": "顏色īŧšį™Ŋ色" + }, + "4": { + "then": "顏色īŧšį´…色" + }, + "5": { + "then": "顏色īŧšéģ‘色" + }, + "6": { + "then": "顏色īŧšč—č‰˛" + }, + "7": { + "then": "顏色īŧšéģƒč‰˛" + } + }, + "question": "é€™å€‹é•ˇæ¤…æ˜¯äģ€éēŧ顏色įš„īŧŸ", + "render": "顏色īŧš{colour}" + }, + "bench-direction": { + "question": "ååœ¨é•ˇæ¤…æ™‚æ˜¯éĸ對é‚Ŗ個斚向īŧŸ", + "render": "į•ļååœ¨é•ˇæ¤…æ™‚īŧŒé‚Ŗ個äēē朝向 {direction}°。" + }, + "bench-material": { + "mappings": { + "0": { + "then": "材čŗĒīŧšæœ¨é ­" + }, + "1": { + "then": "材čŗĒīŧšé‡‘åąŦ" + }, + "2": { + "then": "材čŗĒīŧšįŸŗé ­" + }, + "3": { + "then": "材čŗĒīŧšæ°´æŗĨ" + }, + "4": { + "then": "材čŗĒīŧšåĄ‘膠" + }, + "5": { + "then": "材čŗĒīŧšé‹ŧéĩ" + } + }, + "question": "é€™å€‹é•ˇæ¤… (åē§äŊ) 是äģ€éēŧ做įš„īŧŸ", + "render": "材čŗĒīŧš{material}" + }, + "bench-seats": { + "question": "é€™å€‹é•ˇæ¤…æœ‰åšžå€‹äŊå­īŧŸ", + "render": "{seats} åē§äŊæ•¸" + }, + "bench-survey:date": { + "question": "上一æŦĄæŽĸå¯Ÿé•ˇæ¤…æ˜¯äģ€éēŧ時候īŧŸ", + "render": "é€™å€‹é•ˇæ¤…æœ€åžŒæ˜¯åœ¨ {survey:date} æŽĸæŸĨįš„" + } + }, + "title": { + "render": "é•ˇæ¤…" + } + }, + "bench_at_pt": { + "name": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…", + "tagRenderings": { + "bench_at_pt-bench_type": { + "mappings": { + "1": { + "then": "įĢ™įĢ‹é•ˇæ¤…" + } + } + }, + "bench_at_pt-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "大įœžé‹čŧ¸įĢ™éģžįš„é•ˇæ¤…" + }, + "1": { + "then": "æļŧäē­å…§įš„é•ˇæ¤…" + } + }, + "render": "é•ˇæ¤…" + } + }, + "bicycle_library": { + "description": "čƒŊå¤ é•ˇæœŸį§Ÿį”¨å–ŽčģŠįš„設æ–Ŋ", + "name": "å–ŽčģŠåœ–書館", + "presets": { + "0": { + "description": "å–ŽčģŠåœ–書館有一大扚喎čģŠäž›äēēį§Ÿå€Ÿ", + "title": "č‡Ē行čģŠåœ–書館 ( Fietsbibliotheek)" + } + }, + "tagRenderings": { + "bicycle-library-target-group": { + "mappings": { + "0": { + "then": "提䞛兒įĢĨå–ŽčģŠ" + }, + "1": { + "then": "有提䞛成äēēå–ŽčģŠ" + }, + "2": { + "then": "æœ‰æäž›čĄŒå‹•ä¸äžŋäēēåŖĢįš„å–ŽčģŠ" + } + }, + "question": "čĒ°å¯äģĨ在這čŖĄį§Ÿå–ŽčģŠīŧŸ" + }, + "bicycle_library-charge": { + "mappings": { + "0": { + "then": "į§Ÿå€Ÿå–ŽčģŠå…č˛ģ" + }, + "1": { + "then": "į§Ÿå€Ÿå–ŽčģŠåƒšéŒĸ â‚Ŧ20/year 與 â‚Ŧ20 äŋč­‰é‡‘" + } + }, + "question": "į§Ÿį”¨å–ŽčģŠįš„č˛ģį”¨å¤šå°‘īŧŸ", + "render": "į§Ÿå€Ÿå–ŽčģŠéœ€čĻ {charge}" + }, + "bicycle_library-name": { + "question": "這個喎čģŠåœ–書館įš„名į¨ąæ˜¯īŧŸ", + "render": "這個喎čģŠåœ–書館åĢ做 {name}" + } + }, + "title": { + "render": "å–ŽčģŠåœ–書館" + } + }, + "bicycle_tube_vending_machine": { + "name": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ", + "presets": { + "0": { + "title": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ" + } + }, + "tagRenderings": { + "Still in use?": { + "mappings": { + "0": { + "then": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģé‹äŊœ" + }, + "1": { + "then": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸæ˛’æœ‰é‹äŊœäē†" + }, + "2": { + "then": "這個č‡Ēå‹•č˛ŠčŗŖæŠŸåˇ˛įļ“關閉äē†" + } + }, + "question": "這個č‡Ēå‹•č˛ŠčŗŖ抟äģæœ‰é‹äŊœå—ŽīŧŸ", + "render": "運äŊœį‹€æ…‹æ˜¯ {operational_status}" + } + }, + "title": { + "render": "č‡Ē行čģŠå…§čƒŽč‡Ēå‹•å”Žč˛¨æŠŸ" + } + }, + "bike_cafe": { + "name": "å–ŽčģŠå’–å•Ąåģŗ", + "presets": { + "0": { + "title": "å–ŽčģŠå’–å•Ąåģŗ" + } + }, + "tagRenderings": { + "bike_cafe-bike-pump": { + "mappings": { + "0": { + "then": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ" + }, + "1": { + "then": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰į‚ē所有äēē提䞛喎čģŠæ‰“æ°Ŗį”Ŧ" + } + }, + "question": "這個喎čģŠå’–å•Ąåģŗ有提䞛įĩĻäģģäŊ•äēēéƒŊčƒŊäŊŋį”¨įš„å–ŽčģŠæ‰“æ°Ŗį”Ŧ嗎īŧŸ" + }, + "bike_cafe-email": { + "question": "{name} įš„é›ģ子éƒĩäģļ地址是īŧŸ" + }, + "bike_cafe-name": { + "question": "這個喎čģŠå’–å•Ąåģŗįš„名į¨ąæ˜¯īŧŸ", + "render": "這個喎čģŠå’–å•ĄåģŗåĢ做 {name}" + }, + "bike_cafe-opening_hours": { + "question": "äŊ•æ™‚這個喎čģŠå’–å•Ąåģŗį‡Ÿé‹īŧŸ" + }, + "bike_cafe-phone": { + "question": "{name} įš„é›ģ話號įĸŧ是īŧŸ" + }, + "bike_cafe-repair-service": { + "mappings": { + "0": { + "then": "這個喎čģŠå’–å•ĄåģŗäŋŽį†å–ŽčģŠ" + }, + "1": { + "then": "這個喎čģŠå’–å•Ąåģŗä¸Ļ不äŋŽį†å–ŽčģŠ" + } + }, + "question": "這個喎čģŠå’–å•Ąåģŗ是åĻčƒŊäŋŽį†å–ŽčģŠīŧŸ" + }, + "bike_cafe-repair-tools": { + "mappings": { + "0": { + "then": "這個喎čģŠå’–å•Ąåģŗ提䞛åˇĨå…ˇčŽ“äŊ äŋŽį†" + }, + "1": { + "then": "這個喎čģŠå’–å•Ąåģŗä¸Ļæ˛’æœ‰æäž›åˇĨå…ˇčŽ“äŊ äŋŽį†" + } + }, + "question": "這čŖĄæ˜¯åĻ有åˇĨå…ˇäŋŽį†äŊ įš„å–ŽčģŠå—ŽīŧŸ" + }, + "bike_cafe-website": { + "question": "{name} įš„įļ˛įĢ™æ˜¯īŧŸ" + } + }, + "title": { + "mappings": { + "0": { + "then": "å–ŽčģŠå’–å•Ąåģŗ{name}" + } + }, + "render": "å–ŽčģŠå’–å•Ąåģŗ" + } + }, + "bike_cleaning": { + "name": "å–ŽčģŠæ¸…į†æœå‹™", + "presets": { + "0": { + "title": "å–ŽčģŠæ¸…į†æœå‹™" + } + }, + "title": { + "mappings": { + "0": { + "then": "å–ŽčģŠæ¸…į†æœå‹™ {name}" + } + }, + "render": "å–ŽčģŠæ¸…į†æœå‹™" + } + }, + "bike_parking": { + "name": "å–ŽčģŠåœčģŠå ´", + "presets": { + "0": { + "title": "å–ŽčģŠåœčģŠå ´" + } + }, + "tagRenderings": { + "Access": { + "mappings": { + "0": { + "then": "å…Ŧ開可į”¨" + }, + "1": { + "then": "é€ščĄŒæ€§ä¸ģčĻæ˜¯į‚ēäē†äŧæĨ­įš„饧åŽĸ" + }, + "2": { + "then": "é€ščĄŒæ€§åƒ…é™å­¸æ Ąã€å…Ŧ司或įĩ„įš”įš„æˆå“Ą" + } + }, + "question": "čĒ°å¯äģĨäŊŋį”¨é€™å€‹å–ŽčģŠåœčģŠå ´īŧŸ", + "render": "{access}" + }, + "Bicycle parking type": { + "mappings": { + "0": { + "then": "å–ŽčģŠæžļ " + }, + "1": { + "then": "čģŠčŧĒæžļ/圓圈 " + }, + "2": { + "then": "čģŠæŠŠæžļ " + }, + "3": { + "then": "čģŠæžļ" + }, + "4": { + "then": "å…Šåą¤" + }, + "5": { + "then": "čģŠæŖš " + }, + "6": { + "then": "æŸąå­ " + }, + "7": { + "then": "æ¨“åą¤į•ļ中標į¤ēį‚ēå–ŽčģŠåœčģŠå ´įš„區域" + } + }, + "question": "這是é‚Ŗį¨ŽéĄžåž‹įš„å–ŽčģŠåœčģŠå ´īŧŸ", + "render": "這個喎čģŠåœčģŠå ´įš„éĄžåž‹æ˜¯īŧš{bicycle_parking}" + }, + "Capacity": { + "question": "這個喎čģŠåœčģŠå ´čƒŊ攞嚞台喎čģŠ (包æ‹ŦčŖįŽąå–ŽčģŠ)īŧŸ", + "render": "{capacity} å–ŽčģŠįš„地斚" + }, + "Cargo bike spaces?": { + "mappings": { + "0": { + "then": "這個停čģŠå ´æœ‰åœ°æ–šå¯äģĨ攞čŖįŽąå–ŽčģŠ" + }, + "1": { + "then": "這停čģŠå ´æœ‰č¨­č¨ˆ (厘斚) įŠē間įĩĻčŖįŽąįš„å–ŽčģŠã€‚" + } + }, + "question": "這個喎čģŠåœčģŠå ´æœ‰åœ°æ–šæ”žčŖįŽąįš„å–ŽčģŠå—ŽīŧŸ" + }, + "Is covered?": { + "mappings": { + "0": { + "then": "這個停čģŠå ´æœ‰éŽč”Ŋ (æœ‰åą‹é ‚)" + }, + "1": { + "then": "這個停čģŠå ´æ˛’有過č”Ŋ" + } + }, + "question": "這個停čģŠå ´æ˜¯åĻ有čģŠæŖšīŧŸåĻ‚果是厤內停čģŠå ´äšŸčĢ‹é¸æ“‡\"過č”Ŋ\"。" + }, + "Underground?": { + "mappings": { + "0": { + "then": "地下停čģŠå ´" + }, + "1": { + "then": "地éĸ停čģŠå ´" + }, + "2": { + "then": "åą‹é ‚åœčģŠå ´" + }, + "3": { + "then": "地éĸåą¤åœčģŠå ´" + }, + "4": { + "then": "åą‹é ‚åœčģŠå ´" + } + }, + "question": "這個喎čģŠåœčģŠå ´įš„į›¸å°äŊįŊŽæ˜¯īŧŸ" + } + }, + "title": { + "render": "å–ŽčģŠåœčģŠå ´" + } + }, + "ghost_bike": { + "name": "åšŊ靈喎čģŠ", + "title": { + "render": "åšŊ靈喎čģŠ" + } + } } \ No newline at end of file diff --git a/langs/layers/zh_HanÃĨ¨s.json b/langs/layers/zh_HanÃĨ¨s.json index 0efb21822..272d0dfd9 100644 --- a/langs/layers/zh_HanÃĨ¨s.json +++ b/langs/layers/zh_HanÃĨ¨s.json @@ -1,9 +1,9 @@ { - "bench": { - "tagRenderings": { - "bench-material": { - "render": "æč´¨: {material}" - } - } + "bench": { + "tagRenderings": { + "bench-material": { + "render": "æč´¨: {material}" + } } + } } \ No newline at end of file diff --git a/langs/nb_NO.json b/langs/nb_NO.json index 7b3748873..df74de38d 100644 --- a/langs/nb_NO.json +++ b/langs/nb_NO.json @@ -1,276 +1,276 @@ { - "general": { - "skip": "Hopp over dette spørsmÃĨlet", - "cancel": "Avbryt", - "save": "Lagre", - "search": { - "searching": "Søker â€Ļ", - "search": "Søk etter et sted", - "nothing": "Resultatløst â€Ļ", - "error": "Noe gikk galt ." - }, - "welcomeBack": "Du er innlogget. Velkommen tilbake.", - "pdf": { - "versionInfo": "v{version}. Generert {date}", - "attr": "Kartdata Š OpenStreetMap-bidragsytere, gjenbrukbart med ODbL-lisens", - "generatedWith": "Generert av MapComplete.osm.be", - "attrBackground": "Bakgrunnslag: {background}" - }, - "loginToStart": "Logg inn for ÃĨ besvare dette spørsmÃĨlet", - "osmLinkTooltip": "Vis dette objektet pÃĨ OpenStreetMap for historikk og flere redigeringsvalg", - "add": { - "presetInfo": "Det nye interessepunktet vil fÃĨ {tags}", - "zoomInFurther": "Forstørr mer for ÃĨ legge til et punkt.", - "title": "Legg til et nytt punkt?", - "intro": "Du klikket et sted der ingen data er kjent enda.
", - "addNewMapLabel": "Legg til nytt element", - "confirmIntro": "

Legg til {title} her?

Punktet du oppretter her vil vÃĻre synlig for alle. Kun legg til ting pÃĨ kartet hvis de virkelig finnes. Mange programmer bruker denne dataen.", - "layerNotEnabled": "Laget {layer} er ikke pÃĨslÃĨtt. Skru pÃĨ dette laget for ÃĨ legge til et punkt.", - "confirmButton": "Legg til en {category} her.
Din endring er synlig for alle
", - "openLayerControl": "Åpne lagkontrollboksen", - "hasBeenImported": "Dette punktet har allerede blitt importert", - "stillLoading": "Dataen lastes fremdeles inn. Vent litt før du legger til et nytt punkt.", - "warnVisibleForEveryone": "Din endring vil vÃĻre synlig for alle", - "zoomInMore": "Forstørr mer for ÃĨ importere denne funksjonen", - "disableFilters": "Skru av alle filtre", - "disableFiltersExplanation": "Det kan hende noen funksjoner er skjult av et filter", - "addNew": "Legg til en ny {category} her", - "pleaseLogin": "Logg inn for ÃĨ legge til et nytt punkt" - }, - "noNameCategory": "{category} uten navn", - "morescreen": { - "requestATheme": "Hvis du ønsker et brukerdefinert tema kan du forespørre det i feilsporeren", - "intro": "

Flere temakart?

Liker du ÃĨ samle inn geodata?
Det er flere tilgjengelige temaer.", - "createYourOwnTheme": "Opprett ditt eget MapComplete-tema fra grunnen av", - "hiddenExplanation": "Disse temaene er kun tilgjengelige hvis du kjenner lenken. Du har oppdaget {hidden_discovered} av {total_hidden} hidden tema.", - "previouslyHiddenTitle": "Tidligere besøkte skjulte tema", - "streetcomplete": "Et annet lignende program er StreetComplete." - }, - "questions": { - "emailIs": "E-postadressen til {category} er {email}", - "websiteIs": "Nettside: {website}", - "emailOf": "Hva er e-postadressen til {category}?", - "phoneNumberOf": "Hva er telefonnummeret til {category}?", - "websiteOf": "Hva er nettsiden til {category}?", - "phoneNumberIs": "Telefonnummeret til denne {category} er {phone}" - }, - "sharescreen": { - "thanksForSharing": "Takk for at du bidrar.", - "copiedToClipboard": "Lenke kopiert til utklippstavle", - "intro": "

Del dette kartet

Del dette kartet ved ÃĨ kopiere lenken nedenfor og sende den til venner og familie:", - "fsUserbadge": "Skru pÃĨ innloggingsknappen", - "fsSearch": "Skru pÃĨ søkefeltet", - "fsWelcomeMessage": "Vis velkomst-oppsprettsmeldinger og tilknyttede faner", - "editThisTheme": "Rediger dette temaet", - "fsGeolocation": "Skru pÃĨ ÂĢGeolokaliser megÂģ-knappen (kun for mobil)", - "fsIncludeCurrentBackgroundMap": "Inkluder nÃĨvÃĻrende bakgrunnsvalg {name}", - "fsLayerControlToggle": "Start med lagkontrollen utvidet", - "addToHomeScreen": "

Legg til pÃĨ hjemmeskjermen din

Du kan enkelt legge til denne nettsiden pÃĨ din smarttelefon-hjemmeskjerm for ÃĨ fÃĨ det hele integrert. Klikk pÃĨ ÂĢLegg til pÃĨ hjemmeskjermÂģ-knappen i nettadressefeltet for ÃĨ gjøre dette.", - "fsLayers": "Skru pÃĨ lagkontrollen", - "fsIncludeCurrentLayers": "Inkluder nÃĨvÃĻrende lagvalg", - "fsIncludeCurrentLocation": "Inkluder nÃĨvÃĻrende posisjon", - "embedIntro": "

Bygg inn pÃĨ nettsiden din

Legg til dette kartet pÃĨ nettsiden din.
Du oppfordres til ÃĨ gjøre dette, og trenger ikke ÃĨ spørre om tillatelse.
Det er fritt, og vil alltid vÃĻre det. Desto flere som bruker dette, desto mer verdifullt blir det." - }, - "attribution": { - "mapContributionsBy": "Den dataen som er synlig nÃĨ har redigeringer gjort av {contributors}", - "attributionContent": "

All data er fra OpenStreetMap, fritt gjenbrukbart med Open DataBase-lisens.

", - "codeContributionsBy": "MapComplete har blitt bygd av {contributors} og {hiddenCount} bidragsytere til", - "mapContributionsByAndHidden": "Data som vises nÃĨ har redigeringer gjort av {contributors} og {hiddenCount} andre bidragsytere", - "iconAttribution": { - "title": "Brukte ikoner" - }, - "themeBy": "Tema vedlikeholdt av {author}", - "attributionTitle": "Tilskrivelsesmerknad" - }, - "backgroundMap": "Bakgrunnskart", - "loginOnlyNeededToEdit": "hvis du ønsker ÃĨ redigere kartet", - "readYourMessages": "Les alle OpenStreetMap-meldingene dine før du legger til et nytt punkt.", - "noTagsSelected": "Ingen etiketter valgt", - "customThemeIntro": "

Egendefinerte tema

Dette er tidligere besøkte brukergenererte tema.", - "layerSelection": { - "zoomInToSeeThisLayer": "Forstørr kartet hvis du vil se dette kartet", - "title": "Velg lag" - }, - "download": { - "downloadCSV": "Last ned synlig data som CSV", - "downloadAsPdfHelper": "Ideelt for utskrift av nÃĨvÃĻrende kart", - "noDataLoaded": "Ingen data innlastet enda. Nedlasting vil vÃĻre tilgjengelig snart.", - "downloadAsPdf": "Last ned PDF av nÃĨvÃĻrende kart", - "downloadCSVHelper": "Kompatibelt med LibreOffice Calc, Excel, â€Ļ", - "title": "Last ned synlig data", - "downloadGeojson": "Last ned synlig data som GeoJSON", - "licenseInfo": "

Opphavsrettsmerknad

Tilbudt data er tilgjengelig med ODbL-lisens. Gjenbruk er gratis for alle formÃĨl, men
  • tilskrivelsenŠ OpenStreetMap-bidragsytere kreves
  • Enhver endring mÃĨ publiseres under samme lisens
Les hele opphavsrettsmerknaden for detaljer.", - "exporting": "Eksporterer â€Ļ", - "includeMetaData": "Inkluder metadata (siste bidragsytere, utregnede verdier, â€Ļ)", - "downloadGeoJsonHelper": "Kompatibelt med QGIS, ArcGIS, ESRI, â€Ļ" - }, - "weekdays": { - "friday": "Fredag", - "saturday": "Lørdag", - "sunday": "Søndag", - "wednesday": "Onsdag", - "abbreviations": { - "thursday": "Tor", - "sunday": "Søn", - "monday": "Man", - "wednesday": "Ons", - "tuesday": "Tir", - "saturday": "Lør", - "friday": "Fre" - }, - "thursday": "Torsdag", - "monday": "Mandag", - "tuesday": "Tirsdag" - }, - "opening_hours": { - "openTill": "til", - "closed_until": "Stengt til {date}", - "open_24_7": "DøgnÃĨpent", - "closed_permanently": "Stengt pÃĨ ubestemt tid", - "ph_open_as_usual": "ÃĨpen som vanlig", - "loadingCountry": "Bestemmer land â€Ļ", - "error_loading": "Feil: Kunne ikke visualisere disse ÃĨpningstidene.", - "open_during_ph": "PÃĨ offentlige helligdager og ferier er dette stedet", - "not_all_rules_parsed": "Åpningstidene for dette stedet er kompliserte. Følgende regler ble sett bort fra i inndataelementet:", - "ph_not_known": " ", - "ph_closed": "stengt", - "opensAt": "fra", - "ph_open": "ÃĨpen" - }, - "histogram": { - "error_loading": "Kunne ikke laste inn histogrammet" - }, - "loading": "Laster inn â€Ļ", - "openTheMap": "Åpne kartet", - "testing": "Testing. ingen endringer vil bli lagret.", - "wikipedia": { - "wikipediaboxTitle": "Wikipedia", - "loading": "Laster inn Wikipedia â€Ļ", - "doSearch": "Søk ovenfor for ÃĨ se resultater", - "noResults": "Fant ikke noe for {search}", - "noWikipediaPage": "Dette Wikipedia-elementet har ingen tilknyttet Wikipedia-side enda.", - "searchWikidata": "Søk pÃĨ Wikipedia", - "createNewWikidata": "Opprett et nytt Wikipedia-element", - "failed": "Innlasting av Wikipedia-artikkel mislyktes" - }, - "returnToTheMap": "GÃĨ tilbake til kartet", - "skippedQuestions": "Noen spørsmÃĨl ble hoppet over", - "oneSkippedQuestion": "Et spørsmÃĨl ble hoppet over", - "number": "tall", - "pickLanguage": "Velg sprÃĨk: ", - "goToInbox": "Åpne innboks", - "getStartedNewAccount": " eller opprett en ny konto", - "getStartedLogin": "Logg inn med OpenStreetMap for ÃĨ begynne", - "fewChangesBefore": "Besvar et par spørsmÃĨl for eksisterende punkter før du legger til et nytt." + "general": { + "skip": "Hopp over dette spørsmÃĨlet", + "cancel": "Avbryt", + "save": "Lagre", + "search": { + "searching": "Søker â€Ļ", + "search": "Søk etter et sted", + "nothing": "Resultatløst â€Ļ", + "error": "Noe gikk galt ." }, - "index": { - "pickTheme": "Begynn ved ÃĨ velge et av temaene nedenfor.", - "title": "Velkommen til MapComplete", - "intro": "MapComplete er en OpenStreetMap-viser og redigerer, som viser deg info om funksjoner for et gitt tema og tillater oppdatering av det.", - "featuredThemeTitle": "Framhevet denne uken" + "welcomeBack": "Du er innlogget. Velkommen tilbake.", + "pdf": { + "versionInfo": "v{version}. Generert {date}", + "attr": "Kartdata Š OpenStreetMap-bidragsytere, gjenbrukbart med ODbL-lisens", + "generatedWith": "Generert av MapComplete.osm.be", + "attrBackground": "Bakgrunnslag: {background}" }, - "centerMessage": { - "ready": "Ferdig", - "zoomIn": "Forstørr for ÃĨ vise eller redigere data", - "loadingData": "Laster inn data â€Ļ", - "retrying": "Kunne ikke laste inn data. Prøver igjen om {count} sekunder â€Ļ" + "loginToStart": "Logg inn for ÃĨ besvare dette spørsmÃĨlet", + "osmLinkTooltip": "Vis dette objektet pÃĨ OpenStreetMap for historikk og flere redigeringsvalg", + "add": { + "presetInfo": "Det nye interessepunktet vil fÃĨ {tags}", + "zoomInFurther": "Forstørr mer for ÃĨ legge til et punkt.", + "title": "Legg til et nytt punkt?", + "intro": "Du klikket et sted der ingen data er kjent enda.
", + "addNewMapLabel": "Legg til nytt element", + "confirmIntro": "

Legg til {title} her?

Punktet du oppretter her vil vÃĻre synlig for alle. Kun legg til ting pÃĨ kartet hvis de virkelig finnes. Mange programmer bruker denne dataen.", + "layerNotEnabled": "Laget {layer} er ikke pÃĨslÃĨtt. Skru pÃĨ dette laget for ÃĨ legge til et punkt.", + "confirmButton": "Legg til en {category} her.
Din endring er synlig for alle
", + "openLayerControl": "Åpne lagkontrollboksen", + "hasBeenImported": "Dette punktet har allerede blitt importert", + "stillLoading": "Dataen lastes fremdeles inn. Vent litt før du legger til et nytt punkt.", + "warnVisibleForEveryone": "Din endring vil vÃĻre synlig for alle", + "zoomInMore": "Forstørr mer for ÃĨ importere denne funksjonen", + "disableFilters": "Skru av alle filtre", + "disableFiltersExplanation": "Det kan hende noen funksjoner er skjult av et filter", + "addNew": "Legg til en ny {category} her", + "pleaseLogin": "Logg inn for ÃĨ legge til et nytt punkt" }, - "image": { - "isDeleted": "Slettet", - "doDelete": "Fjern bilde", - "dontDelete": "Avbryt", - "uploadingMultiple": "Laster opp {count} bilder â€Ļ", - "uploadingPicture": "Laster opp bildet ditt â€Ļ", - "addPicture": "Legg til bilde", - "pleaseLogin": "Logg inn for ÃĨ legge til et bilde", - "ccbs": "med CC-BY-SA-lisens", - "ccb": "med CC-BY-lisens", - "willBePublished": "Ditt bilde vil bli publisert: ", - "uploadFailed": "Kunne ikke laste opp bildet ditt. Er du tilkoblet Internett og tillater tredjeparts-API-er? Brave-nettleseren eller uMatrix-programtillegget kan blokkere dem.", - "uploadDone": "Bildet ditt ble lagt til. Takk for at du hjelper til.", - "uploadMultipleDone": "{count} bilder har blitt lagt til. Takk for at du hjelper til.", - "toBig": "Bildet ditt pÃĨ {actual_size} er for stort. Det kan maksimalt vÃĻre {max_size}." + "noNameCategory": "{category} uten navn", + "morescreen": { + "requestATheme": "Hvis du ønsker et brukerdefinert tema kan du forespørre det i feilsporeren", + "intro": "

Flere temakart?

Liker du ÃĨ samle inn geodata?
Det er flere tilgjengelige temaer.", + "createYourOwnTheme": "Opprett ditt eget MapComplete-tema fra grunnen av", + "hiddenExplanation": "Disse temaene er kun tilgjengelige hvis du kjenner lenken. Du har oppdaget {hidden_discovered} av {total_hidden} hidden tema.", + "previouslyHiddenTitle": "Tidligere besøkte skjulte tema", + "streetcomplete": "Et annet lignende program er StreetComplete." }, - "delete": { - "explanations": { - "hardDelete": "Dette punktet vil bli slettet i OpenStreetMap. Det kan gjenopprettes av en dreven bidragsyter.", - "softDelete": "Denne funksjonen vil bli oppdatert og skjult fra programmet. {reason}", - "selectReason": "Velg hvorfor denne funksjonen skal slettes" - }, - "delete": "Slett", - "isDeleted": "Denne funksjonen har blitt slettet", - "loginToDelete": "Du mÃĨ vÃĻre innlogget for ÃĨ slette et punkt", - "cancel": "Avbryt", - "cannotBeDeleted": "Denne funksjonen kan ikke slettes", - "notEnoughExperience": "Dette punktet ble opprettet av noen andre.", - "loading": "Inspiserer egenskaper for ÃĨ sjekke om denne funksjonen kan slettes.", - "whyDelete": "Hvorfor bør dette punktet slettes?", - "reasons": { - "duplicate": "Dette punktet er et duplikat av en annen funksjon", - "disused": "Denne funksjonen er ute av bruk eller fjernet", - "test": "Dette var et testpunkt, funksjonen var aldri operativ", - "notFound": "Fant ikke funksjonen" - }, - "safeDelete": "Dette punktet kan trygt slettes.", - "onlyEditedByLoggedInUser": "Dette punktet har kun blitt redigert av deg. Du kan trygt slette det.", - "useSomethingElse": "Bruk en annen OpenStreetMap-redigerer til ÃĨ slette det istedenfor.", - "isntAPoint": "Kun punkter kan slettes, valgt funksjon er en vei, et omrÃĨde, eller en relasjon.", - "partOfOthers": "Dette punktet er en del av en vei eller relasjon, og kan derfor ikke slettes direkte.", - "readMessages": "Du har uleste meldinger. Les dette før sletting av et punkt, fordi noen kan ha tilbakemeldinger ÃĨ komme med." + "questions": { + "emailIs": "E-postadressen til {category} er {email}", + "websiteIs": "Nettside: {website}", + "emailOf": "Hva er e-postadressen til {category}?", + "phoneNumberOf": "Hva er telefonnummeret til {category}?", + "websiteOf": "Hva er nettsiden til {category}?", + "phoneNumberIs": "Telefonnummeret til denne {category} er {phone}" }, - "reviews": { - "posting_as": "Anmelder som", - "saving_review": "Lagrer â€Ļ", - "title": "{count} vurderinger", - "no_rating": "Ingen vurdering gitt", - "plz_login": "Logg inn for ÃĨ legge igjen en vurdering", - "write_a_comment": "Legg igjen en vurdering â€Ļ", - "title_singular": "Én vurdering", - "name_required": "Et navn kreves for ÃĨ vise og opprette vurderinger", - "affiliated_reviewer_warning": "(Tilknyttet vurdering)", - "saved": "Vurdering lagret. Takk for at du deler din mening.", - "no_reviews_yet": "Ingen vurderinger enda. VÃĻr først til ÃĨ skrive en og hjelp ÃĨpen data og bevegelsen.", - "tos": "Hvis du lager en vurdering, samtykker du til tjenestevilkÃĨrene til Mangrove.reviews", - "attribution": "Vurderinger er muliggjort av Mangrove Reviews og er tilgjengelige som CC-BY 4.0.", - "i_am_affiliated": "Jeg har en tilknytning til dette objektet
Sjekk om du er eier, skaper, ansatt, â€Ļ" + "sharescreen": { + "thanksForSharing": "Takk for at du bidrar.", + "copiedToClipboard": "Lenke kopiert til utklippstavle", + "intro": "

Del dette kartet

Del dette kartet ved ÃĨ kopiere lenken nedenfor og sende den til venner og familie:", + "fsUserbadge": "Skru pÃĨ innloggingsknappen", + "fsSearch": "Skru pÃĨ søkefeltet", + "fsWelcomeMessage": "Vis velkomst-oppsprettsmeldinger og tilknyttede faner", + "editThisTheme": "Rediger dette temaet", + "fsGeolocation": "Skru pÃĨ ÂĢGeolokaliser megÂģ-knappen (kun for mobil)", + "fsIncludeCurrentBackgroundMap": "Inkluder nÃĨvÃĻrende bakgrunnsvalg {name}", + "fsLayerControlToggle": "Start med lagkontrollen utvidet", + "addToHomeScreen": "

Legg til pÃĨ hjemmeskjermen din

Du kan enkelt legge til denne nettsiden pÃĨ din smarttelefon-hjemmeskjerm for ÃĨ fÃĨ det hele integrert. Klikk pÃĨ ÂĢLegg til pÃĨ hjemmeskjermÂģ-knappen i nettadressefeltet for ÃĨ gjøre dette.", + "fsLayers": "Skru pÃĨ lagkontrollen", + "fsIncludeCurrentLayers": "Inkluder nÃĨvÃĻrende lagvalg", + "fsIncludeCurrentLocation": "Inkluder nÃĨvÃĻrende posisjon", + "embedIntro": "

Bygg inn pÃĨ nettsiden din

Legg til dette kartet pÃĨ nettsiden din.
Du oppfordres til ÃĨ gjøre dette, og trenger ikke ÃĨ spørre om tillatelse.
Det er fritt, og vil alltid vÃĻre det. Desto flere som bruker dette, desto mer verdifullt blir det." }, - "move": { - "cancel": "Avbryt flytting", - "pointIsMoved": "Punktet har blitt flyttet", - "selectReason": "Hvorfor flytter du dette objektet?", - "loginToMove": "Du mÃĨ vÃĻre innlogget for ÃĨ flytte et punkt", - "inviteToMoveAgain": "Flytt dette punktet igjen", - "moveTitle": "Flytt dette punktet", - "whyMove": "Hvorfor vil du flytte dette punktet?", - "confirmMove": "Flytt hit", - "reasons": { - "reasonInaccurate": "Posisjonen til dette objektet er unøyaktig og bør flyttes noen meter", - "reasonRelocation": "Objektet har blitt flyttet til et helt annet sted" - }, - "inviteToMove": { - "reasonInaccurate": "Forbedre nøyaktigheten for dette punktet", - "generic": "Flytt dette punktet", - "reasonRelocation": "Flytt dette objektet til et annet sted fordi det har blitt flyttet" - }, - "isRelation": "Denne funksjonen er en relasjon og kan ikke flyttes", - "cannotBeMoved": "Denne funksjonen kan ikke flyttes.", - "isWay": "Denne funksjonen er en vei. Bruk en annen OpenStreetMap-redigerer for ÃĨ flytte den.", - "partOfRelation": "Denne funksjonen er en del av en relasjon. Bruk en annen redigerer for ÃĨ flytte den.", - "partOfAWay": "Denne funksjonen er en del av en annen vei. Bruk en annen redigerer for ÃĨ flytte den.", - "zoomInFurther": "Forstørr mer for ÃĨ bekrefte denne flyttingen" + "attribution": { + "mapContributionsBy": "Den dataen som er synlig nÃĨ har redigeringer gjort av {contributors}", + "attributionContent": "

All data er fra OpenStreetMap, fritt gjenbrukbart med Open DataBase-lisens.

", + "codeContributionsBy": "MapComplete har blitt bygd av {contributors} og {hiddenCount} bidragsytere til", + "mapContributionsByAndHidden": "Data som vises nÃĨ har redigeringer gjort av {contributors} og {hiddenCount} andre bidragsytere", + "iconAttribution": { + "title": "Brukte ikoner" + }, + "themeBy": "Tema vedlikeholdt av {author}", + "attributionTitle": "Tilskrivelsesmerknad" }, - "favourite": { - "reload": "Last inn dataen igjen" + "backgroundMap": "Bakgrunnskart", + "loginOnlyNeededToEdit": "hvis du ønsker ÃĨ redigere kartet", + "readYourMessages": "Les alle OpenStreetMap-meldingene dine før du legger til et nytt punkt.", + "noTagsSelected": "Ingen etiketter valgt", + "customThemeIntro": "

Egendefinerte tema

Dette er tidligere besøkte brukergenererte tema.", + "layerSelection": { + "zoomInToSeeThisLayer": "Forstørr kartet hvis du vil se dette kartet", + "title": "Velg lag" }, - "split": { - "cancel": "Avbryt", - "loginToSplit": "Du mÃĨ vÃĻre innlogget for ÃĨ dele en vei", - "split": "Del", - "splitTitle": "Velg hvor pÃĨ kartet veien skal deles", - "hasBeenSplit": "Denne veien har blitt delt", - "inviteToSplit": "Inndel denne veien i mindre segmenter. Dette lar deg gi den forskjellige egenskaper for forskjellige strekk." + "download": { + "downloadCSV": "Last ned synlig data som CSV", + "downloadAsPdfHelper": "Ideelt for utskrift av nÃĨvÃĻrende kart", + "noDataLoaded": "Ingen data innlastet enda. Nedlasting vil vÃĻre tilgjengelig snart.", + "downloadAsPdf": "Last ned PDF av nÃĨvÃĻrende kart", + "downloadCSVHelper": "Kompatibelt med LibreOffice Calc, Excel, â€Ļ", + "title": "Last ned synlig data", + "downloadGeojson": "Last ned synlig data som GeoJSON", + "licenseInfo": "

Opphavsrettsmerknad

Tilbudt data er tilgjengelig med ODbL-lisens. Gjenbruk er gratis for alle formÃĨl, men
  • tilskrivelsenŠ OpenStreetMap-bidragsytere kreves
  • Enhver endring mÃĨ publiseres under samme lisens
Les hele opphavsrettsmerknaden for detaljer.", + "exporting": "Eksporterer â€Ļ", + "includeMetaData": "Inkluder metadata (siste bidragsytere, utregnede verdier, â€Ļ)", + "downloadGeoJsonHelper": "Kompatibelt med QGIS, ArcGIS, ESRI, â€Ļ" }, - "multi_apply": { - "autoApply": "Ved endring av attributteene {attr_names}, legges de automatisk til for {count} andre objekter ogsÃĨ" - } + "weekdays": { + "friday": "Fredag", + "saturday": "Lørdag", + "sunday": "Søndag", + "wednesday": "Onsdag", + "abbreviations": { + "thursday": "Tor", + "sunday": "Søn", + "monday": "Man", + "wednesday": "Ons", + "tuesday": "Tir", + "saturday": "Lør", + "friday": "Fre" + }, + "thursday": "Torsdag", + "monday": "Mandag", + "tuesday": "Tirsdag" + }, + "opening_hours": { + "openTill": "til", + "closed_until": "Stengt til {date}", + "open_24_7": "DøgnÃĨpent", + "closed_permanently": "Stengt pÃĨ ubestemt tid", + "ph_open_as_usual": "ÃĨpen som vanlig", + "loadingCountry": "Bestemmer land â€Ļ", + "error_loading": "Feil: Kunne ikke visualisere disse ÃĨpningstidene.", + "open_during_ph": "PÃĨ offentlige helligdager og ferier er dette stedet", + "not_all_rules_parsed": "Åpningstidene for dette stedet er kompliserte. Følgende regler ble sett bort fra i inndataelementet:", + "ph_not_known": " ", + "ph_closed": "stengt", + "opensAt": "fra", + "ph_open": "ÃĨpen" + }, + "histogram": { + "error_loading": "Kunne ikke laste inn histogrammet" + }, + "loading": "Laster inn â€Ļ", + "openTheMap": "Åpne kartet", + "testing": "Testing. ingen endringer vil bli lagret.", + "wikipedia": { + "wikipediaboxTitle": "Wikipedia", + "loading": "Laster inn Wikipedia â€Ļ", + "doSearch": "Søk ovenfor for ÃĨ se resultater", + "noResults": "Fant ikke noe for {search}", + "noWikipediaPage": "Dette Wikipedia-elementet har ingen tilknyttet Wikipedia-side enda.", + "searchWikidata": "Søk pÃĨ Wikipedia", + "createNewWikidata": "Opprett et nytt Wikipedia-element", + "failed": "Innlasting av Wikipedia-artikkel mislyktes" + }, + "returnToTheMap": "GÃĨ tilbake til kartet", + "skippedQuestions": "Noen spørsmÃĨl ble hoppet over", + "oneSkippedQuestion": "Et spørsmÃĨl ble hoppet over", + "number": "tall", + "pickLanguage": "Velg sprÃĨk: ", + "goToInbox": "Åpne innboks", + "getStartedNewAccount": " eller opprett en ny konto", + "getStartedLogin": "Logg inn med OpenStreetMap for ÃĨ begynne", + "fewChangesBefore": "Besvar et par spørsmÃĨl for eksisterende punkter før du legger til et nytt." + }, + "index": { + "pickTheme": "Begynn ved ÃĨ velge et av temaene nedenfor.", + "title": "Velkommen til MapComplete", + "intro": "MapComplete er en OpenStreetMap-viser og redigerer, som viser deg info om funksjoner for et gitt tema og tillater oppdatering av det.", + "featuredThemeTitle": "Framhevet denne uken" + }, + "centerMessage": { + "ready": "Ferdig", + "zoomIn": "Forstørr for ÃĨ vise eller redigere data", + "loadingData": "Laster inn data â€Ļ", + "retrying": "Kunne ikke laste inn data. Prøver igjen om {count} sekunder â€Ļ" + }, + "image": { + "isDeleted": "Slettet", + "doDelete": "Fjern bilde", + "dontDelete": "Avbryt", + "uploadingMultiple": "Laster opp {count} bilder â€Ļ", + "uploadingPicture": "Laster opp bildet ditt â€Ļ", + "addPicture": "Legg til bilde", + "pleaseLogin": "Logg inn for ÃĨ legge til et bilde", + "ccbs": "med CC-BY-SA-lisens", + "ccb": "med CC-BY-lisens", + "willBePublished": "Ditt bilde vil bli publisert: ", + "uploadFailed": "Kunne ikke laste opp bildet ditt. Er du tilkoblet Internett og tillater tredjeparts-API-er? Brave-nettleseren eller uMatrix-programtillegget kan blokkere dem.", + "uploadDone": "Bildet ditt ble lagt til. Takk for at du hjelper til.", + "uploadMultipleDone": "{count} bilder har blitt lagt til. Takk for at du hjelper til.", + "toBig": "Bildet ditt pÃĨ {actual_size} er for stort. Det kan maksimalt vÃĻre {max_size}." + }, + "delete": { + "explanations": { + "hardDelete": "Dette punktet vil bli slettet i OpenStreetMap. Det kan gjenopprettes av en dreven bidragsyter.", + "softDelete": "Denne funksjonen vil bli oppdatert og skjult fra programmet. {reason}", + "selectReason": "Velg hvorfor denne funksjonen skal slettes" + }, + "delete": "Slett", + "isDeleted": "Denne funksjonen har blitt slettet", + "loginToDelete": "Du mÃĨ vÃĻre innlogget for ÃĨ slette et punkt", + "cancel": "Avbryt", + "cannotBeDeleted": "Denne funksjonen kan ikke slettes", + "notEnoughExperience": "Dette punktet ble opprettet av noen andre.", + "loading": "Inspiserer egenskaper for ÃĨ sjekke om denne funksjonen kan slettes.", + "whyDelete": "Hvorfor bør dette punktet slettes?", + "reasons": { + "duplicate": "Dette punktet er et duplikat av en annen funksjon", + "disused": "Denne funksjonen er ute av bruk eller fjernet", + "test": "Dette var et testpunkt, funksjonen var aldri operativ", + "notFound": "Fant ikke funksjonen" + }, + "safeDelete": "Dette punktet kan trygt slettes.", + "onlyEditedByLoggedInUser": "Dette punktet har kun blitt redigert av deg. Du kan trygt slette det.", + "useSomethingElse": "Bruk en annen OpenStreetMap-redigerer til ÃĨ slette det istedenfor.", + "isntAPoint": "Kun punkter kan slettes, valgt funksjon er en vei, et omrÃĨde, eller en relasjon.", + "partOfOthers": "Dette punktet er en del av en vei eller relasjon, og kan derfor ikke slettes direkte.", + "readMessages": "Du har uleste meldinger. Les dette før sletting av et punkt, fordi noen kan ha tilbakemeldinger ÃĨ komme med." + }, + "reviews": { + "posting_as": "Anmelder som", + "saving_review": "Lagrer â€Ļ", + "title": "{count} vurderinger", + "no_rating": "Ingen vurdering gitt", + "plz_login": "Logg inn for ÃĨ legge igjen en vurdering", + "write_a_comment": "Legg igjen en vurdering â€Ļ", + "title_singular": "Én vurdering", + "name_required": "Et navn kreves for ÃĨ vise og opprette vurderinger", + "affiliated_reviewer_warning": "(Tilknyttet vurdering)", + "saved": "Vurdering lagret. Takk for at du deler din mening.", + "no_reviews_yet": "Ingen vurderinger enda. VÃĻr først til ÃĨ skrive en og hjelp ÃĨpen data og bevegelsen.", + "tos": "Hvis du lager en vurdering, samtykker du til tjenestevilkÃĨrene til Mangrove.reviews", + "attribution": "Vurderinger er muliggjort av Mangrove Reviews og er tilgjengelige som CC-BY 4.0.", + "i_am_affiliated": "Jeg har en tilknytning til dette objektet
Sjekk om du er eier, skaper, ansatt, â€Ļ" + }, + "move": { + "cancel": "Avbryt flytting", + "pointIsMoved": "Punktet har blitt flyttet", + "selectReason": "Hvorfor flytter du dette objektet?", + "loginToMove": "Du mÃĨ vÃĻre innlogget for ÃĨ flytte et punkt", + "inviteToMoveAgain": "Flytt dette punktet igjen", + "moveTitle": "Flytt dette punktet", + "whyMove": "Hvorfor vil du flytte dette punktet?", + "confirmMove": "Flytt hit", + "reasons": { + "reasonInaccurate": "Posisjonen til dette objektet er unøyaktig og bør flyttes noen meter", + "reasonRelocation": "Objektet har blitt flyttet til et helt annet sted" + }, + "inviteToMove": { + "reasonInaccurate": "Forbedre nøyaktigheten for dette punktet", + "generic": "Flytt dette punktet", + "reasonRelocation": "Flytt dette objektet til et annet sted fordi det har blitt flyttet" + }, + "isRelation": "Denne funksjonen er en relasjon og kan ikke flyttes", + "cannotBeMoved": "Denne funksjonen kan ikke flyttes.", + "isWay": "Denne funksjonen er en vei. Bruk en annen OpenStreetMap-redigerer for ÃĨ flytte den.", + "partOfRelation": "Denne funksjonen er en del av en relasjon. Bruk en annen redigerer for ÃĨ flytte den.", + "partOfAWay": "Denne funksjonen er en del av en annen vei. Bruk en annen redigerer for ÃĨ flytte den.", + "zoomInFurther": "Forstørr mer for ÃĨ bekrefte denne flyttingen" + }, + "favourite": { + "reload": "Last inn dataen igjen" + }, + "split": { + "cancel": "Avbryt", + "loginToSplit": "Du mÃĨ vÃĻre innlogget for ÃĨ dele en vei", + "split": "Del", + "splitTitle": "Velg hvor pÃĨ kartet veien skal deles", + "hasBeenSplit": "Denne veien har blitt delt", + "inviteToSplit": "Inndel denne veien i mindre segmenter. Dette lar deg gi den forskjellige egenskaper for forskjellige strekk." + }, + "multi_apply": { + "autoApply": "Ved endring av attributteene {attr_names}, legges de automatisk til for {count} andre objekter ogsÃĨ" + } } diff --git a/langs/nl.json b/langs/nl.json index 8aaad1ad0..8cf786e46 100644 --- a/langs/nl.json +++ b/langs/nl.json @@ -1,316 +1,316 @@ { - "image": { - "addPicture": "Voeg foto toe", - "uploadingPicture": "Bezig met een foto te uploadenâ€Ļ", - "uploadingMultiple": "Bezig met {count} foto's te uploadenâ€Ļ", - "pleaseLogin": "Gelieve je aan te melden om een foto toe te voegen", - "willBePublished": "Jouw foto wordt gepubliceerd: ", - "cco": "in het publiek domein", - "ccbs": "onder de CC-BY-SA-licentie", - "ccb": "onder de CC-BY-licentie", - "uploadFailed": "Afbeelding uploaden mislukt. Heb je internet? Gebruik je Brave of UMatrix? Dan moet je derde partijen toelaten.", - "respectPrivacy": "Fotografeer geen mensen of nummerplaten. Voeg geen Google Maps, Google Streetview of foto's met auteursrechten toe.", - "uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!", - "dontDelete": "Annuleren", - "doDelete": "Verwijder afbeelding", - "isDeleted": "Verwijderd", - "uploadMultipleDone": "{count} afbeeldingen zijn toegevoegd. Bedankt voor je bijdrage!", - "toBig": "Je afbeelding is te groot, namelijk {actual_size}. Gelieve afbeeldingen van maximaal {max_size} te gebruiken" + "image": { + "addPicture": "Voeg foto toe", + "uploadingPicture": "Bezig met een foto te uploadenâ€Ļ", + "uploadingMultiple": "Bezig met {count} foto's te uploadenâ€Ļ", + "pleaseLogin": "Gelieve je aan te melden om een foto toe te voegen", + "willBePublished": "Jouw foto wordt gepubliceerd: ", + "cco": "in het publiek domein", + "ccbs": "onder de CC-BY-SA-licentie", + "ccb": "onder de CC-BY-licentie", + "uploadFailed": "Afbeelding uploaden mislukt. Heb je internet? Gebruik je Brave of UMatrix? Dan moet je derde partijen toelaten.", + "respectPrivacy": "Fotografeer geen mensen of nummerplaten. Voeg geen Google Maps, Google Streetview of foto's met auteursrechten toe.", + "uploadDone": "Je afbeelding is toegevoegd. Bedankt om te helpen!", + "dontDelete": "Annuleren", + "doDelete": "Verwijder afbeelding", + "isDeleted": "Verwijderd", + "uploadMultipleDone": "{count} afbeeldingen zijn toegevoegd. Bedankt voor je bijdrage!", + "toBig": "Je afbeelding is te groot, namelijk {actual_size}. Gelieve afbeeldingen van maximaal {max_size} te gebruiken" + }, + "centerMessage": { + "loadingData": "Data wordt geladen...", + "zoomIn": "Zoom in om de data te zien en te bewerken", + "ready": "Klaar!", + "retrying": "Data inladen mislukt - wordt opnieuw geprobeerd over {count} seconden" + }, + "index": { + "#": "These texts are shown above the theme buttons when no theme is loaded", + "title": "Welkom bij MapComplete", + "intro": "MapComplete is een OpenStreetMap-applicatie waar informatie over een specifiek thema bekeken en aangepast kan worden.", + "pickTheme": "Kies hieronder een thema om te beginnen.", + "featuredThemeTitle": "Thema van de week" + }, + "general": { + "loginWithOpenStreetMap": "Aanmelden met OpenStreetMap", + "welcomeBack": "Je bent aangemeld. Welkom terug!", + "loginToStart": "Meld je aan om deze vraag te beantwoorden", + "search": { + "search": "Zoek naar een locatie", + "searching": "Aan het zoeken...", + "nothing": "Niet gevonden...", + "error": "Niet gelukt..." + }, + "add": { + "addNewMapLabel": "Voeg item toe", + "addNew": "Voeg hier een {category} toe", + "title": "Nieuw punt toevoegen?", + "intro": "Je klikte ergens waar er nog geen data is. Kies hieronder welk punt je wilt toevoegen
", + "pleaseLogin": "Gelieve je aan te melden om een punt to te voegen", + "zoomInFurther": "Gelieve verder in te zoomen om een punt toe te voegen.", + "stillLoading": "De data worden nog geladen. Nog even geduld en dan kan je een punt toevoegen.", + "confirmIntro": "

Voeg hier een {title} toe?

Het punt dat je hier toevoegt, is zichtbaar voor iedereen. Veel applicaties gebruiken deze data, voeg dus enkel punten toe die echt bestaan.", + "confirmButton": "Voeg hier een {category} toe
Je toevoeging is voor iedereen zichtbaar
", + "openLayerControl": "Open de laag-instellingen", + "layerNotEnabled": "De laag {layer} is gedeactiveerd. Activeer deze om een punt toe te voegen", + "presetInfo": "Het nieuwe punt krijgt de attributen {tags}", + "disableFiltersExplanation": "Interessepunten kunnen verborgen zijn door een filter", + "disableFilters": "Zet alle filters af", + "hasBeenImported": "Dit punt is reeds geimporteerd", + "warnVisibleForEveryone": "Je toevoeging is voor iedereen zichtbaar", + "zoomInMore": "Zoom meer in om dit punt te importeren" + }, + "pickLanguage": "Kies je taal: ", + "about": "Bewerk en voeg data toe aan OpenStreetMap over een specifiek onderwerp op een gemakkelijke manier", + "nameInlineQuestion": "De naam van dit {category} is $$$", + "noNameCategory": "{category} zonder naam", + "questions": { + "phoneNumberOf": "Wat is het telefoonnummer van {category}?", + "phoneNumberIs": "Het telefoonnummer van {category} is {phone}", + "websiteOf": "Wat is de website van {category}?", + "websiteIs": "Website: {website}", + "emailOf": "Wat is het email-adres van {category}?", + "emailIs": "Het email-adres van {category} is {email}" + }, + "openStreetMapIntro": "

Een open kaart

Zou het niet fantastisch zijn als er een open kaart zou zijn die door iedereen aangepast Ên gebruikt kan worden? Een kaart waar iedereen zijn interesses aan zou kunnen toevoegen? Dan zouden er geen duizend-en-ÊÊn verschillende kleine kaartjes, websites, ... meer nodig zijn

OpenStreetMap is deze open kaart. Je mag de kaartdata gratis gebruiken (mits bronvermelding en herpublicatie van aanpassingen). Daarenboven mag je de kaart ook gratis aanpassen als je een account maakt. Ook deze website is gebaseerd op OpenStreetMap. Als je hier een vraag beantwoord, gaat het antwoord daar ook naartoe

Tenslotte zijn er reeds vele gebruikers van OpenStreetMap. Denk maar Organic Maps, OsmAnd, verschillende gespecialiseerde routeplanners, de achtergrondkaarten op Facebook, Instagram,...
Zelfs Apple Maps en Bing-Maps gebruiken OpenStreetMap in hun kaarten!

Kortom, als je hier een punt toevoegd of een vraag beantwoord, zal dat na een tijdje ook in al diÊ applicaties te zien zijn.

", + "attribution": { + "attributionTitle": "Met dank aan", + "attributionContent": "

Alle data is voorzien door OpenStreetMap, gratis en vrij te hergebruiken onder de Open DataBase Licentie.

", + "themeBy": "Thema gemaakt door {author}", + "iconAttribution": { + "title": "Iconen en afbeeldingen" + }, + "mapContributionsByAndHidden": "De zichtbare data heeft bijdragen van {contributors} en {hiddenCount} andere bijdragers", + "mapContributionsBy": "De huidige data is bijgedragen door {contributors}", + "codeContributionsBy": "MapComplete is gebouwd door {contributors} en {hiddenCount} andere bijdragers" + }, + "sharescreen": { + "intro": "

Deel deze kaart

Kopieer onderstaande link om deze kaart naar vrienden en familie door te sturen:", + "addToHomeScreen": "

Voeg toe aan je thuis-scherm

Je kan deze website aan je thuisscherm van je smartphone toevoegen voor een native feel", + "embedIntro": "

Plaats dit op je website

Voeg dit kaartje toe op je eigen website.
We moedigen dit zelfs aan - je hoeft geen toestemming te vragen.
Het is gratis en zal dat altijd blijven. Hoe meer het gebruikt wordt, hoe waardevoller", + "copiedToClipboard": "Link gekopieerd naar klembord", + "thanksForSharing": "Bedankt om te delen!", + "editThisTheme": "Pas dit thema aan", + "editThemeDescription": "Pas vragen aan of voeg vragen toe aan dit kaartthema", + "fsUserbadge": "Activeer de login-knop", + "fsSearch": "Activeer de zoekbalk", + "fsWelcomeMessage": "Toon het welkomstbericht en de bijhorende tabbladen", + "fsLayers": "Toon de knop voor laagbediening", + "fsLayerControlToggle": "Toon de laagbediening meteen volledig", + "fsAddNew": "Activeer het toevoegen van nieuwe POI", + "fsGeolocation": "Toon het knopje voor geolocalisatie (enkel op mobiel)", + "fsIncludeCurrentBackgroundMap": "Gebruik de huidige achtergrond {name}", + "fsIncludeCurrentLayers": "Toon enkel de huidig getoonde lagen", + "fsIncludeCurrentLocation": "Start op de huidige locatie" }, "centerMessage": { - "loadingData": "Data wordt geladen...", - "zoomIn": "Zoom in om de data te zien en te bewerken", - "ready": "Klaar!", - "retrying": "Data inladen mislukt - wordt opnieuw geprobeerd over {count} seconden" + "loadingData": "Data wordt geladenâ€Ļ", + "zoomIn": "Zoom in om de data te zien en te bewerken", + "ready": "Klaar!", + "retrying": "Data inladen mislukt. Opnieuw proberen over {count} secondenâ€Ļ" }, "index": { - "#": "These texts are shown above the theme buttons when no theme is loaded", - "title": "Welkom bij MapComplete", - "intro": "MapComplete is een OpenStreetMap-applicatie waar informatie over een specifiek thema bekeken en aangepast kan worden.", - "pickTheme": "Kies hieronder een thema om te beginnen.", - "featuredThemeTitle": "Thema van de week" - }, - "general": { - "loginWithOpenStreetMap": "Aanmelden met OpenStreetMap", - "welcomeBack": "Je bent aangemeld. Welkom terug!", - "loginToStart": "Meld je aan om deze vraag te beantwoorden", - "search": { - "search": "Zoek naar een locatie", - "searching": "Aan het zoeken...", - "nothing": "Niet gevonden...", - "error": "Niet gelukt..." - }, - "add": { - "addNewMapLabel": "Voeg item toe", - "addNew": "Voeg hier een {category} toe", - "title": "Nieuw punt toevoegen?", - "intro": "Je klikte ergens waar er nog geen data is. Kies hieronder welk punt je wilt toevoegen
", - "pleaseLogin": "Gelieve je aan te melden om een punt to te voegen", - "zoomInFurther": "Gelieve verder in te zoomen om een punt toe te voegen.", - "stillLoading": "De data worden nog geladen. Nog even geduld en dan kan je een punt toevoegen.", - "confirmIntro": "

Voeg hier een {title} toe?

Het punt dat je hier toevoegt, is zichtbaar voor iedereen. Veel applicaties gebruiken deze data, voeg dus enkel punten toe die echt bestaan.", - "confirmButton": "Voeg hier een {category} toe
Je toevoeging is voor iedereen zichtbaar
", - "openLayerControl": "Open de laag-instellingen", - "layerNotEnabled": "De laag {layer} is gedeactiveerd. Activeer deze om een punt toe te voegen", - "presetInfo": "Het nieuwe punt krijgt de attributen {tags}", - "disableFiltersExplanation": "Interessepunten kunnen verborgen zijn door een filter", - "disableFilters": "Zet alle filters af", - "hasBeenImported": "Dit punt is reeds geimporteerd", - "warnVisibleForEveryone": "Je toevoeging is voor iedereen zichtbaar", - "zoomInMore": "Zoom meer in om dit punt te importeren" - }, - "pickLanguage": "Kies je taal: ", - "about": "Bewerk en voeg data toe aan OpenStreetMap over een specifiek onderwerp op een gemakkelijke manier", - "nameInlineQuestion": "De naam van dit {category} is $$$", - "noNameCategory": "{category} zonder naam", - "questions": { - "phoneNumberOf": "Wat is het telefoonnummer van {category}?", - "phoneNumberIs": "Het telefoonnummer van {category} is {phone}", - "websiteOf": "Wat is de website van {category}?", - "websiteIs": "Website: {website}", - "emailOf": "Wat is het email-adres van {category}?", - "emailIs": "Het email-adres van {category} is {email}" - }, - "openStreetMapIntro": "

Een open kaart

Zou het niet fantastisch zijn als er een open kaart zou zijn die door iedereen aangepast Ên gebruikt kan worden? Een kaart waar iedereen zijn interesses aan zou kunnen toevoegen? Dan zouden er geen duizend-en-ÊÊn verschillende kleine kaartjes, websites, ... meer nodig zijn

OpenStreetMap is deze open kaart. Je mag de kaartdata gratis gebruiken (mits bronvermelding en herpublicatie van aanpassingen). Daarenboven mag je de kaart ook gratis aanpassen als je een account maakt. Ook deze website is gebaseerd op OpenStreetMap. Als je hier een vraag beantwoord, gaat het antwoord daar ook naartoe

Tenslotte zijn er reeds vele gebruikers van OpenStreetMap. Denk maar Organic Maps, OsmAnd, verschillende gespecialiseerde routeplanners, de achtergrondkaarten op Facebook, Instagram,...
Zelfs Apple Maps en Bing-Maps gebruiken OpenStreetMap in hun kaarten!

Kortom, als je hier een punt toevoegd of een vraag beantwoord, zal dat na een tijdje ook in al diÊ applicaties te zien zijn.

", - "attribution": { - "attributionTitle": "Met dank aan", - "attributionContent": "

Alle data is voorzien door OpenStreetMap, gratis en vrij te hergebruiken onder de Open DataBase Licentie.

", - "themeBy": "Thema gemaakt door {author}", - "iconAttribution": { - "title": "Iconen en afbeeldingen" - }, - "mapContributionsByAndHidden": "De zichtbare data heeft bijdragen van {contributors} en {hiddenCount} andere bijdragers", - "mapContributionsBy": "De huidige data is bijgedragen door {contributors}", - "codeContributionsBy": "MapComplete is gebouwd door {contributors} en {hiddenCount} andere bijdragers" - }, - "sharescreen": { - "intro": "

Deel deze kaart

Kopieer onderstaande link om deze kaart naar vrienden en familie door te sturen:", - "addToHomeScreen": "

Voeg toe aan je thuis-scherm

Je kan deze website aan je thuisscherm van je smartphone toevoegen voor een native feel", - "embedIntro": "

Plaats dit op je website

Voeg dit kaartje toe op je eigen website.
We moedigen dit zelfs aan - je hoeft geen toestemming te vragen.
Het is gratis en zal dat altijd blijven. Hoe meer het gebruikt wordt, hoe waardevoller", - "copiedToClipboard": "Link gekopieerd naar klembord", - "thanksForSharing": "Bedankt om te delen!", - "editThisTheme": "Pas dit thema aan", - "editThemeDescription": "Pas vragen aan of voeg vragen toe aan dit kaartthema", - "fsUserbadge": "Activeer de login-knop", - "fsSearch": "Activeer de zoekbalk", - "fsWelcomeMessage": "Toon het welkomstbericht en de bijhorende tabbladen", - "fsLayers": "Toon de knop voor laagbediening", - "fsLayerControlToggle": "Toon de laagbediening meteen volledig", - "fsAddNew": "Activeer het toevoegen van nieuwe POI", - "fsGeolocation": "Toon het knopje voor geolocalisatie (enkel op mobiel)", - "fsIncludeCurrentBackgroundMap": "Gebruik de huidige achtergrond {name}", - "fsIncludeCurrentLayers": "Toon enkel de huidig getoonde lagen", - "fsIncludeCurrentLocation": "Start op de huidige locatie" - }, - "centerMessage": { - "loadingData": "Data wordt geladenâ€Ļ", - "zoomIn": "Zoom in om de data te zien en te bewerken", - "ready": "Klaar!", - "retrying": "Data inladen mislukt. Opnieuw proberen over {count} secondenâ€Ļ" - }, - "index": { - "#": "Deze teksten worden getoond boven de themaknoppen als er geen thema is geladen", - "title": "Welkom bij MapComplete", - "intro": "MapComplete is een OpenStreetMap applicatie waar informatie over een specifiek thema bekeken en aangepast kan worden.", - "pickTheme": "Kies hieronder een thema om te beginnen." - }, - "reviews": { - "title": "{count} beoordelingen", - "title_singular": "EÊn beoordeling", - "name_required": "De naam van dit object moet gekend zijn om een review te kunnen maken", - "no_reviews_yet": "Er zijn nog geen beoordelingen. Wees de eerste om een beoordeling te schrijven en help open data en het bedrijf!", - "write_a_comment": "Schrijf een beoordelingâ€Ļ", - "no_rating": "Geen score bekend", - "posting_as": "Ingelogd als", - "i_am_affiliated": "Ik ben persoonlijk betrokken
Vink aan indien je de oprichter, maker, werknemer, ... of dergelijke bent", - "affiliated_reviewer_warning": "(Review door betrokkene)", - "saving_review": "Opslaanâ€Ļ", - "saved": "Bedankt om je beoordeling te delen!", - "tos": "Als je je review publiceert, ga je akkoord met de de gebruiksvoorwaarden en privacy policy van Mangrove.reviews", - "attribution": "De beoordelingen worden voorzien door Mangrove Reviews en zijn beschikbaar onder deCC-BY 4.0-licentie.", - "plz_login": "Meld je aan om een beoordeling te geven" - }, - "morescreen": { - "intro": "

Meer thematische kaarten

Vind je het leuk om geodata te verzamelen?
Hier vind je meer kaartthemas.", - "requestATheme": "Wil je een eigen kaartthema, vraag dit in de issue tracker.", - "streetcomplete": "Een andere, gelijkaardige Android-applicatie is StreetComplete.", - "createYourOwnTheme": "Maak je eigen MapComplete-kaart", - "previouslyHiddenTitle": "Eerder bezochte verborgen themas", - "hiddenExplanation": "Deze thema's zijn enkel zichtbaar indien je de link kent. Je hebt {hidden_discovered} van {total_hidden} verborgen thema's ontdekt" - }, - "readYourMessages": "Gelieve eerst je berichten op OpenStreetMap te lezen alvorens nieuwe punten toe te voegen.", - "fewChangesBefore": "Gelieve eerst enkele vragen van bestaande punten te beantwoorden vooraleer zelf punten toe te voegen.", - "goToInbox": "Ga naar de berichten", - "getStartedLogin": "Login met OpenStreetMap om te beginnen", - "getStartedNewAccount": " of maak een nieuwe account aan", - "noTagsSelected": "Geen tags geselecteerd", - "customThemeIntro": "

OnofficiÃĢle thema's

De onderstaande thema's heb je eerder bezocht en zijn gemaakt door andere OpenStreetMappers.", - "aboutMapcomplete": "

Over MapComplete

Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.

Ontdek meer

MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:

  • Indien ingebed in een website linkt het iframe naar de volledige MapComplete
  • De volledige versie heeft uitleg over OpenStreetMap
  • Bekijken kan altijd, maar wijzigen vereist een OSM-account
  • Als je niet aangemeld bent, wordt je gevraagd dit te doen
  • Als je minstens ÊÊn vraag hebt beantwoord, kan je ook elementen toevoegen
  • Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki

Merk je een bug of wil je een extra feature? Wil je helpen vertalen? Bezoek dan de broncode en issue tracker.

Wil je je vorderingen zien? Volg de edits op OsmCha.

", - "backgroundMap": "Achtergrondkaart", - "layerSelection": { - "zoomInToSeeThisLayer": "Vergroot de kaart om deze laag te zien", - "title": "Selecteer lagen" - }, - "weekdays": { - "abbreviations": { - "monday": "Maan", - "tuesday": "Din", - "wednesday": "Woe", - "thursday": "Don", - "friday": "Vrij", - "saturday": "Zat", - "sunday": "Zon" - }, - "monday": "Maandag", - "tuesday": "Dinsdag", - "wednesday": "Woensdag", - "thursday": "Donderdag", - "friday": "Vrijdag", - "saturday": "Zaterdag", - "sunday": "Zondag" - }, - "opening_hours": { - "error_loading": "Sorry, deze openingsuren kunnen niet getoond worden", - "open_during_ph": "Op een feestdag is dit", - "opensAt": "vanaf", - "openTill": "tot", - "closed_until": "Gesloten - open op {date}", - "closed_permanently": "Gesloten voor onbepaalde tijd", - "open_24_7": "Dag en nacht open", - "ph_not_known": " ", - "ph_closed": "gesloten", - "ph_open": "open", - "ph_open_as_usual": "geopend zoals gewoonlijk", - "not_all_rules_parsed": "De openingsuren zijn ingewikkeld. De volgende regels worden niet getoond bij het ingeven:", - "loadingCountry": "Het land wordt nog bepaaldâ€Ļ" - }, - "skippedQuestions": "Enkele vragen werden overgeslaan", - "skip": "Sla deze vraag over", - "save": "Opslaan", - "returnToTheMap": "Ga terug naar de kaart", - "pdf": { - "versionInfo": "v{version} - gemaakt op {date}", - "attr": "Kaartgegevens Š OpenStreetMap-bijdragers, herbruikbaar volgens ODbL", - "generatedWith": "Gemaakt met MapComplete.osm.be", - "attrBackground": "Achtergrondlaag: {background}" - }, - "osmLinkTooltip": "Bekijk dit object op OpenStreetMap om de geschiedenis te zien en meer te kunnen aanpassen", - "oneSkippedQuestion": "Een vraag werd overgeslaan", - "number": "getal", - "loginOnlyNeededToEdit": "als je de kaart wilt aanpassen", - "download": { - "noDataLoaded": "Er is nog geen data ingeladen. Downloaden kan zodra de data geladen is.", - "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", - "includeMetaData": "Exporteer metadata (zoals laatste aanpassing, berekende waardes, â€Ļ)", - "downloadCSVHelper": "Compatibel met LibreOffice Calc, Excel, â€Ļ", - "downloadCSV": "Download de zichtbare data als CSV", - "downloadGeoJsonHelper": "Compatibel met QGIS, ArcGIS, ESRI, â€Ļ", - "downloadGeojson": "Download de zichtbare data als GeoJSON", - "downloadAsPdfHelper": "Perfect om de huidige kaart af te printen", - "downloadAsPdf": "Download een PDF van de huidig zichtbare kaart", - "title": "Download de zichtbare data", - "exporting": "Aan het exporteren..." - }, - "cancel": "Annuleren", - "testing": "Testmode - wijzigingen worden niet opgeslaan", - "openTheMap": "Naar de kaart", - "wikipedia": { - "failed": "Het Wikipedia-artikel inladen is mislukt", - "wikipediaboxTitle": "Wikipedia", - "loading": "Wikipedia aan het laden...", - "noWikipediaPage": "Dit Wikidata-item heeft nog geen overeenkomstig Wikipedia-artikel", - "createNewWikidata": "Maak een nieuw Wikidata-item", - "searchWikidata": "Zoek op Wikidata", - "noResults": "Niet gevonden voor {search}", - "doSearch": "Zoek hierboven om resultaten te zien" - }, - "histogram": { - "error_loading": "Kan het histogram niet laden" - }, - "loading": "Aan het laden..." + "#": "Deze teksten worden getoond boven de themaknoppen als er geen thema is geladen", + "title": "Welkom bij MapComplete", + "intro": "MapComplete is een OpenStreetMap applicatie waar informatie over een specifiek thema bekeken en aangepast kan worden.", + "pickTheme": "Kies hieronder een thema om te beginnen." }, "reviews": { - "title": "{count} beoordelingen", - "title_singular": "EÊn beoordeling", - "name_required": "De naam van dit object moet gekend zijn om een review te kunnen maken", - "no_reviews_yet": "Er zijn nog geen beoordelingen. Wees de eerste om een beoordeling te schrijven en help open data en het bedrijf!", - "write_a_comment": "Schrijf een beoordeling...", - "no_rating": "Geen score bekend", - "posting_as": "Ingelogd als", - "i_am_affiliated": "Ik ben persoonlijk betrokken
Vink aan indien je de oprichter, maker, werknemer, ... of dergelijke bent", - "affiliated_reviewer_warning": "(Review door betrokkene)", - "saving_review": "Opslaan...", - "saved": "Bedankt om je beoordeling te delen!", - "tos": "Als je je review publiceert, ga je akkoord met de de gebruiksvoorwaarden en privacy policy van Mangrove.reviews", - "attribution": "De beoordelingen worden voorzien door Mangrove Reviews en zijn beschikbaar onder deCC-BY 4.0-licentie. ", - "plz_login": "Meld je aan om een beoordeling te geven" + "title": "{count} beoordelingen", + "title_singular": "EÊn beoordeling", + "name_required": "De naam van dit object moet gekend zijn om een review te kunnen maken", + "no_reviews_yet": "Er zijn nog geen beoordelingen. Wees de eerste om een beoordeling te schrijven en help open data en het bedrijf!", + "write_a_comment": "Schrijf een beoordelingâ€Ļ", + "no_rating": "Geen score bekend", + "posting_as": "Ingelogd als", + "i_am_affiliated": "Ik ben persoonlijk betrokken
Vink aan indien je de oprichter, maker, werknemer, ... of dergelijke bent", + "affiliated_reviewer_warning": "(Review door betrokkene)", + "saving_review": "Opslaanâ€Ļ", + "saved": "Bedankt om je beoordeling te delen!", + "tos": "Als je je review publiceert, ga je akkoord met de de gebruiksvoorwaarden en privacy policy van Mangrove.reviews", + "attribution": "De beoordelingen worden voorzien door Mangrove Reviews en zijn beschikbaar onder deCC-BY 4.0-licentie.", + "plz_login": "Meld je aan om een beoordeling te geven" }, - "favourite": { - "reload": "Herlaad de data", - "loginNeeded": "

Log in

Je moet je aanmelden met OpenStreetMap om een persoonlijk thema te gebruiken", - "panelIntro": "

Jouw persoonlijke thema

Activeer je favorite lagen van alle andere themas" + "morescreen": { + "intro": "

Meer thematische kaarten

Vind je het leuk om geodata te verzamelen?
Hier vind je meer kaartthemas.", + "requestATheme": "Wil je een eigen kaartthema, vraag dit in de issue tracker.", + "streetcomplete": "Een andere, gelijkaardige Android-applicatie is StreetComplete.", + "createYourOwnTheme": "Maak je eigen MapComplete-kaart", + "previouslyHiddenTitle": "Eerder bezochte verborgen themas", + "hiddenExplanation": "Deze thema's zijn enkel zichtbaar indien je de link kent. Je hebt {hidden_discovered} van {total_hidden} verborgen thema's ontdekt" }, - "delete": { - "readMessages": "Je hebt ongelezen berichten. Je moet deze lezen voordat je een punt verwijderd, een andere bijdrager heeft misschien feedback", - "explanations": { - "softDelete": "Dit punt zal aangepast worden en zal in deze applicatie niet meer getoond worden. {reason}", - "hardDelete": "Dit punt zal verwijderd worden in OpenStreetMap. Een ervaren bijdrager kan dit ongedaan maken.", - "selectReason": "Gelieve aan te duiden waarom dit punt verwijderd moet worden" - }, - "reasons": { - "notFound": "Het kon niet gevonden worden", - "disused": "Het wordt niet meer onderhouden of is verwijderd", - "test": "Dit punt was een test en was nooit echt aanwezig", - "duplicate": "Dit punt is een duplicaat van een ander punt" - }, - "cancel": "Annuleren", - "isDeleted": "Dit object is verwijderd", - "delete": "Verwijder", - "partOfOthers": "Dit punt maakt deel uit van een lijn, oppervlakte of een relatie en kan niet verwijderd worden.", - "whyDelete": "Waarom moet dit punt van de kaart verwijderd worden?", - "loginToDelete": "Je moet aangemeld zijn om een object van de kaart te verwijderen", - "onlyEditedByLoggedInUser": "Dit punt is enkel door jezelf bewerkt, je kan dit veilig verwijderen.", - "cannotBeDeleted": "Dit object kan niet van de kaart verwijderd worden", - "safeDelete": "Dit punt kan veilig verwijderd worden van de kaart.", - "isntAPoint": "Enkel punten kunnen verwijderd worden, het geselecteerde object is een lijn, een oppervlakte of een relatie.", - "notEnoughExperience": "Dit punt is door iemand anders gemaakt.", - "useSomethingElse": "Gebruik een ander OpenStreetMap-editeerprogramma om dit object te verwijderen", - "loading": "Aan het bekijken of dit object veilig verwijderd kan worden." + "readYourMessages": "Gelieve eerst je berichten op OpenStreetMap te lezen alvorens nieuwe punten toe te voegen.", + "fewChangesBefore": "Gelieve eerst enkele vragen van bestaande punten te beantwoorden vooraleer zelf punten toe te voegen.", + "goToInbox": "Ga naar de berichten", + "getStartedLogin": "Login met OpenStreetMap om te beginnen", + "getStartedNewAccount": " of maak een nieuwe account aan", + "noTagsSelected": "Geen tags geselecteerd", + "customThemeIntro": "

OnofficiÃĢle thema's

De onderstaande thema's heb je eerder bezocht en zijn gemaakt door andere OpenStreetMappers.", + "aboutMapcomplete": "

Over MapComplete

Met MapComplete kun je OpenStreetMap verrijken met informatie over een bepaald thema. Beantwoord enkele vragen, en binnen een paar minuten is jouw bijdrage wereldwijd beschikbaar! De maker van het thema bepaalt de elementen, vragen en taalversies voor het thema.

Ontdek meer

MapComplete biedt altijd de volgende stap naar meer OpenStreetMap:

  • Indien ingebed in een website linkt het iframe naar de volledige MapComplete
  • De volledige versie heeft uitleg over OpenStreetMap
  • Bekijken kan altijd, maar wijzigen vereist een OSM-account
  • Als je niet aangemeld bent, wordt je gevraagd dit te doen
  • Als je minstens ÊÊn vraag hebt beantwoord, kan je ook elementen toevoegen
  • Heb je genoeg changesets, dan verschijnen de OSM-tags, nog later links naar de wiki

Merk je een bug of wil je een extra feature? Wil je helpen vertalen? Bezoek dan de broncode en issue tracker.

Wil je je vorderingen zien? Volg de edits op OsmCha.

", + "backgroundMap": "Achtergrondkaart", + "layerSelection": { + "zoomInToSeeThisLayer": "Vergroot de kaart om deze laag te zien", + "title": "Selecteer lagen" }, - "move": { - "cannotBeMoved": "Dit object kan niet verplaatst worden.", - "inviteToMove": { - "reasonRelocation": "Verplaats dit punt naar een andere locatie omdat het verhuisd is", - "reasonInaccurate": "Verbeter de precieze locatie van dit punt", - "generic": "Verplaats dit punt" - }, - "pointIsMoved": "Dit punt is verplaatst", - "confirmMove": "Verplaats", - "reasons": { - "reasonRelocation": "Dit object is verhuisd naar een andere locatie", - "reasonInaccurate": "De locatie van dit object is niet accuraat en moet een paar meter verschoven worden" - }, - "partOfAWay": "Dit punt is deel van een lijn of een oppervlakte. Gebruik een ander OpenStreetMap-bewerkprogramma om het te verplaatsen", - "partOfRelation": "Dit punt maakt deel uit van een relatie. Gebruik een ander OpenStreetMap-bewerkprogramma om het te verplaatsen", - "cancel": "Annuleer verplaatsing", - "loginToMove": "Je moet aangemeld zijn om een punt te verplaatsen", - "zoomInFurther": "Zoom verder in om de verplaatsing te bevestigen", - "isRelation": "Dit object is een relatie en kan niet verplaatst worden", - "inviteToMoveAgain": "Verplaats dit punt opnieuw", - "moveTitle": "Verplaats dit punt", - "whyMove": "Waarom verplaats je dit punt?", - "selectReason": "Waarom verplaats je dit object?", - "isWay": "Dit object is een lijn of een oppervlakte. Gebruik een ander OpenStreetMap-bewerkprogramma op het te verplaatsen." + "weekdays": { + "abbreviations": { + "monday": "Maan", + "tuesday": "Din", + "wednesday": "Woe", + "thursday": "Don", + "friday": "Vrij", + "saturday": "Zat", + "sunday": "Zon" + }, + "monday": "Maandag", + "tuesday": "Dinsdag", + "wednesday": "Woensdag", + "thursday": "Donderdag", + "friday": "Vrijdag", + "saturday": "Zaterdag", + "sunday": "Zondag" }, - "split": { - "cancel": "Annuleren", - "split": "Knip weg", - "splitTitle": "Duid op de kaart aan waar de weg geknipt moet worden", - "inviteToSplit": "Knip deze weg in kleinere segmenten (om andere eigenschappen per segment toe te kennen)", - "loginToSplit": "Je moet aangemeld zijn om een weg te knippen", - "hasBeenSplit": "Deze weg is verknipt" + "opening_hours": { + "error_loading": "Sorry, deze openingsuren kunnen niet getoond worden", + "open_during_ph": "Op een feestdag is dit", + "opensAt": "vanaf", + "openTill": "tot", + "closed_until": "Gesloten - open op {date}", + "closed_permanently": "Gesloten voor onbepaalde tijd", + "open_24_7": "Dag en nacht open", + "ph_not_known": " ", + "ph_closed": "gesloten", + "ph_open": "open", + "ph_open_as_usual": "geopend zoals gewoonlijk", + "not_all_rules_parsed": "De openingsuren zijn ingewikkeld. De volgende regels worden niet getoond bij het ingeven:", + "loadingCountry": "Het land wordt nog bepaaldâ€Ļ" }, - "multi_apply": { - "autoApply": "Wijzigingen aan eigenschappen {attr_names} zullen ook worden uitgevoerd op {count} andere objecten." - } + "skippedQuestions": "Enkele vragen werden overgeslaan", + "skip": "Sla deze vraag over", + "save": "Opslaan", + "returnToTheMap": "Ga terug naar de kaart", + "pdf": { + "versionInfo": "v{version} - gemaakt op {date}", + "attr": "Kaartgegevens Š OpenStreetMap-bijdragers, herbruikbaar volgens ODbL", + "generatedWith": "Gemaakt met MapComplete.osm.be", + "attrBackground": "Achtergrondlaag: {background}" + }, + "osmLinkTooltip": "Bekijk dit object op OpenStreetMap om de geschiedenis te zien en meer te kunnen aanpassen", + "oneSkippedQuestion": "Een vraag werd overgeslaan", + "number": "getal", + "loginOnlyNeededToEdit": "als je de kaart wilt aanpassen", + "download": { + "noDataLoaded": "Er is nog geen data ingeladen. Downloaden kan zodra de data geladen is.", + "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", + "includeMetaData": "Exporteer metadata (zoals laatste aanpassing, berekende waardes, â€Ļ)", + "downloadCSVHelper": "Compatibel met LibreOffice Calc, Excel, â€Ļ", + "downloadCSV": "Download de zichtbare data als CSV", + "downloadGeoJsonHelper": "Compatibel met QGIS, ArcGIS, ESRI, â€Ļ", + "downloadGeojson": "Download de zichtbare data als GeoJSON", + "downloadAsPdfHelper": "Perfect om de huidige kaart af te printen", + "downloadAsPdf": "Download een PDF van de huidig zichtbare kaart", + "title": "Download de zichtbare data", + "exporting": "Aan het exporteren..." + }, + "cancel": "Annuleren", + "testing": "Testmode - wijzigingen worden niet opgeslaan", + "openTheMap": "Naar de kaart", + "wikipedia": { + "failed": "Het Wikipedia-artikel inladen is mislukt", + "wikipediaboxTitle": "Wikipedia", + "loading": "Wikipedia aan het laden...", + "noWikipediaPage": "Dit Wikidata-item heeft nog geen overeenkomstig Wikipedia-artikel", + "createNewWikidata": "Maak een nieuw Wikidata-item", + "searchWikidata": "Zoek op Wikidata", + "noResults": "Niet gevonden voor {search}", + "doSearch": "Zoek hierboven om resultaten te zien" + }, + "histogram": { + "error_loading": "Kan het histogram niet laden" + }, + "loading": "Aan het laden..." + }, + "reviews": { + "title": "{count} beoordelingen", + "title_singular": "EÊn beoordeling", + "name_required": "De naam van dit object moet gekend zijn om een review te kunnen maken", + "no_reviews_yet": "Er zijn nog geen beoordelingen. Wees de eerste om een beoordeling te schrijven en help open data en het bedrijf!", + "write_a_comment": "Schrijf een beoordeling...", + "no_rating": "Geen score bekend", + "posting_as": "Ingelogd als", + "i_am_affiliated": "Ik ben persoonlijk betrokken
Vink aan indien je de oprichter, maker, werknemer, ... of dergelijke bent", + "affiliated_reviewer_warning": "(Review door betrokkene)", + "saving_review": "Opslaan...", + "saved": "Bedankt om je beoordeling te delen!", + "tos": "Als je je review publiceert, ga je akkoord met de de gebruiksvoorwaarden en privacy policy van Mangrove.reviews", + "attribution": "De beoordelingen worden voorzien door Mangrove Reviews en zijn beschikbaar onder deCC-BY 4.0-licentie. ", + "plz_login": "Meld je aan om een beoordeling te geven" + }, + "favourite": { + "reload": "Herlaad de data", + "loginNeeded": "

Log in

Je moet je aanmelden met OpenStreetMap om een persoonlijk thema te gebruiken", + "panelIntro": "

Jouw persoonlijke thema

Activeer je favorite lagen van alle andere themas" + }, + "delete": { + "readMessages": "Je hebt ongelezen berichten. Je moet deze lezen voordat je een punt verwijderd, een andere bijdrager heeft misschien feedback", + "explanations": { + "softDelete": "Dit punt zal aangepast worden en zal in deze applicatie niet meer getoond worden. {reason}", + "hardDelete": "Dit punt zal verwijderd worden in OpenStreetMap. Een ervaren bijdrager kan dit ongedaan maken.", + "selectReason": "Gelieve aan te duiden waarom dit punt verwijderd moet worden" + }, + "reasons": { + "notFound": "Het kon niet gevonden worden", + "disused": "Het wordt niet meer onderhouden of is verwijderd", + "test": "Dit punt was een test en was nooit echt aanwezig", + "duplicate": "Dit punt is een duplicaat van een ander punt" + }, + "cancel": "Annuleren", + "isDeleted": "Dit object is verwijderd", + "delete": "Verwijder", + "partOfOthers": "Dit punt maakt deel uit van een lijn, oppervlakte of een relatie en kan niet verwijderd worden.", + "whyDelete": "Waarom moet dit punt van de kaart verwijderd worden?", + "loginToDelete": "Je moet aangemeld zijn om een object van de kaart te verwijderen", + "onlyEditedByLoggedInUser": "Dit punt is enkel door jezelf bewerkt, je kan dit veilig verwijderen.", + "cannotBeDeleted": "Dit object kan niet van de kaart verwijderd worden", + "safeDelete": "Dit punt kan veilig verwijderd worden van de kaart.", + "isntAPoint": "Enkel punten kunnen verwijderd worden, het geselecteerde object is een lijn, een oppervlakte of een relatie.", + "notEnoughExperience": "Dit punt is door iemand anders gemaakt.", + "useSomethingElse": "Gebruik een ander OpenStreetMap-editeerprogramma om dit object te verwijderen", + "loading": "Aan het bekijken of dit object veilig verwijderd kan worden." + }, + "move": { + "cannotBeMoved": "Dit object kan niet verplaatst worden.", + "inviteToMove": { + "reasonRelocation": "Verplaats dit punt naar een andere locatie omdat het verhuisd is", + "reasonInaccurate": "Verbeter de precieze locatie van dit punt", + "generic": "Verplaats dit punt" + }, + "pointIsMoved": "Dit punt is verplaatst", + "confirmMove": "Verplaats", + "reasons": { + "reasonRelocation": "Dit object is verhuisd naar een andere locatie", + "reasonInaccurate": "De locatie van dit object is niet accuraat en moet een paar meter verschoven worden" + }, + "partOfAWay": "Dit punt is deel van een lijn of een oppervlakte. Gebruik een ander OpenStreetMap-bewerkprogramma om het te verplaatsen", + "partOfRelation": "Dit punt maakt deel uit van een relatie. Gebruik een ander OpenStreetMap-bewerkprogramma om het te verplaatsen", + "cancel": "Annuleer verplaatsing", + "loginToMove": "Je moet aangemeld zijn om een punt te verplaatsen", + "zoomInFurther": "Zoom verder in om de verplaatsing te bevestigen", + "isRelation": "Dit object is een relatie en kan niet verplaatst worden", + "inviteToMoveAgain": "Verplaats dit punt opnieuw", + "moveTitle": "Verplaats dit punt", + "whyMove": "Waarom verplaats je dit punt?", + "selectReason": "Waarom verplaats je dit object?", + "isWay": "Dit object is een lijn of een oppervlakte. Gebruik een ander OpenStreetMap-bewerkprogramma op het te verplaatsen." + }, + "split": { + "cancel": "Annuleren", + "split": "Knip weg", + "splitTitle": "Duid op de kaart aan waar de weg geknipt moet worden", + "inviteToSplit": "Knip deze weg in kleinere segmenten (om andere eigenschappen per segment toe te kennen)", + "loginToSplit": "Je moet aangemeld zijn om een weg te knippen", + "hasBeenSplit": "Deze weg is verknipt" + }, + "multi_apply": { + "autoApply": "Wijzigingen aan eigenschappen {attr_names} zullen ook worden uitgevoerd op {count} andere objecten." + } } \ No newline at end of file diff --git a/langs/pt.json b/langs/pt.json index 50537983e..fabdb6a7a 100644 --- a/langs/pt.json +++ b/langs/pt.json @@ -1,42 +1,42 @@ { - "centerMessage": { - "retrying": "Surgiu uma falha ao carregar os dados. A tentar novamente dentro de {count} segundosâ€Ļ", - "ready": "Concluído!", - "zoomIn": "Amplie para ver ou editar os dados", - "loadingData": "A carregar os dadosâ€Ļ" + "centerMessage": { + "retrying": "Surgiu uma falha ao carregar os dados. A tentar novamente dentro de {count} segundosâ€Ļ", + "ready": "Concluído!", + "zoomIn": "Amplie para ver ou editar os dados", + "loadingData": "A carregar os dadosâ€Ļ" + }, + "image": { + "isDeleted": "Eliminada", + "doDelete": "Remover imagem", + "dontDelete": "Cancelar", + "uploadDone": "A sua imagem foi adicionada. Obrigado pela ajuda!", + "respectPrivacy": "NÃŖo fotografe pessoas nem placas de veículos. NÃŖo envie imagens do Google Maps, do Google Streetview ou outras fontes protegidas por direitos de autor.", + "uploadFailed": "NÃŖo foi possível enviar a sua imagem. EstÃĄ conectado à Internet e permite APIs de terceiros? O navegador \"Brave\" ou o plugin \"uMatrix\" podem estar a bloqueÃĄ-los.", + "ccb": "sob a licença CC-BY", + "ccbs": "sob a licença CC-BY-SA", + "cco": "no domínio pÃēblico", + "willBePublished": "A sua imagem serÃĄ publicada: ", + "pleaseLogin": "Entre na sua conta para adicionar uma imagem", + "uploadingMultiple": "A enviar {count} imagensâ€Ļ", + "uploadingPicture": "A enviar a sua imagemâ€Ļ", + "addPicture": "Adicionar imagem", + "uploadMultipleDone": "Foram adicionadas {count} fotografias. Obrigado por ajudar!", + "toBig": "A sua imagem Ê muito grande porque tem {actual_size}. Use imagens com o mÃĄximo {max_size}" + }, + "index": { + "#": "Estes textos sÃŖo mostrados acima dos botÃĩes do tema quando nenhum tema Ê carregado", + "title": "Bem-vindo(a) ao MapComplete", + "intro": "O MapComplete Ê um visualizador e editor do OpenStreetMap, que mostra informaçÃĩes sobre um tema específico.", + "pickTheme": "Escolha um tema abaixo para começar.", + "featuredThemeTitle": "Destaque desta semana" + }, + "delete": { + "reasons": { + "notFound": "NÃŖo foi possível encontrar este elemento" }, - "image": { - "isDeleted": "Eliminada", - "doDelete": "Remover imagem", - "dontDelete": "Cancelar", - "uploadDone": "A sua imagem foi adicionada. Obrigado pela ajuda!", - "respectPrivacy": "NÃŖo fotografe pessoas nem placas de veículos. NÃŖo envie imagens do Google Maps, do Google Streetview ou outras fontes protegidas por direitos de autor.", - "uploadFailed": "NÃŖo foi possível enviar a sua imagem. EstÃĄ conectado à Internet e permite APIs de terceiros? O navegador \"Brave\" ou o plugin \"uMatrix\" podem estar a bloqueÃĄ-los.", - "ccb": "sob a licença CC-BY", - "ccbs": "sob a licença CC-BY-SA", - "cco": "no domínio pÃēblico", - "willBePublished": "A sua imagem serÃĄ publicada: ", - "pleaseLogin": "Entre na sua conta para adicionar uma imagem", - "uploadingMultiple": "A enviar {count} imagensâ€Ļ", - "uploadingPicture": "A enviar a sua imagemâ€Ļ", - "addPicture": "Adicionar imagem", - "uploadMultipleDone": "Foram adicionadas {count} fotografias. Obrigado por ajudar!", - "toBig": "A sua imagem Ê muito grande porque tem {actual_size}. Use imagens com o mÃĄximo {max_size}" - }, - "index": { - "#": "Estes textos sÃŖo mostrados acima dos botÃĩes do tema quando nenhum tema Ê carregado", - "title": "Bem-vindo(a) ao MapComplete", - "intro": "O MapComplete Ê um visualizador e editor do OpenStreetMap, que mostra informaçÃĩes sobre um tema específico.", - "pickTheme": "Escolha um tema abaixo para começar.", - "featuredThemeTitle": "Destaque desta semana" - }, - "delete": { - "reasons": { - "notFound": "NÃŖo foi possível encontrar este elemento" - }, - "explanations": { - "selectReason": "Por favor, selecione a razÃŖo porque este elemento deve ser eliminado", - "hardDelete": "Este ponto serÃĄ eliminado no OpenStreetMap. Pode ser recuperado por um contribuidor com experiÃĒncia" - } + "explanations": { + "selectReason": "Por favor, selecione a razÃŖo porque este elemento deve ser eliminado", + "hardDelete": "Este ponto serÃĄ eliminado no OpenStreetMap. Pode ser recuperado por um contribuidor com experiÃĒncia" } + } } diff --git a/langs/shared-questions/ca.json b/langs/shared-questions/ca.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/langs/shared-questions/ca.json @@ -0,0 +1 @@ +{} diff --git a/langs/shared-questions/de.json b/langs/shared-questions/de.json index 24b5582b6..0413ec800 100644 --- a/langs/shared-questions/de.json +++ b/langs/shared-questions/de.json @@ -1,99 +1,99 @@ { - "undefined": { - "description": { - "question": "Gibt es noch etwas, das die vorhergehenden Fragen nicht abgedeckt haben? Hier wäre Platz dafÃŧr.
Bitte keine bereits erhobenen Informationen." + "undefined": { + "description": { + "question": "Gibt es noch etwas, das die vorhergehenden Fragen nicht abgedeckt haben? Hier wäre Platz dafÃŧr.
Bitte keine bereits erhobenen Informationen." + }, + "dog-access": { + "mappings": { + "0": { + "then": "Hunde sind erlaubt" }, - "dog-access": { - "mappings": { - "0": { - "then": "Hunde sind erlaubt" - }, - "1": { - "then": "Hunde sind nicht erlaubt" - }, - "2": { - "then": "Hunde sind erlaubt, mÃŧssen aber angeleint sein" - }, - "3": { - "then": "Hunde sind erlaubt und kÃļnnen frei herumlaufen" - } - }, - "question": "Sind Hunde in diesem Geschäft erlaubt?" + "1": { + "then": "Hunde sind nicht erlaubt" }, - "email": { - "question": "Was ist die Mail-Adresse von {name}?" + "2": { + "then": "Hunde sind erlaubt, mÃŧssen aber angeleint sein" }, - "level": { - "mappings": { - "0": { - "then": "Unterirdisch gelegen" - }, - "1": { - "then": "Ist im Erdgeschoss" - }, - "2": { - "then": "Ist im Erdgeschoss" - }, - "3": { - "then": "Ist im ersten Stock" - } - }, - "question": "In welchem Stockwerk befindet sich dieses Objekt?", - "render": "Befindet sich im {level}ten Stock" - }, - "opening_hours": { - "question": "Was sind die Öffnungszeiten von {name}?", - "render": "

Öffnungszeiten

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Hier wird Bargeld akzeptiert" - }, - "1": { - "then": "Hier werden Zahlungskarten akzeptiert" - } - }, - "question": "Welche Zahlungsmethoden werden hier akzeptiert?" - }, - "phone": { - "question": "Was ist die Telefonnummer von {name}?" - }, - "website": { - "question": "Was ist die Website von {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "Dieser Ort ist speziell fÃŧr Rollstuhlfahrer eingerichtet" - }, - "1": { - "then": "Dieser Ort ist mit einem Rollstuhl leicht zu erreichen" - }, - "2": { - "then": "Es ist mÃļglich, diesen Ort mit einem Rollstuhl zu erreichen, aber es ist nicht einfach" - }, - "3": { - "then": "Dieser Ort ist nicht mit einem Rollstuhl erreichbar" - } - }, - "question": "Ist dieser Ort mit einem Rollstuhl zugänglich?" - }, - "wikipedia": { - "mappings": { - "0": { - "then": "Es wurde noch keine Wikipedia-Seite verlinkt" - } - }, - "question": "Was ist das entsprechende Wikidata Element?" - }, - "wikipedialink": { - "mappings": { - "0": { - "then": "Nicht mit Wikipedia verknÃŧpft" - } - }, - "question": "Was ist der entsprechende Artikel auf Wikipedia?" + "3": { + "then": "Hunde sind erlaubt und kÃļnnen frei herumlaufen" } + }, + "question": "Sind Hunde in diesem Geschäft erlaubt?" + }, + "email": { + "question": "Was ist die Mail-Adresse von {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Unterirdisch gelegen" + }, + "1": { + "then": "Ist im Erdgeschoss" + }, + "2": { + "then": "Ist im Erdgeschoss" + }, + "3": { + "then": "Ist im ersten Stock" + } + }, + "question": "In welchem Stockwerk befindet sich dieses Objekt?", + "render": "Befindet sich im {level}ten Stock" + }, + "opening_hours": { + "question": "Was sind die Öffnungszeiten von {name}?", + "render": "

Öffnungszeiten

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Hier wird Bargeld akzeptiert" + }, + "1": { + "then": "Hier werden Zahlungskarten akzeptiert" + } + }, + "question": "Welche Zahlungsmethoden werden hier akzeptiert?" + }, + "phone": { + "question": "Was ist die Telefonnummer von {name}?" + }, + "website": { + "question": "Was ist die Website von {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "Dieser Ort ist speziell fÃŧr Rollstuhlfahrer eingerichtet" + }, + "1": { + "then": "Dieser Ort ist mit einem Rollstuhl leicht zu erreichen" + }, + "2": { + "then": "Es ist mÃļglich, diesen Ort mit einem Rollstuhl zu erreichen, aber es ist nicht einfach" + }, + "3": { + "then": "Dieser Ort ist nicht mit einem Rollstuhl erreichbar" + } + }, + "question": "Ist dieser Ort mit einem Rollstuhl zugänglich?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "Es wurde noch keine Wikipedia-Seite verlinkt" + } + }, + "question": "Was ist das entsprechende Wikidata Element?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Nicht mit Wikipedia verknÃŧpft" + } + }, + "question": "Was ist der entsprechende Artikel auf Wikipedia?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/en.json b/langs/shared-questions/en.json index 22861f315..4d3aaeef1 100644 --- a/langs/shared-questions/en.json +++ b/langs/shared-questions/en.json @@ -1,99 +1,116 @@ { - "undefined": { - "description": { - "question": "Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts" + "undefined": { + "description": { + "question": "Is there still something relevant you couldn't give in the previous questions? Add it here.
Don't repeat already stated facts" + }, + "dog-access": { + "mappings": { + "0": { + "then": "Dogs are allowed" }, - "dog-access": { - "mappings": { - "0": { - "then": "Dogs are allowed" - }, - "1": { - "then": "Dogs are not allowed" - }, - "2": { - "then": "Dogs are allowed, but they have to be leashed" - }, - "3": { - "then": "Dogs are allowed and can run around freely" - } - }, - "question": "Are dogs allowed in this business?" + "1": { + "then": "Dogs are not allowed" }, - "email": { - "question": "What is the email address of {name}?" + "2": { + "then": "Dogs are allowed, but they have to be leashed" }, - "level": { - "mappings": { - "0": { - "then": "Located underground" - }, - "1": { - "then": "Located on the ground floor" - }, - "2": { - "then": "Located on the ground floor" - }, - "3": { - "then": "Located on the first floor" - } - }, - "question": "On what level is this feature located?", - "render": "Located on the {level}th floor" - }, - "opening_hours": { - "question": "What are the opening hours of {name}?", - "render": "

Opening hours

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Cash is accepted here" - }, - "1": { - "then": "Payment cards are accepted here" - } - }, - "question": "Which methods of payment are accepted here?" - }, - "phone": { - "question": "What is the phone number of {name}?" - }, - "website": { - "question": "What is the website of {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "This place is specially adapted for wheelchair users" - }, - "1": { - "then": "This place is easily reachable with a wheelchair" - }, - "2": { - "then": "It is possible to reach this place in a wheelchair, but it is not easy" - }, - "3": { - "then": "This place is not reachable with a wheelchair" - } - }, - "question": "Is this place accessible with a wheelchair?" - }, - "wikipedia": { - "mappings": { - "0": { - "then": "No Wikipedia page has been linked yet" - } - }, - "question": "What is the corresponding Wikidata entity?" - }, - "wikipedialink": { - "mappings": { - "0": { - "then": "Not linked with Wikipedia" - } - }, - "question": "What is the corresponding item on Wikipedia?" + "3": { + "then": "Dogs are allowed and can run around freely" } + }, + "question": "Are dogs allowed in this business?" + }, + "email": { + "question": "What is the email address of {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Located underground" + }, + "1": { + "then": "Located on the ground floor" + }, + "2": { + "then": "Located on the ground floor" + }, + "3": { + "then": "Located on the first floor" + } + }, + "question": "On what level is this feature located?", + "render": "Located on the {level}th floor" + }, + "opening_hours": { + "question": "What are the opening hours of {name}?", + "render": "

Opening hours

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Cash is accepted here" + }, + "1": { + "then": "Payment cards are accepted here" + } + }, + "question": "Which methods of payment are accepted here?" + }, + "phone": { + "question": "What is the phone number of {name}?" + }, + "service:electricity": { + "mappings": { + "0": { + "then": "There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics" + }, + "1": { + "then": "There are a few domestic sockets available to customers seated indoors, where they can charge their electronics" + }, + "2": { + "then": "There are no sockets available indoors to customers, but charging might be possible if the staff is asked" + }, + "3": { + "then": "There are a no domestic sockets available to customers seated indoors" + } + }, + "question": "Does this amenity have electrical outlets, available to customers when they are inside?" + }, + "website": { + "question": "What is the website of {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "This place is specially adapted for wheelchair users" + }, + "1": { + "then": "This place is easily reachable with a wheelchair" + }, + "2": { + "then": "It is possible to reach this place in a wheelchair, but it is not easy" + }, + "3": { + "then": "This place is not reachable with a wheelchair" + } + }, + "question": "Is this place accessible with a wheelchair?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "No Wikipedia page has been linked yet" + } + }, + "question": "What is the corresponding Wikidata entity?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Not linked with Wikipedia" + } + }, + "question": "What is the corresponding item on Wikipedia?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/eo.json b/langs/shared-questions/eo.json index 636b21d23..dfa573190 100644 --- a/langs/shared-questions/eo.json +++ b/langs/shared-questions/eo.json @@ -1,40 +1,40 @@ { - "undefined": { - "dog-access": { - "mappings": { - "0": { - "then": "Hundoj estas permesataj" - }, - "1": { - "then": "Hundoj estas malpermesataj" - } - } + "undefined": { + "dog-access": { + "mappings": { + "0": { + "then": "Hundoj estas permesataj" }, - "email": { - "question": "Kio estas la retpoŝta adreso de {name}?" - }, - "level": { - "mappings": { - "1": { - "then": "En la teretaĝo" - }, - "2": { - "then": "En la teretaĝo" - }, - "3": { - "then": "En la unua etaĝo" - } - }, - "render": "En la {level}a etaĝo" - }, - "opening_hours": { - "render": "

Malfermitaj horoj

{opening_hours_table(opening_hours)}" - }, - "phone": { - "question": "Kio estas la telefonnumero de {name}?" - }, - "website": { - "question": "Kie estas la retejo de {name}?" + "1": { + "then": "Hundoj estas malpermesataj" } + } + }, + "email": { + "question": "Kio estas la retpoŝta adreso de {name}?" + }, + "level": { + "mappings": { + "1": { + "then": "En la teretaĝo" + }, + "2": { + "then": "En la teretaĝo" + }, + "3": { + "then": "En la unua etaĝo" + } + }, + "render": "En la {level}a etaĝo" + }, + "opening_hours": { + "render": "

Malfermitaj horoj

{opening_hours_table(opening_hours)}" + }, + "phone": { + "question": "Kio estas la telefonnumero de {name}?" + }, + "website": { + "question": "Kie estas la retejo de {name}?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/es.json b/langs/shared-questions/es.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/langs/shared-questions/es.json @@ -0,0 +1 @@ +{} diff --git a/langs/shared-questions/fi.json b/langs/shared-questions/fi.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/langs/shared-questions/fi.json @@ -0,0 +1 @@ +{} diff --git a/langs/shared-questions/fr.json b/langs/shared-questions/fr.json index 7f0de7904..3f7896099 100644 --- a/langs/shared-questions/fr.json +++ b/langs/shared-questions/fr.json @@ -1,77 +1,77 @@ { - "undefined": { - "description": { - "question": "Y a-t-il quelque chose de pertinent que vous n'avez pas pu donner à la dernière question ? Ajoutez-le ici.
Ne rÊpÊtez pas des rÊponses dÊjà donnÊes" + "undefined": { + "description": { + "question": "Y a-t-il quelque chose de pertinent que vous n'avez pas pu donner à la dernière question ? Ajoutez-le ici.
Ne rÊpÊtez pas des rÊponses dÊjà donnÊes" + }, + "dog-access": { + "mappings": { + "0": { + "then": "Chiens admis" }, - "dog-access": { - "mappings": { - "0": { - "then": "Chiens admis" - }, - "1": { - "then": "Les chiens ne sont pas admis" - }, - "2": { - "then": "Les chiens sont admis, mais ils doivent ÃĒtre tenus en laisse" - }, - "3": { - "then": "Les chiens sont admis et peuvent circuler librement" - } - }, - "question": "Est-ce que les chiens sont admis ici ?" + "1": { + "then": "Les chiens ne sont pas admis" }, - "email": { - "question": "Quelle est l'adresse courriel de {name} ?" + "2": { + "then": "Les chiens sont admis, mais ils doivent ÃĒtre tenus en laisse" }, - "level": { - "mappings": { - "0": { - "then": "En sous-sol" - }, - "1": { - "then": "Rez-de-chaussÊe" - }, - "2": { - "then": "Rez-de-chaussÊe" - }, - "3": { - "then": "Premier Êtage" - } - }, - "question": "À quel Êtage se situe l’ÊlÊment ?", - "render": "Étage {level}" - }, - "opening_hours": { - "question": "Quelles sont les horaires d'ouverture de {name} ?", - "render": "

Horaires d'ouverture

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Paiement en liquide acceptÊ" - }, - "1": { - "then": "Paiement par carte acceptÊ" - } - }, - "question": "Quelles sont les mÊthodes de paiement acceptÊes ici ?" - }, - "phone": { - "question": "Quel est le numÊro de tÊlÊphone de {name} ?" - }, - "website": { - "question": "Quel est le site web de {name} ?" - }, - "wheelchair-access": { - "mappings": { - "2": { - "then": "Il est possible d'accÊder à cet endroit en chaise roulante, mais ce n'est pas facile" - }, - "3": { - "then": "Cet endroit n'est pas accessible en chaise roulante" - } - }, - "question": "Est-ce que cet endroit est accessible en chaise roulante ?" + "3": { + "then": "Les chiens sont admis et peuvent circuler librement" } + }, + "question": "Est-ce que les chiens sont admis ici ?" + }, + "email": { + "question": "Quelle est l'adresse courriel de {name} ?" + }, + "level": { + "mappings": { + "0": { + "then": "En sous-sol" + }, + "1": { + "then": "Rez-de-chaussÊe" + }, + "2": { + "then": "Rez-de-chaussÊe" + }, + "3": { + "then": "Premier Êtage" + } + }, + "question": "À quel Êtage se situe l’ÊlÊment ?", + "render": "Étage {level}" + }, + "opening_hours": { + "question": "Quelles sont les horaires d'ouverture de {name} ?", + "render": "

Horaires d'ouverture

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Paiement en liquide acceptÊ" + }, + "1": { + "then": "Paiement par carte acceptÊ" + } + }, + "question": "Quelles sont les mÊthodes de paiement acceptÊes ici ?" + }, + "phone": { + "question": "Quel est le numÊro de tÊlÊphone de {name} ?" + }, + "website": { + "question": "Quel est le site web de {name} ?" + }, + "wheelchair-access": { + "mappings": { + "2": { + "then": "Il est possible d'accÊder à cet endroit en chaise roulante, mais ce n'est pas facile" + }, + "3": { + "then": "Cet endroit n'est pas accessible en chaise roulante" + } + }, + "question": "Est-ce que cet endroit est accessible en chaise roulante ?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/gl.json b/langs/shared-questions/gl.json index 2d52f7307..40baca77e 100644 --- a/langs/shared-questions/gl.json +++ b/langs/shared-questions/gl.json @@ -1,7 +1,7 @@ { - "undefined": { - "website": { - "question": "Cal Ê a pÃĄxina web de {name}?" - } + "undefined": { + "website": { + "question": "Cal Ê a pÃĄxina web de {name}?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/hu.json b/langs/shared-questions/hu.json index d639475e1..d6a75d542 100644 --- a/langs/shared-questions/hu.json +++ b/langs/shared-questions/hu.json @@ -1,99 +1,99 @@ { - "undefined": { - "description": { - "question": "Van-e mÊg valami lÊnyeges, amit nem tudott megadni az előző kÊrdÊsekben? Itt megteheti.
Ne ismÊteljen meg mÃĄr megadott tÊnyeket" + "undefined": { + "description": { + "question": "Van-e mÊg valami lÊnyeges, amit nem tudott megadni az előző kÊrdÊsekben? Itt megteheti.
Ne ismÊteljen meg mÃĄr megadott tÊnyeket" + }, + "dog-access": { + "mappings": { + "0": { + "then": "Kutya bevihető" }, - "dog-access": { - "mappings": { - "0": { - "then": "Kutya bevihető" - }, - "1": { - "then": "Kutya nem vihető be" - }, - "2": { - "then": "Kutya bevihető, de csak pÃŗrÃĄzon" - }, - "3": { - "then": "Kutya bevihető Ês szabadon szaladgÃĄlhat" - } - }, - "question": "Be lehet-e vinni kutyÃĄt ebbe az Ãŧzletbe?" + "1": { + "then": "Kutya nem vihető be" }, - "email": { - "question": "Mi a(z) {name} e-mail címe?" + "2": { + "then": "Kutya bevihető, de csak pÃŗrÃĄzon" }, - "level": { - "mappings": { - "0": { - "then": "A fÃļld alatt talÃĄlhatÃŗ" - }, - "1": { - "then": "A fÃļldszinten talÃĄlhatÃŗ" - }, - "2": { - "then": "A fÃļldszinten talÃĄlhatÃŗ" - }, - "3": { - "then": "Az első emeleten talÃĄlhatÃŗ" - } - }, - "question": "Melyik szinten talÃĄlhatÃŗ ez a lÊtesítmÊny?", - "render": "{level}. emeleten talÃĄlhatÃŗ" - }, - "opening_hours": { - "question": "Mikor van nyitva ez: {name}?", - "render": "

Nyitva tartÃĄs

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Itt kÊszpÊnzzel is lehet fizetni" - }, - "1": { - "then": "Itt fizetőkÃĄrtyÃĄkkal is lehet fizetni" - } - }, - "question": "Milyen fizetÊsi mÃŗdokat fogadnak el itt?" - }, - "phone": { - "question": "Mi a telefonszÃĄma ennek: {name}?" - }, - "website": { - "question": "Mi a weboldala ennek: {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "Ez a hely kifejezetten kerekesszÊkeseknek lett kialakítva" - }, - "1": { - "then": "Ez a hely kÃļnnyedÊn elÊrhető kerekesszÊkkel" - }, - "2": { - "then": "Ez a hely ugyan elÊrhető kerekesszÊkkel, de nehezen" - }, - "3": { - "then": "Ez a hely kerekesszÊkkel elÊrhetetlen" - } - }, - "question": "AkadÃĄlymentes-e ez a hely?" - }, - "wikipedia": { - "mappings": { - "0": { - "then": "MÊg nincs WikipÊdia-oldal belinkelve" - } - }, - "question": "Mi a megfelelő Wikidata-elem?" - }, - "wikipedialink": { - "mappings": { - "0": { - "then": "Nincs belinkelve a WikipÊdiÃĄhoz" - } - }, - "question": "Mi a megfelelő szÃŗcikk a WikipÊdiÃĄn?" + "3": { + "then": "Kutya bevihető Ês szabadon szaladgÃĄlhat" } + }, + "question": "Be lehet-e vinni kutyÃĄt ebbe az Ãŧzletbe?" + }, + "email": { + "question": "Mi a(z) {name} e-mail címe?" + }, + "level": { + "mappings": { + "0": { + "then": "A fÃļld alatt talÃĄlhatÃŗ" + }, + "1": { + "then": "A fÃļldszinten talÃĄlhatÃŗ" + }, + "2": { + "then": "A fÃļldszinten talÃĄlhatÃŗ" + }, + "3": { + "then": "Az első emeleten talÃĄlhatÃŗ" + } + }, + "question": "Melyik szinten talÃĄlhatÃŗ ez a lÊtesítmÊny?", + "render": "{level}. emeleten talÃĄlhatÃŗ" + }, + "opening_hours": { + "question": "Mikor van nyitva ez: {name}?", + "render": "

Nyitva tartÃĄs

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Itt kÊszpÊnzzel is lehet fizetni" + }, + "1": { + "then": "Itt fizetőkÃĄrtyÃĄkkal is lehet fizetni" + } + }, + "question": "Milyen fizetÊsi mÃŗdokat fogadnak el itt?" + }, + "phone": { + "question": "Mi a telefonszÃĄma ennek: {name}?" + }, + "website": { + "question": "Mi a weboldala ennek: {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "Ez a hely kifejezetten kerekesszÊkeseknek lett kialakítva" + }, + "1": { + "then": "Ez a hely kÃļnnyedÊn elÊrhető kerekesszÊkkel" + }, + "2": { + "then": "Ez a hely ugyan elÊrhető kerekesszÊkkel, de nehezen" + }, + "3": { + "then": "Ez a hely kerekesszÊkkel elÊrhetetlen" + } + }, + "question": "AkadÃĄlymentes-e ez a hely?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "MÊg nincs WikipÊdia-oldal belinkelve" + } + }, + "question": "Mi a megfelelő Wikidata-elem?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Nincs belinkelve a WikipÊdiÃĄhoz" + } + }, + "question": "Mi a megfelelő szÃŗcikk a WikipÊdiÃĄn?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/id.json b/langs/shared-questions/id.json index 7c29ed6e6..61cc25a1a 100644 --- a/langs/shared-questions/id.json +++ b/langs/shared-questions/id.json @@ -1,32 +1,32 @@ { - "undefined": { - "email": { - "question": "Apa alamat surel dari {name}?" - }, - "level": { - "mappings": { - "3": { - "then": "Berlokasi di lantai pertama" - } - }, - "question": "Pada tingkat apa fitur ini diletakkan?" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Disini menerima pembayaran tunai" - }, - "1": { - "then": "Disini menerima pembayaran dengan kartu" - } - }, - "question": "Metode pembayaran manakah yang di terima disini?" - }, - "phone": { - "question": "Nomor telepon dari {name|?" - }, - "website": { - "question": "Apa situs web dari {name}?" + "undefined": { + "email": { + "question": "Apa alamat surel dari {name}?" + }, + "level": { + "mappings": { + "3": { + "then": "Berlokasi di lantai pertama" } + }, + "question": "Pada tingkat apa fitur ini diletakkan?" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Disini menerima pembayaran tunai" + }, + "1": { + "then": "Disini menerima pembayaran dengan kartu" + } + }, + "question": "Metode pembayaran manakah yang di terima disini?" + }, + "phone": { + "question": "Nomor telepon dari {name|?" + }, + "website": { + "question": "Apa situs web dari {name}?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/it.json b/langs/shared-questions/it.json index 2b13ebb8b..99a937c8e 100644 --- a/langs/shared-questions/it.json +++ b/langs/shared-questions/it.json @@ -1,99 +1,99 @@ { - "undefined": { - "description": { - "question": "C'è ancora qualche informazione importante che non è stato possibile fornire nelle domande precedenti? Aggiungila qui.
Non ripetere informazioni già fornite" + "undefined": { + "description": { + "question": "C'è ancora qualche informazione importante che non è stato possibile fornire nelle domande precedenti? Aggiungila qui.
Non ripetere informazioni già fornite" + }, + "dog-access": { + "mappings": { + "0": { + "then": "Cani ammessi" }, - "dog-access": { - "mappings": { - "0": { - "then": "Cani ammessi" - }, - "1": { - "then": "I cani non sono ammessi" - }, - "2": { - "then": "Cani ammessi ma solo se tenuti al guinzaglio" - }, - "3": { - "then": "I cani sono ammessi e possono andare in giro liberamente" - } - }, - "question": "I cani sono ammessi in quest’attività?" + "1": { + "then": "I cani non sono ammessi" }, - "email": { - "question": "Qual è l'indirizzo email di {name}?" + "2": { + "then": "Cani ammessi ma solo se tenuti al guinzaglio" }, - "level": { - "mappings": { - "0": { - "then": "Si trova sotto il livello stradale" - }, - "1": { - "then": "Si trova al pianoterra" - }, - "2": { - "then": "Si trova al pianoterra" - }, - "3": { - "then": "Si trova al primo piano" - } - }, - "question": "A quale piano si trova questo elemento?", - "render": "Si trova al piano numero {level}" - }, - "opening_hours": { - "question": "Quali sono gli orari di apertura di {name}?", - "render": "

Orari di apertura

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "I contanti sono accettati" - }, - "1": { - "then": "I pagamenti con la carta sono accettati" - } - }, - "question": "Quali metodi di pagamento sono accettati qui?" - }, - "phone": { - "question": "Qual è il numero di telefono di {name}?" - }, - "website": { - "question": "Qual è il sito web di {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "Questo luogo è stato adattato per favorire le persone in sedia a rotelle" - }, - "1": { - "then": "Questo luogo è facilmente raggiungibile con una sedia a rotelle" - }, - "2": { - "then": "È possibile raggiungere questo luogo con una sedia a rotella ma non è semplice" - }, - "3": { - "then": "Questo luogo non è accessibile con una sedia a rotelle" - } - }, - "question": "Questo luogo è accessibile con una sedia a rotelle?" - }, - "wikipedia": { - "mappings": { - "0": { - "then": "Nessuna pagina Wikipedia è ancora stata collegata" - } - }, - "question": "Qual è l’elemento Wikidata corrispondente?" - }, - "wikipedialink": { - "mappings": { - "0": { - "then": "Non collegato a Wikipedia" - } - }, - "question": "Qual è il corrispondente elemento su Wikipedia?" + "3": { + "then": "I cani sono ammessi e possono andare in giro liberamente" } + }, + "question": "I cani sono ammessi in quest’attività?" + }, + "email": { + "question": "Qual è l'indirizzo email di {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Si trova sotto il livello stradale" + }, + "1": { + "then": "Si trova al pianoterra" + }, + "2": { + "then": "Si trova al pianoterra" + }, + "3": { + "then": "Si trova al primo piano" + } + }, + "question": "A quale piano si trova questo elemento?", + "render": "Si trova al piano numero {level}" + }, + "opening_hours": { + "question": "Quali sono gli orari di apertura di {name}?", + "render": "

Orari di apertura

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "I contanti sono accettati" + }, + "1": { + "then": "I pagamenti con la carta sono accettati" + } + }, + "question": "Quali metodi di pagamento sono accettati qui?" + }, + "phone": { + "question": "Qual è il numero di telefono di {name}?" + }, + "website": { + "question": "Qual è il sito web di {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "Questo luogo è stato adattato per favorire le persone in sedia a rotelle" + }, + "1": { + "then": "Questo luogo è facilmente raggiungibile con una sedia a rotelle" + }, + "2": { + "then": "È possibile raggiungere questo luogo con una sedia a rotella ma non è semplice" + }, + "3": { + "then": "Questo luogo non è accessibile con una sedia a rotelle" + } + }, + "question": "Questo luogo è accessibile con una sedia a rotelle?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "Nessuna pagina Wikipedia è ancora stata collegata" + } + }, + "question": "Qual è l’elemento Wikidata corrispondente?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Non collegato a Wikipedia" + } + }, + "question": "Qual è il corrispondente elemento su Wikipedia?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/ja.json b/langs/shared-questions/ja.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/langs/shared-questions/ja.json @@ -0,0 +1 @@ +{} diff --git a/langs/shared-questions/nb_NO.json b/langs/shared-questions/nb_NO.json index 1dfffd0e3..841617aa2 100644 --- a/langs/shared-questions/nb_NO.json +++ b/langs/shared-questions/nb_NO.json @@ -1,97 +1,97 @@ { - "undefined": { - "description": { - "question": "Er det noe mer som er relevant du ikke kunne opplyse om i tidligere svar? Legg det til her.
Ikke gjenta fakta som allerede er nevnt" + "undefined": { + "description": { + "question": "Er det noe mer som er relevant du ikke kunne opplyse om i tidligere svar? Legg det til her.
Ikke gjenta fakta som allerede er nevnt" + }, + "dog-access": { + "mappings": { + "0": { + "then": "Hunder tillates" }, - "dog-access": { - "mappings": { - "0": { - "then": "Hunder tillates" - }, - "1": { - "then": "Hunder tillates ikke" - }, - "2": { - "then": "Hunder tillates, men de mÃĨ vÃĻre i bÃĨnd" - }, - "3": { - "then": "Hunder tillates og kan gÃĨ fritt" - } - }, - "question": "Tillates hunder i denne forretningen?" + "1": { + "then": "Hunder tillates ikke" }, - "email": { - "question": "Hva er e-postadressen til {name}?" + "2": { + "then": "Hunder tillates, men de mÃĨ vÃĻre i bÃĨnd" }, - "level": { - "mappings": { - "0": { - "then": "Under bakken" - }, - "1": { - "then": "PÃĨ gateplan" - }, - "2": { - "then": "PÃĨ gateplan" - }, - "3": { - "then": "I andre etasje" - } - } - }, - "opening_hours": { - "question": "Hva er ÃĨpningstidene for {name})", - "render": "

Åpningstider

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Kontanter godtas her" - }, - "1": { - "then": "Betalingskort godtas her" - } - }, - "question": "Hvilke betalingsmetoder godtas her?" - }, - "phone": { - "question": "Hva er telefonnummeret til {name}?" - }, - "website": { - "question": "Hva er nettsiden til {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "Dette stedet er spesielt tilpasset rullestolsbrukere" - }, - "1": { - "then": "Dette stedet kan enkelt besøkes med rullestol" - }, - "2": { - "then": "Det er mulig ÃĨ besøke dette stedet i rullestol, men det er ikke lett" - }, - "3": { - "then": "Dette stedet er ikke tilgjengelig for besøk med rullestol" - } - }, - "question": "Er dette stedet tilgjengelig for rullestoler?" - }, - "wikipedia": { - "mappings": { - "0": { - "then": "Ingen Wikipedia-side lenket enda" - } - }, - "question": "Hva er respektivt Wikipedia-element?" - }, - "wikipedialink": { - "mappings": { - "0": { - "then": "Ikke lenket med Wikipedia" - } - }, - "question": "Hva er respektivt element pÃĨ Wikipedia?" + "3": { + "then": "Hunder tillates og kan gÃĨ fritt" } + }, + "question": "Tillates hunder i denne forretningen?" + }, + "email": { + "question": "Hva er e-postadressen til {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Under bakken" + }, + "1": { + "then": "PÃĨ gateplan" + }, + "2": { + "then": "PÃĨ gateplan" + }, + "3": { + "then": "I andre etasje" + } + } + }, + "opening_hours": { + "question": "Hva er ÃĨpningstidene for {name})", + "render": "

Åpningstider

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Kontanter godtas her" + }, + "1": { + "then": "Betalingskort godtas her" + } + }, + "question": "Hvilke betalingsmetoder godtas her?" + }, + "phone": { + "question": "Hva er telefonnummeret til {name}?" + }, + "website": { + "question": "Hva er nettsiden til {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "Dette stedet er spesielt tilpasset rullestolsbrukere" + }, + "1": { + "then": "Dette stedet kan enkelt besøkes med rullestol" + }, + "2": { + "then": "Det er mulig ÃĨ besøke dette stedet i rullestol, men det er ikke lett" + }, + "3": { + "then": "Dette stedet er ikke tilgjengelig for besøk med rullestol" + } + }, + "question": "Er dette stedet tilgjengelig for rullestoler?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "Ingen Wikipedia-side lenket enda" + } + }, + "question": "Hva er respektivt Wikipedia-element?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Ikke lenket med Wikipedia" + } + }, + "question": "Hva er respektivt element pÃĨ Wikipedia?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/nl.json b/langs/shared-questions/nl.json index f3345bcb7..3a712fb58 100644 --- a/langs/shared-questions/nl.json +++ b/langs/shared-questions/nl.json @@ -1,99 +1,116 @@ { - "undefined": { - "description": { - "question": "Zijn er nog andere relevante zaken die je niet in de bovenstaande vragen kwijt kon? Vul ze hier in.
Herhaal geen antwoorden die je reeds gaf" + "undefined": { + "description": { + "question": "Zijn er nog andere relevante zaken die je niet in de bovenstaande vragen kwijt kon? Vul ze hier in.
Herhaal geen antwoorden die je reeds gaf" + }, + "dog-access": { + "mappings": { + "0": { + "then": "honden zijn toegelaten" }, - "dog-access": { - "mappings": { - "0": { - "then": "honden zijn toegelaten" - }, - "1": { - "then": "honden zijn niet toegelaten" - }, - "2": { - "then": "honden zijn enkel aan de leiband welkom" - }, - "3": { - "then": "honden zijn welkom en mogen vrij rondlopen" - } - }, - "question": "Zijn honden toegelaten in deze zaak?" + "1": { + "then": "honden zijn niet toegelaten" }, - "email": { - "question": "Wat is het e-mailadres van {name}?" + "2": { + "then": "honden zijn enkel aan de leiband welkom" }, - "level": { - "mappings": { - "0": { - "then": "Bevindt zich ondergronds" - }, - "1": { - "then": "Bevindt zich op de begane grond" - }, - "2": { - "then": "Bevindt zich gelijkvloers" - }, - "3": { - "then": "Bevindt zich op de eerste verdieping" - } - }, - "question": "Op welke verdieping bevindt dit punt zich?", - "render": "Bevindt zich op de {level}de verdieping" - }, - "opening_hours": { - "question": "Wat zijn de openingstijden van {name}?", - "render": "

Openingstijden

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Cash geld wordt hier aanvaard" - }, - "1": { - "then": "Betalen met bankkaarten kan hier" - } - }, - "question": "Welke betaalmiddelen worden hier geaccepteerd?" - }, - "phone": { - "question": "Wat is het telefoonnummer van {name}?" - }, - "website": { - "question": "Wat is de website van {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "Deze plaats is speciaal aangepast voor gebruikers van een rolstoel" - }, - "1": { - "then": "Deze plaats is vlot bereikbaar met een rolstoel" - }, - "2": { - "then": "Deze plaats is bereikbaar met een rolstoel, maar het is niet makkelijk" - }, - "3": { - "then": "Niet rolstoeltoegankelijk" - } - }, - "question": "Is deze plaats rolstoeltoegankelijk?" - }, - "wikipedia": { - "mappings": { - "0": { - "then": "Er werd nog geen Wikipedia-pagina gekoppeld" - } - }, - "question": "Welk Wikidata-item komt overeen met dit object?" - }, - "wikipedialink": { - "mappings": { - "0": { - "then": "Nog geen Wikipedia-artikel bekend" - } - }, - "question": "Welk Wikipedia-artikel beschrijft dit object?" + "3": { + "then": "honden zijn welkom en mogen vrij rondlopen" } + }, + "question": "Zijn honden toegelaten in deze zaak?" + }, + "email": { + "question": "Wat is het e-mailadres van {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Bevindt zich ondergronds" + }, + "1": { + "then": "Bevindt zich op de begane grond" + }, + "2": { + "then": "Bevindt zich gelijkvloers" + }, + "3": { + "then": "Bevindt zich op de eerste verdieping" + } + }, + "question": "Op welke verdieping bevindt dit punt zich?", + "render": "Bevindt zich op de {level}de verdieping" + }, + "opening_hours": { + "question": "Wat zijn de openingstijden van {name}?", + "render": "

Openingstijden

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Cash geld wordt hier aanvaard" + }, + "1": { + "then": "Betalen met bankkaarten kan hier" + } + }, + "question": "Welke betaalmiddelen worden hier geaccepteerd?" + }, + "phone": { + "question": "Wat is het telefoonnummer van {name}?" + }, + "service:electricity": { + "mappings": { + "0": { + "then": "Er zijn binnen veel stekkers beschikbaar voor klanten die electronica wensen op te laden" + }, + "1": { + "then": "Er zijn binnen enkele stekkers beschikbaar voor klanten die electronica wensen op te laden" + }, + "2": { + "then": "Er zijn binnen geen stekkers beschikbaar, maar electronica opladen kan indien men dit aan het personeel vraagt" + }, + "3": { + "then": "Er zijn binnen geen stekkers beschikbaar" + } + }, + "question": "Zijn er stekkers beschikbaar voor klanten die binnen zitten?" + }, + "website": { + "question": "Wat is de website van {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "Deze plaats is speciaal aangepast voor gebruikers van een rolstoel" + }, + "1": { + "then": "Deze plaats is vlot bereikbaar met een rolstoel" + }, + "2": { + "then": "Deze plaats is bereikbaar met een rolstoel, maar het is niet makkelijk" + }, + "3": { + "then": "Niet rolstoeltoegankelijk" + } + }, + "question": "Is deze plaats rolstoeltoegankelijk?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "Er werd nog geen Wikipedia-pagina gekoppeld" + } + }, + "question": "Welk Wikidata-item komt overeen met dit object?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "Nog geen Wikipedia-artikel bekend" + } + }, + "question": "Welk Wikipedia-artikel beschrijft dit object?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/pl.json b/langs/shared-questions/pl.json index 6715900e9..ae2b3280c 100644 --- a/langs/shared-questions/pl.json +++ b/langs/shared-questions/pl.json @@ -1,38 +1,38 @@ { - "undefined": { - "description": { - "question": "Czy jest jeszcze coś istotnego, czego nie mogłeś podać w poprzednich pytaniach? Dodaj to tutaj.
Nie powtarzaj juÅŧ podanych faktÃŗw" + "undefined": { + "description": { + "question": "Czy jest jeszcze coś istotnego, czego nie mogłeś podać w poprzednich pytaniach? Dodaj to tutaj.
Nie powtarzaj juÅŧ podanych faktÃŗw" + }, + "email": { + "question": "Jaki jest adres e-mail do {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Znajduje się pod ziemią" }, - "email": { - "question": "Jaki jest adres e-mail do {name}?" + "1": { + "then": "Znajduje się na parterze" }, - "level": { - "mappings": { - "0": { - "then": "Znajduje się pod ziemią" - }, - "1": { - "then": "Znajduje się na parterze" - }, - "2": { - "then": "Znajduje się na parterze" - }, - "3": { - "then": "Znajduje się na pierwszym piętrze" - } - }, - "question": "Na jakim poziomie znajduje się ta funkcja?", - "render": "Znajduje się na {level} piętrze" + "2": { + "then": "Znajduje się na parterze" }, - "opening_hours": { - "question": "Jakie są godziny otwarcia {name}?", - "render": "

Godziny otwarcia

{opening_hours_table(opening_hours)}" - }, - "phone": { - "question": "Jaki jest numer telefonu do {name}?" - }, - "website": { - "question": "Jaka jest strona internetowa {name}?" + "3": { + "then": "Znajduje się na pierwszym piętrze" } + }, + "question": "Na jakim poziomie znajduje się ta funkcja?", + "render": "Znajduje się na {level} piętrze" + }, + "opening_hours": { + "question": "Jakie są godziny otwarcia {name}?", + "render": "

Godziny otwarcia

{opening_hours_table(opening_hours)}" + }, + "phone": { + "question": "Jaki jest numer telefonu do {name}?" + }, + "website": { + "question": "Jaka jest strona internetowa {name}?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/pt.json b/langs/shared-questions/pt.json index b1f25a435..ea89c725d 100644 --- a/langs/shared-questions/pt.json +++ b/langs/shared-questions/pt.json @@ -1,99 +1,99 @@ { - "undefined": { - "description": { - "question": "Ainda hÃĄ algo de relevante que nÃŖo tenha podido dar nas perguntas anteriores? Adicione-o aqui.
NÃŖo repita factos jÃĄ declarados" + "undefined": { + "description": { + "question": "Ainda hÃĄ algo de relevante que nÃŖo tenha podido dar nas perguntas anteriores? Adicione-o aqui.
NÃŖo repita factos jÃĄ declarados" + }, + "dog-access": { + "mappings": { + "0": { + "then": "Os cÃŖes sÃŖo permitidos" }, - "dog-access": { - "mappings": { - "0": { - "then": "Os cÃŖes sÃŖo permitidos" - }, - "1": { - "then": "Os cÃŖes nÃŖo sÃŖo permitidos" - }, - "2": { - "then": "Os cÃŖes sÃŖo permitidos, mas tÃĒm de ser presos pela trela" - }, - "3": { - "then": "Os cÃŖes sÃŖo permitidos e podem correr livremente" - } - }, - "question": "Os cÃŖes sÃŖo permitidos neste estabelecimento?" + "1": { + "then": "Os cÃŖes nÃŖo sÃŖo permitidos" }, - "email": { - "question": "Qual Ê o endereço de e-mail de {name}?" + "2": { + "then": "Os cÃŖes sÃŖo permitidos, mas tÃĒm de ser presos pela trela" }, - "level": { - "mappings": { - "0": { - "then": "EstÃĄ no subsolo" - }, - "1": { - "then": "EstÃĄ ao nível do rÊs-do-chÃŖo" - }, - "2": { - "then": "EstÃĄ ao nível do rÊs-do-chÃŖo" - }, - "3": { - "then": "EstÃĄ no primeiro andar" - } - }, - "question": "Em que nível se encontra este elemento?", - "render": "EstÃĄ no {nível}Âē andar" - }, - "opening_hours": { - "question": "Qual Ê o horÃĄrio de funcionamento de {name}?", - "render": "

HorÃĄrio de funcionamento

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Aceitam pagamento com dinheiro aqui" - }, - "1": { - "then": "Aceitam pagamento com cartÃĩes bancÃĄrios aqui" - } - }, - "question": "Que mÊtodos de pagamento sÃŖo aceites aqui?" - }, - "phone": { - "question": "Qual Ê o nÃēmero de telefone de {name}?" - }, - "website": { - "question": "Qual Ê o sítio web de {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "Este lugar estÃĄ especialmente adaptado para utilizadores de cadeira de rodas" - }, - "1": { - "then": "Este lugar Ê de fÃĄcil acesso com uma cadeira de rodas" - }, - "2": { - "then": "É possível chegar a este local em cadeira de rodas, mas nÃŖo Ê fÃĄcil" - }, - "3": { - "then": "Este lugar nÃŖo Ê acessível com uma cadeira de rodas" - } - }, - "question": "Este lugar Ê acessível a utilizadores de cadeiras de rodas?" - }, - "wikipedia": { - "mappings": { - "0": { - "then": "Ainda nÃŖo foi vinculada nenhuma pÃĄgina da WikipÊdia" - } - }, - "question": "Qual Ê a entidade Wikidata correspondente?" - }, - "wikipedialink": { - "mappings": { - "0": { - "then": "NÃŖo vinculado à WikipÊdia" - } - }, - "question": "Qual Ê o item correspondente na WikipÊdia?" + "3": { + "then": "Os cÃŖes sÃŖo permitidos e podem correr livremente" } + }, + "question": "Os cÃŖes sÃŖo permitidos neste estabelecimento?" + }, + "email": { + "question": "Qual Ê o endereço de e-mail de {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "EstÃĄ no subsolo" + }, + "1": { + "then": "EstÃĄ ao nível do rÊs-do-chÃŖo" + }, + "2": { + "then": "EstÃĄ ao nível do rÊs-do-chÃŖo" + }, + "3": { + "then": "EstÃĄ no primeiro andar" + } + }, + "question": "Em que nível se encontra este elemento?", + "render": "EstÃĄ no {level}Âē andar" + }, + "opening_hours": { + "question": "Qual Ê o horÃĄrio de funcionamento de {name}?", + "render": "

HorÃĄrio de funcionamento

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Aceitam pagamento com dinheiro aqui" + }, + "1": { + "then": "Aceitam pagamento com cartÃĩes bancÃĄrios aqui" + } + }, + "question": "Que mÊtodos de pagamento sÃŖo aceites aqui?" + }, + "phone": { + "question": "Qual Ê o nÃēmero de telefone de {name}?" + }, + "website": { + "question": "Qual Ê o sítio web de {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "Este lugar estÃĄ especialmente adaptado para utilizadores de cadeira de rodas" + }, + "1": { + "then": "Este lugar Ê de fÃĄcil acesso com uma cadeira de rodas" + }, + "2": { + "then": "É possível chegar a este local em cadeira de rodas, mas nÃŖo Ê fÃĄcil" + }, + "3": { + "then": "Este lugar nÃŖo Ê acessível com uma cadeira de rodas" + } + }, + "question": "Este lugar Ê acessível a utilizadores de cadeiras de rodas?" + }, + "wikipedia": { + "mappings": { + "0": { + "then": "Ainda nÃŖo foi vinculada nenhuma pÃĄgina da WikipÊdia" + } + }, + "question": "Qual Ê a entidade Wikidata correspondente?" + }, + "wikipedialink": { + "mappings": { + "0": { + "then": "NÃŖo vinculado à WikipÊdia" + } + }, + "question": "Qual Ê o item correspondente na WikipÊdia?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/pt_BR.json b/langs/shared-questions/pt_BR.json index 6599af377..1f47d793c 100644 --- a/langs/shared-questions/pt_BR.json +++ b/langs/shared-questions/pt_BR.json @@ -1,66 +1,66 @@ { - "undefined": { - "description": { - "question": "Ainda hÃĄ algo de relevante que nÃŖo pôde dar nas perguntas anteriores? Adicione aqui.
NÃŖo repita fatos jÃĄ declarados" + "undefined": { + "description": { + "question": "Ainda hÃĄ algo de relevante que nÃŖo pôde dar nas perguntas anteriores? Adicione aqui.
NÃŖo repita fatos jÃĄ declarados" + }, + "email": { + "question": "Qual o endereço de e-mail de {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Localizado no subsolo" }, - "email": { - "question": "Qual o endereço de e-mail de {name}?" + "1": { + "then": "Localizado no tÊrreo" }, - "level": { - "mappings": { - "0": { - "then": "Localizado no subsolo" - }, - "1": { - "then": "Localizado no tÊrreo" - }, - "2": { - "then": "Localizado no tÊrreo" - }, - "3": { - "then": "Localizado no primeiro andar" - } - }, - "question": "Em que nível esse recurso estÃĄ localizado?", - "render": "Localizado no {level}o andar" + "2": { + "then": "Localizado no tÊrreo" }, - "opening_hours": { - "question": "Qual o horÃĄrio de funcionamento de {name}?", - "render": "

HorÃĄrio de funcionamento

{opening_hours_table(opening_hours)}" - }, - "payment-options": { - "mappings": { - "0": { - "then": "Dinheiro Ê aceito aqui" - }, - "1": { - "then": "CartÃĩes de pagamento sÃŖo aceitos aqui" - } - }, - "question": "Quais mÊtodos de pagamento sÃŖo aceitos aqui?" - }, - "phone": { - "question": "Qual o nÃēmero de telefone de {name}?" - }, - "website": { - "question": "Qual o site de {name}?" - }, - "wheelchair-access": { - "mappings": { - "0": { - "then": "Este lugar Ê especialmente adaptado para usuÃĄrios de cadeira de rodas" - }, - "1": { - "then": "Este lugar Ê facilmente acessível com uma cadeira de rodas" - }, - "2": { - "then": "É possível chegar a esse local em uma cadeira de rodas, mas nÃŖo Ê fÃĄcil" - }, - "3": { - "then": "Este lugar nÃŖo Ê alcanÃ§ÃĄvel com uma cadeira de rodas" - } - }, - "question": "Este lugar Ê acessível com uma cadeira de rodas?" + "3": { + "then": "Localizado no primeiro andar" } + }, + "question": "Em que nível esse recurso estÃĄ localizado?", + "render": "Localizado no {level}o andar" + }, + "opening_hours": { + "question": "Qual o horÃĄrio de funcionamento de {name}?", + "render": "

HorÃĄrio de funcionamento

{opening_hours_table(opening_hours)}" + }, + "payment-options": { + "mappings": { + "0": { + "then": "Dinheiro Ê aceito aqui" + }, + "1": { + "then": "CartÃĩes de pagamento sÃŖo aceitos aqui" + } + }, + "question": "Quais mÊtodos de pagamento sÃŖo aceitos aqui?" + }, + "phone": { + "question": "Qual o nÃēmero de telefone de {name}?" + }, + "website": { + "question": "Qual o site de {name}?" + }, + "wheelchair-access": { + "mappings": { + "0": { + "then": "Este lugar Ê especialmente adaptado para usuÃĄrios de cadeira de rodas" + }, + "1": { + "then": "Este lugar Ê facilmente acessível com uma cadeira de rodas" + }, + "2": { + "then": "É possível chegar a esse local em uma cadeira de rodas, mas nÃŖo Ê fÃĄcil" + }, + "3": { + "then": "Este lugar nÃŖo Ê alcanÃ§ÃĄvel com uma cadeira de rodas" + } + }, + "question": "Este lugar Ê acessível com uma cadeira de rodas?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/ru.json b/langs/shared-questions/ru.json index ace53f5cd..441b15343 100644 --- a/langs/shared-questions/ru.json +++ b/langs/shared-questions/ru.json @@ -1,38 +1,38 @@ { - "undefined": { - "description": { - "question": "ЕŅŅ‚ŅŒ Đģи ĐĩŅ‰Ņ‘ Ņ‡Ņ‚Đž-Ņ‚Đž ваĐļĐŊĐžĐĩ, Đž Ņ‡Ņ‘Đŧ вŅ‹ ĐŊĐĩ ŅĐŧĐžĐŗĐģи Ņ€Đ°ŅŅĐēаСаŅ‚ŅŒ в ĐŋŅ€ĐĩĐ´Ņ‹Đ´ŅƒŅ‰Đ¸Ņ… вОĐŋŅ€ĐžŅĐ°Ņ…? ДобавŅŒŅ‚Đĩ ŅŅ‚Đž СдĐĩŅŅŒ.
НĐĩ ĐŋОвŅ‚ĐžŅ€ŅĐšŅ‚Đĩ ŅƒĐļĐĩ иСĐģĐžĐļĐĩĐŊĐŊŅ‹Đĩ Ņ„Đ°ĐēŅ‚Ņ‹" + "undefined": { + "description": { + "question": "ЕŅŅ‚ŅŒ Đģи ĐĩŅ‰Ņ‘ Ņ‡Ņ‚Đž-Ņ‚Đž ваĐļĐŊĐžĐĩ, Đž Ņ‡Ņ‘Đŧ вŅ‹ ĐŊĐĩ ŅĐŧĐžĐŗĐģи Ņ€Đ°ŅŅĐēаСаŅ‚ŅŒ в ĐŋŅ€ĐĩĐ´Ņ‹Đ´ŅƒŅ‰Đ¸Ņ… вОĐŋŅ€ĐžŅĐ°Ņ…? ДобавŅŒŅ‚Đĩ ŅŅ‚Đž СдĐĩŅŅŒ.
НĐĩ ĐŋОвŅ‚ĐžŅ€ŅĐšŅ‚Đĩ ŅƒĐļĐĩ иСĐģĐžĐļĐĩĐŊĐŊŅ‹Đĩ Ņ„Đ°ĐēŅ‚Ņ‹" + }, + "email": { + "question": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŋОд СĐĩĐŧĐģĐĩĐš" }, - "email": { - "question": "КаĐēОК Đ°Đ´Ņ€ĐĩŅ ŅĐģĐĩĐēŅ‚Ņ€ĐžĐŊĐŊОК ĐŋĐžŅ‡Ņ‚Ņ‹ Ņƒ {name}?" + "1": { + "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° ĐŋĐĩŅ€Đ˛ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" }, - "level": { - "mappings": { - "0": { - "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŋОд СĐĩĐŧĐģĐĩĐš" - }, - "1": { - "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° ĐŋĐĩŅ€Đ˛ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" - }, - "2": { - "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° ĐŋĐĩŅ€Đ˛ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" - }, - "3": { - "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° ĐŋĐĩŅ€Đ˛ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" - } - }, - "question": "На ĐēĐ°ĐēĐžĐŧ ŅŅ‚Đ°ĐļĐĩ ĐŊĐ°Ņ…ОдиŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ОйŅŠĐĩĐēŅ‚?", - "render": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° {level}ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" + "2": { + "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° ĐŋĐĩŅ€Đ˛ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" }, - "opening_hours": { - "question": "КаĐēĐžĐĩ вŅ€ĐĩĐŧŅ Ņ€Đ°ĐąĐžŅ‚Ņ‹ Ņƒ {name}?", - "render": "

ЧаŅŅ‹ Ņ€Đ°ĐąĐžŅ‚Ņ‹

{opening_hours_table(opening_hours)}" - }, - "phone": { - "question": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?" - }, - "website": { - "question": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?" + "3": { + "then": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° ĐŋĐĩŅ€Đ˛ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" } + }, + "question": "На ĐēĐ°ĐēĐžĐŧ ŅŅ‚Đ°ĐļĐĩ ĐŊĐ°Ņ…ОдиŅ‚ŅŅ ŅŅ‚ĐžŅ‚ ОйŅŠĐĩĐēŅ‚?", + "render": "Đ Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž ĐŊĐ° {level}ĐžĐŧ ŅŅ‚Đ°ĐļĐĩ" + }, + "opening_hours": { + "question": "КаĐēĐžĐĩ вŅ€ĐĩĐŧŅ Ņ€Đ°ĐąĐžŅ‚Ņ‹ Ņƒ {name}?", + "render": "

ЧаŅŅ‹ Ņ€Đ°ĐąĐžŅ‚Ņ‹

{opening_hours_table(opening_hours)}" + }, + "phone": { + "question": "КаĐēОК ĐŊĐžĐŧĐĩŅ€ Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐ° Ņƒ {name}?" + }, + "website": { + "question": "КаĐēОК ŅĐ°ĐšŅ‚ Ņƒ {name}?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/sv.json b/langs/shared-questions/sv.json index 8b19944e4..b4c946d6a 100644 --- a/langs/shared-questions/sv.json +++ b/langs/shared-questions/sv.json @@ -1,34 +1,34 @@ { - "undefined": { - "email": { - "question": "Vad är e-postadressen till {name}?" + "undefined": { + "email": { + "question": "Vad är e-postadressen till {name}?" + }, + "level": { + "mappings": { + "0": { + "then": "Ligger under jorden" }, - "level": { - "mappings": { - "0": { - "then": "Ligger under jorden" - }, - "1": { - "then": "Ligger pÃĨ bottenvÃĨningen" - }, - "2": { - "then": "Ligger pÃĨ bottenvÃĨningen" - }, - "3": { - "then": "Ligger pÃĨ fÃļrsta vÃĨningen" - } - }, - "render": "Ligger pÃĨ {level}:e vÃĨningen" + "1": { + "then": "Ligger pÃĨ bottenvÃĨningen" }, - "opening_hours": { - "question": "Vilka är Ãļppettiderna fÃļr {name}?", - "render": "

Öppettider

{opening_hours_table(opening_hours)}" + "2": { + "then": "Ligger pÃĨ bottenvÃĨningen" }, - "phone": { - "question": "Vad är telefonnumret till {name}?" - }, - "website": { - "question": "Vad är webbplatsen fÃļr {name}?" + "3": { + "then": "Ligger pÃĨ fÃļrsta vÃĨningen" } + }, + "render": "Ligger pÃĨ {level}:e vÃĨningen" + }, + "opening_hours": { + "question": "Vilka är Ãļppettiderna fÃļr {name}?", + "render": "

Öppettider

{opening_hours_table(opening_hours)}" + }, + "phone": { + "question": "Vad är telefonnumret till {name}?" + }, + "website": { + "question": "Vad är webbplatsen fÃļr {name}?" } + } } \ No newline at end of file diff --git a/langs/shared-questions/zh_Hant.json b/langs/shared-questions/zh_Hant.json index eb0b0c8c8..cb2f72c44 100644 --- a/langs/shared-questions/zh_Hant.json +++ b/langs/shared-questions/zh_Hant.json @@ -1,38 +1,38 @@ { - "undefined": { - "description": { - "question": "有äģ€éēŧį›¸é—œįš„čŗ‡č¨ŠäŊ į„Ąæŗ•åœ¨å…ˆå‰įš„å•éĄŒå›žæ‡‰įš„å—ŽīŧŸčĢ‹åŠ åœ¨é€™é‚Šå§ã€‚
不čĻé‡čĻ†į­”čĻ†åˇ˛įļ“įŸĨ道įš„äē‹æƒ…" + "undefined": { + "description": { + "question": "有äģ€éēŧį›¸é—œįš„čŗ‡č¨ŠäŊ į„Ąæŗ•åœ¨å…ˆå‰įš„å•éĄŒå›žæ‡‰įš„å—ŽīŧŸčĢ‹åŠ åœ¨é€™é‚Šå§ã€‚
不čĻé‡čĻ†į­”čĻ†åˇ˛įļ“įŸĨ道įš„äē‹æƒ…" + }, + "email": { + "question": "{name} įš„é›ģ子éƒĩäģļ地址是äģ€éēŧīŧŸ" + }, + "level": { + "mappings": { + "0": { + "then": "äŊæ–ŧ地下" }, - "email": { - "question": "{name} įš„é›ģ子éƒĩäģļ地址是äģ€éēŧīŧŸ" + "1": { + "then": "äŊæ–ŧ 1 樓" }, - "level": { - "mappings": { - "0": { - "then": "äŊæ–ŧ地下" - }, - "1": { - "then": "äŊæ–ŧ 1 樓" - }, - "2": { - "then": "äŊæ–ŧ 1 樓" - }, - "3": { - "then": "äŊæ–ŧ 2 樓" - } - }, - "question": "此圖åžŊäŊæ–ŧå“Ēå€‹æ¨“åą¤īŧåą¤į´šīŧŸ", - "render": "äŊæ–ŧ {level} 樓" + "2": { + "then": "äŊæ–ŧ 1 樓" }, - "opening_hours": { - "question": "{name} įš„開攞時間是äģ€éēŧīŧŸ", - "render": "

開攞時間

{opening_hours_table(opening_hours)}" - }, - "phone": { - "question": "{name} įš„é›ģ話號įĸŧ是äģ€éēŧīŧŸ" - }, - "website": { - "question": "{name} įļ˛å€æ˜¯äģ€éēŧīŧŸ" + "3": { + "then": "äŊæ–ŧ 2 樓" } + }, + "question": "此圖åžŊäŊæ–ŧå“Ēå€‹æ¨“åą¤īŧåą¤į´šīŧŸ", + "render": "äŊæ–ŧ {level} 樓" + }, + "opening_hours": { + "question": "{name} įš„開攞時間是äģ€éēŧīŧŸ", + "render": "

開攞時間

{opening_hours_table(opening_hours)}" + }, + "phone": { + "question": "{name} įš„é›ģ話號įĸŧ是äģ€éēŧīŧŸ" + }, + "website": { + "question": "{name} įļ˛å€æ˜¯äģ€éēŧīŧŸ" } + } } \ No newline at end of file diff --git a/langs/sv.json b/langs/sv.json index a3dd6a81f..842df07e7 100644 --- a/langs/sv.json +++ b/langs/sv.json @@ -1,63 +1,63 @@ { - "general": { - "opening_hours": { - "ph_open": "Ãļppet", - "ph_closed": "stängt", - "ph_not_known": " ", - "open_24_7": "Öppet dygnet runt", - "closed_permanently": "Stängt tills vidare", - "closed_until": "Stängt till", - "openTill": "till", - "opensAt": "frÃĨn", - "open_during_ph": "Om det är en rÃļd dag är det här stället", - "error_loading": "Fel: kunde inte visualisera Ãļppettiderna." - }, - "weekdays": { - "sunday": "SÃļndag", - "saturday": "LÃļrdag", - "friday": "Fredag", - "thursday": "Torsdag", - "wednesday": "Onsdag", - "tuesday": "Tisdag", - "monday": "MÃĨndag", - "abbreviations": { - "friday": "Fre", - "wednesday": "Ons", - "tuesday": "Tis", - "thursday": "Tor", - "sunday": "SÃļn", - "saturday": "LÃļr", - "monday": "MÃĨn" - } - }, - "cancel": "Avbryt" + "general": { + "opening_hours": { + "ph_open": "Ãļppet", + "ph_closed": "stängt", + "ph_not_known": " ", + "open_24_7": "Öppet dygnet runt", + "closed_permanently": "Stängt tills vidare", + "closed_until": "Stängt till", + "openTill": "till", + "opensAt": "frÃĨn", + "open_during_ph": "Om det är en rÃļd dag är det här stället", + "error_loading": "Fel: kunde inte visualisera Ãļppettiderna." }, - "centerMessage": { - "ready": "Klar!", - "zoomIn": "Zooma in fÃļr att visa eller redigera data", - "loadingData": "Laddar dataâ€Ļ", - "retrying": "Det gick inte att ladda in data. FÃļrsÃļker igen om {count} sekunderâ€Ļ" + "weekdays": { + "sunday": "SÃļndag", + "saturday": "LÃļrdag", + "friday": "Fredag", + "thursday": "Torsdag", + "wednesday": "Onsdag", + "tuesday": "Tisdag", + "monday": "MÃĨndag", + "abbreviations": { + "friday": "Fre", + "wednesday": "Ons", + "tuesday": "Tis", + "thursday": "Tor", + "sunday": "SÃļn", + "saturday": "LÃļr", + "monday": "MÃĨn" + } }, - "image": { - "isDeleted": "Borttagen", - "doDelete": "Ta bort bild", - "dontDelete": "Avbryt", - "uploadDone": "Din bild har lagts till. Tack fÃļr att du bidrar!", - "respectPrivacy": "Fotografera inte personer eller registreringsskyltar. Ladda inte upp frÃĨn Google Maps, Google Streetview eller andra upphovsrättsskyddade källor.", - "uploadFailed": "Misslyckades med att ladda upp din bild. Är du säker pÃĨ att du är uppkopplad och tredjeparts-API:er tillÃĨts? Brave eller uMatrix kanske blockerar dem.", - "ccb": "under CC-BY-licensen", - "ccbs": "under CC-BY-SA-licensen", - "cco": "med fri användning (public domain)", - "willBePublished": "Din bild kommer att publiceras: ", - "pleaseLogin": "Logga in fÃļr att lägga till en bild", - "uploadingMultiple": "Laddar upp {count} bilderâ€Ļ", - "uploadingPicture": "Laddar upp din bildâ€Ļ", - "addPicture": "Lägg till bild" - }, - "split": { - "cancel": "Avbryt" - }, - "delete": { - "cancel": "Avbryt" - } + "cancel": "Avbryt" + }, + "centerMessage": { + "ready": "Klar!", + "zoomIn": "Zooma in fÃļr att visa eller redigera data", + "loadingData": "Laddar dataâ€Ļ", + "retrying": "Det gick inte att ladda in data. FÃļrsÃļker igen om {count} sekunderâ€Ļ" + }, + "image": { + "isDeleted": "Borttagen", + "doDelete": "Ta bort bild", + "dontDelete": "Avbryt", + "uploadDone": "Din bild har lagts till. Tack fÃļr att du bidrar!", + "respectPrivacy": "Fotografera inte personer eller registreringsskyltar. Ladda inte upp frÃĨn Google Maps, Google Streetview eller andra upphovsrättsskyddade källor.", + "uploadFailed": "Misslyckades med att ladda upp din bild. Är du säker pÃĨ att du är uppkopplad och tredjeparts-API:er tillÃĨts? Brave eller uMatrix kanske blockerar dem.", + "ccb": "under CC-BY-licensen", + "ccbs": "under CC-BY-SA-licensen", + "cco": "med fri användning (public domain)", + "willBePublished": "Din bild kommer att publiceras: ", + "pleaseLogin": "Logga in fÃļr att lägga till en bild", + "uploadingMultiple": "Laddar upp {count} bilderâ€Ļ", + "uploadingPicture": "Laddar upp din bildâ€Ļ", + "addPicture": "Lägg till bild" + }, + "split": { + "cancel": "Avbryt" + }, + "delete": { + "cancel": "Avbryt" + } } diff --git a/langs/themes/ca.json b/langs/themes/ca.json index 475988277..74dfc60b8 100644 --- a/langs/themes/ca.json +++ b/langs/themes/ca.json @@ -1,49 +1,49 @@ { - "aed": { - "description": "En aquest mapa , qualsevol pot trobar i marcar els desfibril¡ladors externs automàtics mÊs propers", - "title": "Mapa obert de desfibril¡ladors (DEA)" - }, - "climbing": { - "layers": { - "0": { - "tagRenderings": { - "climbing_club-name": { - "render": "{name}" - } - } - }, - "1": { - "tagRenderings": { - "name": { - "render": "{name}" - } - } - }, - "2": { - "tagRenderings": { - "Name": { - "render": "{name}" - } - } - }, - "3": { - "tagRenderings": { - "name": { - "render": "{name}" - } - } - }, - "4": { - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - } - } - } + "aed": { + "description": "En aquest mapa , qualsevol pot trobar i marcar els desfibril¡ladors externs automàtics mÊs propers", + "title": "Mapa obert de desfibril¡ladors (DEA)" + }, + "climbing": { + "layers": { + "0": { + "tagRenderings": { + "climbing_club-name": { + "render": "{name}" + } } - }, - "personal": { - "description": "Crea una interfície basada en totes les capes disponibles de totes les interfícies", - "title": "Interfície personal" + }, + "1": { + "tagRenderings": { + "name": { + "render": "{name}" + } + } + }, + "2": { + "tagRenderings": { + "Name": { + "render": "{name}" + } + } + }, + "3": { + "tagRenderings": { + "name": { + "render": "{name}" + } + } + }, + "4": { + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + } + } + } } + }, + "personal": { + "description": "Crea una interfície basada en totes les capes disponibles de totes les interfícies", + "title": "Interfície personal" + } } \ No newline at end of file diff --git a/langs/themes/de.json b/langs/themes/de.json index b5fcf7742..910c87b74 100644 --- a/langs/themes/de.json +++ b/langs/themes/de.json @@ -1,1154 +1,1158 @@ { - "aed": { - "description": "Auf dieser Karte kann man nahe gelegene Defibrillatoren finden und markieren", - "title": "AED-Karte Ãļffnen" - }, - "artwork": { - "description": "Willkommen bei der Freien Kunst-Karte, einer Karte mit Statuen, BÃŧsten, Grafitti, ... auf der ganzen Welt", - "title": "Freie Kunstwerk-Karte" - }, - "benches": { - "description": "Diese Karte zeigt alle Sitzbänke, die in OpenStreetMap eingetragen sind: Einzeln stehende Bänke und Bänke, die zu Haltestellen oder Unterständen gehÃļren. Mit einem OpenStreetMap-Account kÃļnnen Sie neue Bänke eintragen oder Detailinformationen existierender Bänke bearbeiten.", - "shortDescription": "Eine Karte aller Sitzbänke", - "title": "Sitzbänke" - }, - "bicyclelib": { - "description": "Fahrradbibliotheken sind Orte, um Fahrräder auszuleihen, oft gegen eine geringe GebÃŧhr. Ein wichtiger Anwendungsfall sind Fahrradbibliotheken fÃŧr Kinder, die es ihnen ermÃļglichen, auf ein grÃļßeres Fahrrad umzusteigen, wenn sie aus ihrem aktuellen Fahrrad herausgewachsen sind", - "title": "Fahrradbibliothek" - }, - "binoculars": { - "description": "Eine Karte mit festinstallierten Ferngläsern. Man findet sie typischerweise an touristischen Orten, Aussichtspunkten, auf AussichtstÃŧrmen oder gelegentlich in einem Naturschutzgebiet.", - "shortDescription": "Eine Karte mit festinstallierten Ferngläsern", - "title": "Ferngläser" - }, - "bookcases": { - "description": "BÃŧcherschränke sind alte Schaltschränke, Telefonzellen oder andere Einrichtungen, zur Aufbewahrung von BÃŧchern. Jeder kann BÃŧcher abstellen oder mitnehmen. Die Karte zielt darauf ab, alle Orte mit BÃŧcherschränken zu sammeln. Sie kÃļnnen neue BÃŧcherschränke in der Nähe entdecken und mit einem kostenlosen OpenStreetMap-Konto schnell Ihre LieblingsbÃŧcherschränke hinzufÃŧgen.", - "title": "Öffentliche BÃŧcherschränke Karte" - }, - "cafes_and_pubs": { - "title": "CafÊs und Kneipen" - }, - "campersite": { - "description": "Auf dieser Seite finden Sie alle offiziellen Wohnmobilstellplätze und Orte zur Entsorgung von Schmutzwasser. Sie kÃļnnen Details Ãŧber die angebotenen Dienstleistungen und die Kosten hinzufÃŧgen. FÃŧgen Sie Bilder und Bewertungen hinzu. Dies ist eine Webseite und eine Webapp. Die Daten werden in OpenStreetMap gespeichert, so dass sie fÃŧr immer kostenlos sind und von jeder App weiterverwendet werden kÃļnnen.", - "layers": { + "aed": { + "description": "Auf dieser Karte kann man nahe gelegene Defibrillatoren finden und markieren", + "title": "AED-Karte Ãļffnen" + }, + "artwork": { + "description": "Willkommen bei der Freien Kunst-Karte, einer Karte mit Statuen, BÃŧsten, Grafitti, ... auf der ganzen Welt", + "title": "Freie Kunstwerk-Karte" + }, + "benches": { + "description": "Diese Karte zeigt alle Sitzbänke, die in OpenStreetMap eingetragen sind: Einzeln stehende Bänke und Bänke, die zu Haltestellen oder Unterständen gehÃļren. Mit einem OpenStreetMap-Account kÃļnnen Sie neue Bänke eintragen oder Detailinformationen existierender Bänke bearbeiten.", + "shortDescription": "Eine Karte aller Sitzbänke", + "title": "Sitzbänke" + }, + "bicyclelib": { + "description": "Fahrradbibliotheken sind Orte, um Fahrräder auszuleihen, oft gegen eine geringe GebÃŧhr. Ein wichtiger Anwendungsfall sind Fahrradbibliotheken fÃŧr Kinder, die es ihnen ermÃļglichen, auf ein grÃļßeres Fahrrad umzusteigen, wenn sie aus ihrem aktuellen Fahrrad herausgewachsen sind", + "title": "Fahrradbibliothek" + }, + "binoculars": { + "description": "Eine Karte mit festinstallierten Ferngläsern. Man findet sie typischerweise an touristischen Orten, Aussichtspunkten, auf AussichtstÃŧrmen oder gelegentlich in einem Naturschutzgebiet.", + "shortDescription": "Eine Karte mit festinstallierten Ferngläsern", + "title": "Ferngläser" + }, + "bookcases": { + "description": "BÃŧcherschränke sind alte Schaltschränke, Telefonzellen oder andere Einrichtungen, zur Aufbewahrung von BÃŧchern. Jeder kann BÃŧcher abstellen oder mitnehmen. Die Karte zielt darauf ab, alle Orte mit BÃŧcherschränken zu sammeln. Sie kÃļnnen neue BÃŧcherschränke in der Nähe entdecken und mit einem kostenlosen OpenStreetMap-Konto schnell Ihre LieblingsbÃŧcherschränke hinzufÃŧgen.", + "title": "Öffentliche BÃŧcherschränke Karte" + }, + "cafes_and_pubs": { + "title": "CafÊs und Kneipen" + }, + "campersite": { + "description": "Auf dieser Seite finden Sie alle offiziellen Wohnmobilstellplätze und Orte zur Entsorgung von Schmutzwasser. Sie kÃļnnen Details Ãŧber die angebotenen Dienstleistungen und die Kosten hinzufÃŧgen. FÃŧgen Sie Bilder und Bewertungen hinzu. Dies ist eine Webseite und eine Webapp. Die Daten werden in OpenStreetMap gespeichert, so dass sie fÃŧr immer kostenlos sind und von jeder App weiterverwendet werden kÃļnnen.", + "layers": { + "0": { + "description": "Wohnmobilstellplätze", + "name": "Wohnmobilstellplätze", + "presets": { + "0": { + "description": "FÃŧgen Sie einen neuen offiziellen Wohnmobilstellplatz hinzu. Dies sind ausgewiesene Plätze, an denen Sie in Ihrem Wohnmobil Ãŧbernachten kÃļnnen. Sie kÃļnnen wie ein richtiger Campingplatz oder nur wie ein Parkplatz aussehen. MÃļglicherweise sind sie gar nicht ausgeschildert, sondern nur in einem Gemeindebeschluss festgelegt. Ein normaler Parkplatz fÃŧr Wohnmobile, auf dem Ãŧbernachten nicht zulässig ist, ist kein Wohnmobilstellplatz. ", + "title": "Wohnmobilstellplatz" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "Wie viele Wohnmobile kÃļnnen hier parken? (Überspringen, wenn es keine offensichtliche Anzahl von Stellplätzen oder erlaubten Fahrzeugen gibt)", + "render": "{capacity} Wohnmobile kÃļnnen diesen Platz gleichzeitig nutzen" + }, + "caravansites-charge": { + "question": "Wie hoch ist die GebÃŧhr an diesem Ort?", + "render": "Die GebÃŧhr beträgt {charge}" + }, + "caravansites-description": { + "question": "MÃļchten Sie eine allgemeine Beschreibung fÃŧr diesen Ort hinzufÃŧgen? (Bitte wiederholen Sie keine Informationen, die Sie bereits zuvor angegeben haben. Bitte bleiben Sie objektiv - Meinungen gehen in die Bewertungen ein)", + "render": "Mehr Details Ãŧber diesen Ort: {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "Sie mÃŧssen fÃŧr die Nutzung bezahlen" + }, + "1": { + "then": "Nutzung kostenlos" + } + }, + "question": "Wird hier eine GebÃŧhr erhoben?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "Internetzugang ist vorhanden" + }, + "1": { + "then": "Internetzugang ist vorhanden" + }, + "2": { + "then": "Kein Internetzugang vorhanden" + } + }, + "question": "Ist an diesem Ort ein Internetzugang vorhanden?" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "Der Internetzugang ist gebÃŧhrenpflichtig" + }, + "1": { + "then": "Der Internetzugang ist kostenlos" + } + }, + "question": "Ist der Internetzugang gebÃŧhrenpflichtig?" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "Ja, es gibt einige Plätze fÃŧr Langzeitmieten, aber Sie kÃļnnen auch tageweise bleiben" + }, + "1": { + "then": "Nein, hier gibt es keine Dauergäste" + }, + "2": { + "then": "Es sind nur Plätze fÃŧr Dauercamper vorhanden (wenn Sie diese Antwort auswählen, wird dieser Ort wird von der Karte verschwinden)" + } + }, + "question": "Gibt es a diesem Ort Plätze fÃŧr Dauercamper?" + }, + "caravansites-name": { + "question": "Wie heißt dieser Ort?", + "render": "Dieser Ort heißt {name}" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "Dieser Ort hat eine sanitäre Entsorgungsstation" + }, + "1": { + "then": "Dieser Ort hat keine sanitäre Entsorgungsstation" + } + }, + "question": "Hat dieser Ort eine sanitäre Entsorgungsstation?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "Dieser Ort verfÃŧgt Ãŧber Toiletten" + }, + "1": { + "then": "Dieser Ort verfÃŧgt nicht Ãŧber Toiletten" + } + }, + "question": "VerfÃŧgt dieser Ort Ãŧber Toiletten?" + }, + "caravansites-website": { + "question": "Hat dieser Ort eine Webseite?", + "render": "Offizielle Webseite: {website}" + } + }, + "title": { + "mappings": { "0": { - "description": "Wohnmobilstellplätze", - "name": "Wohnmobilstellplätze", - "presets": { - "0": { - "description": "FÃŧgen Sie einen neuen offiziellen Wohnmobilstellplatz hinzu. Dies sind ausgewiesene Plätze, an denen Sie in Ihrem Wohnmobil Ãŧbernachten kÃļnnen. Sie kÃļnnen wie ein richtiger Campingplatz oder nur wie ein Parkplatz aussehen. MÃļglicherweise sind sie gar nicht ausgeschildert, sondern nur in einem Gemeindebeschluss festgelegt. Ein normaler Parkplatz fÃŧr Wohnmobile, auf dem Ãŧbernachten nicht zulässig ist, ist kein Wohnmobilstellplatz. ", - "title": "Wohnmobilstellplatz" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "Wie viele Wohnmobile kÃļnnen hier parken? (Überspringen, wenn es keine offensichtliche Anzahl von Stellplätzen oder erlaubten Fahrzeugen gibt)", - "render": "{capacity} Wohnmobile kÃļnnen diesen Platz gleichzeitig nutzen" - }, - "caravansites-charge": { - "question": "Wie hoch ist die GebÃŧhr an diesem Ort?", - "render": "Die GebÃŧhr beträgt {charge}" - }, - "caravansites-description": { - "question": "MÃļchten Sie eine allgemeine Beschreibung fÃŧr diesen Ort hinzufÃŧgen? (Bitte wiederholen Sie keine Informationen, die Sie bereits zuvor angegeben haben. Bitte bleiben Sie objektiv - Meinungen gehen in die Bewertungen ein)", - "render": "Mehr Details Ãŧber diesen Ort: {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "Sie mÃŧssen fÃŧr die Nutzung bezahlen" - }, - "1": { - "then": "Nutzung kostenlos" - } - }, - "question": "Wird hier eine GebÃŧhr erhoben?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "Internetzugang ist vorhanden" - }, - "1": { - "then": "Internetzugang ist vorhanden" - }, - "2": { - "then": "Kein Internetzugang vorhanden" - } - }, - "question": "Ist an diesem Ort ein Internetzugang vorhanden?" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "Der Internetzugang ist gebÃŧhrenpflichtig" - }, - "1": { - "then": "Der Internetzugang ist kostenlos" - } - }, - "question": "Ist der Internetzugang gebÃŧhrenpflichtig?" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "Ja, es gibt einige Plätze fÃŧr Langzeitmieten, aber Sie kÃļnnen auch tageweise bleiben" - }, - "1": { - "then": "Nein, hier gibt es keine Dauergäste" - }, - "2": { - "then": "Es sind nur Plätze fÃŧr Dauercamper vorhanden (wenn Sie diese Antwort auswählen, wird dieser Ort wird von der Karte verschwinden)" - } - }, - "question": "Gibt es a diesem Ort Plätze fÃŧr Dauercamper?" - }, - "caravansites-name": { - "question": "Wie heißt dieser Ort?", - "render": "Dieser Ort heißt {name}" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "Dieser Ort hat eine sanitäre Entsorgungsstation" - }, - "1": { - "then": "Dieser Ort hat keine sanitäre Entsorgungsstation" - } - }, - "question": "Hat dieser Ort eine sanitäre Entsorgungsstation?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "Dieser Ort verfÃŧgt Ãŧber Toiletten" - }, - "1": { - "then": "Dieser Ort verfÃŧgt nicht Ãŧber Toiletten" - } - }, - "question": "VerfÃŧgt dieser Ort Ãŧber Toiletten?" - }, - "caravansites-website": { - "question": "Hat dieser Ort eine Webseite?", - "render": "Offizielle Webseite: {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Unbenannter Wohnmobilstellplatz" - } - }, - "render": "Wohnmobilstellplatz {name}" - } - }, - "1": { - "description": "Sanitäre Entsorgungsstationen", - "name": "Sanitäre Entsorgungsstationen", - "presets": { - "0": { - "description": "FÃŧgen Sie eine neue sanitäre Entsorgungsstation hinzu. Hier kÃļnnen Camper Abwasser oder chemischen Toilettenabfälle entsorgen. Oft gibt es auch Trinkwasser und Strom.", - "title": "Sanitäre Entsorgungsstation" - } - }, - "tagRenderings": { - "dumpstations-access": { - "mappings": { - "0": { - "then": "Sie benÃļtigen einen SchlÃŧssel/Code zur Benutzung" - }, - "1": { - "then": "Sie mÃŧssen Kunde des Campingplatzes sein, um diesen Ort nutzen zu kÃļnnen" - }, - "2": { - "then": "Jeder darf diese sanitäre Entsorgungsstation nutzen" - }, - "3": { - "then": "Jeder darf diese sanitäre Entsorgungsstation nutzen" - } - }, - "question": "Wer darf diese sanitäre Entsorgungsstation nutzen?" - }, - "dumpstations-charge": { - "question": "Wie hoch ist die GebÃŧhr an diesem Ort?", - "render": "Die GebÃŧhr beträgt {charge}" - }, - "dumpstations-chemical-waste": { - "mappings": { - "0": { - "then": "Hier kÃļnnen Sie chemische Toilettenabfälle entsorgen" - }, - "1": { - "then": "Hier kÃļnnen Sie keine chemischen Toilettenabfälle entsorgen" - } - }, - "question": "KÃļnnen Sie hier chemische Toilettenabfälle entsorgen?" - }, - "dumpstations-fee": { - "mappings": { - "0": { - "then": "Sie mÃŧssen fÃŧr die Nutzung bezahlen" - }, - "1": { - "then": "Nutzung kostenlos" - } - }, - "question": "Wird hier eine GebÃŧhr erhoben?" - }, - "dumpstations-grey-water": { - "mappings": { - "0": { - "then": "Hier kÃļnnen Sie Brauch-/Grauwasser entsorgen" - }, - "1": { - "then": "Hier kÃļnnen Sie kein Brauch-/Grauwasser entsorgen" - } - }, - "question": "KÃļnnen Sie hier Brauch-/Grauwasser entsorgen?" - }, - "dumpstations-network": { - "question": "Zu welchem Verbund/Netzwerk gehÃļrt dieser Ort? (Überspringen, wenn nicht zutreffend)", - "render": "Diese Station gehÃļrt zum Verbund/Netzwerk {network}" - }, - "dumpstations-waterpoint": { - "mappings": { - "0": { - "then": "Dieser Ort hat eine Wasserstelle" - }, - "1": { - "then": "Dieser Ort hat keine Wasserstelle" - } - }, - "question": "Hat dieser Ort eine Wasserstelle?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Entsorgungsstation" - } - }, - "render": "Entsorgungsstation {name}" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Wer betreibt diesen Ort?", - "render": "Dieser Ort wird betrieben von {operator}" - }, - "1": { - "mappings": { - "0": { - "then": "Dieser Ort hat eine Stromversorgung" - }, - "1": { - "then": "Dieser Ort hat keine Stromversorgung" - } - }, - "question": "Hat dieser Ort eine Stromversorgung?" - } - } - }, - "shortDescription": "Finden Sie Plätze zum Übernachten mit Ihrem Wohnmobil", - "title": "Wohnmobilstellplätze" - }, - "charging_stations": { - "description": "Auf dieser freien Karte kann man Informationen Ãŧber Ladestationen finden und hinzufÃŧgen", - "shortDescription": "Eine weltweite Karte mit Ladestationen", - "title": "Ladestationen" - }, - "climbing": { - "description": "Eine Karte mit KlettermÃļglichkeiten wie Kletterhallen, Kletterparks oder Felsen.", - "descriptionTail": "

kletterspots.de wird betrieben von Christian Neumann. Bitte melden Sie sich, wenn Sie Feedback oder Fragen haben.

Das Projekt nutzt Daten des OpenStreetMap Projekts und basiert auf der freien Software MapComplete.

", - "layers": { - "0": { - "description": "Ein Kletterverein oder eine Organisation", - "name": "Kletterverein", - "presets": { - "0": { - "description": "Ein Kletterverein", - "title": "Kletterverein" - }, - "1": { - "description": "Eine Organisation, welche sich mit dem Klettern beschäftigt", - "title": "Eine Kletter-Organisation" - } - }, - "tagRenderings": { - "climbing_club-name": { - "question": "Wie lautet der Name dieses Vereins oder Organisation?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Kletter-Organisation" - } - }, - "render": "Kletterverein" - } - }, - "1": { - "description": "Eine Kletterhalle", - "name": "Kletterhallen", - "tagRenderings": { - "name": { - "question": "Wie heißt diese Kletterhalle?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Kletterhalle {name}" - } - }, - "render": "Kletterhalle" - } - }, - "2": { - "name": "Kletterrouten", - "presets": { - "0": { - "title": "Kletterroute" - } - }, - "tagRenderings": { - "Bolts": { - "mappings": { - "0": { - "then": "Auf dieser Kletterroute sind keine Haken vorhanden" - }, - "1": { - "then": "Auf dieser Kletterroute sind keine Haken vorhanden" - } - }, - "question": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?", - "render": "Diese Kletterroute hat {climbing:bolts} Haken" - }, - "Difficulty": { - "question": "Wie hoch ist der Schwierigkeitsgrad dieser Kletterroute nach dem franzÃļsisch/belgischen System?", - "render": "Die Schwierigkeit ist {climbing:grade:french} entsprechend des franzÃļsisch/belgischen Systems" - }, - "Length": { - "question": "Wie lang ist diese Kletterroute (in Metern)?", - "render": "Diese Route ist {canonical(climbing:length)} lang" - }, - "Name": { - "mappings": { - "0": { - "then": "Diese Kletterroute hat keinen Namen" - } - }, - "question": "Wie heißt diese Kletterroute?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Kleterroute {name}" - } - }, - "render": "Kleterroute" - } - }, - "3": { - "description": "Eine Klettergelegenheit", - "name": "KlettermÃļglichkeiten", - "presets": { - "0": { - "description": "Eine Klettergelegenheit", - "title": "KlettermÃļglichkeit" - } - }, - "tagRenderings": { - "Contained routes hist": { - "render": "

SchwierigkeitsÃŧbersicht

{histogram(_difficulty_hist)}" - }, - "Contained routes length hist": { - "render": "

LängenÃŧbersicht

{histogramm(_length_hist)}" - }, - "Rock type (crag/rock/cliff only)": { - "mappings": { - "0": { - "then": "Kalkstein" - } - }, - "question": "Welchen Gesteinstyp gibt es hier?", - "render": "Der Gesteinstyp ist {rock}" - }, - "Type": { - "mappings": { - "0": { - "then": "Ein Kletterfelsen - ein einzelner Felsen oder eine Klippe mit einer oder wenigen Kletterrouten, die ohne Seil sicher bestiegen werden kÃļnnen" - } - } - }, - "name": { - "mappings": { - "0": { - "then": "Diese Klettergelegenheit hat keinen Namen" - } - }, - "question": "Wie heißt diese Klettergelegenheit?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "1": { - "then": "Klettergebiet {name}" - }, - "2": { - "then": "Klettergebiet" - }, - "3": { - "then": "KlettermÃļglichkeit {name}" - } - }, - "render": "KlettermÃļglichkeit" - } - }, - "4": { - "description": "Eine Klettergelegenheit?", - "name": "KlettermÃļglichkeiten?", - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - }, - "climbing-possible": { - "mappings": { - "0": { - "then": "Hier kann nicht geklettert werden" - }, - "1": { - "then": "Hier kann geklettert werden" - }, - "2": { - "then": "Hier kann nicht geklettert werden" - } - }, - "question": "Kann hier geklettert werden?" - } - }, - "title": { - "render": "KlettermÃļglichkeit?" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Gibt es eine (inoffizielle) Website mit mehr Informationen (z.B. Topos)?" - }, - "2": { - "mappings": { - "0": { - "then": "Öffentlich zugänglich fÃŧr jedermann" - }, - "1": { - "then": "Zugang nur mit Genehmigung" - }, - "2": { - "then": "Nur fÃŧr Kunden" - }, - "3": { - "then": "Nur fÃŧr Vereinsmitglieder" - } - }, - "question": "Wer hat hier Zugang?" - }, - "4": { - "question": "Wie lang sind die Routen (durchschnittlich) in Metern?", - "render": "Die Routen sind durchschnittlich {canonical(climbing:length)} lang" - }, - "5": { - "question": "Welche Schwierigkeit hat hier die leichteste Route (franzÃļsisch/belgisches System)?", - "render": "Die leichteste Route hat hier die Schwierigkeit {climbing:grade:french:min} (franzÃļsisch/belgisches System)" - }, - "6": { - "question": "Welche Schwierigkeit hat hier die schwerste Route (franzÃļsisch/belgisches System)?", - "render": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:min} (franzÃļsisch/belgisches System)" - }, - "7": { - "mappings": { - "0": { - "then": "Hier kann gebouldert werden" - }, - "1": { - "then": "Hier kann nicht gebouldert werden" - }, - "2": { - "then": "Bouldern ist hier nur an wenigen Routen mÃļglich" - }, - "3": { - "then": "Hier gibt es {climbing:boulder} Boulder-Routen" - } - }, - "question": "Kann hier gebouldert werden?" - }, - "8": { - "mappings": { - "0": { - "then": "Toprope-Klettern ist hier mÃļglich" - }, - "1": { - "then": "Toprope-Climbing ist hier nicht mÃļglich" - }, - "2": { - "then": "Hier gibt es {climbing:toprope} Toprope-Routen" - } - }, - "question": "Ist Toprope-Klettern hier mÃļglich?" - }, - "9": { - "mappings": { - "0": { - "then": "Sportklettern ist hier mÃļglich" - }, - "1": { - "then": "Sportklettern ist hier nicht mÃļglich" - }, - "2": { - "then": "Hier gibt es {climbing:sport} Sportkletter-Routen" - } - }, - "question": "Ist hier Sportklettern mÃļglich (feste Ankerpunkte)?" - }, - "10": { - "mappings": { - "0": { - "then": "Traditionelles Klettern ist hier mÃļglich" - }, - "1": { - "then": "Traditionelles Klettern ist hier nicht mÃļglich" - }, - "2": { - "then": "Hier gibt es {climbing:traditional} Routen fÃŧr traditionelles Klettern" - } - }, - "question": "Ist hier traditionelles Klettern mÃļglich (eigene Sicherung z.B. mit Klemmkleilen)?" - }, - "11": { - "mappings": { - "0": { - "then": "Hier gibt es eine Speedkletter-Wand" - }, - "1": { - "then": "Hier gibt es keine Speedkletter-Wand" - }, - "2": { - "then": "Hier gibt es {climbing:speed} Speedkletter-Routen" - } - }, - "question": "Gibt es hier eine Speedkletter-Wand?" - } - }, - "units+": { - "0": { - "applicableUnits": { - "0": { - "human": " Meter" - }, - "1": { - "human": " Fuß" - } - } - } - } - }, - "title": "Offene Kletterkarte" - }, - "cycle_highways": { - "description": "Diese Karte zeigt Radschnellwege", - "layers": { - "0": { - "name": "Radschnellwege", - "title": { - "render": "Radschnellweg" - } - } - }, - "title": "Radschnellwege" - }, - "cycle_infra": { - "description": "Eine Karte zum Ansehen und Bearbeiten verschiedener Elementen der Fahrradinfrastruktur. Erstellt während #osoc21.", - "shortDescription": "Eine Karte zum Ansehen und Bearbeiten verschiedener Elementen der Fahrradinfrastruktur.", - "title": "Fahrradinfrastruktur" - }, - "cyclestreets": { - "description": "Eine Fahrradstraße ist eine Straße, auf der motorisierter Verkehr Radfahrer nicht Ãŧberholen darf. Sie sind durch ein spezielles Verkehrsschild gekennzeichnet. Fahrradstraßen gibt es in den Niederlanden und Belgien, aber auch in Deutschland und Frankreich. ", - "layers": { - "0": { - "description": "Eine Fahrradstraße ist eine Straße, auf der motorisierter Verkehr einen Radfahrer nicht Ãŧberholen darf", - "name": "Fahrradstraßen" - }, - "1": { - "description": "Diese Straße wird bald eine Fahrradstraße sein", - "name": "ZukÃŧnftige Fahrradstraße", - "title": { - "mappings": { - "0": { - "then": "{name} wird bald eine Fahrradstraße werden" - } - }, - "render": "ZukÃŧnftige Fahrradstraße" - } - }, - "2": { - "description": "Ebene zur Kennzeichnung einer Straße als Fahrradstraße", - "name": "Alle Straßen", - "title": { - "render": "Straße" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "mappings": { - "0": { - "then": "Diese Straße ist eine Fahrradstraße (mit einer Geschwindigkeitsbegrenzung von 30 km/h)" - }, - "1": { - "then": "Diese Straße ist eine Fahrradstraße" - }, - "2": { - "then": "Diese Straße wird bald eine Fahrradstraße sein" - }, - "3": { - "then": "Diese Straße ist keine Fahrradstraße" - } - }, - "question": "Ist diese Straße eine Fahrradstraße?" - }, - "1": { - "question": "Wann wird diese Straße eine Fahrradstraße?", - "render": "Diese Straße wird am {cyclestreet:start_date} zu einer Fahrradstraße" - } - } - }, - "shortDescription": "Eine Karte von Fahrradstraßen", - "title": "Fahrradstraßen" - }, - "cyclofix": { - "description": "Mit dieser Karte wird Radfahrern eine einfache LÃļsung bereitgestellt, um die passende Fahrradinfrastruktur zu finden.

Sie kÃļnnen Ihren genauen Standort verfolgen (nur mobil) und in der linken unteren Ecke die fÃŧr Sie relevanten Ebenen auswählen. Sie kÃļnnen auch interessante Orte zur Karte hinzuzufÃŧgen oder bearbeiten und weitere Daten durch Beantwortung von Fragen bereitstellen.

Ihre Änderungen, werden automatisch in OpenStreetMap gespeichert und kÃļnnen von anderen frei verwendet werden.

Weitere Informationen Ãŧber Cyclofix finden Sie unter cyclofix.osm.be.", - "title": "Cyclofix — eine freie Karte fÃŧr Radfahrer" - }, - "drinking_water": { - "description": "Eine Karte zum Anzeigen und Bearbeiten Ãļffentlicher Trinkwasserstellen", - "title": "Trinkwasserstelle" - }, - "etymology": { - "description": "Auf dieser Karte kÃļnnen Sie sehen, wonach ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknÃŧpft wurde. In dem Popup sehen Sie den Wikipedia-Artikel (falls vorhanden) oder ein Wikidata-Feld, nach dem das Objekt benannt ist. Wenn das Objekt selbst eine Wikipedia-Seite hat, wird auch diese angezeigt.

Sie kÃļnnen auch einen Beitrag leisten!Zoomen Sie genug hinein und alle Straßen werden angezeigt. Wenn Sie auf eine Straße klicken, Ãļffnet sich ein Wikidata-Suchfeld. Mit ein paar Klicks kÃļnnen Sie einen Etymologie-Link hinzufÃŧgen. Beachten Sie, dass Sie dazu ein kostenloses OpenStreetMap-Konto benÃļtigen.", - "layers": { - "1": { - "override": { - "name": "Straßen ohne Informationen zur Namensherkunft" - } - }, - "2": { - "override": { - "name": "Parks und Waldflächen ohne Informationen zur Namensherkunft" - } - } - }, - "shortDescription": "Was ist der Ursprung eines Ortsnamens?", - "title": "Open Etymology Map" - }, - "facadegardens": { - "description": "Fassadengärten, grÃŧne Fassaden und Bäume in der Stadt bringen nicht nur Ruhe und Frieden, sondern auch eine schÃļnere Stadt, eine grÃļßere Artenvielfalt, einen KÃŧhleffekt und eine bessere Luftqualität.
Klimaan VZW und Mechelen Klimaatneutraal wollen bestehende und neue Fassadengärten als Beispiel fÃŧr Menschen, die ihren eigenen Garten anlegen wollen, oder fÃŧr naturverbundene Stadtspaziergänger kartieren.
Mehr Informationen Ãŧber das Projekt unter klimaan.be.", - "layers": { - "0": { - "description": "Fassadengärten", - "name": "Fassadengärten", - "presets": { - "0": { - "description": "Einen Fassadengarten hinzufÃŧgen", - "title": "Fassadengarten" - } - }, - "tagRenderings": { - "facadegardens-description": { - "question": "Zusätzliche Informationen Ãŧber den Garten (falls erforderlich und oben noch nicht beschrieben)", - "render": "Weitere Details: {description}" - }, - "facadegardens-direction": { - "question": "Wie ist der Garten ausgerichtet?", - "render": "Ausrichtung: {direction} (wobei 0=N und 90=O)" - }, - "facadegardens-edible": { - "mappings": { - "0": { - "then": "Es gibt essbare Pflanzen" - }, - "1": { - "then": "Es gibt keine essbaren Pflanzen" - } - }, - "question": "Gibt es essbare Pflanzen?" - }, - "facadegardens-plants": { - "mappings": { - "0": { - "then": "Es gibt Weinreben" - }, - "1": { - "then": "Es gibt blÃŧhende Pflanzen" - }, - "2": { - "then": "Es gibt Sträucher" - }, - "3": { - "then": "Es gibt Bodendecker" - } - }, - "question": "Welche Pflanzen wachsen hier?" - }, - "facadegardens-rainbarrel": { - "mappings": { - "0": { - "then": "Es gibt eine Regentonne" - }, - "1": { - "then": "Es gibt keine Regentonne" - } - }, - "question": "Gibt es ein Wasserfass fÃŧr den Garten?" - }, - "facadegardens-start_date": { - "question": "Wann wurde der Garten angelegt? (Jahr ist ausreichend)", - "render": "Errichtungsdatum des Gartens: {start_date}" - }, - "facadegardens-sunshine": { - "mappings": { - "0": { - "then": "Der Garten liegt in voller Sonne" - }, - "1": { - "then": "Der Garten liegt im Halbschatten" - }, - "2": { - "then": "Der Garten liegt im Schatten" - } - }, - "question": "Ist der Garten schattig oder sonnig?" - } - }, - "title": { - "render": "Fassadengarten" - } - } - }, - "shortDescription": "Diese Karte zeigt Fassadengärten mit Bildern und Details zu Ausrichtung, Sonneneinstrahlung und Pflanzen.", - "title": "Fassadengärten" - }, - "food": { - "title": "Restaurants und Schnellimbisse" - }, - "fritures": { - "layers": { - "0": { - "override": { - "name": "Pommesbude" - } + "then": "Unbenannter Wohnmobilstellplatz" } + }, + "render": "Wohnmobilstellplatz {name}" } - }, - "ghostbikes": { - "description": "Ein Geisterrad ist ein weißes Fahrrad, dass zum Gedenken eines tÃļdlich verunglÃŧckten Radfahrers vor Ort aufgestellt wurde.

Auf dieser Karte kann man alle Geisterräder sehen, die OpenStreetMap eingetragen sind. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufÃŧgen oder aktualisieren - Sie benÃļtigen lediglich einen (kostenlosen) OpenStreetMap-Account.", - "title": "Geisterräder" - }, - "hackerspaces": { - "description": "Auf dieser Karte kÃļnnen Sie Hackerspaces sehen, einen neuen Hackerspace hinzufÃŧgen oder Daten direkt aktualisieren", - "layers": { - "0": { - "description": "Hackerspace", - "name": "Hackerspace", - "presets": { - "0": { - "description": "Ein Hackerspace ist ein Ort, an dem sich Menschen treffen, die sich fÃŧr Software interessieren", - "title": "Hackerspace" - }, - "1": { - "description": "Ein Makerspace ist ein Ort, an dem Heimwerker-Enthusiasten zusammenkommen, um mit Elektronik zu experimentieren, wie Arduino, LED-Strips, ...", - "title": "Makerspace" - } - }, - "tagRenderings": { - "hackerspaces-name": { - "question": "Wie lautet der Name dieses Hackerspace?", - "render": "Dieser Hackerspace heißt {name}" - }, - "hackerspaces-opening_hours": { - "mappings": { - "0": { - "then": "durchgehend geÃļffnet" - } - }, - "question": "Wann hat dieser Hackerspace geÃļffnet?", - "render": "{opening_hours_table()}" - }, - "hackerspaces-start_date": { - "question": "Wann wurde dieser Hackerspace gegrÃŧndet?", - "render": "Dieser Hackerspace wurde gegrÃŧndet am {start_date}" - }, - "hs-club-mate": { - "mappings": { - "0": { - "then": "In diesem Hackerspace gibt es Club Mate" - }, - "1": { - "then": "In diesem Hackerspace gibt es kein Club Mate" - } - }, - "question": "Gibt es in diesem Hackerspace Club Mate?" - }, - "is_makerspace": { - "mappings": { - "0": { - "then": "Dies ist ein Makerspace" - }, - "1": { - "then": "Dies ist ein traditioneller (softwareorientierter) Hackerspace" - } - }, - "question": "Ist dies ein Hackerspace oder ein Makerspace?" - } - }, - "title": { - "mappings": { - "0": { - "then": " {name}" - } - }, - "render": "Hackerspace" - } - } + }, + "1": { + "description": "Sanitäre Entsorgungsstationen", + "name": "Sanitäre Entsorgungsstationen", + "presets": { + "0": { + "description": "FÃŧgen Sie eine neue sanitäre Entsorgungsstation hinzu. Hier kÃļnnen Camper Abwasser oder chemischen Toilettenabfälle entsorgen. Oft gibt es auch Trinkwasser und Strom.", + "title": "Sanitäre Entsorgungsstation" + } }, - "shortDescription": "Eine Karte von Hackerspaces", - "title": "Hackerspaces" - }, - "hailhydrant": { - "description": "Auf dieser Karte kÃļnnen Sie Hydranten, Feuerwachen, Krankenwagen und FeuerlÃļscher in Ihren bevorzugten Stadtvierteln finden und aktualisieren. \n\nSie kÃļnnen Ihren genauen Standort verfolgen (nur mobil) und in der unteren linken Ecke die fÃŧr Sie relevanten Ebenen auswählen. Sie kÃļnnen mit diesem Tool auch Pins (Points of Interest) zur Karte hinzufÃŧgen oder bearbeiten und durch die Beantwortung verfÃŧgbarer Fragen zusätzliche Angaben machen. \n\nAlle von Ihnen vorgenommenen Änderungen werden automatisch in der globalen Datenbank von OpenStreetMap gespeichert und kÃļnnen von anderen frei weiterverwendet werden.", - "layers": { + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "0": { + "then": "Sie benÃļtigen einen SchlÃŧssel/Code zur Benutzung" + }, + "1": { + "then": "Sie mÃŧssen Kunde des Campingplatzes sein, um diesen Ort nutzen zu kÃļnnen" + }, + "2": { + "then": "Jeder darf diese sanitäre Entsorgungsstation nutzen" + }, + "3": { + "then": "Jeder darf diese sanitäre Entsorgungsstation nutzen" + } + }, + "question": "Wer darf diese sanitäre Entsorgungsstation nutzen?" + }, + "dumpstations-charge": { + "question": "Wie hoch ist die GebÃŧhr an diesem Ort?", + "render": "Die GebÃŧhr beträgt {charge}" + }, + "dumpstations-chemical-waste": { + "mappings": { + "0": { + "then": "Hier kÃļnnen Sie chemische Toilettenabfälle entsorgen" + }, + "1": { + "then": "Hier kÃļnnen Sie keine chemischen Toilettenabfälle entsorgen" + } + }, + "question": "KÃļnnen Sie hier chemische Toilettenabfälle entsorgen?" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "Sie mÃŧssen fÃŧr die Nutzung bezahlen" + }, + "1": { + "then": "Nutzung kostenlos" + } + }, + "question": "Wird hier eine GebÃŧhr erhoben?" + }, + "dumpstations-grey-water": { + "mappings": { + "0": { + "then": "Hier kÃļnnen Sie Brauch-/Grauwasser entsorgen" + }, + "1": { + "then": "Hier kÃļnnen Sie kein Brauch-/Grauwasser entsorgen" + } + }, + "question": "KÃļnnen Sie hier Brauch-/Grauwasser entsorgen?" + }, + "dumpstations-network": { + "question": "Zu welchem Verbund/Netzwerk gehÃļrt dieser Ort? (Überspringen, wenn nicht zutreffend)", + "render": "Diese Station gehÃļrt zum Verbund/Netzwerk {network}" + }, + "dumpstations-waterpoint": { + "mappings": { + "0": { + "then": "Dieser Ort hat eine Wasserstelle" + }, + "1": { + "then": "Dieser Ort hat keine Wasserstelle" + } + }, + "question": "Hat dieser Ort eine Wasserstelle?" + } + }, + "title": { + "mappings": { "0": { - "description": "Kartenebene zur Anzeige von Hydranten.", - "name": "Karte der Hydranten", - "presets": { - "0": { - "description": "Ein Hydrant ist ein Anschlusspunkt, an dem die Feuerwehr Wasser zapfen kann. Er kann sich unterirdisch befinden.", - "title": "LÃļschwasser-Hydrant" - } - }, - "tagRenderings": { - "hydrant-color": { - "mappings": { - "0": { - "then": "Die Farbe des Hydranten ist unbekannt." - }, - "1": { - "then": "Die Farbe des Hydranten ist gelb." - }, - "2": { - "then": "Die Farbe des Hydranten ist rot." - } - }, - "question": "Welche Farbe hat der Hydrant?", - "render": "Der Hydrant hat die Farbe {colour}" - }, - "hydrant-state": { - "mappings": { - "0": { - "then": "Der Hydrant ist (ganz oder teilweise) in Betrieb." - }, - "1": { - "then": "Der Hydrant ist nicht verfÃŧgbar." - }, - "2": { - "then": "Der Hydrant wurde entfernt." - } - }, - "question": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten.", - "render": "Lebenszyklus-Status" - }, - "hydrant-type": { - "mappings": { - "0": { - "then": "Der Typ des Hydranten ist unbekannt." - }, - "1": { - "then": " Säulenart." - }, - "2": { - "then": " Rohrtyp." - }, - "3": { - "then": " Wandtyp." - }, - "4": { - "then": " Untergrundtyp." - } - }, - "question": "Um welche Art von Hydrant handelt es sich?", - "render": " Hydranten-Typ: {fire_hydrant:type}" - } - }, - "title": { - "render": "Hydrant" - } + "then": "Entsorgungsstation" + } + }, + "render": "Entsorgungsstation {name}" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Wer betreibt diesen Ort?", + "render": "Dieser Ort wird betrieben von {operator}" + }, + "1": { + "mappings": { + "0": { + "then": "Dieser Ort hat eine Stromversorgung" }, "1": { - "description": "Kartenebene zur Anzeige von Hydranten.", - "name": "Karte mit FeuerlÃļschern.", - "presets": { - "0": { - "description": "Ein FeuerlÃļscher ist ein kleines, tragbares Gerät, das dazu dient, ein Feuer zu lÃļschen", - "title": "FeuerlÃļscher" - } - }, - "tagRenderings": { - "extinguisher-location": { - "mappings": { - "0": { - "then": "Im Innenraum vorhanden." - }, - "1": { - "then": "Im Außenraum vorhanden." - } - }, - "question": "Wo befindet er sich?", - "render": "Standort: {location}" - } - }, - "title": { - "render": "FeuerlÃļscher" - } + "then": "Dieser Ort hat keine Stromversorgung" + } + }, + "question": "Hat dieser Ort eine Stromversorgung?" + } + } + }, + "shortDescription": "Finden Sie Plätze zum Übernachten mit Ihrem Wohnmobil", + "title": "Wohnmobilstellplätze" + }, + "charging_stations": { + "description": "Auf dieser freien Karte kann man Informationen Ãŧber Ladestationen finden und hinzufÃŧgen", + "shortDescription": "Eine weltweite Karte mit Ladestationen", + "title": "Ladestationen" + }, + "climbing": { + "description": "Eine Karte mit KlettermÃļglichkeiten wie Kletterhallen, Kletterparks oder Felsen.", + "descriptionTail": "

kletterspots.de wird betrieben von Christian Neumann. Bitte melden Sie sich, wenn Sie Feedback oder Fragen haben.

Das Projekt nutzt Daten des OpenStreetMap Projekts und basiert auf der freien Software MapComplete.

", + "layers": { + "0": { + "description": "Ein Kletterverein oder eine Organisation", + "name": "Kletterverein", + "presets": { + "0": { + "description": "Ein Kletterverein", + "title": "Kletterverein" + }, + "1": { + "description": "Eine Organisation, welche sich mit dem Klettern beschäftigt", + "title": "Eine Kletter-Organisation" + } + }, + "tagRenderings": { + "climbing_club-name": { + "question": "Wie lautet der Name dieses Vereins oder Organisation?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Kletter-Organisation" + } + }, + "render": "Kletterverein" + } + }, + "1": { + "description": "Eine Kletterhalle", + "name": "Kletterhallen", + "tagRenderings": { + "name": { + "question": "Wie heißt diese Kletterhalle?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Kletterhalle {name}" + } + }, + "render": "Kletterhalle" + } + }, + "2": { + "name": "Kletterrouten", + "presets": { + "0": { + "title": "Kletterroute" + } + }, + "tagRenderings": { + "Bolts": { + "mappings": { + "0": { + "then": "Auf dieser Kletterroute sind keine Haken vorhanden" + }, + "1": { + "then": "Auf dieser Kletterroute sind keine Haken vorhanden" + } + }, + "question": "Wie viele Haken gibt es auf dieser Kletterroute bevor der Umlenker bzw. Standhaken erreicht ist?", + "render": "Diese Kletterroute hat {climbing:bolts} Haken" + }, + "Difficulty": { + "question": "Wie hoch ist der Schwierigkeitsgrad dieser Kletterroute nach dem franzÃļsisch/belgischen System?", + "render": "Die Schwierigkeit ist {climbing:grade:french} entsprechend des franzÃļsisch/belgischen Systems" + }, + "Length": { + "question": "Wie lang ist diese Kletterroute (in Metern)?", + "render": "Diese Route ist {canonical(climbing:length)} lang" + }, + "Name": { + "mappings": { + "0": { + "then": "Diese Kletterroute hat keinen Namen" + } + }, + "question": "Wie heißt diese Kletterroute?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Kleterroute {name}" + } + }, + "render": "Kleterroute" + } + }, + "3": { + "description": "Eine Klettergelegenheit", + "name": "KlettermÃļglichkeiten", + "presets": { + "0": { + "description": "Eine Klettergelegenheit", + "title": "KlettermÃļglichkeit" + } + }, + "tagRenderings": { + "Contained routes hist": { + "render": "

SchwierigkeitsÃŧbersicht

{histogram(_difficulty_hist)}" + }, + "Contained routes length hist": { + "render": "

LängenÃŧbersicht

{histogramm(_length_hist)}" + }, + "Rock type (crag/rock/cliff only)": { + "mappings": { + "0": { + "then": "Kalkstein" + } + }, + "question": "Welchen Gesteinstyp gibt es hier?", + "render": "Der Gesteinstyp ist {rock}" + }, + "Type": { + "mappings": { + "0": { + "then": "Ein Kletterfelsen - ein einzelner Felsen oder eine Klippe mit einer oder wenigen Kletterrouten, die ohne Seil sicher bestiegen werden kÃļnnen" + } + } + }, + "name": { + "mappings": { + "0": { + "then": "Diese Klettergelegenheit hat keinen Namen" + } + }, + "question": "Wie heißt diese Klettergelegenheit?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "1": { + "then": "Klettergebiet {name}" }, "2": { - "description": "Kartenebene zur Darstellung von Feuerwachen.", - "name": "Karte der Feuerwachen", - "presets": { - "0": { - "description": "Eine Feuerwache ist ein Ort, an dem die Feuerwehrfahrzeuge und die Feuerwehrleute untergebracht sind, wenn sie nicht im Einsatz sind.", - "title": "Feuerwache" - } - }, - "tagRenderings": { - "station-name": { - "question": "Wie lautet der Name dieser Feuerwache?" - } - }, - "title": { - "render": "Feuerwache" - } + "then": "Klettergebiet" }, "3": { - "presets": { - "0": { - "description": "Eine Rettungsstation der Karte hinzufÃŧgen" - } - } + "then": "KlettermÃļglichkeit {name}" } + }, + "render": "KlettermÃļglichkeit" + } + }, + "4": { + "description": "Eine Klettergelegenheit?", + "name": "KlettermÃļglichkeiten?", + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + }, + "climbing-possible": { + "mappings": { + "0": { + "then": "Hier kann nicht geklettert werden" + }, + "1": { + "then": "Hier kann geklettert werden" + }, + "2": { + "then": "Hier kann nicht geklettert werden" + } + }, + "question": "Kann hier geklettert werden?" + } }, - "shortDescription": "Hydranten, FeuerlÃļscher, Feuerwachen und Rettungswachen." + "title": { + "render": "KlettermÃļglichkeit?" + } + } }, - "maps": { - "description": "Auf dieser Karte findest du alle Karten, die OpenStreetMap kennt - typischerweise eine große Karte auf einer Informationstafel, die das Gebiet, die Stadt oder die Region zeigt, z.B. eine touristische Karte auf der RÃŧckseite einer Plakatwand, eine Karte eines Naturschutzgebietes, eine Karte der Radwegenetze in der Region, ...)

Wenn eine Karte fehlt, kÃļnnen Sie diese leicht auf OpenStreetMap kartieren.", - "shortDescription": "Dieses Thema zeigt alle (touristischen) Karten, die OpenStreetMap kennt", - "title": "Eine Karte der Karten" - }, - "natuurpunt": { - "description": "Auf dieser Karte kÃļnnen Sie alle Naturschutzgebiete von Natuurpunt finden ", - "shortDescription": "Diese Karte zeigt Naturschutzgebiete des flämischen Naturverbands Natuurpunt", - "title": "Naturschutzgebiete" - }, - "observation_towers": { - "description": "Öffentlich zugänglicher Aussichtsturm", - "shortDescription": "Öffentlich zugänglicher Aussichtsturm", - "title": "AussichtstÃŧrme" - }, - "openwindpowermap": { - "description": "Eine Karte zum Anzeigen und Bearbeiten von Windkraftanlagen.", - "layers": { - "0": { - "name": "Windrad", - "presets": { - "0": { - "title": "Windrad" - } - }, - "title": { - "render": "Windrad" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " Megawatt" - }, - "1": { - "human": " Kilowatt" - }, - "2": { - "human": " Watt" - }, - "3": { - "human": " Gigawatt" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": " Meter" - } - } - } - } - } + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Gibt es eine (inoffizielle) Website mit mehr Informationen (z.B. Topos)?" }, - "title": "OpenWindPowerMap" - }, - "parkings": { - "description": "Diese Karte zeigt Parkplätze", - "shortDescription": "Diese Karte zeigt Parkplätze", - "title": "Parken" - }, - "personal": { - "description": "Erstellen Sie ein persÃļnliches Thema auf der Grundlage aller verfÃŧgbaren Ebenen aller Themen", - "title": "PersÃļnliches Thema" - }, - "playgrounds": { - "description": "Auf dieser Karte finden Sie Spielplätze und kÃļnnen weitere Informationen hinzufÃŧgen", - "shortDescription": "Eine Karte mit Spielplätzen", - "title": "Spielpläzte" - }, - "postboxes": { - "layers": { + "2": { + "mappings": { "0": { - "description": "Die Ebene zeigt Briefkästen.", - "name": "Brieflästen", - "presets": { - "0": { - "title": "Briefkasten" - } - }, - "title": { - "render": "Briefkasten" - } + "then": "Öffentlich zugänglich fÃŧr jedermann" }, "1": { - "description": "Eine Ebene mit Postämtern.", - "filter": { - "0": { - "options": { - "0": { - "question": "Aktuell geÃļffnet" - } - } - } - }, - "name": "Poststellen", - "presets": { - "0": { - "title": "Poststelle" - } - }, - "tagRenderings": { - "OH": { - "mappings": { - "0": { - "then": "durchgehend geÃļffnet (auch an Feiertagen)" - } - } - } - }, - "title": { - "mappings": { - "0": { - "then": "Postfiliale im Einzelhandel" - }, - "1": { - "then": "Postfiliale im {name}" - } - }, - "render": "Poststelle" - } - } - }, - "shortDescription": "Eine Karte die Briefkästen und Poststellen anzeigt", - "title": "Karte mit Briefkästen und Poststellen" - }, - "shops": { - "description": "Auf dieser Karte kann man grundlegende Informationen Ãŧber Geschäfte markieren, Öffnungszeiten und Telefonnummern hinzufÃŧgen", - "shortDescription": "Eine bearbeitbare Karte mit grundlegenden Geschäftsinformationen", - "title": "Freie Geschäftskarte" - }, - "sport_pitches": { - "description": "Ein Sportplatz ist eine Fläche, auf der Sportarten gespielt werden", - "shortDescription": "Eine Karte mit Sportplätzen", - "title": "Sportplätze" - }, - "surveillance": { - "description": "Auf dieser offenen Karte finden Sie Überwachungskameras.", - "shortDescription": "Überwachungskameras und andere Mittel zur Überwachung", - "title": "Überwachung unter Überwachung" - }, - "toilets": { - "description": "Eine Karte mit Ãļffentlich zugänglichen Toiletten", - "title": "Freie Toilettenkarte" - }, - "trees": { - "description": "Kartieren Sie alle Bäume!", - "shortDescription": "Kartieren Sie alle Bäume", - "title": "Bäume" - }, - "uk_addresses": { - "description": "Tragen Sie zu OpenStreetMap bei, indem Sie Adressinformationen ausfÃŧllen", - "layers": { + "then": "Zugang nur mit Genehmigung" + }, "2": { - "description": "Adressen", - "name": "Bekannte Adressen in OSM", - "tagRenderings": { - "uk_addresses_explanation_osm": { - "render": "Diese Adresse ist in OpenStreetMap gespeichert" - }, - "uk_addresses_housenumber": { - "mappings": { - "0": { - "then": "Dieses Gebäude hat keine Hausnummer" - } - }, - "question": "Wie lautet die Nummer dieses Hauses?", - "render": "Die Hausnummer ist {addr:housenumber}" - }, - "uk_addresses_street": { - "question": "In welcher Straße befindet sich diese Adresse?", - "render": "Diese Adresse befindet sich in der Straße {addr:street}" - } - }, - "title": { - "render": "Bekannte Adresse" - } + "then": "Nur fÃŧr Kunden" + }, + "3": { + "then": "Nur fÃŧr Vereinsmitglieder" } + }, + "question": "Wer hat hier Zugang?" }, - "shortDescription": "Helfen Sie beim Aufbau eines offenen Datensatzes britischer Adressen", - "tileLayerSources": { + "4": { + "question": "Wie lang sind die Routen (durchschnittlich) in Metern?", + "render": "Die Routen sind durchschnittlich {canonical(climbing:length)} lang" + }, + "5": { + "question": "Welche Schwierigkeit hat hier die leichteste Route (franzÃļsisch/belgisches System)?", + "render": "Die leichteste Route hat hier die Schwierigkeit {climbing:grade:french:min} (franzÃļsisch/belgisches System)" + }, + "6": { + "question": "Welche Schwierigkeit hat hier die schwerste Route (franzÃļsisch/belgisches System)?", + "render": "Die schwerste Route hat hier die Schwierigkeit {climbing:grade:french:max} (franzÃļsisch/belgisches System)" + }, + "7": { + "mappings": { "0": { - "name": "Grenzverläufe gemäß osmuk.org" + "then": "Hier kann gebouldert werden" + }, + "1": { + "then": "Hier kann nicht gebouldert werden" + }, + "2": { + "then": "Bouldern ist hier nur an wenigen Routen mÃļglich" + }, + "3": { + "then": "Hier gibt es {climbing:boulder} Boulder-Routen" } + }, + "question": "Kann hier gebouldert werden?" }, - "title": "Adressen in Großbritannien" + "8": { + "mappings": { + "0": { + "then": "Toprope-Klettern ist hier mÃļglich" + }, + "1": { + "then": "Toprope-Climbing ist hier nicht mÃļglich" + }, + "2": { + "then": "Hier gibt es {climbing:toprope} Toprope-Routen" + } + }, + "question": "Ist Toprope-Klettern hier mÃļglich?" + }, + "9": { + "mappings": { + "0": { + "then": "Sportklettern ist hier mÃļglich" + }, + "1": { + "then": "Sportklettern ist hier nicht mÃļglich" + }, + "2": { + "then": "Hier gibt es {climbing:sport} Sportkletter-Routen" + } + }, + "question": "Ist hier Sportklettern mÃļglich (feste Ankerpunkte)?" + }, + "10": { + "mappings": { + "0": { + "then": "Traditionelles Klettern ist hier mÃļglich" + }, + "1": { + "then": "Traditionelles Klettern ist hier nicht mÃļglich" + }, + "2": { + "then": "Hier gibt es {climbing:traditional} Routen fÃŧr traditionelles Klettern" + } + }, + "question": "Ist hier traditionelles Klettern mÃļglich (eigene Sicherung z.B. mit Klemmkleilen)?" + }, + "11": { + "mappings": { + "0": { + "then": "Hier gibt es eine Speedkletter-Wand" + }, + "1": { + "then": "Hier gibt es keine Speedkletter-Wand" + }, + "2": { + "then": "Hier gibt es {climbing:speed} Speedkletter-Routen" + } + }, + "question": "Gibt es hier eine Speedkletter-Wand?" + } + }, + "units+": { + "0": { + "applicableUnits": { + "0": { + "human": " Meter" + }, + "1": { + "human": " Fuß" + } + } + } + } }, - "waste_basket": { - "description": "Auf dieser Karte finden Sie Abfalleimer in Ihrer Nähe. Wenn ein Abfalleimer auf dieser Karte fehlt, kÃļnnen Sie ihn selbst hinzufÃŧgen", - "shortDescription": "Eine Karte mit Abfalleimern", - "title": "Abfalleimer" + "title": "Offene Kletterkarte" + }, + "cycle_highways": { + "description": "Diese Karte zeigt Radschnellwege", + "layers": { + "0": { + "name": "Radschnellwege", + "title": { + "render": "Radschnellweg" + } + } + }, + "title": "Radschnellwege" + }, + "cycle_infra": { + "description": "Eine Karte zum Ansehen und Bearbeiten verschiedener Elementen der Fahrradinfrastruktur. Erstellt während #osoc21.", + "shortDescription": "Eine Karte zum Ansehen und Bearbeiten verschiedener Elementen der Fahrradinfrastruktur.", + "title": "Fahrradinfrastruktur" + }, + "cyclestreets": { + "description": "Eine Fahrradstraße ist eine Straße, auf der motorisierter Verkehr Radfahrer nicht Ãŧberholen darf. Sie sind durch ein spezielles Verkehrsschild gekennzeichnet. Fahrradstraßen gibt es in den Niederlanden und Belgien, aber auch in Deutschland und Frankreich. ", + "layers": { + "0": { + "description": "Eine Fahrradstraße ist eine Straße, auf der motorisierter Verkehr einen Radfahrer nicht Ãŧberholen darf", + "name": "Fahrradstraßen" + }, + "1": { + "description": "Diese Straße wird bald eine Fahrradstraße sein", + "name": "ZukÃŧnftige Fahrradstraße", + "title": { + "mappings": { + "0": { + "then": "{name} wird bald eine Fahrradstraße werden" + } + }, + "render": "ZukÃŧnftige Fahrradstraße" + } + }, + "2": { + "description": "Ebene zur Kennzeichnung einer Straße als Fahrradstraße", + "name": "Alle Straßen", + "title": { + "render": "Straße" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Diese Straße ist eine Fahrradstraße (mit einer Geschwindigkeitsbegrenzung von 30 km/h)" + }, + "1": { + "then": "Diese Straße ist eine Fahrradstraße" + }, + "2": { + "then": "Diese Straße wird bald eine Fahrradstraße sein" + }, + "3": { + "then": "Diese Straße ist keine Fahrradstraße" + } + }, + "question": "Ist diese Straße eine Fahrradstraße?" + }, + "1": { + "question": "Wann wird diese Straße eine Fahrradstraße?", + "render": "Diese Straße wird am {cyclestreet:start_date} zu einer Fahrradstraße" + } + } + }, + "shortDescription": "Eine Karte von Fahrradstraßen", + "title": "Fahrradstraßen" + }, + "cyclofix": { + "description": "Mit dieser Karte wird Radfahrern eine einfache LÃļsung bereitgestellt, um die passende Fahrradinfrastruktur zu finden.

Sie kÃļnnen Ihren genauen Standort verfolgen (nur mobil) und in der linken unteren Ecke die fÃŧr Sie relevanten Ebenen auswählen. Sie kÃļnnen auch interessante Orte zur Karte hinzuzufÃŧgen oder bearbeiten und weitere Daten durch Beantwortung von Fragen bereitstellen.

Ihre Änderungen, werden automatisch in OpenStreetMap gespeichert und kÃļnnen von anderen frei verwendet werden.

Weitere Informationen Ãŧber Cyclofix finden Sie unter cyclofix.osm.be.", + "title": "Cyclofix — eine freie Karte fÃŧr Radfahrer" + }, + "drinking_water": { + "description": "Eine Karte zum Anzeigen und Bearbeiten Ãļffentlicher Trinkwasserstellen", + "title": "Trinkwasserstelle" + }, + "etymology": { + "description": "Auf dieser Karte kÃļnnen Sie sehen, wonach ein Objekt benannt ist. Die Straßen, Gebäude, ... stammen von OpenStreetMap, das mit Wikidata verknÃŧpft wurde. In dem Popup sehen Sie den Wikipedia-Artikel (falls vorhanden) oder ein Wikidata-Feld, nach dem das Objekt benannt ist. Wenn das Objekt selbst eine Wikipedia-Seite hat, wird auch diese angezeigt.

Sie kÃļnnen auch einen Beitrag leisten!Zoomen Sie genug hinein und alle Straßen werden angezeigt. Wenn Sie auf eine Straße klicken, Ãļffnet sich ein Wikidata-Suchfeld. Mit ein paar Klicks kÃļnnen Sie einen Etymologie-Link hinzufÃŧgen. Beachten Sie, dass Sie dazu ein kostenloses OpenStreetMap-Konto benÃļtigen.", + "layers": { + "1": { + "override": { + "name": "Straßen ohne Informationen zur Namensherkunft" + } + }, + "2": { + "override": { + "name": "Parks und Waldflächen ohne Informationen zur Namensherkunft" + } + } + }, + "shortDescription": "Was ist der Ursprung eines Ortsnamens?", + "title": "Open Etymology Map" + }, + "facadegardens": { + "description": "Fassadengärten, grÃŧne Fassaden und Bäume in der Stadt bringen nicht nur Ruhe und Frieden, sondern auch eine schÃļnere Stadt, eine grÃļßere Artenvielfalt, einen KÃŧhleffekt und eine bessere Luftqualität.
Klimaan VZW und Mechelen Klimaatneutraal wollen bestehende und neue Fassadengärten als Beispiel fÃŧr Menschen, die ihren eigenen Garten anlegen wollen, oder fÃŧr naturverbundene Stadtspaziergänger kartieren.
Mehr Informationen Ãŧber das Projekt unter klimaan.be.", + "layers": { + "0": { + "description": "Fassadengärten", + "name": "Fassadengärten", + "presets": { + "0": { + "description": "Einen Fassadengarten hinzufÃŧgen", + "title": "Fassadengarten" + } + }, + "tagRenderings": { + "facadegardens-description": { + "question": "Zusätzliche Informationen Ãŧber den Garten (falls erforderlich und oben noch nicht beschrieben)", + "render": "Weitere Details: {description}" + }, + "facadegardens-direction": { + "question": "Wie ist der Garten ausgerichtet?", + "render": "Ausrichtung: {direction} (wobei 0=N und 90=O)" + }, + "facadegardens-edible": { + "mappings": { + "0": { + "then": "Es gibt essbare Pflanzen" + }, + "1": { + "then": "Es gibt keine essbaren Pflanzen" + } + }, + "question": "Gibt es essbare Pflanzen?" + }, + "facadegardens-plants": { + "mappings": { + "0": { + "then": "Es gibt Weinreben" + }, + "1": { + "then": "Es gibt blÃŧhende Pflanzen" + }, + "2": { + "then": "Es gibt Sträucher" + }, + "3": { + "then": "Es gibt Bodendecker" + } + }, + "question": "Welche Pflanzen wachsen hier?" + }, + "facadegardens-rainbarrel": { + "mappings": { + "0": { + "then": "Es gibt eine Regentonne" + }, + "1": { + "then": "Es gibt keine Regentonne" + } + }, + "question": "Gibt es ein Wasserfass fÃŧr den Garten?" + }, + "facadegardens-start_date": { + "question": "Wann wurde der Garten angelegt? (Jahr ist ausreichend)", + "render": "Errichtungsdatum des Gartens: {start_date}" + }, + "facadegardens-sunshine": { + "mappings": { + "0": { + "then": "Der Garten liegt in voller Sonne" + }, + "1": { + "then": "Der Garten liegt im Halbschatten" + }, + "2": { + "then": "Der Garten liegt im Schatten" + } + }, + "question": "Ist der Garten schattig oder sonnig?" + } + }, + "title": { + "render": "Fassadengarten" + } + } + }, + "shortDescription": "Diese Karte zeigt Fassadengärten mit Bildern und Details zu Ausrichtung, Sonneneinstrahlung und Pflanzen.", + "title": "Fassadengärten" + }, + "food": { + "title": "Restaurants und Schnellimbisse" + }, + "fritures": { + "layers": { + "0": { + "override": { + "name": "Pommesbude" + } + } } + }, + "ghostbikes": { + "description": "Ein Geisterrad ist ein weißes Fahrrad, dass zum Gedenken eines tÃļdlich verunglÃŧckten Radfahrers vor Ort aufgestellt wurde.

Auf dieser Karte kann man alle Geisterräder sehen, die OpenStreetMap eingetragen sind. Fehlt ein Geisterrad? Jeder kann hier Informationen hinzufÃŧgen oder aktualisieren - Sie benÃļtigen lediglich einen (kostenlosen) OpenStreetMap-Account.", + "title": "Geisterräder" + }, + "hackerspaces": { + "description": "Auf dieser Karte kÃļnnen Sie Hackerspaces sehen, einen neuen Hackerspace hinzufÃŧgen oder Daten direkt aktualisieren", + "layers": { + "0": { + "description": "Hackerspace", + "name": "Hackerspace", + "presets": { + "0": { + "description": "Ein Hackerspace ist ein Ort, an dem sich Menschen treffen, die sich fÃŧr Software interessieren", + "title": "Hackerspace" + }, + "1": { + "description": "Ein Makerspace ist ein Ort, an dem Heimwerker-Enthusiasten zusammenkommen, um mit Elektronik zu experimentieren, wie Arduino, LED-Strips, ...", + "title": "Makerspace" + } + }, + "tagRenderings": { + "hackerspaces-name": { + "question": "Wie lautet der Name dieses Hackerspace?", + "render": "Dieser Hackerspace heißt {name}" + }, + "hackerspaces-opening_hours": { + "mappings": { + "0": { + "then": "durchgehend geÃļffnet" + } + }, + "question": "Wann hat dieser Hackerspace geÃļffnet?", + "render": "{opening_hours_table()}" + }, + "hackerspaces-start_date": { + "question": "Wann wurde dieser Hackerspace gegrÃŧndet?", + "render": "Dieser Hackerspace wurde gegrÃŧndet am {start_date}" + }, + "hs-club-mate": { + "mappings": { + "0": { + "then": "In diesem Hackerspace gibt es Club Mate" + }, + "1": { + "then": "In diesem Hackerspace gibt es kein Club Mate" + } + }, + "question": "Gibt es in diesem Hackerspace Club Mate?" + }, + "is_makerspace": { + "mappings": { + "0": { + "then": "Dies ist ein Makerspace" + }, + "1": { + "then": "Dies ist ein traditioneller (softwareorientierter) Hackerspace" + } + }, + "question": "Ist dies ein Hackerspace oder ein Makerspace?" + } + }, + "title": { + "mappings": { + "0": { + "then": " {name}" + } + }, + "render": "Hackerspace" + } + } + }, + "shortDescription": "Eine Karte von Hackerspaces", + "title": "Hackerspaces" + }, + "hailhydrant": { + "description": "Auf dieser Karte kÃļnnen Sie Hydranten, Feuerwachen, Krankenwagen und FeuerlÃļscher in Ihren bevorzugten Stadtvierteln finden und aktualisieren. \n\nSie kÃļnnen Ihren genauen Standort verfolgen (nur mobil) und in der unteren linken Ecke die fÃŧr Sie relevanten Ebenen auswählen. Sie kÃļnnen mit diesem Tool auch Pins (Points of Interest) zur Karte hinzufÃŧgen oder bearbeiten und durch die Beantwortung verfÃŧgbarer Fragen zusätzliche Angaben machen. \n\nAlle von Ihnen vorgenommenen Änderungen werden automatisch in der globalen Datenbank von OpenStreetMap gespeichert und kÃļnnen von anderen frei weiterverwendet werden.", + "layers": { + "0": { + "description": "Kartenebene zur Anzeige von Hydranten.", + "name": "Karte der Hydranten", + "presets": { + "0": { + "description": "Ein Hydrant ist ein Anschlusspunkt, an dem die Feuerwehr Wasser zapfen kann. Er kann sich unterirdisch befinden.", + "title": "LÃļschwasser-Hydrant" + } + }, + "tagRenderings": { + "hydrant-color": { + "mappings": { + "0": { + "then": "Die Farbe des Hydranten ist unbekannt." + }, + "1": { + "then": "Die Farbe des Hydranten ist gelb." + }, + "2": { + "then": "Die Farbe des Hydranten ist rot." + } + }, + "question": "Welche Farbe hat der Hydrant?", + "render": "Der Hydrant hat die Farbe {colour}" + }, + "hydrant-state": { + "mappings": { + "0": { + "then": "Der Hydrant ist (ganz oder teilweise) in Betrieb." + }, + "1": { + "then": "Der Hydrant ist nicht verfÃŧgbar." + }, + "2": { + "then": "Der Hydrant wurde entfernt." + } + }, + "question": "Aktualisieren Sie den Lebenszyklusstatus des Hydranten." + }, + "hydrant-type": { + "mappings": { + "0": { + "then": "Der Typ des Hydranten ist unbekannt." + }, + "1": { + "then": " Säulenart." + }, + "2": { + "then": " Rohrtyp." + }, + "3": { + "then": " Wandtyp." + }, + "4": { + "then": " Untergrundtyp." + } + }, + "question": "Um welche Art von Hydrant handelt es sich?", + "render": " Hydranten-Typ: {fire_hydrant:type}" + } + }, + "title": { + "render": "Hydrant" + } + }, + "1": { + "description": "Kartenebene zur Anzeige von Hydranten.", + "name": "Karte mit FeuerlÃļschern.", + "presets": { + "0": { + "description": "Ein FeuerlÃļscher ist ein kleines, tragbares Gerät, das dazu dient, ein Feuer zu lÃļschen", + "title": "FeuerlÃļscher" + } + }, + "tagRenderings": { + "extinguisher-location": { + "mappings": { + "0": { + "then": "Im Innenraum vorhanden." + }, + "1": { + "then": "Im Außenraum vorhanden." + } + }, + "question": "Wo befindet er sich?", + "render": "Standort: {location}" + } + }, + "title": { + "render": "FeuerlÃļscher" + } + }, + "2": { + "description": "Kartenebene zur Darstellung von Feuerwachen.", + "name": "Karte der Feuerwachen", + "presets": { + "0": { + "description": "Eine Feuerwache ist ein Ort, an dem die Feuerwehrfahrzeuge und die Feuerwehrleute untergebracht sind, wenn sie nicht im Einsatz sind.", + "title": "Feuerwache" + } + }, + "tagRenderings": { + "station-agency": { + "mappings": { + "0": { + "then": "BrandschutzbehÃļrde" + } + } + }, + "station-name": { + "question": "Wie lautet der Name dieser Feuerwache?" + } + }, + "title": { + "render": "Feuerwache" + } + }, + "3": { + "description": "Eine Rettungswache ist ein Ort, an dem Rettungsfahrzeuge, medizinische AusrÃŧstung, persÃļnliche SchutzausrÃŧstung und anderes medizinisches Material untergebracht sind.", + "name": "Karte der Rettungswachen", + "presets": { + "0": { + "description": "Eine Rettungsstation der Karte hinzufÃŧgen", + "title": "Rettungswache" + } + }, + "title": { + "render": "Rettungswache" + } + } + }, + "shortDescription": "Hydranten, FeuerlÃļscher, Feuerwachen und Rettungswachen." + }, + "maps": { + "description": "Auf dieser Karte findest du alle Karten, die OpenStreetMap kennt - typischerweise eine große Karte auf einer Informationstafel, die das Gebiet, die Stadt oder die Region zeigt, z.B. eine touristische Karte auf der RÃŧckseite einer Plakatwand, eine Karte eines Naturschutzgebietes, eine Karte der Radwegenetze in der Region, ...)

Wenn eine Karte fehlt, kÃļnnen Sie diese leicht auf OpenStreetMap kartieren.", + "shortDescription": "Dieses Thema zeigt alle (touristischen) Karten, die OpenStreetMap kennt", + "title": "Eine Karte der Karten" + }, + "natuurpunt": { + "description": "Auf dieser Karte kÃļnnen Sie alle Naturschutzgebiete von Natuurpunt finden ", + "shortDescription": "Diese Karte zeigt Naturschutzgebiete des flämischen Naturverbands Natuurpunt", + "title": "Naturschutzgebiete" + }, + "observation_towers": { + "description": "Öffentlich zugänglicher Aussichtsturm", + "shortDescription": "Öffentlich zugänglicher Aussichtsturm", + "title": "AussichtstÃŧrme" + }, + "openwindpowermap": { + "description": "Eine Karte zum Anzeigen und Bearbeiten von Windkraftanlagen.", + "layers": { + "0": { + "name": "Windrad", + "presets": { + "0": { + "title": "Windrad" + } + }, + "title": { + "render": "Windrad" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " Megawatt" + }, + "1": { + "human": " Kilowatt" + }, + "2": { + "human": " Watt" + }, + "3": { + "human": " Gigawatt" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": " Meter" + } + } + } + } + } + }, + "title": "OpenWindPowerMap" + }, + "parkings": { + "description": "Diese Karte zeigt Parkplätze", + "shortDescription": "Diese Karte zeigt Parkplätze", + "title": "Parken" + }, + "personal": { + "description": "Erstellen Sie ein persÃļnliches Thema auf der Grundlage aller verfÃŧgbaren Ebenen aller Themen", + "title": "PersÃļnliches Thema" + }, + "playgrounds": { + "description": "Auf dieser Karte finden Sie Spielplätze und kÃļnnen weitere Informationen hinzufÃŧgen", + "shortDescription": "Eine Karte mit Spielplätzen", + "title": "Spielpläzte" + }, + "postboxes": { + "layers": { + "0": { + "description": "Die Ebene zeigt Briefkästen.", + "name": "Brieflästen", + "presets": { + "0": { + "title": "Briefkasten" + } + }, + "title": { + "render": "Briefkasten" + } + }, + "1": { + "description": "Eine Ebene mit Postämtern.", + "filter": { + "0": { + "options": { + "0": { + "question": "Aktuell geÃļffnet" + } + } + } + }, + "name": "Poststellen", + "presets": { + "0": { + "title": "Poststelle" + } + }, + "tagRenderings": { + "OH": { + "mappings": { + "0": { + "then": "durchgehend geÃļffnet (auch an Feiertagen)" + } + } + } + }, + "title": { + "render": "Poststelle" + } + } + }, + "shortDescription": "Eine Karte die Briefkästen und Poststellen anzeigt", + "title": "Karte mit Briefkästen und Poststellen" + }, + "shops": { + "description": "Auf dieser Karte kann man grundlegende Informationen Ãŧber Geschäfte markieren, Öffnungszeiten und Telefonnummern hinzufÃŧgen", + "shortDescription": "Eine bearbeitbare Karte mit grundlegenden Geschäftsinformationen", + "title": "Freie Geschäftskarte" + }, + "sport_pitches": { + "description": "Ein Sportplatz ist eine Fläche, auf der Sportarten gespielt werden", + "shortDescription": "Eine Karte mit Sportplätzen", + "title": "Sportplätze" + }, + "surveillance": { + "description": "Auf dieser offenen Karte finden Sie Überwachungskameras.", + "shortDescription": "Überwachungskameras und andere Mittel zur Überwachung", + "title": "Überwachung unter Überwachung" + }, + "toilets": { + "description": "Eine Karte mit Ãļffentlich zugänglichen Toiletten", + "title": "Freie Toilettenkarte" + }, + "trees": { + "description": "Kartieren Sie alle Bäume!", + "shortDescription": "Kartieren Sie alle Bäume", + "title": "Bäume" + }, + "uk_addresses": { + "description": "Tragen Sie zu OpenStreetMap bei, indem Sie Adressinformationen ausfÃŧllen", + "layers": { + "2": { + "description": "Adressen", + "name": "Bekannte Adressen in OSM", + "tagRenderings": { + "uk_addresses_explanation_osm": { + "render": "Diese Adresse ist in OpenStreetMap gespeichert" + }, + "uk_addresses_housenumber": { + "mappings": { + "0": { + "then": "Dieses Gebäude hat keine Hausnummer" + } + }, + "question": "Wie lautet die Nummer dieses Hauses?", + "render": "Die Hausnummer ist {addr:housenumber}" + }, + "uk_addresses_street": { + "question": "In welcher Straße befindet sich diese Adresse?", + "render": "Diese Adresse befindet sich in der Straße {addr:street}" + } + }, + "title": { + "render": "Bekannte Adresse" + } + } + }, + "shortDescription": "Helfen Sie beim Aufbau eines offenen Datensatzes britischer Adressen", + "tileLayerSources": { + "0": { + "name": "Grenzverläufe gemäß osmuk.org" + } + }, + "title": "Adressen in Großbritannien" + }, + "waste_basket": { + "description": "Auf dieser Karte finden Sie Abfalleimer in Ihrer Nähe. Wenn ein Abfalleimer auf dieser Karte fehlt, kÃļnnen Sie ihn selbst hinzufÃŧgen", + "shortDescription": "Eine Karte mit Abfalleimern", + "title": "Abfalleimer" + } } \ No newline at end of file diff --git a/langs/themes/en.json b/langs/themes/en.json index c2d1f0bff..01c86e54e 100644 --- a/langs/themes/en.json +++ b/langs/themes/en.json @@ -1,1510 +1,1395 @@ { - "aed": { - "description": "On this map, one can find and mark nearby defibrillators", - "title": "Open AED Map" - }, - "artwork": { - "description": "Welcome to Open Artwork Map, a map of statues, busts, grafittis and other artwork all over the world", - "title": "Open Artwork Map" - }, - "benches": { - "description": "This map shows all benches that are recorded in OpenStreetMap: Individual benches, and benches belonging to public transport stops or shelters. With an OpenStreetMap account, you can map new benches or edit details of existing benches.", - "shortDescription": "A map of benches", - "title": "Benches" - }, - "bicyclelib": { - "description": "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", - "title": "Bicycle libraries" - }, - "binoculars": { - "description": "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.", - "shortDescription": "A map with fixed binoculars", - "title": "Binoculars" - }, - "bookcases": { - "description": "A public bookcase is a small streetside cabinet, box, old phone boot or some other objects where books are stored. Everyone can place or take a book. This map aims to collect all these bookcases. You can discover new bookcases nearby and, with a free OpenStreetMap account, quickly add your favourite bookcases.", - "title": "Open Bookcase Map" - }, - "cafes_and_pubs": { - "title": "CafÊs and pubs" - }, - "campersite": { - "description": "This site collects all official camper stopover places and places where you can dump grey and black water. You can add details about the services provided and the cost. Add pictures and reviews. This is a website and a webapp. The data is stored in OpenStreetMap, so it will be free forever and can be re-used by any app.", - "layers": { + "aed": { + "description": "On this map, one can find and mark nearby defibrillators", + "title": "Open AED Map" + }, + "artwork": { + "description": "Welcome to Open Artwork Map, a map of statues, busts, grafittis and other artwork all over the world", + "title": "Open Artwork Map" + }, + "benches": { + "description": "This map shows all benches that are recorded in OpenStreetMap: Individual benches, and benches belonging to public transport stops or shelters. With an OpenStreetMap account, you can map new benches or edit details of existing benches.", + "shortDescription": "A map of benches", + "title": "Benches" + }, + "bicyclelib": { + "description": "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", + "title": "Bicycle libraries" + }, + "binoculars": { + "description": "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.", + "shortDescription": "A map with fixed binoculars", + "title": "Binoculars" + }, + "bookcases": { + "description": "A public bookcase is a small streetside cabinet, box, old phone boot or some other objects where books are stored. Everyone can place or take a book. This map aims to collect all these bookcases. You can discover new bookcases nearby and, with a free OpenStreetMap account, quickly add your favourite bookcases.", + "title": "Open Bookcase Map" + }, + "cafes_and_pubs": { + "title": "CafÊs and pubs" + }, + "campersite": { + "description": "This site collects all official camper stopover places and places where you can dump grey and black water. You can add details about the services provided and the cost. Add pictures and reviews. This is a website and a webapp. The data is stored in OpenStreetMap, so it will be free forever and can be re-used by any app.", + "layers": { + "0": { + "description": "camper sites", + "name": "Camper sites", + "presets": { + "0": { + "description": "Add a new official camper site. These are designated places to stay overnight with your camper. They might look like a real camping or just look like a parking. They might not be signposted at all, but just be defined in a municipal decision. A regular parking intended for campers where it is not expected to spend the night, is -not- a camper site ", + "title": "camper site" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "How many campers can stay here? (skip if there is no obvious number of spaces or allowed vehicles)", + "render": "{capacity} campers can use this place at the same time" + }, + "caravansites-charge": { + "question": "How much does this place charge?", + "render": "This place charges {charge}" + }, + "caravansites-description": { + "question": "Would you like to add a general description of this place? (Do not repeat information previously asked or shown above. Please keep it objective - opinions go into the reviews)", + "render": "More details about this place: {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "You need to pay for use" + }, + "1": { + "then": "Can be used for free" + } + }, + "question": "Does this place charge a fee?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "There is internet access" + }, + "1": { + "then": "There is internet access" + }, + "2": { + "then": "There is no internet access" + } + }, + "question": "Does this place provide internet access?" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "You need to pay extra for internet access" + }, + "1": { + "then": "You do not need to pay extra for internet access" + } + }, + "question": "Do you have to pay for the internet access?" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "Yes, there are some spots for long term rental, but you can also stay on a daily basis" + }, + "1": { + "then": "No, there are no permanent guests here" + }, + "2": { + "then": "It is only possible to stay here if you have a long term contract(this place will disappear from this map if you choose this)" + } + }, + "question": "Does this place offer spots for long term rental?" + }, + "caravansites-name": { + "question": "What is this place called?", + "render": "This place is called {name}" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "This place has a sanitary dump station" + }, + "1": { + "then": "This place does not have a sanitary dump station" + } + }, + "question": "Does this place have a sanitary dump station?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "This place has toilets" + }, + "1": { + "then": "This place does not have toilets" + } + }, + "question": "Does this place have toilets?" + }, + "caravansites-website": { + "question": "Does this place have a website?", + "render": "Official website: {website}" + } + }, + "title": { + "mappings": { "0": { - "description": "camper sites", - "name": "Camper sites", - "presets": { - "0": { - "description": "Add a new official camper site. These are designated places to stay overnight with your camper. They might look like a real camping or just look like a parking. They might not be signposted at all, but just be defined in a municipal decision. A regular parking intended for campers where it is not expected to spend the night, is -not- a camper site ", - "title": "camper site" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "How many campers can stay here? (skip if there is no obvious number of spaces or allowed vehicles)", - "render": "{capacity} campers can use this place at the same time" - }, - "caravansites-charge": { - "question": "How much does this place charge?", - "render": "This place charges {charge}" - }, - "caravansites-description": { - "question": "Would you like to add a general description of this place? (Do not repeat information previously asked or shown above. Please keep it objective - opinions go into the reviews)", - "render": "More details about this place: {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "You need to pay for use" - }, - "1": { - "then": "Can be used for free" - } - }, - "question": "Does this place charge a fee?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "There is internet access" - }, - "1": { - "then": "There is internet access" - }, - "2": { - "then": "There is no internet access" - } - }, - "question": "Does this place provide internet access?" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "You need to pay extra for internet access" - }, - "1": { - "then": "You do not need to pay extra for internet access" - } - }, - "question": "Do you have to pay for the internet access?" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "Yes, there are some spots for long term rental, but you can also stay on a daily basis" - }, - "1": { - "then": "No, there are no permanent guests here" - }, - "2": { - "then": "It is only possible to stay here if you have a long term contract(this place will disappear from this map if you choose this)" - } - }, - "question": "Does this place offer spots for long term rental?" - }, - "caravansites-name": { - "question": "What is this place called?", - "render": "This place is called {name}" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "This place has a sanitary dump station" - }, - "1": { - "then": "This place does not have a sanitary dump station" - } - }, - "question": "Does this place have a sanitary dump station?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "This place has toilets" - }, - "1": { - "then": "This place does not have toilets" - } - }, - "question": "Does this place have toilets?" - }, - "caravansites-website": { - "question": "Does this place have a website?", - "render": "Official website: {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Unnamed camper site" - } - }, - "render": "Camper site {name}" - } + "then": "Unnamed camper site" + } + }, + "render": "Camper site {name}" + } + }, + "1": { + "description": "Sanitary dump stations", + "name": "Sanitary dump stations", + "presets": { + "0": { + "description": "Add a new sanitary dump station. This is a place where camper drivers can dump waste water or chemical toilet waste. Often there's also drinking water and electricity.", + "title": "sanitary dump station" + } + }, + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "0": { + "then": "You need a network key/code to use this" + }, + "1": { + "then": "You need to be a customer of camping/campersite to use this place" + }, + "2": { + "then": "Anyone can use this dump station" + }, + "3": { + "then": "Anyone can use this dump station" + } + }, + "question": "Who can use this dump station?" + }, + "dumpstations-charge": { + "question": "How much does this place charge?", + "render": "This place charges {charge}" + }, + "dumpstations-chemical-waste": { + "mappings": { + "0": { + "then": "You can dispose of chemical toilet waste here" + }, + "1": { + "then": "You cannot dispose of chemical toilet waste here" + } + }, + "question": "Can you dispose of chemical toilet waste here?" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "You need to pay for use" + }, + "1": { + "then": "Can be used for free" + } + }, + "question": "Does this place charge a fee?" + }, + "dumpstations-grey-water": { + "mappings": { + "0": { + "then": "You can dispose of grey water here" + }, + "1": { + "then": "You cannot dispose of gray water here" + } + }, + "question": "Can you dispose of grey water here?" + }, + "dumpstations-network": { + "question": "What network is this place a part of? (skip if none)", + "render": "This station is part of network {network}" + }, + "dumpstations-waterpoint": { + "mappings": { + "0": { + "then": "This place has a water point" + }, + "1": { + "then": "This place does not have a water point" + } + }, + "question": "Does this place have a water point?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Dump station" + } + }, + "render": "Dump station {name}" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Who operates this place?", + "render": "This place is operated by {operator}" + }, + "1": { + "mappings": { + "0": { + "then": "This place has a power supply" }, "1": { - "description": "Sanitary dump stations", - "name": "Sanitary dump stations", - "presets": { - "0": { - "description": "Add a new sanitary dump station. This is a place where camper drivers can dump waste water or chemical toilet waste. Often there's also drinking water and electricity.", - "title": "sanitary dump station" - } - }, - "tagRenderings": { - "dumpstations-access": { - "mappings": { - "0": { - "then": "You need a network key/code to use this" - }, - "1": { - "then": "You need to be a customer of camping/campersite to use this place" - }, - "2": { - "then": "Anyone can use this dump station" - }, - "3": { - "then": "Anyone can use this dump station" - } - }, - "question": "Who can use this dump station?" - }, - "dumpstations-charge": { - "question": "How much does this place charge?", - "render": "This place charges {charge}" - }, - "dumpstations-chemical-waste": { - "mappings": { - "0": { - "then": "You can dispose of chemical toilet waste here" - }, - "1": { - "then": "You cannot dispose of chemical toilet waste here" - } - }, - "question": "Can you dispose of chemical toilet waste here?" - }, - "dumpstations-fee": { - "mappings": { - "0": { - "then": "You need to pay for use" - }, - "1": { - "then": "Can be used for free" - } - }, - "question": "Does this place charge a fee?" - }, - "dumpstations-grey-water": { - "mappings": { - "0": { - "then": "You can dispose of grey water here" - }, - "1": { - "then": "You cannot dispose of gray water here" - } - }, - "question": "Can you dispose of grey water here?" - }, - "dumpstations-network": { - "question": "What network is this place a part of? (skip if none)", - "render": "This station is part of network {network}" - }, - "dumpstations-waterpoint": { - "mappings": { - "0": { - "then": "This place has a water point" - }, - "1": { - "then": "This place does not have a water point" - } - }, - "question": "Does this place have a water point?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Dump station" - } - }, - "render": "Dump station {name}" - } + "then": "This place does not have power supply" } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Who operates this place?", - "render": "This place is operated by {operator}" - }, - "1": { - "mappings": { - "0": { - "then": "This place has a power supply" - }, - "1": { - "then": "This place does not have power supply" - } - }, - "question": "Does this place have a power supply?" - } - } - }, - "shortDescription": "Find sites to spend the night with your camper", - "title": "Campersites" + }, + "question": "Does this place have a power supply?" + } + } }, - "charging_stations": { - "description": "On this open map, one can find and mark information about charging stations", - "shortDescription": "A worldwide map of charging stations", - "title": "Charging stations" - }, - "climbing": { - "description": "On this map you will find various climbing opportunities such as climbing gyms, bouldering halls and rocks in nature.", - "descriptionTail": "The climbing map was originally made by Christian Neumann. Please get in touch if you have feedback or questions.

The project uses data of the OpenStreetMap project.

", - "layers": { + "shortDescription": "Find sites to spend the night with your camper", + "title": "Campersites" + }, + "charging_stations": { + "description": "On this open map, one can find and mark information about charging stations", + "shortDescription": "A worldwide map of charging stations", + "title": "Charging stations" + }, + "climbing": { + "description": "On this map you will find various climbing opportunities such as climbing gyms, bouldering halls and rocks in nature.", + "descriptionTail": "The climbing map was originally made by Christian Neumann. Please get in touch if you have feedback or questions.

The project uses data of the OpenStreetMap project.

", + "layers": { + "0": { + "description": "A climbing club or organisations", + "name": "Climbing club", + "presets": { + "0": { + "description": "A climbing club", + "title": "Climbing club" + }, + "1": { + "description": "A NGO working around climbing", + "title": "Climbing NGO" + } + }, + "tagRenderings": { + "climbing_club-name": { + "question": "What is the name of this climbing club or NGO?", + "render": "{name}" + } + }, + "title": { + "mappings": { "0": { - "description": "A climbing club or organisations", - "name": "Climbing club", - "presets": { - "0": { - "description": "A climbing club", - "title": "Climbing club" - }, - "1": { - "description": "A NGO working around climbing", - "title": "Climbing NGO" - } - }, - "tagRenderings": { - "climbing_club-name": { - "question": "What is the name of this climbing club or NGO?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Climbing NGO" - } - }, - "render": "Climbing club" - } + "then": "Climbing NGO" + } + }, + "render": "Climbing club" + } + }, + "1": { + "description": "A climbing gym", + "name": "Climbing gyms", + "tagRenderings": { + "name": { + "question": "What is the name of this climbing gym?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Climbing gym {name}" + } + }, + "render": "Climbing gym" + } + }, + "2": { + "name": "Climbing routes", + "presets": { + "0": { + "title": "Climbing route" + } + }, + "tagRenderings": { + "Bolts": { + "mappings": { + "0": { + "then": "This route is not bolted" + }, + "1": { + "then": "This route is not bolted" + } + }, + "question": "How much bolts does this route have before reaching the moulinette?", + "render": "This route has {climbing:bolts} bolts" + }, + "Difficulty": { + "question": "What is the difficulty of this climbing route according to the french/belgian system?", + "render": "The difficulty is {climbing:grade:french} according to the french/belgian system" + }, + "Length": { + "question": "How long is this climbing route (in meters)?", + "render": "This route is {canonical(climbing:length)} long" + }, + "Name": { + "mappings": { + "0": { + "then": "This climbing route doesn't have a name" + } + }, + "question": "What is the name of this climbing route?", + "render": "{name}" + }, + "Rock type": { + "render": "The rock type is {_embedding_features_with_rock:rock} as stated on the surrounding crag" + } + }, + "title": { + "mappings": { + "0": { + "then": "Climbing route {name}" + } + }, + "render": "Climbing route" + } + }, + "3": { + "description": "A climbing opportunity", + "name": "Climbing opportunities", + "presets": { + "0": { + "description": "A climbing opportunity", + "title": "Climbing opportunity" + } + }, + "tagRenderings": { + "Contained routes hist": { + "render": "

Difficulties overview

{histogram(_difficulty_hist)}" + }, + "Contained routes length hist": { + "render": "

Length overview

{histogram(_length_hist)}" + }, + "Contained_climbing_routes": { + "render": "

Contains {_contained_climbing_routes_count} routes

    {_contained_climbing_routes}
" + }, + "Rock type (crag/rock/cliff only)": { + "mappings": { + "0": { + "then": "Limestone" + } + }, + "question": "What is the rock type here?", + "render": "The rock type is {rock}" + }, + "Type": { + "mappings": { + "0": { + "then": "A climbing boulder - a single rock or cliff with one or a few climbing routes which can be climbed safely without rope" + }, + "1": { + "then": "A climbing crag - a single rock or cliff with at least a few climbing routes" + } + } + }, + "name": { + "mappings": { + "0": { + "then": "This climbing opportunity doesn't have a name" + } + }, + "question": "What is the name of this climbing opportunity?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Climbing crag {name}" }, "1": { - "description": "A climbing gym", - "name": "Climbing gyms", - "tagRenderings": { - "name": { - "question": "What is the name of this climbing gym?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Climbing gym {name}" - } - }, - "render": "Climbing gym" - } + "then": "Climbing area {name}" }, "2": { - "name": "Climbing routes", - "presets": { - "0": { - "title": "Climbing route" - } - }, - "tagRenderings": { - "Bolts": { - "mappings": { - "0": { - "then": "This route is not bolted" - }, - "1": { - "then": "This route is not bolted" - } - }, - "question": "How much bolts does this route have before reaching the moulinette?", - "render": "This route has {climbing:bolts} bolts" - }, - "Difficulty": { - "question": "What is the difficulty of this climbing route according to the french/belgian system?", - "render": "The difficulty is {climbing:grade:french} according to the french/belgian system" - }, - "Length": { - "question": "How long is this climbing route (in meters)?", - "render": "This route is {canonical(climbing:length)} long" - }, - "Name": { - "mappings": { - "0": { - "then": "This climbing route doesn't have a name" - } - }, - "question": "What is the name of this climbing route?", - "render": "{name}" - }, - "Rock type": { - "render": "The rock type is {_embedding_features_with_rock:rock} as stated on the surrounding crag" - } - }, - "title": { - "mappings": { - "0": { - "then": "Climbing route {name}" - } - }, - "render": "Climbing route" - } + "then": "Climbing site" }, "3": { - "description": "A climbing opportunity", - "name": "Climbing opportunities", - "presets": { - "0": { - "description": "A climbing opportunity", - "title": "Climbing opportunity" - } - }, - "tagRenderings": { - "Containe {_contained_climbing_routes_count} routes": { - "render": "

Contains {_contained_climbing_routes_count} routes

    {_contained_climbing_routes}
" - }, - "Contained routes hist": { - "render": "

Difficulties overview

{histogram(_difficulty_hist)}" - }, - "Contained routes length hist": { - "render": "

Length overview

{histogram(_length_hist)}" - }, - "Rock type (crag/rock/cliff only)": { - "mappings": { - "0": { - "then": "Limestone" - } - }, - "question": "What is the rock type here?", - "render": "The rock type is {rock}" - }, - "Type": { - "mappings": { - "0": { - "then": "A climbing boulder - a single rock or cliff with one or a few climbing routes which can be climbed safely without rope" - }, - "1": { - "then": "A climbing crag - a single rock or cliff with at least a few climbing routes" - } - } - }, - "name": { - "mappings": { - "0": { - "then": "This climbing opportunity doesn't have a name" - } - }, - "question": "What is the name of this climbing opportunity?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Climbing crag {name}" - }, - "1": { - "then": "Climbing area {name}" - }, - "2": { - "then": "Climbing site" - }, - "3": { - "then": "Climbing opportunity {name}" - } - }, - "render": "Climbing opportunity" - } - }, - "4": { - "description": "A climbing opportunity?", - "name": "Climbing opportunities?", - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - }, - "climbing-possible": { - "mappings": { - "0": { - "then": "Climbing is not possible here" - }, - "1": { - "then": "Climbing is possible here" - }, - "2": { - "then": "Climbing is not possible here" - } - }, - "question": "Is climbing possible here?" - } - }, - "title": { - "render": "Climbing opportunity?" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Is there a (unofficial) website with more informations (e.g. topos)?" - }, - "1": { - "mappings": { - "0": { - "then": "The containing feature states that this is publicly accessible
{_embedding_feature:access:description}" - }, - "1": { - "then": "The containing feature states that a permit is needed to access
{_embedding_feature:access:description}" - }, - "2": { - "then": "The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}" - }, - "3": { - "then": "The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}" - } - } - }, - "2": { - "mappings": { - "0": { - "then": "Publicly accessible to anyone" - }, - "1": { - "then": "You need a permit to access here" - }, - "2": { - "then": "Only custumers" - }, - "3": { - "then": "Only club members" - } - }, - "question": "Who can access here?" - }, - "4": { - "question": "What is the (average) length of the routes in meters?", - "render": "The routes are {canonical(climbing:length)} long on average" - }, - "5": { - "question": "What is the level of the easiest route here, accoring to the french classification system?", - "render": "The minimal difficulty is {climbing:grade:french:min} according to the french/belgian system" - }, - "6": { - "question": "What is the level of the most difficult route here, accoring to the french classification system?", - "render": "The maximal difficulty is {climbing:grade:french:max} according to the french/belgian system" - }, - "7": { - "mappings": { - "0": { - "then": "Bouldering is possible here" - }, - "1": { - "then": "Bouldering is not possible here" - }, - "2": { - "then": "Bouldering is possible, allthough there are only a few routes" - }, - "3": { - "then": "There are {climbing:boulder} boulder routes" - } - }, - "question": "Is bouldering possible here?" - }, - "8": { - "mappings": { - "0": { - "then": "Toprope climbing is possible here" - }, - "1": { - "then": "Toprope climbing is not possible here" - }, - "2": { - "then": "There are {climbing:toprope} toprope routes" - } - }, - "question": "Is toprope climbing possible here?" - }, - "9": { - "mappings": { - "0": { - "then": "Sport climbing is possible here" - }, - "1": { - "then": "Sport climbing is not possible here" - }, - "2": { - "then": "There are {climbing:sport} sport climbing routes" - } - }, - "question": "Is sport climbing possible here on fixed anchors?" - }, - "10": { - "mappings": { - "0": { - "then": "Traditional climbing is possible here" - }, - "1": { - "then": "Traditional climbing is not possible here" - }, - "2": { - "then": "There are {climbing:traditional} traditional climbing routes" - } - }, - "question": "Is traditional climbing possible here (using own gear e.g. chocks)?" - }, - "11": { - "mappings": { - "0": { - "then": "There is a speed climbing wall" - }, - "1": { - "then": "There is no speed climbing wall" - }, - "2": { - "then": "There are {climbing:speed} speed climbing walls" - } - }, - "question": "Is there a speed climbing wall?" - } - }, - "units+": { - "0": { - "applicableUnits": { - "0": { - "human": " meter" - }, - "1": { - "human": " feet" - } - } - } - } - }, - "title": "Open Climbing Map" - }, - "cycle_highways": { - "description": "This map shows cycle highways", - "layers": { - "0": { - "name": "cycle highways", - "title": { - "render": "cycle highway" - } - } - }, - "title": "Cycle highways" - }, - "cycle_infra": { - "description": "A map where you can view and edit things related to the bicycle infrastructure. Made during #osoc21.", - "shortDescription": "A map where you can view and edit things related to the bicycle infrastructure.", - "title": "Bicycle infrastructure" - }, - "cyclestreets": { - "description": "A cyclestreet is is a street where motorized traffic is not allowed to overtake cyclists. They are signposted by a special traffic sign. Cyclestreets can be found in the Netherlands and Belgium, but also in Germany and France. ", - "layers": { - "0": { - "description": "A cyclestreet is a street where motorized traffic is not allowed to overtake a cyclist", - "name": "Cyclestreets" - }, - "1": { - "description": "This street will become a cyclestreet soon", - "name": "Future cyclestreet", - "title": { - "mappings": { - "0": { - "then": "{name} will become a cyclestreet soon" - } - }, - "render": "Future cyclestreet" - } - }, - "2": { - "description": "Layer to mark any street as cyclestreet", - "name": "All streets", - "title": { - "render": "Street" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "mappings": { - "0": { - "then": "This street is a cyclestreet (and has a speed limit of 30 km/h)" - }, - "1": { - "then": "This street is a cyclestreet" - }, - "2": { - "then": "This street will become a cyclstreet soon" - }, - "3": { - "then": "This street is not a cyclestreet" - } - }, - "question": "Is this street a cyclestreet?" - }, - "1": { - "question": "When will this street become a cyclestreet?", - "render": "This street will become a cyclestreet at {cyclestreet:start_date}" - } - } - }, - "shortDescription": "A map of cyclestreets", - "title": "Cyclestreets" - }, - "cyclofix": { - "description": "The goal of this map is to present cyclists with an easy-to-use solution to find the appropriate infrastructure for their needs.

You can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide more data by answering the questions.

All changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others.

For more information about the cyclofix project, go to cyclofix.osm.be.", - "title": "Cyclofix - an open map for cyclists" - }, - "drinking_water": { - "description": "On this map, publicly accessible drinking water spots are shown and can be easily added", - "title": "Drinking Water" - }, - "etymology": { - "description": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. In the popup, you'll see the Wikipedia article (if it exists) or a wikidata box of what the object is named after. If the object itself has a wikipedia page, that'll be shown too.

You can help contribute too!Zoom in enough and all streets will show up. You can click one and a Wikidata-search box will popup. With a few clicks, you can add an etymology link. Note that you need a free OpenStreetMap account to do this.", - "layers": { - "1": { - "override": { - "name": "Streets without etymology information" - } - }, - "2": { - "override": { - "name": "Parks and forests without etymology information" - } - } - }, - "shortDescription": "What is the origin of a toponym?", - "title": "Open Etymology Map" - }, - "facadegardens": { - "description": "Facade gardens, green facades and trees in the city not only bring peace and quiet, but also a more beautiful city, greater biodiversity, a cooling effect and better air quality.
Klimaan VZW and Mechelen Klimaatneutraal want to map existing and new facade gardens as an example for people who want to build their own garden or for city walkers who love nature.
More info about the project at klimaan.be.", - "layers": { - "0": { - "description": "Facade gardens", - "name": "Facade gardens", - "presets": { - "0": { - "description": "Add a facade garden", - "title": "facade garden" - } - }, - "tagRenderings": { - "facadegardens-description": { - "question": "Extra describing info about the garden (if needed and not yet described above)", - "render": "More details: {description}" - }, - "facadegardens-direction": { - "question": "What is the orientation of the garden?", - "render": "Orientation: {direction} (where 0=N and 90=O)" - }, - "facadegardens-edible": { - "mappings": { - "0": { - "then": "There are edible plants" - }, - "1": { - "then": "There are no edible plants" - } - }, - "question": "Are there any edible plants?" - }, - "facadegardens-plants": { - "mappings": { - "0": { - "then": "There are vines" - }, - "1": { - "then": "There are flowering plants" - }, - "2": { - "then": "There are shrubs" - }, - "3": { - "then": "There are groundcovering plants" - } - }, - "question": "What kinds of plants grow here?" - }, - "facadegardens-rainbarrel": { - "mappings": { - "0": { - "then": "There is a rain barrel" - }, - "1": { - "then": "There is no rain barrel" - } - }, - "question": "Is there a water barrel installed for the garden?" - }, - "facadegardens-start_date": { - "question": "When was the garden constructed? (a year is sufficient)", - "render": "Construction date of the garden: {start_date}" - }, - "facadegardens-sunshine": { - "mappings": { - "0": { - "then": "The garden is in full sun" - }, - "1": { - "then": "The garden is in partial shade" - }, - "2": { - "then": "The garden is in the shade" - } - }, - "question": "Is the garden shaded or sunny?" - } - }, - "title": { - "render": "Facade garden" - } - } - }, - "shortDescription": "This map shows facade gardens with pictures and useful info about orientation, sunshine and plant types.", - "title": "Facade gardens" - }, - "food": { - "title": "Restaurants and fast food" - }, - "fritures": { - "layers": { - "0": { - "override": { - "name": "Fries shop" - } + "then": "Climbing opportunity {name}" } + }, + "render": "Climbing opportunity" } - }, - "ghostbikes": { - "description": "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.", - "title": "Ghost bikes" - }, - "grb": { - "description": "This theme is an attempt to help automating the GRB import.
Note that this is very hacky and 'steals' the GRB data from an external site; in order to do this, you need to install and activate this firefox extension for it to work.", - "layers": { - "1": { - "tagRenderings": { - "building type": { - "question": "What kind of building is this?" - } - } - } - } - }, - "hackerspaces": { - "description": "On this map you can see hackerspaces, add a new hackerspace or update data directly", - "layers": { - "0": { - "description": "Hackerspace", - "name": "Hackerspace", - "presets": { - "0": { - "description": "A hackerspace is an area where people interested in software gather", - "title": "Hackerspace" - }, - "1": { - "description": "A makerspace is a place where DIY-enthusiasts gather to experiment with electronics such as arduino, LEDstrips, ...", - "title": "Makerspace" - } - }, - "tagRenderings": { - "hackerspaces-name": { - "question": "What is the name of this hackerspace?", - "render": "This hackerspace is named {name}" - }, - "hackerspaces-opening_hours": { - "mappings": { - "0": { - "then": "Opened 24/7" - } - }, - "question": "When is this hackerspace opened?", - "render": "{opening_hours_table()}" - }, - "hackerspaces-start_date": { - "question": "When was this hackerspace founded?", - "render": "This hackerspace was founded at {start_date}" - }, - "hs-club-mate": { - "mappings": { - "0": { - "then": "This hackerspace serves club mate" - }, - "1": { - "then": "This hackerspace does not serve club mate" - } - }, - "question": "Does this hackerspace serve Club Mate?" - }, - "is_makerspace": { - "mappings": { - "0": { - "then": "This is a makerspace" - }, - "1": { - "then": "This is a traditional (software oriented) hackerspace" - } - }, - "question": "Is this a hackerspace or a makerspace?" - } - }, - "title": { - "mappings": { - "0": { - "then": " {name}" - } - }, - "render": "Hackerspace" - } - } + }, + "4": { + "description": "A climbing opportunity?", + "name": "Climbing opportunities?", + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + }, + "climbing-possible": { + "mappings": { + "0": { + "then": "Climbing is not possible here" + }, + "1": { + "then": "Climbing is possible here" + }, + "2": { + "then": "Climbing is not possible here" + } + }, + "question": "Is climbing possible here?" + } }, - "shortDescription": "A map of hackerspaces", - "title": "Hackerspaces" + "title": { + "render": "Climbing opportunity?" + } + } }, - "hailhydrant": { - "description": "On this map you can find and update hydrants, fire stations, ambulance stations, and extinguishers in your favorite neighborhoods.\n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions.\n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others.", - "layers": { + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Is there a (unofficial) website with more informations (e.g. topos)?" + }, + "1": { + "mappings": { "0": { - "description": "Map layer to show fire hydrants.", - "name": "Map of hydrants", - "presets": { - "0": { - "description": "A hydrant is a connection point where firefighters can tap water. It might be located underground.", - "title": "Fire hydrant" - } - }, - "tagRenderings": { - "hydrant-color": { - "mappings": { - "0": { - "then": "The hydrant color is unknown." - }, - "1": { - "then": "The hydrant color is yellow." - }, - "2": { - "then": "The hydrant color is red." - } - }, - "question": "What color is the hydrant?", - "render": "The hydrant color is {colour}" - }, - "hydrant-state": { - "mappings": { - "0": { - "then": "The hydrant is (fully or partially) working." - }, - "1": { - "then": "The hydrant is unavailable." - }, - "2": { - "then": "The hydrant has been removed." - } - }, - "question": "Update the lifecycle status of the hydrant.", - "render": "Lifecycle status" - }, - "hydrant-type": { - "mappings": { - "0": { - "then": "The hydrant type is unknown." - }, - "1": { - "then": " Pillar type." - }, - "2": { - "then": " Pipe type." - }, - "3": { - "then": " Wall type." - }, - "4": { - "then": " Underground type." - } - }, - "question": "What type of hydrant is it?", - "render": " Hydrant type: {fire_hydrant:type}" - } - }, - "title": { - "render": "Hydrant" - } + "then": "The containing feature states that this is publicly accessible
{_embedding_feature:access:description}" }, "1": { - "description": "Map layer to show fire hydrants.", - "name": "Map of fire extinguishers.", - "presets": { - "0": { - "description": "A fire extinguisher is a small, portable device used to stop a fire", - "title": "Fire extinguisher" - } - }, - "tagRenderings": { - "extinguisher-location": { - "mappings": { - "0": { - "then": "Found indoors." - }, - "1": { - "then": "Found outdoors." - } - }, - "question": "Where is it positioned?", - "render": "Location: {location}" - } - }, - "title": { - "render": "Extinguishers" - } + "then": "The containing feature states that a permit is needed to access
{_embedding_feature:access:description}" }, "2": { - "description": "Map layer to show fire stations.", - "name": "Map of fire stations", - "presets": { - "0": { - "description": "A fire station is a place where the fire trucks and firefighters are located when not in operation.", - "title": "Fire station" - } - }, - "tagRenderings": { - "station-agency": { - "mappings": { - "0": { - "then": "Bureau of Fire Protection" - } - }, - "question": "What agency operates this station?", - "render": "This station is operated by {operator}." - }, - "station-name": { - "question": "What is the name of this fire station?", - "render": "This station is called {name}." - }, - "station-operator": { - "mappings": { - "0": { - "then": "The station is operated by the government." - }, - "1": { - "then": "The station is operated by a community-based, or informal organization." - }, - "2": { - "then": "The station is operated by a formal group of volunteers." - }, - "3": { - "then": "The station is privately operated." - } - }, - "question": "How is the station operator classified?", - "render": "The operator is a(n) {operator:type} entity." - }, - "station-place": { - "question": "Where is the station located? (e.g. name of neighborhood, villlage, or town)", - "render": "This station is found within {addr:place}." - }, - "station-street": { - "question": " What is the street name where the station located?", - "render": "This station is along a highway called {addr:street}." - } - }, - "title": { - "render": "Fire Station" - } + "then": "The containing feature states that this is only accessible to customers
{_embedding_feature:access:description}" }, "3": { - "description": "An ambulance station is an area for storage of ambulance vehicles, medical equipment, personal protective equipment, and other medical supplies.", - "name": "Map of ambulance stations", - "presets": { - "0": { - "description": "Add an ambulance station to the map", - "title": "Ambulance station" - } - }, - "tagRenderings": { - "ambulance-agency": { - "question": "What agency operates this station?", - "render": "This station is operated by {operator}." - }, - "ambulance-name": { - "question": "What is the name of this ambulance station?", - "render": "This station is called {name}." - }, - "ambulance-operator-type": { - "mappings": { - "0": { - "then": "The station is operated by the government." - }, - "1": { - "then": "The station is operated by a community-based, or informal organization." - }, - "2": { - "then": "The station is operated by a formal group of volunteers." - }, - "3": { - "then": "The station is privately operated." - } - }, - "question": "How is the station operator classified?", - "render": "The operator is a(n) {operator:type} entity." - }, - "ambulance-place": { - "question": "Where is the station located? (e.g. name of neighborhood, villlage, or town)", - "render": "This station is found within {addr:place}." - }, - "ambulance-street": { - "question": " What is the street name where the station located?", - "render": "This station is along a highway called {addr:street}." - } - }, - "title": { - "render": "Ambulance Station" - } + "then": "The containing feature states that this is only accessible to club members
{_embedding_feature:access:description}" } + } }, - "shortDescription": "Map to show hydrants, extinguishers, fire stations, and ambulance stations.", - "title": "Hydrants, Extinguishers, Fire stations, and Ambulance stations." - }, - "maps": { - "description": "On this map you can find all maps OpenStreetMap knows - typically a big map on an information board showing the area, city or region, e.g. a tourist map on the back of a billboard, a map of a nature reserve, a map of cycling networks in the region, ...)

If a map is missing, you can easily map this map on OpenStreetMap.", - "shortDescription": "This theme shows all (touristic) maps that OpenStreetMap knows of", - "title": "A map of maps" - }, - "natuurpunt": { - "description": "On this map you can find all the nature reserves that Natuurpunt offers ", - "shortDescription": "This map shows the nature reserves of Natuurpunt", - "title": "Nature Reserves" - }, - "observation_towers": { - "description": "Publicly accessible towers to enjoy the view", - "shortDescription": "Publicly accessible towers to enjoy the view", - "title": "Observation towers" - }, - "openwindpowermap": { - "description": "A map for showing and editing wind turbines.", - "layers": { + "2": { + "mappings": { "0": { - "name": "wind turbine", - "presets": { - "0": { - "title": "wind turbine" - } - }, - "tagRenderings": { - "turbine-diameter": { - "question": "What is the rotor diameter of this wind turbine, in metres?", - "render": "The rotor diameter of this wind turbine is {rotor:diameter} metres." - }, - "turbine-height": { - "question": "What is the total height of this wind turbine (including rotor radius), in metres?", - "render": "The total height (including rotor radius) of this wind turbine is {height} metres." - }, - "turbine-operator": { - "question": "Who operates this wind turbine?", - "render": "This wind turbine is operated by {operator}." - }, - "turbine-output": { - "question": "What is the power output of this wind turbine? (e.g. 2.3 MW)", - "render": "The power output of this wind turbine is {generator:output:electricity}." - }, - "turbine-start-date": { - "question": "When did this wind turbine go into operation?", - "render": "This wind turbine went into operation on/in {start_date}." - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "wind turbine" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " megawatts" - }, - "1": { - "human": " kilowatts" - }, - "2": { - "human": " watts" - }, - "3": { - "human": " gigawatts" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": " meter" - } - } - } - } - } - }, - "title": "OpenWindPowerMap" - }, - "parkings": { - "description": "This map shows different parking spots", - "shortDescription": "This map shows different parking spots", - "title": "Parking" - }, - "personal": { - "description": "Create a personal theme based on all the available layers of all themes. In order to show some data, open layer selection", - "title": "Personal theme" - }, - "playgrounds": { - "description": "On this map, you find playgrounds and can add more information", - "shortDescription": "A map with playgrounds", - "title": "Playgrounds" - }, - "postboxes": { - "description": "On this map you can find and add data of post offices and post boxes. You can use this map to find where you can mail your next postcard! :)
Spotted an error or is a post box missing? You can edit this map with a free OpenStreetMap account. ", - "layers": { - "0": { - "description": "The layer showing postboxes.", - "name": "Postboxes", - "presets": { - "0": { - "title": "postbox" - } - }, - "title": { - "render": "Postbox" - } + "then": "Publicly accessible to anyone" }, "1": { - "description": "A layer showing post offices.", - "filter": { - "0": { - "options": { - "0": { - "question": "Currently open" - } - } - } - }, - "name": "Post offices", - "presets": { - "0": { - "title": "Post Office" - } - }, - "tagRenderings": { - "OH": { - "mappings": { - "0": { - "then": "24/7 opened (including holidays)" - } - }, - "question": "What are the opening hours for this post office?", - "render": "Opening Hours: {opening_hours_table()}" - }, - "letter-from": { - "mappings": { - "0": { - "then": "You can post letters here" - }, - "1": { - "then": "You can't post letters here" - } - }, - "question": "Can you post a letter here?", - "render": "You can post letters with these companies: {post_office:letter_from}" - }, - "parcel-from": { - "mappings": { - "0": { - "then": "You can send parcels here" - }, - "1": { - "then": "You can't send parcels here" - } - }, - "question": "Can you send a parcel here?", - "render": "You can post parcels with these companies: {post_office:parcel_from}" - }, - "parcel-pickup": { - "mappings": { - "0": { - "then": "You can pick up missed parcels here" - }, - "1": { - "then": "You can't pick up missed parcels here" - } - }, - "question": "Can you pick up missed parcels here?", - "render": "You can pick up parcels from these companies: {post_office:parcel_pickup}" - }, - "parcel-to": { - "mappings": { - "0": { - "then": "You can send parcels to here for pickup" - }, - "1": { - "then": "You can't send parcels to here for pickup" - } - }, - "question": "Can you send parcels to here for pickup?", - "render": "You can send parcels to here for pickup with these companies: {post_office:parcel_to}" - }, - "partner-brand": { - "mappings": { - "0": { - "then": "This location offers services for DHL" - }, - "1": { - "then": "This location offers services for DPD" - }, - "2": { - "then": "This location offers services for GLS" - }, - "3": { - "then": "This location offers services for UPS" - }, - "4": { - "then": "This location is a DHL Paketshop" - }, - "5": { - "then": "This location is a Hermes PaketShop" - }, - "6": { - "then": "This location is a PostNL-point" - }, - "7": { - "then": "This location offers services for bpost" - } - }, - "question": "For which brand does this location offer services?", - "render": "This location offers services for {post_office:brand}" - }, - "post_partner": { - "mappings": { - "0": { - "then": "This shop is a post partner" - }, - "1": { - "then": "This shop is not a post partner" - } - }, - "question": "Is this a post partner?" - }, - "stamps": { - "mappings": { - "0": { - "then": "You can buy stamps here" - }, - "1": { - "then": "You can't buy stamps here" - } - }, - "question": "Can you buy stamps here?", - "render": "You can buy stamps from companies: {post_office:stamps}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Post partner at a shop" - }, - "1": { - "then": "Post partner at {name}" - } - }, - "render": "Post Office" - } + "then": "You need a permit to access here" }, "2": { - "description": "Add a new post partner to the map", - "name": "Add new post partner", - "tagRenderings": { - "post_partner": { - "mappings": { - "0": { - "then": "This shop is a post partner" - }, - "1": { - "then": "This shop is not a post partner" - } - }, - "question": "Is this a post partner?" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Shop" - } + "then": "Only custumers" + }, + "3": { + "then": "Only club members" } + }, + "question": "Who can access here?" }, - "shortDescription": "A map showing postboxes and post offices", - "title": "Postbox and Post Office Map" - }, - "shops": { - "description": "On this map, one can mark basic information about shops, add opening hours and phone numbers", - "shortDescription": "An editable map with basic shop information", - "title": "Open Shop Map" - }, - "sidewalks": { - "description": "Experimental theme", - "layers": { + "4": { + "question": "What is the (average) length of the routes in meters?", + "render": "The routes are {canonical(climbing:length)} long on average" + }, + "5": { + "question": "What is the level of the easiest route here, accoring to the french classification system?", + "render": "The minimal difficulty is {climbing:grade:french:min} according to the french/belgian system" + }, + "6": { + "question": "What is the level of the most difficult route here, accoring to the french classification system?", + "render": "The maximal difficulty is {climbing:grade:french:max} according to the french/belgian system" + }, + "7": { + "mappings": { "0": { - "description": "Layer showing sidewalks of highways", - "name": "Sidewalks", - "tagRenderings": { - "streetname": { - "render": "This street is named {name}" - } - }, - "title": { - "render": "{name}" - } - } - }, - "shortDescription": "Sidewalk mapping", - "title": "Sidewalks" - }, - "sport_pitches": { - "description": "A sport pitch is an area where sports are played", - "shortDescription": "A map showing sport pitches", - "title": "Sport pitches" - }, - "street_lighting": { - "description": "On this map you can find everything about street lighting", - "layers": { + "then": "Bouldering is possible here" + }, "1": { - "name": "Lit streets", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "This street is lit" - }, - "1": { - "then": "This street is not lit" - }, - "2": { - "then": "This street is lit at night" - }, - "3": { - "then": "This street is lit 24/7" - } - }, - "question": "Is this street lit?" - } - }, - "title": { - "render": "Lit street" - } + "then": "Bouldering is not possible here" }, "2": { - "name": "All streets", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "This street is lit" - }, - "1": { - "then": "This street is not lit" - }, - "2": { - "then": "This street is lit at night" - }, - "3": { - "then": "This street is lit 24/7" - } - }, - "question": "Is this street lit?" - } - }, - "title": { - "render": "Street" - } + "then": "Bouldering is possible, allthough there are only a few routes" + }, + "3": { + "then": "There are {climbing:boulder} boulder routes" } + }, + "question": "Is bouldering possible here?" }, - "title": "Street Lighting" - }, - "surveillance": { - "description": "On this open map, you can find surveillance cameras.", - "shortDescription": "Surveillance cameras and other means of surveillance", - "title": "Surveillance under Surveillance" - }, - "toilets": { - "description": "A map of public toilets", - "title": "Open Toilet Map" - }, - "trees": { - "description": "Map all the trees!", - "shortDescription": "Map all the trees", - "title": "Trees" - }, - "uk_addresses": { - "description": "Contribute to OpenStreetMap by filling out address information", - "layers": { - "2": { - "description": "Addresses", - "name": "Known addresses in OSM", - "tagRenderings": { - "address-sign-image": { - "render": "{image_carousel(image:address)}
{image_upload(image:address, Add image of the address)}" - }, - "fixme": { - "question": "What should be fixed here? Please explain" - }, - "uk_addresses_explanation_osm": { - "render": "This address is saved in OpenStreetMap" - }, - "uk_addresses_housenumber": { - "mappings": { - "0": { - "then": "This building has no house number" - } - }, - "question": "What is the number of this house?", - "render": "The housenumber is {addr:housenumber}" - }, - "uk_addresses_street": { - "question": "What street is this address located in?", - "render": "This address is in street {addr:street}" - } - }, - "title": { - "render": "Known address" - } - } - }, - "shortDescription": "Help to build an open dataset of UK addresses", - "tileLayerSources": { + "8": { + "mappings": { "0": { - "name": "Property boundaries by osmuk.org" + "then": "Toprope climbing is possible here" + }, + "1": { + "then": "Toprope climbing is not possible here" + }, + "2": { + "then": "There are {climbing:toprope} toprope routes" } + }, + "question": "Is toprope climbing possible here?" }, - "title": "UK Addresses" + "9": { + "mappings": { + "0": { + "then": "Sport climbing is possible here" + }, + "1": { + "then": "Sport climbing is not possible here" + }, + "2": { + "then": "There are {climbing:sport} sport climbing routes" + } + }, + "question": "Is sport climbing possible here on fixed anchors?" + }, + "10": { + "mappings": { + "0": { + "then": "Traditional climbing is possible here" + }, + "1": { + "then": "Traditional climbing is not possible here" + }, + "2": { + "then": "There are {climbing:traditional} traditional climbing routes" + } + }, + "question": "Is traditional climbing possible here (using own gear e.g. chocks)?" + }, + "11": { + "mappings": { + "0": { + "then": "There is a speed climbing wall" + }, + "1": { + "then": "There is no speed climbing wall" + }, + "2": { + "then": "There are {climbing:speed} speed climbing walls" + } + }, + "question": "Is there a speed climbing wall?" + } + }, + "units+": { + "0": { + "applicableUnits": { + "0": { + "human": " meter" + }, + "1": { + "human": " feet" + } + } + } + } }, - "waste_basket": { - "description": "On this map, you'll find waste baskets near you. If a waste basket is missing on this map, you can add it yourself", - "shortDescription": "A map with waste baskets", - "title": "Waste Basket" + "title": "Open Climbing Map" + }, + "cycle_highways": { + "description": "This map shows cycle highways", + "layers": { + "0": { + "name": "cycle highways", + "title": { + "render": "cycle highway" + } + } + }, + "title": "Cycle highways" + }, + "cycle_infra": { + "description": "A map where you can view and edit things related to the bicycle infrastructure. Made during #osoc21.", + "shortDescription": "A map where you can view and edit things related to the bicycle infrastructure.", + "title": "Bicycle infrastructure" + }, + "cyclestreets": { + "description": "A cyclestreet is is a street where motorized traffic is not allowed to overtake cyclists. They are signposted by a special traffic sign. Cyclestreets can be found in the Netherlands and Belgium, but also in Germany and France. ", + "layers": { + "0": { + "description": "A cyclestreet is a street where motorized traffic is not allowed to overtake a cyclist", + "name": "Cyclestreets" + }, + "1": { + "description": "This street will become a cyclestreet soon", + "name": "Future cyclestreet", + "title": { + "mappings": { + "0": { + "then": "{name} will become a cyclestreet soon" + } + }, + "render": "Future cyclestreet" + } + }, + "2": { + "description": "Layer to mark any street as cyclestreet", + "name": "All streets", + "title": { + "render": "Street" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "This street is a cyclestreet (and has a speed limit of 30 km/h)" + }, + "1": { + "then": "This street is a cyclestreet" + }, + "2": { + "then": "This street will become a cyclstreet soon" + }, + "3": { + "then": "This street is not a cyclestreet" + } + }, + "question": "Is the street {name} a cyclestreet?" + }, + "1": { + "question": "When will this street become a cyclestreet?", + "render": "This street will become a cyclestreet at {cyclestreet:start_date}" + } + } + }, + "shortDescription": "A map of cyclestreets", + "title": "Cyclestreets" + }, + "cyclofix": { + "description": "The goal of this map is to present cyclists with an easy-to-use solution to find the appropriate infrastructure for their needs.

You can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide more data by answering the questions.

All changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others.

For more information about the cyclofix project, go to cyclofix.osm.be.", + "title": "Cyclofix - an open map for cyclists" + }, + "drinking_water": { + "description": "On this map, publicly accessible drinking water spots are shown and can be easily added", + "title": "Drinking Water" + }, + "etymology": { + "description": "On this map, you can see what an object is named after. The streets, buildings, ... come from OpenStreetMap which got linked with Wikidata. In the popup, you'll see the Wikipedia article (if it exists) or a wikidata box of what the object is named after. If the object itself has a wikipedia page, that'll be shown too.

You can help contribute too!Zoom in enough and all streets will show up. You can click one and a Wikidata-search box will popup. With a few clicks, you can add an etymology link. Note that you need a free OpenStreetMap account to do this.", + "layers": { + "1": { + "override": { + "name": "Streets without etymology information" + } + }, + "2": { + "override": { + "name": "Parks and forests without etymology information" + } + } + }, + "shortDescription": "What is the origin of a toponym?", + "title": "Open Etymology Map" + }, + "facadegardens": { + "description": "Facade gardens, green facades and trees in the city not only bring peace and quiet, but also a more beautiful city, greater biodiversity, a cooling effect and better air quality.
Klimaan VZW and Mechelen Klimaatneutraal want to map existing and new facade gardens as an example for people who want to build their own garden or for city walkers who love nature.
More info about the project at klimaan.be.", + "layers": { + "0": { + "description": "Facade gardens", + "name": "Facade gardens", + "presets": { + "0": { + "description": "Add a facade garden", + "title": "facade garden" + } + }, + "tagRenderings": { + "facadegardens-description": { + "question": "Extra describing info about the garden (if needed and not yet described above)", + "render": "More details: {description}" + }, + "facadegardens-direction": { + "question": "What is the orientation of the garden?", + "render": "Orientation: {direction} (where 0=N and 90=O)" + }, + "facadegardens-edible": { + "mappings": { + "0": { + "then": "There are edible plants" + }, + "1": { + "then": "There are no edible plants" + } + }, + "question": "Are there any edible plants?" + }, + "facadegardens-plants": { + "mappings": { + "0": { + "then": "There are vines" + }, + "1": { + "then": "There are flowering plants" + }, + "2": { + "then": "There are shrubs" + }, + "3": { + "then": "There are groundcovering plants" + } + }, + "question": "What kinds of plants grow here?" + }, + "facadegardens-rainbarrel": { + "mappings": { + "0": { + "then": "There is a rain barrel" + }, + "1": { + "then": "There is no rain barrel" + } + }, + "question": "Is there a water barrel installed for the garden?" + }, + "facadegardens-start_date": { + "question": "When was the garden constructed? (a year is sufficient)", + "render": "Construction date of the garden: {start_date}" + }, + "facadegardens-sunshine": { + "mappings": { + "0": { + "then": "The garden is in full sun" + }, + "1": { + "then": "The garden is in partial shade" + }, + "2": { + "then": "The garden is in the shade" + } + }, + "question": "Is the garden shaded or sunny?" + } + }, + "title": { + "render": "Facade garden" + } + } + }, + "shortDescription": "This map shows facade gardens with pictures and useful info about orientation, sunshine and plant types.", + "title": "Facade gardens" + }, + "food": { + "title": "Restaurants and fast food" + }, + "fritures": { + "layers": { + "0": { + "override": { + "name": "Fries shop" + } + } } + }, + "ghostbikes": { + "description": "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.", + "title": "Ghost bikes" + }, + "grb": { + "description": "This theme is an attempt to help automating the GRB import.
Note that this is very hacky and 'steals' the GRB data from an external site; in order to do this, you need to install and activate this firefox extension for it to work.", + "layers": { + "1": { + "tagRenderings": { + "building type": { + "question": "What kind of building is this?" + } + } + } + } + }, + "hackerspaces": { + "description": "On this map you can see hackerspaces, add a new hackerspace or update data directly", + "layers": { + "0": { + "description": "Hackerspace", + "name": "Hackerspace", + "presets": { + "0": { + "description": "A hackerspace is an area where people interested in software gather", + "title": "Hackerspace" + }, + "1": { + "description": "A makerspace is a place where DIY-enthusiasts gather to experiment with electronics such as arduino, LEDstrips, ...", + "title": "Makerspace" + } + }, + "tagRenderings": { + "hackerspaces-name": { + "question": "What is the name of this hackerspace?", + "render": "This hackerspace is named {name}" + }, + "hackerspaces-opening_hours": { + "mappings": { + "0": { + "then": "Opened 24/7" + } + }, + "question": "When is this hackerspace opened?", + "render": "{opening_hours_table()}" + }, + "hackerspaces-start_date": { + "question": "When was this hackerspace founded?", + "render": "This hackerspace was founded at {start_date}" + }, + "hs-club-mate": { + "mappings": { + "0": { + "then": "This hackerspace serves club mate" + }, + "1": { + "then": "This hackerspace does not serve club mate" + } + }, + "question": "Does this hackerspace serve Club Mate?" + }, + "is_makerspace": { + "mappings": { + "0": { + "then": "This is a makerspace" + }, + "1": { + "then": "This is a traditional (software oriented) hackerspace" + } + }, + "question": "Is this a hackerspace or a makerspace?" + } + }, + "title": { + "mappings": { + "0": { + "then": " {name}" + } + }, + "render": "Hackerspace" + } + } + }, + "shortDescription": "A map of hackerspaces", + "title": "Hackerspaces" + }, + "hailhydrant": { + "description": "On this map you can find and update hydrants, fire stations, ambulance stations, and extinguishers in your favorite neighborhoods.\n\nYou can track your precise location (mobile only) and select layers that are relevant for you in the bottom left corner. You can also use this tool to add or edit pins (points of interest) to the map and provide additional details by answering available questions.\n\nAll changes you make will automatically be saved in the global database of OpenStreetMap and can be freely re-used by others.", + "layers": { + "0": { + "description": "Map layer to show fire hydrants.", + "name": "Map of hydrants", + "presets": { + "0": { + "description": "A hydrant is a connection point where firefighters can tap water. It might be located underground.", + "title": "Fire hydrant" + } + }, + "tagRenderings": { + "hydrant-color": { + "mappings": { + "0": { + "then": "The hydrant color is unknown." + }, + "1": { + "then": "The hydrant color is yellow." + }, + "2": { + "then": "The hydrant color is red." + } + }, + "question": "What color is the hydrant?", + "render": "The hydrant color is {colour}" + }, + "hydrant-state": { + "mappings": { + "0": { + "then": "The hydrant is (fully or partially) working" + }, + "1": { + "then": "The hydrant is unavailable" + }, + "2": { + "then": "The hydrant has been removed" + } + }, + "question": "Is this hydrant still working?" + }, + "hydrant-type": { + "mappings": { + "0": { + "then": "The hydrant type is unknown." + }, + "1": { + "then": " Pillar type." + }, + "2": { + "then": " Pipe type." + }, + "3": { + "then": " Wall type." + }, + "4": { + "then": " Underground type." + } + }, + "question": "What type of hydrant is it?", + "render": " Hydrant type: {fire_hydrant:type}" + } + }, + "title": { + "render": "Hydrant" + } + }, + "1": { + "description": "Map layer to show fire hydrants.", + "name": "Map of fire extinguishers.", + "presets": { + "0": { + "description": "A fire extinguisher is a small, portable device used to stop a fire", + "title": "Fire extinguisher" + } + }, + "tagRenderings": { + "extinguisher-location": { + "mappings": { + "0": { + "then": "Found indoors." + }, + "1": { + "then": "Found outdoors." + } + }, + "question": "Where is it positioned?", + "render": "Location: {location}" + } + }, + "title": { + "render": "Extinguishers" + } + }, + "2": { + "description": "Map layer to show fire stations.", + "name": "Map of fire stations", + "presets": { + "0": { + "description": "A fire station is a place where the fire trucks and firefighters are located when not in operation.", + "title": "Fire station" + } + }, + "tagRenderings": { + "station-agency": { + "mappings": { + "0": { + "then": "Bureau of Fire Protection" + } + }, + "question": "What agency operates this station?", + "render": "This station is operated by {operator}." + }, + "station-name": { + "question": "What is the name of this fire station?", + "render": "This station is called {name}." + }, + "station-operator": { + "mappings": { + "0": { + "then": "The station is operated by the government." + }, + "1": { + "then": "The station is operated by a community-based, or informal organization." + }, + "2": { + "then": "The station is operated by a formal group of volunteers." + }, + "3": { + "then": "The station is privately operated." + } + }, + "question": "How is the station operator classified?", + "render": "The operator is a(n) {operator:type} entity." + }, + "station-place": { + "question": "Where is the station located? (e.g. name of neighborhood, villlage, or town)", + "render": "This station is found within {addr:place}." + }, + "station-street": { + "question": " What is the street name where the station located?", + "render": "This station is along a highway called {addr:street}." + } + }, + "title": { + "render": "Fire Station" + } + }, + "3": { + "description": "An ambulance station is an area for storage of ambulance vehicles, medical equipment, personal protective equipment, and other medical supplies.", + "name": "Map of ambulance stations", + "presets": { + "0": { + "description": "Add an ambulance station to the map", + "title": "Ambulance station" + } + }, + "tagRenderings": { + "ambulance-agency": { + "question": "What agency operates this station?", + "render": "This station is operated by {operator}." + }, + "ambulance-name": { + "question": "What is the name of this ambulance station?", + "render": "This station is called {name}." + }, + "ambulance-operator-type": { + "mappings": { + "0": { + "then": "The station is operated by the government." + }, + "1": { + "then": "The station is operated by a community-based, or informal organization." + }, + "2": { + "then": "The station is operated by a formal group of volunteers." + }, + "3": { + "then": "The station is privately operated." + } + }, + "question": "How is the station operator classified?", + "render": "The operator is a(n) {operator:type} entity." + }, + "ambulance-place": { + "question": "Where is the station located? (e.g. name of neighborhood, villlage, or town)", + "render": "This station is found within {addr:place}." + }, + "ambulance-street": { + "question": " What is the street name where the station located?", + "render": "This station is along a highway called {addr:street}." + } + }, + "title": { + "render": "Ambulance Station" + } + } + }, + "shortDescription": "Map to show hydrants, extinguishers, fire stations, and ambulance stations.", + "title": "Hydrants, Extinguishers, Fire stations, and Ambulance stations." + }, + "maps": { + "description": "On this map you can find all maps OpenStreetMap knows - typically a big map on an information board showing the area, city or region, e.g. a tourist map on the back of a billboard, a map of a nature reserve, a map of cycling networks in the region, ...)

If a map is missing, you can easily map this map on OpenStreetMap.", + "shortDescription": "This theme shows all (touristic) maps that OpenStreetMap knows of", + "title": "A map of maps" + }, + "natuurpunt": { + "description": "On this map you can find all the nature reserves that Natuurpunt offers ", + "shortDescription": "This map shows the nature reserves of Natuurpunt", + "title": "Nature Reserves" + }, + "observation_towers": { + "description": "Publicly accessible towers to enjoy the view", + "shortDescription": "Publicly accessible towers to enjoy the view", + "title": "Observation towers" + }, + "openwindpowermap": { + "description": "A map for showing and editing wind turbines.", + "layers": { + "0": { + "name": "wind turbine", + "presets": { + "0": { + "title": "wind turbine" + } + }, + "tagRenderings": { + "turbine-diameter": { + "question": "What is the rotor diameter of this wind turbine, in metres?", + "render": "The rotor diameter of this wind turbine is {rotor:diameter} metres." + }, + "turbine-height": { + "question": "What is the total height of this wind turbine (including rotor radius), in metres?", + "render": "The total height (including rotor radius) of this wind turbine is {height} metres." + }, + "turbine-operator": { + "question": "Who operates this wind turbine?", + "render": "This wind turbine is operated by {operator}." + }, + "turbine-output": { + "question": "What is the power output of this wind turbine? (e.g. 2.3 MW)", + "render": "The power output of this wind turbine is {generator:output:electricity}." + }, + "turbine-start-date": { + "question": "When did this wind turbine go into operation?", + "render": "This wind turbine went into operation on/in {start_date}." + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "wind turbine" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " megawatts" + }, + "1": { + "human": " kilowatts" + }, + "2": { + "human": " watts" + }, + "3": { + "human": " gigawatts" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": " meter" + } + } + } + } + } + }, + "title": "OpenWindPowerMap" + }, + "parkings": { + "description": "This map shows different parking spots", + "shortDescription": "This map shows different parking spots", + "title": "Parking" + }, + "personal": { + "description": "Create a personal theme based on all the available layers of all themes. In order to show some data, open layer selection", + "title": "Personal theme" + }, + "playgrounds": { + "description": "On this map, you find playgrounds and can add more information", + "shortDescription": "A map with playgrounds", + "title": "Playgrounds" + }, + "postboxes": { + "description": "On this map you can find and add data of post offices and post boxes. You can use this map to find where you can mail your next postcard! :)
Spotted an error or is a post box missing? You can edit this map with a free OpenStreetMap account. ", + "layers": { + "0": { + "description": "The layer showing postboxes.", + "name": "Postboxes", + "presets": { + "0": { + "title": "postbox" + } + }, + "title": { + "render": "Postbox" + } + }, + "1": { + "description": "A layer showing post offices.", + "filter": { + "0": { + "options": { + "0": { + "question": "Currently open" + } + } + } + }, + "name": "Post offices", + "presets": { + "0": { + "title": "Post Office" + } + }, + "tagRenderings": { + "OH": { + "mappings": { + "0": { + "then": "24/7 opened (including holidays)" + } + }, + "question": "What are the opening hours for this post office?", + "render": "Opening Hours: {opening_hours_table()}" + } + }, + "title": { + "render": "Post Office" + } + } + }, + "shortDescription": "A map showing postboxes and post offices", + "title": "Postbox and Post Office Map" + }, + "shops": { + "description": "On this map, one can mark basic information about shops, add opening hours and phone numbers", + "shortDescription": "An editable map with basic shop information", + "title": "Open Shop Map" + }, + "sidewalks": { + "description": "Experimental theme", + "layers": { + "0": { + "description": "Layer showing sidewalks of highways", + "name": "Sidewalks", + "tagRenderings": { + "streetname": { + "render": "This street is named {name}" + } + }, + "title": { + "render": "{name}" + } + } + }, + "shortDescription": "Sidewalk mapping", + "title": "Sidewalks" + }, + "sport_pitches": { + "description": "A sport pitch is an area where sports are played", + "shortDescription": "A map showing sport pitches", + "title": "Sport pitches" + }, + "street_lighting": { + "description": "On this map you can find everything about street lighting", + "layers": { + "1": { + "name": "Lit streets", + "tagRenderings": { + "lit": { + "mappings": { + "0": { + "then": "This street is lit" + }, + "1": { + "then": "This street is not lit" + }, + "2": { + "then": "This street is lit at night" + }, + "3": { + "then": "This street is lit 24/7" + } + }, + "question": "Is this street lit?" + } + }, + "title": { + "render": "Lit street" + } + }, + "2": { + "name": "All streets", + "tagRenderings": { + "lit": { + "mappings": { + "0": { + "then": "This street is lit" + }, + "1": { + "then": "This street is not lit" + }, + "2": { + "then": "This street is lit at night" + }, + "3": { + "then": "This street is lit 24/7" + } + }, + "question": "Is this street lit?" + } + }, + "title": { + "render": "Street" + } + } + }, + "title": "Street Lighting" + }, + "surveillance": { + "description": "On this open map, you can find surveillance cameras.", + "shortDescription": "Surveillance cameras and other means of surveillance", + "title": "Surveillance under Surveillance" + }, + "toilets": { + "description": "A map of public toilets", + "title": "Open Toilet Map" + }, + "trees": { + "description": "Map all the trees!", + "shortDescription": "Map all the trees", + "title": "Trees" + }, + "uk_addresses": { + "description": "Contribute to OpenStreetMap by filling out address information", + "layers": { + "1": { + "tagRenderings": { + "uk_addresses_embedding_outline": { + "mappings": { + "0": { + "then": "The INSPIRE-polygon containing this point has at least one address contained" + }, + "1": { + "then": "The INSPIRE-polygon containing this point has no addresses contained" + } + } + }, + "uk_addresses_explanation": { + "render": "There probably is an address here" + } + }, + "title": { + "render": "Address to be determined" + } + }, + "2": { + "description": "Addresses", + "name": "Known addresses in OSM", + "tagRenderings": { + "address-sign-image": { + "render": "{image_carousel(image:address)}
{image_upload(image:address, Add image of the address)}" + }, + "fixme": { + "question": "What should be fixed here? Please explain" + }, + "uk_addresses_explanation_osm": { + "render": "This address is saved in OpenStreetMap" + }, + "uk_addresses_housenumber": { + "mappings": { + "0": { + "then": "This building has no house number" + } + }, + "question": "What is the number of this house?", + "render": "The housenumber is {addr:housenumber}" + }, + "uk_addresses_street": { + "question": "What street is this address located in?", + "render": "This address is in street {addr:street}" + } + }, + "title": { + "render": "Known address" + } + } + }, + "shortDescription": "Help to build an open dataset of UK addresses", + "tileLayerSources": { + "0": { + "name": "Property boundaries by osmuk.org" + } + }, + "title": "UK Addresses" + }, + "waste_basket": { + "description": "On this map, you'll find waste baskets near you. If a waste basket is missing on this map, you can add it yourself", + "shortDescription": "A map with waste baskets", + "title": "Waste Basket" + } } \ No newline at end of file diff --git a/langs/themes/eo.json b/langs/themes/eo.json index 4912597b3..b9035ce2a 100644 --- a/langs/themes/eo.json +++ b/langs/themes/eo.json @@ -1,45 +1,94 @@ { - "climbing": { - "overrideAll": { - "units+": { - "0": { - "applicableUnits": { - "0": { - "human": " metro" - }, - "1": { - "human": " futo" - } - } - } - } - } - }, - "cyclestreets": { - "layers": { - "2": { - "name": "Ĉiuj stratoj", - "title": { - "render": "Strato" - } - } - } - }, - "facadegardens": { - "layers": { + "climbing": { + "overrideAll": { + "units+": { + "0": { + "applicableUnits": { "0": { - "tagRenderings": { - "facadegardens-description": { - "render": "Pliaj detaloj: {description}" - } - } + "human": " metro" + }, + "1": { + "human": " futo" } + } } - }, - "ghostbikes": { - "title": "Fantombicikloj" - }, - "maps": { - "title": "Mapo de mapoj" + } } + }, + "cyclestreets": { + "layers": { + "2": { + "name": "Ĉiuj stratoj", + "title": { + "render": "Strato" + } + } + } + }, + "facadegardens": { + "layers": { + "0": { + "tagRenderings": { + "facadegardens-description": { + "render": "Pliaj detaloj: {description}" + } + } + } + } + }, + "ghostbikes": { + "title": "Fantombicikloj" + }, + "hailhydrant": { + "layers": { + "1": { + "tagRenderings": { + "extinguisher-location": { + "render": "Loko: {location}" + } + } + } + } + }, + "maps": { + "title": "Mapo de mapoj" + }, + "openwindpowermap": { + "layers": { + "0": { + "title": { + "mappings": { + "0": { + "then": "{name}" + } + } + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " megavatoj" + }, + "1": { + "human": " kilovatoj" + }, + "2": { + "human": " vatoj" + }, + "3": { + "human": " gigavatoj" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": " metro" + } + } + } + } + } + } + } } \ No newline at end of file diff --git a/langs/themes/es.json b/langs/themes/es.json index 8d1534017..dc5f8827b 100644 --- a/langs/themes/es.json +++ b/langs/themes/es.json @@ -1,16 +1,16 @@ { - "aed": { - "description": "En este mapa , cualquiera puede encontrar y marcar los desfibriladores externos automÃĄticos mÃĄs cercanos", - "title": "Mapa abierto de desfibriladores (DEA)" - }, - "artwork": { - "description": "Bienvenido a Open Artwork Map, un mapa de estatuas, bustos, grafitis y otras obras de arte de todo el mundo" - }, - "ghostbikes": { - "title": "Bicicleta blanca" - }, - "personal": { - "description": "Crea una interficie basada en todas las capas disponibles de todas las interficies", - "title": "Interficie personal" - } + "aed": { + "description": "En este mapa , cualquiera puede encontrar y marcar los desfibriladores externos automÃĄticos mÃĄs cercanos", + "title": "Mapa abierto de desfibriladores (DEA)" + }, + "artwork": { + "description": "Bienvenido a Open Artwork Map, un mapa de estatuas, bustos, grafitis y otras obras de arte de todo el mundo" + }, + "ghostbikes": { + "title": "Bicicleta blanca" + }, + "personal": { + "description": "Crea una interficie basada en todas las capas disponibles de todas las interficies", + "title": "Interficie personal" + } } \ No newline at end of file diff --git a/langs/themes/fi.json b/langs/themes/fi.json index 62f2d561d..6d8f44a4a 100644 --- a/langs/themes/fi.json +++ b/langs/themes/fi.json @@ -1,5 +1,5 @@ { - "ghostbikes": { - "title": "HaamupyÃļrä" - } + "ghostbikes": { + "title": "HaamupyÃļrä" + } } \ No newline at end of file diff --git a/langs/themes/fr.json b/langs/themes/fr.json index f258a5cb0..98ac69f0a 100644 --- a/langs/themes/fr.json +++ b/langs/themes/fr.json @@ -1,959 +1,958 @@ { - "aed": { - "description": "Sur cette carte, vous pouvez trouver et amÊliorer les informations sur les dÊfibrillateurs", - "title": "Carte des dÊfibrillateurs (DAE)" - }, - "artwork": { - "description": "Bienvenue sur la carte ouverte des œuvres d'art, une carte des statues, fresques, ... du monde entier", - "title": "Carte ouverte des œuvres d'art" - }, - "benches": { - "description": "Cette carte affiche les bancs mappÊs dans OpenStreetMap, entre autres : bancs des transports en commun, bancs publics, etc. À l'aide de votre compte OpenStretMap, vous pourrez ajouter de nouveaux bancs ou modifier les bancs existants.", - "shortDescription": "Carte des bancs", - "title": "Bancs" - }, - "bicyclelib": { - "description": "Une vÊlothèque est un endroit oÚ on peut emprunter des vÊlos, souvent moyennant une petite somme annuelle. Un cas d'utilisation notable est celui des vÊlothèques pour les enfants, qui leur permettent de passer à un vÊlo plus grand quand ils sont trop grands pour leur vÊlo actuel", - "title": "VÊlothèques" - }, - "bookcases": { - "description": "Une microbibliothèques, Êgalement appelÊe boite à livre, est un ÊlÊment de mobilier urbain (Êtagère, armoire, etc) dans lequel sont stockÊs des livres et autres objets en accès libre. DÊcouvrez les boites à livres prÃĒt de chez vous, ou ajouter en une nouvelle à l'aide de votre compte OpenStreetMap.", - "title": "Carte des microbibliothèques" - }, - "campersite": { - "description": "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. C’est un site et une application. Les donnÊes sont stockÊes sur OpenStreetMap, elles seront toujours gratuites et peuvent ÃĒtre rÊutilisÊes par n’importe quelle application.", - "layers": { + "aed": { + "description": "Sur cette carte, vous pouvez trouver et amÊliorer les informations sur les dÊfibrillateurs", + "title": "Carte des dÊfibrillateurs (DAE)" + }, + "artwork": { + "description": "Bienvenue sur la carte ouverte des œuvres d'art, une carte des statues, fresques, ... du monde entier", + "title": "Carte ouverte des œuvres d'art" + }, + "benches": { + "description": "Cette carte affiche les bancs mappÊs dans OpenStreetMap, entre autres : bancs des transports en commun, bancs publics, etc. À l'aide de votre compte OpenStretMap, vous pourrez ajouter de nouveaux bancs ou modifier les bancs existants.", + "shortDescription": "Carte des bancs", + "title": "Bancs" + }, + "bicyclelib": { + "description": "Une vÊlothèque est un endroit oÚ on peut emprunter des vÊlos, souvent moyennant une petite somme annuelle. Un cas d'utilisation notable est celui des vÊlothèques pour les enfants, qui leur permettent de passer à un vÊlo plus grand quand ils sont trop grands pour leur vÊlo actuel", + "title": "VÊlothèques" + }, + "bookcases": { + "description": "Une microbibliothèques, Êgalement appelÊe boite à livre, est un ÊlÊment de mobilier urbain (Êtagère, armoire, etc) dans lequel sont stockÊs des livres et autres objets en accès libre. DÊcouvrez les boites à livres prÃĒt de chez vous, ou ajouter en une nouvelle à l'aide de votre compte OpenStreetMap.", + "title": "Carte des microbibliothèques" + }, + "campersite": { + "description": "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. C’est un site et une application. Les donnÊes sont stockÊes sur OpenStreetMap, elles seront toujours gratuites et peuvent ÃĒtre rÊutilisÊes par n’importe quelle application.", + "layers": { + "0": { + "description": "campings", + "name": "Campings", + "presets": { + "0": { + "description": "Ajouter une nouvelle aire de camping officielle, destinÊe à y passer la nuit avec un camping-car. Elle ne nÊcessite pas d’infrastructures particulières et peut ÃĒtre simplement dÊsignÊe sous arrÃĒtÊ municipal, un simple parking ne suffit pas à rentrer dans cette catÊgorie ", + "title": "Aire de camping" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "Combien de personnes peuvent camper ici ? (Passez s’il n’y a pas de places dÊlimitÊes)", + "render": "{capacity} personnes peuvent utiliser cet espace en mÃĒme temps" + }, + "caravansites-charge": { + "question": "Combien coÃģte cet endroit ?", + "render": "Ce site fait payer {charge}" + }, + "caravansites-description": { + "question": "Souhaitez-vous ajouter une description gÊnÊrale du lieu ? (Ne pas rÊpÊter les informations prÊcÊdentes et rester neutre, les opinions vont dans les avis)", + "render": "Plus de dÊtails à propos du site : {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "L’utilisation est payante" + }, + "1": { + "then": "Peut ÃĒtre utilisÊ gratuitement" + } + }, + "question": "Cet endroit est-il payant ?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "Il y a un accès internet" + }, + "1": { + "then": "Il y a un accès internet" + }, + "2": { + "then": "Il n’y a pas d’accès internet" + } + }, + "question": "Cet endroit offre-t-il un accès à Internet ?" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "L’accès internet est en supplÊment" + }, + "1": { + "then": "L’accès internet est inclus" + } + }, + "question": "L’accès internet est-il payant ?" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "Oui, mais il est possible d’y passer seulement une nuit" + }, + "1": { + "then": "Non, il n’y a pas de rÊsidents permanents" + }, + "2": { + "then": "C’est possible sous contrat (Cette option fera disparaÃŽtre le site de la carte)" + } + }, + "question": "Ce site permet-il la location longue durÊe ?" + }, + "caravansites-name": { + "question": "Comment s'appelle cet endroit ?", + "render": "Cet endroit s'appelle {name}" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "Cet endroit a une station de vidange sanitaire" + }, + "1": { + "then": "Ce site ne possède pas de lieu de vidange" + } + }, + "question": "Ce site possède-t’il un lieu de vidange ?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "Ce site a des toilettes" + }, + "1": { + "then": "Ce site n’a pas de toilettes" + } + }, + "question": "Y-a-t’il des toilettes sur le site ?" + }, + "caravansites-website": { + "question": "Ce lieu a-t’il un site internet ?", + "render": "Site officiel : {website}" + } + }, + "title": { + "mappings": { "0": { - "description": "campings", - "name": "Campings", - "presets": { - "0": { - "description": "Ajouter une nouvelle aire de camping officielle, destinÊe à y passer la nuit avec un camping-car. Elle ne nÊcessite pas d’infrastructures particulières et peut ÃĒtre simplement dÊsignÊe sous arrÃĒtÊ municipal, un simple parking ne suffit pas à rentrer dans cette catÊgorie ", - "title": "Aire de camping" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "Combien de personnes peuvent camper ici ? (Passez s’il n’y a pas de places dÊlimitÊes)", - "render": "{capacity} personnes peuvent utiliser cet espace en mÃĒme temps" - }, - "caravansites-charge": { - "question": "Combien coÃģte cet endroit ?", - "render": "Ce site fait payer {charge}" - }, - "caravansites-description": { - "question": "Souhaitez-vous ajouter une description gÊnÊrale du lieu ? (Ne pas rÊpÊter les informations prÊcÊdentes et rester neutre, les opinions vont dans les avis)", - "render": "Plus de dÊtails à propos du site : {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "L’utilisation est payante" - }, - "1": { - "then": "Peut ÃĒtre utilisÊ gratuitement" - } - }, - "question": "Cet endroit est-il payant ?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "Il y a un accès internet" - }, - "1": { - "then": "Il y a un accès internet" - }, - "2": { - "then": "Il n’y a pas d’accès internet" - } - }, - "question": "Cet endroit offre-t-il un accès à Internet ?" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "L’accès internet est en supplÊment" - }, - "1": { - "then": "L’accès internet est inclus" - } - }, - "question": "L’accès internet est-il payant ?" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "Oui, mais il est possible d’y passer seulement une nuit" - }, - "1": { - "then": "Non, il n’y a pas de rÊsidents permanents" - }, - "2": { - "then": "C’est possible sous contrat (Cette option fera disparaÃŽtre le site de la carte)" - } - }, - "question": "Ce site permet-il la location longue durÊe ?" - }, - "caravansites-name": { - "question": "Comment s'appelle cet endroit ?", - "render": "Cet endroit s'appelle {nom}" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "Cet endroit a une station de vidange sanitaire" - }, - "1": { - "then": "Ce site ne possède pas de lieu de vidange" - } - }, - "question": "Ce site possède-t’il un lieu de vidange ?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "Ce site a des toilettes" - }, - "1": { - "then": "Ce site n’a pas de toilettes" - } - }, - "question": "Y-a-t’il des toilettes sur le site ?" - }, - "caravansites-website": { - "question": "Ce lieu a-t’il un site internet ?", - "render": "Site officiel : {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Camping sans nom" - } - }, - "render": "Camping {name}" - } + "then": "Camping sans nom" + } + }, + "render": "Camping {name}" + } + }, + "1": { + "description": "Site de vidange", + "name": "Site de vidange", + "presets": { + "0": { + "description": "Ajouter un nouveau site de vidange. Un espace oÚ Êvacuer ses eaux usÊes (grises et/ou noires) gÊnÊralement alimentÊ en eau potable et ÊlectricitÊ.", + "title": "Site de vidange" + } + }, + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "0": { + "then": "Un code est nÊcessaire" + }, + "1": { + "then": "Le site est rÊservÊs aux clients" + }, + "2": { + "then": "Le site est en libre-service" + }, + "3": { + "then": "Le site est en libre-service" + } + }, + "question": "Qui peut utiliser le site de vidange ?" + }, + "dumpstations-charge": { + "question": "Combien ce site demande t’il de payer ?", + "render": "Ce site fait payer {charge}" + }, + "dumpstations-chemical-waste": { + "mappings": { + "0": { + "then": "Il est possible d’y vidanger ses toilettes chimiques" + }, + "1": { + "then": "Il n’est pas possible d’y vidanger ses toilettes chimiques" + } + }, + "question": "Est-il possible d’y vidanger ses toilettes chimiques ?" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "Ce site demande un paiement" + }, + "1": { + "then": "Ce site ne demande pas de paiement" + } + }, + "question": "Ce site est-il payant ?" + }, + "dumpstations-grey-water": { + "mappings": { + "0": { + "then": "Il est possible d’y vidanger ses eaux usÊes" + }, + "1": { + "then": "Il n’est pas possible d’y vidanger ses eaux usÊes" + } + }, + "question": "Est-il possible d’y faire sa vidange des eaux usÊes ?" + }, + "dumpstations-network": { + "question": "De quel rÊseau fait-elle partie ? (Passer si aucun)", + "render": "Cette station fait parte d’un rÊseau {network}" + }, + "dumpstations-waterpoint": { + "mappings": { + "0": { + "then": "Ce site a un point d’eau" + }, + "1": { + "then": "Ce site n’a pas de point d’eau" + } + }, + "question": "Ce site dispose-t’il d’un point d’eau ?" + } + }, + "title": { + "mappings": { + "0": { + "then": "Site de vidange" + } + }, + "render": "Site de vidange {name}" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Qui est l’exploitant du site ?", + "render": "Ce site est exploitÊ par {operator}" + }, + "1": { + "mappings": { + "0": { + "then": "Ce site a une source d’alimentation" }, "1": { - "description": "Site de vidange", - "name": "Site de vidange", - "presets": { - "0": { - "description": "Ajouter un nouveau site de vidange. Un espace oÚ Êvacuer ses eaux usÊes (grises et/ou noires) gÊnÊralement alimentÊ en eau potable et ÊlectricitÊ.", - "title": "Site de vidange" - } - }, - "tagRenderings": { - "dumpstations-access": { - "mappings": { - "0": { - "then": "Un code est nÊcessaire" - }, - "1": { - "then": "Le site est rÊservÊs aux clients" - }, - "2": { - "then": "Le site est en libre-service" - }, - "3": { - "then": "Le site est en libre-service" - } - }, - "question": "Qui peut utiliser le site de vidange ?" - }, - "dumpstations-charge": { - "question": "Combien ce site demande t’il de payer ?", - "render": "Ce site fait payer {charge}" - }, - "dumpstations-chemical-waste": { - "mappings": { - "0": { - "then": "Il est possible d’y vidanger ses toilettes chimiques" - }, - "1": { - "then": "Il n’est pas possible d’y vidanger ses toilettes chimiques" - } - }, - "question": "Est-il possible d’y vidanger ses toilettes chimiques ?" - }, - "dumpstations-fee": { - "mappings": { - "0": { - "then": "Ce site demande un paiement" - }, - "1": { - "then": "Ce site ne demande pas de paiement" - } - }, - "question": "Ce site est-il payant ?" - }, - "dumpstations-grey-water": { - "mappings": { - "0": { - "then": "Il est possible d’y vidanger ses eaux usÊes" - }, - "1": { - "then": "Il n’est pas possible d’y vidanger ses eaux usÊes" - } - }, - "question": "Est-il possible d’y faire sa vidange des eaux usÊes ?" - }, - "dumpstations-network": { - "question": "De quel rÊseau fait-elle partie ? (Passer si aucun)", - "render": "Cette station fait parte d’un rÊseau {network}" - }, - "dumpstations-waterpoint": { - "mappings": { - "0": { - "then": "Ce site a un point d’eau" - }, - "1": { - "then": "Ce site n’a pas de point d’eau" - } - }, - "question": "Ce site dispose-t’il d’un point d’eau ?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Site de vidange" - } - }, - "render": "Site de vidange {name}" - } + "then": "Ce site n’a pas de source d’alimentation" } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Qui est l’exploitant du site ?", - "render": "Ce site est exploitÊ par {operator}" - }, - "1": { - "mappings": { - "0": { - "then": "Ce site a une source d’alimentation" - }, - "1": { - "then": "Ce site n’a pas de source d’alimentation" - } - }, - "question": "Ce site a-t’il une source d’ÊlectricitÊ ?" - } - } - }, - "shortDescription": "Trouver des sites pour passer la nuit avec votre camping-car", - "title": "Campings" + }, + "question": "Ce site a-t’il une source d’ÊlectricitÊ ?" + } + } }, - "climbing": { - "description": "Cette carte indique les sites d’escalades comme les salles d’escalade ou les sites naturels.", - "descriptionTail": "La carte a ÊtÊ crÊÊe par Christian Neumann. Merci de le contacter pour des avis ou des questions.

Ce projet utilise les donnÊes OpenStreetMap.

", - "layers": { + "shortDescription": "Trouver des sites pour passer la nuit avec votre camping-car", + "title": "Campings" + }, + "climbing": { + "description": "Cette carte indique les sites d’escalades comme les salles d’escalade ou les sites naturels.", + "descriptionTail": "La carte a ÊtÊ crÊÊe par Christian Neumann. Merci de le contacter pour des avis ou des questions.

Ce projet utilise les donnÊes OpenStreetMap.

", + "layers": { + "0": { + "description": "Club ou association d’escalade", + "name": "Club d’escalade", + "presets": { + "0": { + "description": "Un club d’escalade", + "title": "Club d’escalade" + }, + "1": { + "description": "Une association d’escalade", + "title": "Association d’escalade" + } + }, + "tagRenderings": { + "climbing_club-name": { + "question": "Quel est le nom du club ou de l’association ?", + "render": "{name}" + } + }, + "title": { + "mappings": { "0": { - "description": "Club ou association d’escalade", - "name": "Club d’escalade", - "presets": { - "0": { - "description": "Un club d’escalade", - "title": "Club d’escalade" - }, - "1": { - "description": "Une association d’escalade", - "title": "Association d’escalade" - } - }, - "tagRenderings": { - "climbing_club-name": { - "question": "Quel est le nom du club ou de l’association ?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Association d’escalade" - } - }, - "render": "Club d’escalade" - } + "then": "Association d’escalade" + } + }, + "render": "Club d’escalade" + } + }, + "1": { + "description": "Une salle d’escalade", + "name": "Salle d’escalade", + "tagRenderings": { + "name": { + "question": "Quel est le nom de la salle d’escalade ?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Salle d’escalade {name}" + } + }, + "render": "Salle d’escalade" + } + }, + "2": { + "name": "Voies d’escalade", + "presets": { + "0": { + "title": "Voie d’escalade" + } + }, + "tagRenderings": { + "Bolts": { + "mappings": { + "0": { + "then": "Cette voie n’a pas de prises" + }, + "1": { + "then": "Cette voie n’a pas de prises" + } + }, + "question": "Combien de prises cette voie possède avant d’atteindre la moulinette ?", + "render": "Cette voie a {climbing:bolts} prises" + }, + "Difficulty": { + "question": "Quelle est la difficultÊ de cette voie selon le système franco-belge ?", + "render": "Selon le système franco-belge, la difficultÊ de cette voie est de {climbing:grade:french}" + }, + "Length": { + "question": "Quelle est la longueur de cette voie (en mètres) ?", + "render": "Cette voie fait {canonical(climbing:length)} de long" + }, + "Name": { + "mappings": { + "0": { + "then": "Cette voie n’a pas de nom" + } + }, + "question": "Quel est le nom de cette voie d’escalade ?", + "render": "{name}" + }, + "Rock type": { + "render": "Le type de roche est {_embedding_features_with_rock:rock} selon le mur" + } + }, + "title": { + "mappings": { + "0": { + "then": "Voie d’escalade {name}" + } + }, + "render": "Voie d’escalade" + } + }, + "3": { + "description": "OpportunitÊ d’escalade", + "name": "OpportunitÊ d’escalade", + "presets": { + "0": { + "description": "OpportunitÊ d’escalade", + "title": "OpportunitÊ d’escalade" + } + }, + "tagRenderings": { + "Contained routes hist": { + "render": "

RÊsumÊ des difficultÊs

{histogram(_difficulty_hist)}" + }, + "Contained routes length hist": { + "render": "

RÊsumÊ de longueur

{histogram(_length_hist)}" + }, + "Contained_climbing_routes": { + "render": "

Contient {_contained_climbing_routes_count} voies

    {_contained_climbing_routes}
" + }, + "Rock type (crag/rock/cliff only)": { + "mappings": { + "0": { + "then": "Calcaire" + } + }, + "question": "Quel est le type de roche ?", + "render": "La roche est du {rock}" + }, + "Type": { + "mappings": { + "0": { + "then": "Rocher d’escalade, rocher avec une ou peu de voie permettant d’escalader sans corde" + }, + "1": { + "then": "Mur d’escalade, rocher avec plusieurs voies d’escalades" + } + } + }, + "name": { + "mappings": { + "0": { + "then": "Ce site n’a pas de nom" + } + }, + "question": "Quel est le nom de ce site ?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Mur d’escalade {name}" }, "1": { - "description": "Une salle d’escalade", - "name": "Salle d’escalade", - "tagRenderings": { - "name": { - "question": "Quel est le nom de la salle d’escalade ?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Salle d’escalade {name}" - } - }, - "render": "Salle d’escalade" - } + "then": "Zone d’escalade {name}" }, "2": { - "name": "Voies d’escalade", - "presets": { - "0": { - "title": "Voie d’escalade" - } - }, - "tagRenderings": { - "Bolts": { - "mappings": { - "0": { - "then": "Cette voie n’a pas de prises" - }, - "1": { - "then": "Cette voie n’a pas de prises" - } - }, - "question": "Combien de prises cette voie possède avant d’atteindre la moulinette ?", - "render": "Cette voie a {climbing:bolts} prises" - }, - "Difficulty": { - "question": "Quelle est la difficultÊ de cette voie selon le système franco-belge ?", - "render": "Selon le système franco-belge, la difficultÊ de cette voie est de {climbing:grade:french}" - }, - "Length": { - "question": "Quelle est la longueur de cette voie (en mètres) ?", - "render": "Cette voie fait {canonical(climbing:length)} de long" - }, - "Name": { - "mappings": { - "0": { - "then": "Cette voie n’a pas de nom" - } - }, - "question": "Quel est le nom de cette voie d’escalade ?", - "render": "{name}" - }, - "Rock type": { - "render": "Le type de roche est {_embedding_features_with_rock:rock} selon le mur" - } - }, - "title": { - "mappings": { - "0": { - "then": "Voie d’escalade {name}" - } - }, - "render": "Voie d’escalade" - } + "then": "Site d’escalade" }, "3": { - "description": "OpportunitÊ d’escalade", - "name": "OpportunitÊ d’escalade", - "presets": { - "0": { - "description": "OpportunitÊ d’escalade", - "title": "OpportunitÊ d’escalade" - } - }, - "tagRenderings": { - "Containe {_contained_climbing_routes_count} routes": { - "render": "

Contient {_contained_climbing_routes_count} voies

    {_contained_climbing_routes}
" - }, - "Contained routes hist": { - "render": "

RÊsumÊ des difficultÊs

{histogram(_difficulty_hist)}" - }, - "Contained routes length hist": { - "render": "

RÊsumÊ de longueur

{histogram(_length_hist)}" - }, - "Rock type (crag/rock/cliff only)": { - "mappings": { - "0": { - "then": "Calcaire" - } - }, - "question": "Quel est le type de roche ?", - "render": "La roche est du {rock}" - }, - "Type": { - "mappings": { - "0": { - "then": "Rocher d’escalade, rocher avec une ou peu de voie permettant d’escalader sans corde" - }, - "1": { - "then": "Mur d’escalade, rocher avec plusieurs voies d’escalades" - } - } - }, - "name": { - "mappings": { - "0": { - "then": "Ce site n’a pas de nom" - } - }, - "question": "Quel est le nom de ce site ?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Mur d’escalade {name}" - }, - "1": { - "then": "Zone d’escalade {name}" - }, - "2": { - "then": "Site d’escalade" - }, - "3": { - "then": "OpportunitÊ d’escalade {name}" - } - }, - "render": "OpportunitÊ d’escalade" - } + "then": "OpportunitÊ d’escalade {name}" + } + }, + "render": "OpportunitÊ d’escalade" + } + }, + "4": { + "description": "OpportunitÊ d’escalade ?", + "name": "OpportunitÊs d’escalade ?", + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + }, + "climbing-possible": { + "mappings": { + "0": { + "then": "Escalader n’est pas possible" + }, + "1": { + "then": "Escalader est possible" + }, + "2": { + "then": "Escalader n’est pas possible" + } }, - "4": { - "description": "OpportunitÊ d’escalade ?", - "name": "OpportunitÊs d’escalade ?", - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - }, - "climbing-possible": { - "mappings": { - "0": { - "then": "Escalader n’est pas possible" - }, - "1": { - "then": "Escalader est possible" - }, - "2": { - "then": "Escalader n’est pas possible" - } - }, - "question": "Est-il possible d’escalader ici ?" - } - }, - "title": { - "render": "OpportunitÊ d’escalade ?" - } - } + "question": "Est-il possible d’escalader ici ?" + } }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Existe-t’il un site avec plus d’informations (ex : topographie) ?" - }, - "1": { - "mappings": { - "0": { - "then": "L’ÊlÊment englobant indique un accès libre
{_embedding_feature:access:description}" - }, - "1": { - "then": "L’ÊlÊment englobant indique qu’ une autorisation d’accès est nÊcessaire
{_embedding_feature:access:description}" - }, - "2": { - "then": "L’ÊlÊment englobant indique que l’accès est rÊservÊs aux clients
{_embedding_feature:access:description}" - }, - "3": { - "then": "L’ÊlÊment englobant indique que l’accès est rÊservÊ aux membres
{_embedding_feature:access:description}" - } - } - }, - "2": { - "mappings": { - "0": { - "then": "Libre d’accès" - }, - "1": { - "then": "Une autorisation est nÊcessaire" - }, - "2": { - "then": "RÊservÊ aux clients" - }, - "3": { - "then": "RÊservÊ aux membres" - } - }, - "question": "Qui peut y accÊder ?" - }, - "4": { - "question": "Quelle est la longueur moyenne des voies en mètres ?", - "render": "Les voies font {canonical(climbing:length)} de long en moyenne" - }, - "5": { - "question": "Quel est le niveau de la voie la plus simple selon la classification franco-belge ?", - "render": "La difficultÊ minimale est {climbing:grade:french:min} selon la classification franco-belge" - }, - "6": { - "question": "Quel est le niveau de la voie la plus difficile selon la classification franco-belge ?", - "render": "La difficultÊ maximale est {climbing:grade:french:max} selon la classification franco-belge" - }, - "7": { - "mappings": { - "0": { - "then": "L’escalade de bloc est possible" - }, - "1": { - "then": "L’escalade de bloc n’est pas possible" - }, - "2": { - "then": "L’escalade de bloc est possible sur des voies prÊcises" - }, - "3": { - "then": "Il y a {climbing:boulder} voies d’escalade de bloc" - } - }, - "question": "L’escalade de bloc est-elle possible ici ?" - }, - "8": { - "mappings": { - "0": { - "then": "L’escalade à la moulinette est possible" - }, - "1": { - "then": "L’escalade à la moulinette n’est pas possible" - }, - "2": { - "then": "{climbing:toprope} voies sont ÊquipÊes de moulinettes" - } - }, - "question": "Est-il possible d’escalader à la moulinette ?" - } - }, - "units+": { - "0": { - "applicableUnits": { - "0": { - "human": " mètres" - }, - "1": { - "human": " pieds" - } - } - } - } + "title": { + "render": "OpportunitÊ d’escalade ?" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Existe-t’il un site avec plus d’informations (ex : topographie) ?" }, - "title": "Open Climbing Map" - }, - "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.", - "title": "Cyclofix - Une carte ouverte pour les cyclistes" - }, - "drinking_water": { - "description": "Cette carte affiche les points d'accès public à de l'eau potable, et permet d'en ajouter facilement", - "title": "Eau potable" - }, - "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.", - "layers": { + "1": { + "mappings": { "0": { - "description": "Jardins muraux", - "name": "Jardins muraux", - "presets": { - "0": { - "description": "Ajouter un jardin mural", - "title": "jardin mural" - } - }, - "tagRenderings": { - "facadegardens-description": { - "question": "DÊtails supplÊmentaires sur le jardin (si nÊcessaire et non dÊcrit prÊcÊdemment)", - "render": "Plus de dÊtails : {description}" - }, - "facadegardens-direction": { - "question": "Quelle est l’orientation du jardin ?", - "render": "Orientation : {direction} (0 pour le Nord et 90 pour l’Ouest)" - }, - "facadegardens-edible": { - "mappings": { - "0": { - "then": "Il y a des plantes comestibles" - }, - "1": { - "then": "Il n’y a pas de plantes comestibles" - } - }, - "question": "Y-a-t’il des plantes comestibles ?" - }, - "facadegardens-plants": { - "mappings": { - "0": { - "then": "Il y a des plantes grimpantes" - }, - "1": { - "then": "Il y a des fleurs" - }, - "2": { - "then": "Il y a des buissons" - }, - "3": { - "then": "Il y a des plantes couvre-sol" - } - }, - "question": "Quel type de plantes pousse ici ?" - }, - "facadegardens-rainbarrel": { - "mappings": { - "0": { - "then": "Il y a des rÊserves" - }, - "1": { - "then": "Il n’y a pas de rÊserves" - } - }, - "question": "Des rÊserves d’eau ont-elles ÊtÊ installÊes pour le jardin ?" - }, - "facadegardens-start_date": { - "question": "Quand le jardin a-t’il ÊtÊ construit ? (L’annÊe suffit)", - "render": "Date de construction du jardin : {start_date}" - }, - "facadegardens-sunshine": { - "mappings": { - "0": { - "then": "Le jardin est en plein soleil" - }, - "1": { - "then": "Le jardin est partiellement ensoleillÊ" - }, - "2": { - "then": "Le jardin est à l’ombre" - } - }, - "question": "Quel est l’ensoleillement du jardin ?" - } - }, - "title": { - "render": "Jardin mural" - } - } - }, - "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": "Facade gardens" - }, - "fritures": { - "layers": { - "0": { - "override": { - "name": "Friteries" - } - } - }, - "title": "Carte des friteries" - }, - "ghostbikes": { - "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).", - "title": "VÊlo fantôme" - }, - "hailhydrant": { - "description": "Sur cette carte on trouve et met à jour les bornes incendies, extincteurs, casernes de pompiers et ambulanciers dans son quartier.
Les options en haut à gauche permettent de localiser sa position (sur tÊlÊphone) et de filtrer les ÊlÊments. Il est possible d’utiliser cet outil pour ajouter et Êditer les points d’intÊrÃĒt de la carte et d’y ajouter des dÊtails en rÊpondant aux questions.
Toutes les modifications sont automatiquement enregistrÊes dans la base de donnÊes OpenStreetMap et peuvent ÃĒtres librement rÊutilisÊes par d’autres.", - "layers": { - "0": { - "description": "Couche des bornes incendie.", - "name": "Carte des bornes incendie", - "presets": { - "0": { - "description": "Une borne incendie est un point oÚ les pompiers peuvent s’alimenter en eau. Elle peut ÃĒtre enterrÊe.", - "title": "Borne incendie" - } - }, - "tagRenderings": { - "hydrant-color": { - "mappings": { - "0": { - "then": "La borne est de couleur inconnue." - }, - "1": { - "then": "La borne est jaune." - }, - "2": { - "then": "La borne est rouge." - } - }, - "question": "Quelle est la couleur de la borne ?", - "render": "La borne est {colour}" - }, - "hydrant-state": { - "mappings": { - "0": { - "then": "La borne est en Êtat, ou partiellement en Êtat, de fonctionner." - }, - "1": { - "then": "La borne est hors-service." - }, - "2": { - "then": "La borne a ÊtÊ retirÊe." - } - }, - "question": "Mettre à jour l’Êtat de la borne.", - "render": "État" - }, - "hydrant-type": { - "mappings": { - "0": { - "then": "La borne est de type inconnu." - }, - "1": { - "then": " Pilier." - }, - "2": { - "then": " Tuyau." - }, - "3": { - "then": " Mural." - }, - "4": { - "then": " EnterrÊ." - } - }, - "question": "De quel type de borne s’agit-il ?", - "render": " Type de borne : {fire_hydrant:type}" - } - }, - "title": { - "render": "Bornes incendie" - } + "then": "L’ÊlÊment englobant indique un accès libre
{_embedding_feature:access:description}" }, "1": { - "description": "Couche des lances à incendie.", - "name": "Couche des extincteurs.", - "presets": { - "0": { - "description": "Un extincteur est un appareil portatif servant à Êteindre un feu", - "title": "Extincteur" - } - }, - "tagRenderings": { - "extinguisher-location": { - "mappings": { - "0": { - "then": "IntÊrieur." - }, - "1": { - "then": "ExtÊrieur." - } - }, - "question": "OÚ est-elle positionnÊe ?", - "render": "Emplacement : {location}" - } - }, - "title": { - "render": "Exctincteurs" - } + "then": "L’ÊlÊment englobant indique qu’ une autorisation d’accès est nÊcessaire
{_embedding_feature:access:description}" }, "2": { - "description": "Couche des stations de pompiers.", - "name": "Couche des stations de pompiers", - "presets": { - "0": { - "description": "Une caserne de pompiers est un lieu oÚ les pompiers et leur Êquipements sont situÊs en dehors des missions.", - "title": "Caserne de pompiers" - } - }, - "tagRenderings": { - "station-agency": { - "mappings": { - "0": { - "then": "Brigade de Protection du Feu" - } - }, - "question": "Quel est l’exploitant de la station ?", - "render": "Cette station est opÊrÊe par {operator}." - }, - "station-name": { - "question": "Quel est le nom de la station ?", - "render": "Cette station s’appelle {name}." - }, - "station-operator": { - "mappings": { - "0": { - "then": "La station est opÊrÊe par le gouvernement." - }, - "1": { - "then": "La station est opÊrÊe par une organisation informelle." - }, - "2": { - "then": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles." - }, - "3": { - "then": "La station est opÊrÊe par un groupe privÊ." - } - }, - "question": "Quel est le type d’exploitant ?", - "render": "L’exploitant est de type {operator:type}." - }, - "station-place": { - "question": "Dans quelle localitÊ la station est-elle situÊe ?", - "render": "La station fait partie de {addr:place}." - }, - "station-street": { - "question": " Quel est le nom de la rue dans lequel elle se situe ?", - "render": "La station fait partie de la {addr:street}." - } - }, - "title": { - "render": "Station de pompiers" - } + "then": "L’ÊlÊment englobant indique que l’accès est rÊservÊs aux clients
{_embedding_feature:access:description}" }, "3": { - "description": "Une station d’ambulance est un lieu oÚ sont stockÊs les vÊhicules d’urgence ainsi que de l’Êquipement mÊdical.", - "name": "Couche des ambulances", - "presets": { - "0": { - "description": "Ajouter une station d’ambulances à la carte", - "title": "Station d’ambulances" - } - }, - "tagRenderings": { - "ambulance-agency": { - "question": "Quel est l’exploitant de la station ?", - "render": "Cette station est opÊrÊe par {operator}." - }, - "ambulance-name": { - "question": "Quel est le nom de cette station ?", - "render": "Cette station s’appelle {name}." - }, - "ambulance-operator-type": { - "mappings": { - "0": { - "then": "La station est opÊrÊe par le gouvernement." - }, - "1": { - "then": "La station est opÊrÊe par une organisation informelle." - }, - "2": { - "then": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles." - }, - "3": { - "then": "La station est opÊrÊe par un groupe privÊ." - } - }, - "question": "Quel est le type d’exploitant ?", - "render": "L’exploitant est de type {operator:type}." - }, - "ambulance-place": { - "question": "Dans quelle localitÊ la station est-elle situÊe ?", - "render": "La station fait partie de {addr:place}." - }, - "ambulance-street": { - "question": " Quel est le nom de la rue oÚ la station se situe ?", - "render": "La station fait partie de {addr:street}." - } - }, - "title": { - "render": "Station d’ambulances" - } + "then": "L’ÊlÊment englobant indique que l’accès est rÊservÊ aux membres
{_embedding_feature:access:description}" } + } }, - "shortDescription": "Carte indiquant les bornes incendies, extincteurs, casernes de pompiers et ambulanciers.", - "title": "Bornes incendies, extincteurs, casernes de pompiers et ambulanciers." - }, - "maps": { - "description": "Sur cette carte sont affichÊes les cartes (plans) mappÊes dans OpenStreetMap.

Si une carte est manquante, vous pouvez l'ajouer facilement avec un compte OpenStreetMap.", - "shortDescription": "Cette carte affiche toutes les cartes (plans) mappÊs dans OpenStreetMap", - "title": "Carte des cartes" - }, - "openwindpowermap": { - "description": "Une carte indiquant les Êoliennes et permettant leur Êdition.", - "layers": { + "2": { + "mappings": { "0": { - "name": "Éolienne", - "presets": { - "0": { - "title": "Éolienne" - } - }, - "tagRenderings": { - "turbine-diameter": { - "question": "Quel est le diamètre du rotor en mètres ?", - "render": "Le diamètre du rotor est de {rotor:diameter} mètres." - }, - "turbine-height": { - "question": "Quelle est la hauteur totale de l’Êolienne en mètres, pales incluses ?", - "render": "La hauteur totale, incluant les pales, est de {height} mètres." - }, - "turbine-operator": { - "question": "Qui est l’exploitant de cette Êolienne ?", - "render": "Cette Êolienne est opÊrÊe par {operator}." - }, - "turbine-output": { - "question": "Quel est la puissance gÊnÊrÊe par cette Êolienne ?", - "render": "La puissance gÊnÊrÊe par cette Êolienne est de {generator:output:electricity}." - }, - "turbine-start-date": { - "question": "Depuis quand l’Êolienne est-elle en fonctionnement ?", - "render": "L’Êolienne est active depuis {start_date}." - } - }, - "title": { - "mappings": { - "0": { - "then": "{name}" - } - }, - "render": "Êolienne" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " megawatts" - }, - "1": { - "human": " kilowatts" - }, - "2": { - "human": " watts" - }, - "3": { - "human": " gigawatts" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": " mètres" - } - } - } - } + "then": "Libre d’accès" + }, + "1": { + "then": "Une autorisation est nÊcessaire" + }, + "2": { + "then": "RÊservÊ aux clients" + }, + "3": { + "then": "RÊservÊ aux membres" } + }, + "question": "Qui peut y accÊder ?" }, - "title": "OpenWindPowerMap" + "4": { + "question": "Quelle est la longueur moyenne des voies en mètres ?", + "render": "Les voies font {canonical(climbing:length)} de long en moyenne" + }, + "5": { + "question": "Quel est le niveau de la voie la plus simple selon la classification franco-belge ?", + "render": "La difficultÊ minimale est {climbing:grade:french:min} selon la classification franco-belge" + }, + "6": { + "question": "Quel est le niveau de la voie la plus difficile selon la classification franco-belge ?", + "render": "La difficultÊ maximale est {climbing:grade:french:max} selon la classification franco-belge" + }, + "7": { + "mappings": { + "0": { + "then": "L’escalade de bloc est possible" + }, + "1": { + "then": "L’escalade de bloc n’est pas possible" + }, + "2": { + "then": "L’escalade de bloc est possible sur des voies prÊcises" + }, + "3": { + "then": "Il y a {climbing:boulder} voies d’escalade de bloc" + } + }, + "question": "L’escalade de bloc est-elle possible ici ?" + }, + "8": { + "mappings": { + "0": { + "then": "L’escalade à la moulinette est possible" + }, + "1": { + "then": "L’escalade à la moulinette n’est pas possible" + }, + "2": { + "then": "{climbing:toprope} voies sont ÊquipÊes de moulinettes" + } + }, + "question": "Est-il possible d’escalader à la moulinette ?" + } + }, + "units+": { + "0": { + "applicableUnits": { + "0": { + "human": " mètres" + }, + "1": { + "human": " pieds" + } + } + } + } }, - "personal": { - "description": "CrÊe un thème personnalisÊ basÊ sur toutes les couches disponibles de tous les thèmes", - "title": "Thème personnalisÊ" + "title": "Open Climbing Map" + }, + "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.", + "title": "Cyclofix - Une carte ouverte pour les cyclistes" + }, + "drinking_water": { + "description": "Cette carte affiche les points d'accès public à de l'eau potable, et permet d'en ajouter facilement", + "title": "Eau potable" + }, + "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.", + "layers": { + "0": { + "description": "Jardins muraux", + "name": "Jardins muraux", + "presets": { + "0": { + "description": "Ajouter un jardin mural", + "title": "jardin mural" + } + }, + "tagRenderings": { + "facadegardens-description": { + "question": "DÊtails supplÊmentaires sur le jardin (si nÊcessaire et non dÊcrit prÊcÊdemment)", + "render": "Plus de dÊtails : {description}" + }, + "facadegardens-direction": { + "question": "Quelle est l’orientation du jardin ?", + "render": "Orientation : {direction} (0 pour le Nord et 90 pour l’Ouest)" + }, + "facadegardens-edible": { + "mappings": { + "0": { + "then": "Il y a des plantes comestibles" + }, + "1": { + "then": "Il n’y a pas de plantes comestibles" + } + }, + "question": "Y-a-t’il des plantes comestibles ?" + }, + "facadegardens-plants": { + "mappings": { + "0": { + "then": "Il y a des plantes grimpantes" + }, + "1": { + "then": "Il y a des fleurs" + }, + "2": { + "then": "Il y a des buissons" + }, + "3": { + "then": "Il y a des plantes couvre-sol" + } + }, + "question": "Quel type de plantes pousse ici ?" + }, + "facadegardens-rainbarrel": { + "mappings": { + "0": { + "then": "Il y a des rÊserves" + }, + "1": { + "then": "Il n’y a pas de rÊserves" + } + }, + "question": "Des rÊserves d’eau ont-elles ÊtÊ installÊes pour le jardin ?" + }, + "facadegardens-start_date": { + "question": "Quand le jardin a-t’il ÊtÊ construit ? (L’annÊe suffit)", + "render": "Date de construction du jardin : {start_date}" + }, + "facadegardens-sunshine": { + "mappings": { + "0": { + "then": "Le jardin est en plein soleil" + }, + "1": { + "then": "Le jardin est partiellement ensoleillÊ" + }, + "2": { + "then": "Le jardin est à l’ombre" + } + }, + "question": "Quel est l’ensoleillement du jardin ?" + } + }, + "title": { + "render": "Jardin mural" + } + } }, - "playgrounds": { - "description": "Cette carte affiche les aires de jeux et permet d'ajouter plus d'informations", - "shortDescription": "Une carte des aires de jeux", - "title": "Aires de jeux" + "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": "Facade gardens" + }, + "fritures": { + "layers": { + "0": { + "override": { + "name": "Friteries" + } + } }, - "shops": { - "description": "Sur cette carte, vous pouvez ajouter des informations sur les magasins, horaires d'ouverture et numÊro de tÊlÊphone", - "shortDescription": "Carte modifiable affichant les informations de base des magasins", - "title": "Carte des magasins" + "title": "Carte des friteries" + }, + "ghostbikes": { + "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).", + "title": "VÊlo fantôme" + }, + "hailhydrant": { + "description": "Sur cette carte on trouve et met à jour les bornes incendies, extincteurs, casernes de pompiers et ambulanciers dans son quartier.
Les options en haut à gauche permettent de localiser sa position (sur tÊlÊphone) et de filtrer les ÊlÊments. Il est possible d’utiliser cet outil pour ajouter et Êditer les points d’intÊrÃĒt de la carte et d’y ajouter des dÊtails en rÊpondant aux questions.
Toutes les modifications sont automatiquement enregistrÊes dans la base de donnÊes OpenStreetMap et peuvent ÃĒtres librement rÊutilisÊes par d’autres.", + "layers": { + "0": { + "description": "Couche des bornes incendie.", + "name": "Carte des bornes incendie", + "presets": { + "0": { + "description": "Une borne incendie est un point oÚ les pompiers peuvent s’alimenter en eau. Elle peut ÃĒtre enterrÊe.", + "title": "Borne incendie" + } + }, + "tagRenderings": { + "hydrant-color": { + "mappings": { + "0": { + "then": "La borne est de couleur inconnue." + }, + "1": { + "then": "La borne est jaune." + }, + "2": { + "then": "La borne est rouge." + } + }, + "question": "Quelle est la couleur de la borne ?", + "render": "La borne est {colour}" + }, + "hydrant-state": { + "mappings": { + "0": { + "then": "La borne est en Êtat, ou partiellement en Êtat, de fonctionner." + }, + "1": { + "then": "La borne est hors-service." + }, + "2": { + "then": "La borne a ÊtÊ retirÊe." + } + }, + "question": "Mettre à jour l’Êtat de la borne." + }, + "hydrant-type": { + "mappings": { + "0": { + "then": "La borne est de type inconnu." + }, + "1": { + "then": " Pilier." + }, + "2": { + "then": " Tuyau." + }, + "3": { + "then": " Mural." + }, + "4": { + "then": " EnterrÊ." + } + }, + "question": "De quel type de borne s’agit-il ?", + "render": " Type de borne : {fire_hydrant:type}" + } + }, + "title": { + "render": "Bornes incendie" + } + }, + "1": { + "description": "Couche des lances à incendie.", + "name": "Couche des extincteurs.", + "presets": { + "0": { + "description": "Un extincteur est un appareil portatif servant à Êteindre un feu", + "title": "Extincteur" + } + }, + "tagRenderings": { + "extinguisher-location": { + "mappings": { + "0": { + "then": "IntÊrieur." + }, + "1": { + "then": "ExtÊrieur." + } + }, + "question": "OÚ est-elle positionnÊe ?", + "render": "Emplacement : {location}" + } + }, + "title": { + "render": "Exctincteurs" + } + }, + "2": { + "description": "Couche des stations de pompiers.", + "name": "Couche des stations de pompiers", + "presets": { + "0": { + "description": "Une caserne de pompiers est un lieu oÚ les pompiers et leur Êquipements sont situÊs en dehors des missions.", + "title": "Caserne de pompiers" + } + }, + "tagRenderings": { + "station-agency": { + "mappings": { + "0": { + "then": "Brigade de Protection du Feu" + } + }, + "question": "Quel est l’exploitant de la station ?", + "render": "Cette station est opÊrÊe par {operator}." + }, + "station-name": { + "question": "Quel est le nom de la station ?", + "render": "Cette station s’appelle {name}." + }, + "station-operator": { + "mappings": { + "0": { + "then": "La station est opÊrÊe par le gouvernement." + }, + "1": { + "then": "La station est opÊrÊe par une organisation informelle." + }, + "2": { + "then": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles." + }, + "3": { + "then": "La station est opÊrÊe par un groupe privÊ." + } + }, + "question": "Quel est le type d’exploitant ?", + "render": "L’exploitant est de type {operator:type}." + }, + "station-place": { + "question": "Dans quelle localitÊ la station est-elle situÊe ?", + "render": "La station fait partie de {addr:place}." + }, + "station-street": { + "question": " Quel est le nom de la rue dans lequel elle se situe ?", + "render": "La station fait partie de la {addr:street}." + } + }, + "title": { + "render": "Station de pompiers" + } + }, + "3": { + "description": "Une station d’ambulance est un lieu oÚ sont stockÊs les vÊhicules d’urgence ainsi que de l’Êquipement mÊdical.", + "name": "Couche des ambulances", + "presets": { + "0": { + "description": "Ajouter une station d’ambulances à la carte", + "title": "Station d’ambulances" + } + }, + "tagRenderings": { + "ambulance-agency": { + "question": "Quel est l’exploitant de la station ?", + "render": "Cette station est opÊrÊe par {operator}." + }, + "ambulance-name": { + "question": "Quel est le nom de cette station ?", + "render": "Cette station s’appelle {name}." + }, + "ambulance-operator-type": { + "mappings": { + "0": { + "then": "La station est opÊrÊe par le gouvernement." + }, + "1": { + "then": "La station est opÊrÊe par une organisation informelle." + }, + "2": { + "then": "La station est opÊrÊe par un groupe officiel de bÊnÊvoles." + }, + "3": { + "then": "La station est opÊrÊe par un groupe privÊ." + } + }, + "question": "Quel est le type d’exploitant ?", + "render": "L’exploitant est de type {operator:type}." + }, + "ambulance-place": { + "question": "Dans quelle localitÊ la station est-elle situÊe ?", + "render": "La station fait partie de {addr:place}." + }, + "ambulance-street": { + "question": " Quel est le nom de la rue oÚ la station se situe ?", + "render": "La station fait partie de {addr:street}." + } + }, + "title": { + "render": "Station d’ambulances" + } + } }, - "sport_pitches": { - "description": "Un terrain de sport est une zone faite pour pratiquer un sport", - "shortDescription": "Une carte montrant les terrains de sport", - "title": "Terrains de sport" + "shortDescription": "Carte indiquant les bornes incendies, extincteurs, casernes de pompiers et ambulanciers.", + "title": "Bornes incendies, extincteurs, casernes de pompiers et ambulanciers." + }, + "maps": { + "description": "Sur cette carte sont affichÊes les cartes (plans) mappÊes dans OpenStreetMap.

Si une carte est manquante, vous pouvez l'ajouer facilement avec un compte OpenStreetMap.", + "shortDescription": "Cette carte affiche toutes les cartes (plans) mappÊs dans OpenStreetMap", + "title": "Carte des cartes" + }, + "openwindpowermap": { + "description": "Une carte indiquant les Êoliennes et permettant leur Êdition.", + "layers": { + "0": { + "name": "Éolienne", + "presets": { + "0": { + "title": "Éolienne" + } + }, + "tagRenderings": { + "turbine-diameter": { + "question": "Quel est le diamètre du rotor en mètres ?", + "render": "Le diamètre du rotor est de {rotor:diameter} mètres." + }, + "turbine-height": { + "question": "Quelle est la hauteur totale de l’Êolienne en mètres, pales incluses ?", + "render": "La hauteur totale, incluant les pales, est de {height} mètres." + }, + "turbine-operator": { + "question": "Qui est l’exploitant de cette Êolienne ?", + "render": "Cette Êolienne est opÊrÊe par {operator}." + }, + "turbine-output": { + "question": "Quel est la puissance gÊnÊrÊe par cette Êolienne ?", + "render": "La puissance gÊnÊrÊe par cette Êolienne est de {generator:output:electricity}." + }, + "turbine-start-date": { + "question": "Depuis quand l’Êolienne est-elle en fonctionnement ?", + "render": "L’Êolienne est active depuis {start_date}." + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "Êolienne" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " megawatts" + }, + "1": { + "human": " kilowatts" + }, + "2": { + "human": " watts" + }, + "3": { + "human": " gigawatts" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": " mètres" + } + } + } + } + } }, - "surveillance": { - "description": "Cette carte indique l’emplacement des camÊras de surveillance.", - "shortDescription": "CamÊras et autres dispositifs de surveillance", - "title": "Surveillance" - }, - "toilets": { - "description": "Carte affichant les WC et toilettes publiques", - "title": "Carte des WC et toilettes publiques" - }, - "trees": { - "description": "Cartographions tous les arbres !", - "shortDescription": "Carte des arbres", - "title": "Arbres" - } + "title": "OpenWindPowerMap" + }, + "personal": { + "description": "CrÊe un thème personnalisÊ basÊ sur toutes les couches disponibles de tous les thèmes", + "title": "Thème personnalisÊ" + }, + "playgrounds": { + "description": "Cette carte affiche les aires de jeux et permet d'ajouter plus d'informations", + "shortDescription": "Une carte des aires de jeux", + "title": "Aires de jeux" + }, + "shops": { + "description": "Sur cette carte, vous pouvez ajouter des informations sur les magasins, horaires d'ouverture et numÊro de tÊlÊphone", + "shortDescription": "Carte modifiable affichant les informations de base des magasins", + "title": "Carte des magasins" + }, + "sport_pitches": { + "description": "Un terrain de sport est une zone faite pour pratiquer un sport", + "shortDescription": "Une carte montrant les terrains de sport", + "title": "Terrains de sport" + }, + "surveillance": { + "description": "Cette carte indique l’emplacement des camÊras de surveillance.", + "shortDescription": "CamÊras et autres dispositifs de surveillance", + "title": "Surveillance" + }, + "toilets": { + "description": "Carte affichant les WC et toilettes publiques", + "title": "Carte des WC et toilettes publiques" + }, + "trees": { + "description": "Cartographions tous les arbres !", + "shortDescription": "Carte des arbres", + "title": "Arbres" + } } \ No newline at end of file diff --git a/langs/themes/gl.json b/langs/themes/gl.json index 907a31cae..652320ace 100644 --- a/langs/themes/gl.json +++ b/langs/themes/gl.json @@ -1,13 +1,13 @@ { - "cyclofix": { - "description": "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.", - "title": "Cyclofix - Un mapa aberto para os ciclistas" - }, - "ghostbikes": { - "title": "Bicicleta pantasma" - }, - "personal": { - "description": "Crea un tema baseado en todas as capas dispoÃąÃ­beis de todos os temas", - "title": "Tema personalizado" - } + "cyclofix": { + "description": "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.", + "title": "Cyclofix - Un mapa aberto para os ciclistas" + }, + "ghostbikes": { + "title": "Bicicleta pantasma" + }, + "personal": { + "description": "Crea un tema baseado en todas as capas dispoÃąÃ­beis de todos os temas", + "title": "Tema personalizado" + } } \ No newline at end of file diff --git a/langs/themes/hu.json b/langs/themes/hu.json index 202f0811d..18b688c24 100644 --- a/langs/themes/hu.json +++ b/langs/themes/hu.json @@ -1,11 +1,11 @@ { - "aed": { - "title": "Nyílt AED TÊrkÊp" - }, - "artwork": { - "title": "Nyít MÅąalkotÃĄs TÊrkÊp" - }, - "ghostbikes": { - "title": "EmlÊkkerÊkpÃĄr" - } + "aed": { + "title": "Nyílt AED TÊrkÊp" + }, + "artwork": { + "title": "Nyít MÅąalkotÃĄs TÊrkÊp" + }, + "ghostbikes": { + "title": "EmlÊkkerÊkpÃĄr" + } } \ No newline at end of file diff --git a/langs/themes/id.json b/langs/themes/id.json index 8fd97982c..e07cf7972 100644 --- a/langs/themes/id.json +++ b/langs/themes/id.json @@ -1,127 +1,147 @@ { - "aed": { - "description": "Di peta ini, seseorang dapat menemukan dan menandai defibrillator terdekat", - "title": "Buka Peta AED" - }, - "artwork": { - "description": "Selamat datang di Open Artwork Map, peta untuk patung, grafiti, dan karya seni lain di seluruh dunia", - "title": "Buka Peta Karya Seni" - }, - "campersite": { - "layers": { - "0": { - "tagRenderings": { - "caravansites-fee": { - "mappings": { - "1": { - "then": "Boleh digunakan tanpa bayaran" - } - } - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "Akses Web tersedia" - }, - "1": { - "then": "Akses Web tersedia" - }, - "2": { - "then": "Tiada akses Web" - } - }, - "question": "Tempat ini berbagi akses Web?" - }, - "caravansites-name": { - "question": "Apakah nama tempat ini?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "Tempat sini ada tandas" - }, - "1": { - "then": "Tempat sini tiada tandas" - } - } - }, - "caravansites-website": { - "question": "Tempat sini terada situs web?", - "render": "Situs resmi: {website}" - } - } + "aed": { + "description": "Di peta ini, seseorang dapat menemukan dan menandai defibrillator terdekat", + "title": "Buka Peta AED" + }, + "artwork": { + "description": "Selamat datang di Open Artwork Map, peta untuk patung, grafiti, dan karya seni lain di seluruh dunia", + "title": "Buka Peta Karya Seni" + }, + "benches": { + "title": "Bangku" + }, + "cafes_and_pubs": { + "title": "Kafe dan pub" + }, + "campersite": { + "layers": { + "0": { + "tagRenderings": { + "caravansites-fee": { + "mappings": { + "1": { + "then": "Boleh digunakan tanpa bayaran" + } } - }, - "overrideAll": { - "tagRenderings+": { - "1": { - "mappings": { - "0": { - "then": "Tempat ini memiliki catu daya" - }, - "1": { - "then": "Tempat ini tidak memiliki sumber listrik" - } - } - } + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "Akses Web tersedia" + }, + "1": { + "then": "Akses Web tersedia" + }, + "2": { + "then": "Tiada akses Web" + } + }, + "question": "Tempat ini berbagi akses Web?" + }, + "caravansites-name": { + "question": "Apakah nama tempat ini?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "Tempat sini ada tandas" + }, + "1": { + "then": "Tempat sini tiada tandas" + } } + }, + "caravansites-website": { + "question": "Tempat sini terada situs web?", + "render": "Situs resmi: {website}" + } } + } }, - "charging_stations": { - "title": "Stasiun pengisian daya" - }, - "climbing": { - "layers": { + "overrideAll": { + "tagRenderings+": { + "1": { + "mappings": { "0": { - "tagRenderings": { - "climbing_club-name": { - "render": "{name}" - } - } + "then": "Tempat ini memiliki catu daya" }, "1": { - "tagRenderings": { - "name": { - "render": "{name}" - } - } - }, - "2": { - "tagRenderings": { - "Name": { - "render": "{name}" - } - } - }, - "3": { - "tagRenderings": { - "name": { - "render": "{name}" - } - } - }, - "4": { - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - } - } - } - } - }, - "hailhydrant": { - "layers": { - "0": { - "tagRenderings": { - "hydrant-type": { - "mappings": { - "3": { - "then": " Jenis dinding." - } - } - } - } + "then": "Tempat ini tidak memiliki sumber listrik" } + } } + } } + }, + "charging_stations": { + "title": "Stasiun pengisian daya" + }, + "climbing": { + "layers": { + "0": { + "tagRenderings": { + "climbing_club-name": { + "render": "{name}" + } + } + }, + "1": { + "tagRenderings": { + "name": { + "render": "{name}" + } + } + }, + "2": { + "tagRenderings": { + "Name": { + "render": "{name}" + } + } + }, + "3": { + "tagRenderings": { + "name": { + "render": "{name}" + } + } + }, + "4": { + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + } + } + } + } + }, + "hailhydrant": { + "layers": { + "0": { + "tagRenderings": { + "hydrant-type": { + "mappings": { + "3": { + "then": " Jenis dinding." + } + } + } + } + } + } + }, + "trees": { + "title": "Pohon" + }, + "uk_addresses": { + "description": "Berkontribusi untuk OpenStreetMap dengan mengisi informasi alamat", + "layers": { + "1": { + "title": { + "render": "Alamat yang diketahui" + } + } + }, + "title": "Alamat Inggris" + } } \ No newline at end of file diff --git a/langs/themes/it.json b/langs/themes/it.json index 32d90f489..ece099432 100644 --- a/langs/themes/it.json +++ b/langs/themes/it.json @@ -1,591 +1,1131 @@ { - "aed": { - "description": "Su questa mappa puoi trovare e segnalare i defibrillatori nelle vicinanze", - "title": "Mappa dei defibrillatori (DAE)" - }, - "artwork": { - "description": "Benvenuto/a sulla mappa libera dell’arte, una mappa delle statue, i busti, i graffiti e le altre realizzazioni artistiche di tutto il mondo", - "title": "Mappa libera delle opere d'arte" - }, - "benches": { - "description": "Questa mappa mostra tutte le panchine che sono state aggiunte su OpenStreetMap: panchine individuali e quelle alle fermate del trasporto pubblico o nei ripari. Se disponi di un account OpenStreetMap puoi mappare delle nuove panchine o modificare i dettagli di quelle esistenti.", - "shortDescription": "Una mappa delle panchine", - "title": "Panchine" - }, - "bicyclelib": { - "description": "ÂĢ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", - "title": "Biciclette in prestito" - }, - "binoculars": { - "description": "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.", - "shortDescription": "Una cartina dei binocoli pubblici fissi", - "title": "Binocoli" - }, - "bookcases": { - "description": "Una minibiblioteca è una piccola cabina a lato della strada, una scatola, una vecchia cabina telefonica o qualche altro contenitore che ospita libri. Tutti puÃ˛ lasciare o prendere un libro. Questa mappa punta a rappresentarle tutte. Puoi facilmente scoprire nuove minibiblioteche nelle tue vicinanze e, con un account gratuito su OpenStreetMap, puoi aggiungerne altre.", - "title": "Mappa libera delle microbiblioteche" - }, - "cafes_and_pubs": { - "title": "Caffè e pub" - }, - "campersite": { - "description": "Questo sito raccoglie tutti i luoghi ufficiali dove sostare con il camper e aree dove è possibile scaricare acque grigie e nere. Puoi aggiungere dettagli riguardanti i servizi forniti e il loro costo. Aggiungi foto e recensioni. Questo è al contempo un sito web e una web app. I dati sono memorizzati su OpenStreetMap in modo tale che siano per sempre liberi e riutilizzabili da qualsiasi app.", - "layers": { - "0": { - "description": "Aree camper", - "name": "Aree camper", - "presets": { - "0": { - "description": "Aggiungi una nuova area di sosta ufficiale per camper. Si tratta di aree destinate alla sosta notturna dei camper. Potrebbe trattarsi di luoghi di campeggio o semplici parcheggi. Potrebbero anche non essere segnalati sul posto, ma semplicemente indicati in una delibera comunale. Un parcheggio destinato ai camper in cui non è perÃ˛ consentito trascorrere la notte -non- va considerato un'area di sosta per camper. ", - "title": "luogo di campeggio" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "Quanti camper possono stare qua? (non rispondere se non c’è un numero chario di spazi o veicoli ammessi)", - "render": "{capacity} camper possono usare questo luogo al contempo" - }, - "caravansites-charge": { - "question": "Quanto costa questo luogo?", - "render": "Questo luogo costa {charge}" - }, - "caravansites-description": { - "question": "Desideri aggiungere una descrizione del luogo? (Non vanno ripetute informazioni già richieste e mostrate precedentemente. Si prega di attenersi a dati oggettivi - le opinioni vanno nelle recensioni)", - "render": "Maggiori dettagli su questo luogo: {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "Devi pagare per usarlo" - }, - "1": { - "then": "PuÃ˛ essere usato gratuitamente" - } - }, - "question": "Ha una tariffa questo luogo?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "C’è l’accesso a internet" - }, - "1": { - "then": "C’è l’accesso a internet" - }, - "2": { - "then": "Non c’è l’accesso a internet" - } - }, - "question": "Questo luogo ha l’accesso a internet?" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "Occorre pagare un extra per avere l’accesso a internet" - }, - "1": { - "then": "Non occorre pagare per l’accesso a internet" - } - }, - "question": "Occorre pagare per avere l’accesso a internet?" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "SÃŦ, ci sono spazi per il noleggio a lungo termine, ma puoi anche pagare per singola giornata" - }, - "1": { - "then": "No, non ci sono ospiti a lungo termine qui" - }, - "2": { - "then": "Puoi soggiornare qui solo se hai un contratto a lungo termine (se selezioni questa opzione, questo luogo sarà rimosso da questa mappa)" - } - }, - "question": "Questo luogo offre spazi per il noleggio a lungo termine?" - }, - "caravansites-name": { - "question": "Come viene chiamato questo luogo?", - "render": "Questo luogo è chiamato {name}" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "Questo luogo ha una stazione per lo scarico delle acque" - }, - "1": { - "then": "Questo luogo non ha una stazione per lo scarico delle acque" - } - }, - "question": "Questo luogo ha una stazione per lo scarico delle acque?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "Questo luogo ha i servizi igienici" - }, - "1": { - "then": "Questo luogo non ha i servizi igienici" - } - }, - "question": "Questo luogo dispone di servizi igienici?" - }, - "caravansites-website": { - "question": "Questo luogo ha un sito web?", - "render": "Sito web ufficiale: {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Area camper senza nome" - } - }, - "render": "Area camper {name}" - } + "aed": { + "description": "Su questa mappa puoi trovare e segnalare i defibrillatori nelle vicinanze", + "title": "Mappa dei defibrillatori (DAE)" + }, + "artwork": { + "description": "Benvenuto/a sulla mappa libera dell’arte, una mappa delle statue, i busti, i graffiti e le altre realizzazioni artistiche di tutto il mondo", + "title": "Mappa libera delle opere d'arte" + }, + "benches": { + "description": "Questa mappa mostra tutte le panchine che sono state aggiunte su OpenStreetMap: panchine individuali e quelle alle fermate del trasporto pubblico o nei ripari. Se disponi di un account OpenStreetMap puoi mappare delle nuove panchine o modificare i dettagli di quelle esistenti.", + "shortDescription": "Una mappa delle panchine", + "title": "Panchine" + }, + "bicyclelib": { + "description": "ÂĢ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", + "title": "Biciclette in prestito" + }, + "binoculars": { + "description": "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.", + "shortDescription": "Una cartina dei binocoli pubblici fissi", + "title": "Binocoli" + }, + "bookcases": { + "description": "Una minibiblioteca è una piccola cabina a lato della strada, una scatola, una vecchia cabina telefonica o qualche altro contenitore che ospita libri. Tutti puÃ˛ lasciare o prendere un libro. Questa mappa punta a rappresentarle tutte. Puoi facilmente scoprire nuove minibiblioteche nelle tue vicinanze e, con un account gratuito su OpenStreetMap, puoi aggiungerne altre.", + "title": "Mappa libera delle microbiblioteche" + }, + "cafes_and_pubs": { + "title": "Caffè e pub" + }, + "campersite": { + "description": "Questo sito raccoglie tutti i luoghi ufficiali dove sostare con il camper e aree dove è possibile scaricare acque grigie e nere. Puoi aggiungere dettagli riguardanti i servizi forniti e il loro costo. Aggiungi foto e recensioni. Questo è al contempo un sito web e una web app. I dati sono memorizzati su OpenStreetMap in modo tale che siano per sempre liberi e riutilizzabili da qualsiasi app.", + "layers": { + "0": { + "description": "Aree camper", + "name": "Aree camper", + "presets": { + "0": { + "description": "Aggiungi una nuova area di sosta ufficiale per camper. Si tratta di aree destinate alla sosta notturna dei camper. Potrebbe trattarsi di luoghi di campeggio o semplici parcheggi. Potrebbero anche non essere segnalati sul posto, ma semplicemente indicati in una delibera comunale. Un parcheggio destinato ai camper in cui non è perÃ˛ consentito trascorrere la notte -non- va considerato un'area di sosta per camper. ", + "title": "luogo di campeggio" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "Quanti camper possono stare qua? (non rispondere se non c’è un numero chario di spazi o veicoli ammessi)", + "render": "{capacity} camper possono usare questo luogo al contempo" + }, + "caravansites-charge": { + "question": "Quanto costa questo luogo?", + "render": "Questo luogo costa {charge}" + }, + "caravansites-description": { + "question": "Desideri aggiungere una descrizione del luogo? (Non vanno ripetute informazioni già richieste e mostrate precedentemente. Si prega di attenersi a dati oggettivi - le opinioni vanno nelle recensioni)", + "render": "Maggiori dettagli su questo luogo: {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "Devi pagare per usarlo" + }, + "1": { + "then": "PuÃ˛ essere usato gratuitamente" + } }, - "1": { - "description": "Luoghi di sversamento delle acque reflue", - "name": "Luoghi di sversamento delle acque reflue", - "presets": { - "0": { - "description": "Aggiungi un nuovo luogo di sversamento delle acque reflue. Si tratta di luoghi dove chi viaggia in camper puÃ˛ smaltire le acque grigie o le acque nere. Spesso forniscono anche acqua ed elettricità.", - "title": "luogo di sversamento delle acque reflue" - } - }, - "tagRenderings": { - "dumpstations-access": { - "mappings": { - "0": { - "then": "Servono una chiave o un codice di accesso" - }, - "1": { - "then": "È obbligatorio essere un cliente di questo campeggio o di questa area camper" - }, - "2": { - "then": "Chiunque puÃ˛ farne uso" - }, - "3": { - "then": "Chiunque puÃ˛ farne uso" - } - }, - "question": "Chi puÃ˛ utilizzare questo luogo di sversamento?" - }, - "dumpstations-charge": { - "question": "Qual è la tariffa di questo luogo?", - "render": "Ha una tariffa di {charge}" - }, - "dumpstations-chemical-waste": { - "mappings": { - "0": { - "then": "È possibile smaltire le acque del WC chimico qui" - }, - "1": { - "then": "Non è possibile smaltire le acque del WC chimico qui" - } - }, - "question": "È possibile smaltire le acque del WC chimico qui?" - }, - "dumpstations-fee": { - "mappings": { - "0": { - "then": "A pagamento" - }, - "1": { - "then": "È gratuito" - } - }, - "question": "Questo luogo è a pagamento?" - }, - "dumpstations-grey-water": { - "mappings": { - "0": { - "then": "Si possono smaltire le acque grigie qui" - }, - "1": { - "then": "Non si possono smaltire le acque grigie qui" - } - }, - "question": "Si possono smaltire le acque grigie qui?" - }, - "dumpstations-network": { - "question": "Di quale rete fa parte questo luogo? (se non fa parte di nessuna rete, salta)", - "render": "Questo luogo è parte della rete {network}" - }, - "dumpstations-waterpoint": { - "mappings": { - "0": { - "then": "Questo luogo ha un punto per l'approvvigionamento di acqua" - }, - "1": { - "then": "Questo luogo non ha un punto per l'approvvigionamento di acqua" - } - }, - "question": "Questo luogo ha un punto per l'approvvigionamento di acqua?" - } - }, - "title": { - "mappings": { - "0": { - "then": "Luogo di sversamento" - } - }, - "render": "Luogo di sversamento {name}" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Chi gestisce questo luogo?", - "render": "Questo luogo è gestito da {operator}" - }, - "1": { - "mappings": { - "0": { - "then": "Questo luogo fornisce corrente elettrica" - }, - "1": { - "then": "Questo luogo non fornisce corrente elettrica" - } - }, - "question": "Questo luogo fornisce corrente elettrica?" - } - } - }, - "shortDescription": "Trova aree dove passare la notte con il tuo camper", - "title": "Aree camper" - }, - "charging_stations": { - "description": "Su questa mappa aperta, puoi individuare le stazioni di ricarica o aggiungere informazioni", - "shortDescription": "Una mappa mondiale delle stazioni di ricarica", - "title": "Stazioni di ricarica" - }, - "climbing": { - "description": "In questa cartina puoi trovare vari luoghi per arrampicata come ad esempio palestre di arrampicata, sale di pratica e rocce naturali.", - "descriptionTail": "La cartina di arrampicata è stata originariamente creata da Christian Neumann. Si prega di scrivere qua se si hanno commenti o domande da fare.

Il progetto usa i dati del progetto OpenStreetMap.

", - "layers": { - "2": { - "tagRenderings": { - "Difficulty": { - "question": "Qual è la difficoltà di questa via di arrampicata nel sistema francese/belga?", - "render": "Il grado di difficoltà è {climbing:grade:french} nel sistema francese/belga" - }, - "Length": { - "question": "Quanto è lunga questa via di arrampicata (in metri)?", - "render": "Questo percorso è lungo {canonical(climbing:length)}" - }, - "Name": { - "mappings": { - "0": { - "then": "Questa via di arrampicata non ha un nome" - } - }, - "question": "Come si chiama questa via di arrampicata?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Via di arrampicata {name}" - } - }, - "render": "Via di arrampicata" - } - } - }, - "title": "Mappa aperta per le arrampicate" - }, - "cycle_highways": { - "description": "Questa cartina mostra le strade per velocipedi", - "title": "Strade per velocipedi" - }, - "cycle_infra": { - "description": "Una cartina dove vedere e modificare gli elementi riguardanti l’infrastruttura dei velocipedi. Realizzata durante #osoc21.", - "shortDescription": "Una cartina dove vedere e modificare gli elementi riguardanti l’infrastruttura dei velocipedi.", - "title": "Infrastruttura dei velocipedi" - }, - "cyclestreets": { - "description": "Una strada ciclabile è una strada dove il traffico motorizzato non puÃ˛ superare i velocipedi. La sua presenza è segnalata da un cartello stradale specifico. Le strade ciclabili sono diffuse in Olanda e Belgio, ma si possono trovare anche in Germania e in Francia. ", - "layers": { - "0": { - "description": "Una strada ciclabile è una strada in cui i veicoli a motore non possono sorpassare le persone in bicicletta", - "name": "Strade ciclabili" + "question": "Ha una tariffa questo luogo?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "C’è l’accesso a internet" + }, + "1": { + "then": "C’è l’accesso a internet" + }, + "2": { + "then": "Non c’è l’accesso a internet" + } }, - "1": { - "description": "Questa strada diventerà presto una strada ciclabile", - "name": "Futura strada ciclabile", - "title": { - "mappings": { - "0": { - "then": "{name} diventerà presto una strada ciclabile" - } - }, - "render": "Futura strada ciclabile" - } + "question": "Questo luogo ha l’accesso a internet?" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "Occorre pagare un extra per avere l’accesso a internet" + }, + "1": { + "then": "Non occorre pagare per l’accesso a internet" + } }, - "2": { - "description": "Livello per contrassegnare tutte le strade come strade ciclabili", - "name": "Tutte le strade", - "title": { - "render": "Strada" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "mappings": { - "3": { - "then": "Questa strada non è una strada ciclabile" - } - } - }, - "1": { - "question": "Questa strada diventerà una strada ciclabile quando?", - "render": "Questa strada diventerà una strada ciclabile dal {cyclestreet:start_date}" - } - } - }, - "shortDescription": "Una cartina per le strade ciclabili", - "title": "Strade ciclabili" - }, - "cyclofix": { - "description": "Questa mappa offre a chi va in bici una soluzione semplice per trovare tutte le infrastrutture di cui ha bisogno.

Puoi tracciare la tua posizione esatta (solo su mobile) e selezionare i livelli che ti interessano nell'angolo in basso a sinistra. Puoi anche usare questo strumento per aggiungere o modificare punti di interesse alla mappa e aggiungere nuove informazioni rispendendo alle domande.

Tutte le modifiche che apporterai saranno automaticamente salvate nel database mondiale di OpenStreetMap e potranno essere liberamente riutilizzate da tutti e tutte.

Per maggiori informazioni sul progetto ciclofix, visita cyclofix.osm.be.", - "title": "Cyclofix - una mappa libera per chi va in bici" - }, - "drinking_water": { - "description": "Questa mappa mostra tutti i luoghi in cui è disponibile acqua potabile ed è possibile aggiungerne di nuovi", - "title": "Acqua potabile" - }, - "etymology": { - "description": "Su questa cartina sono visibili i nomi a cui sono riferiti gli oggetti. Le strade, gli edifici, etc. provengono da OpenStreetMap che è a sua volta collegata a Wikidata. Nel popup, se esiste, verrà mostrato l’articolo Wikipedia o l'elemento Wikidata a cui si riferisce il nome di quell’oggetto. Se l’oggetto stesso ha una pagina Wikpedia, anch’essa verrà mostrata.

Anche tu puoi contribuire!Ingrandisci abbastanza e tutte le strade appariranno. Puoi cliccare su una e apparirà un popup con la ricerca Wikidata. Con pochi clic puoi aggiungere un collegamento etimologico. Tieni presente che per farlo, hai bisogno di un account gratuito su OpenStreetMap.", - "layers": { - "1": { - "override": { - "name": "Strade senza informazioni etimologiche" - } + "question": "Occorre pagare per avere l’accesso a internet?" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "SÃŦ, ci sono spazi per il noleggio a lungo termine, ma puoi anche pagare per singola giornata" + }, + "1": { + "then": "No, non ci sono ospiti a lungo termine qui" + }, + "2": { + "then": "Puoi soggiornare qui solo se hai un contratto a lungo termine (se selezioni questa opzione, questo luogo sarà rimosso da questa mappa)" + } }, - "2": { - "override": { - "name": "Parchi e foreste senza informazioni etimologiche" - } - } + "question": "Questo luogo offre spazi per il noleggio a lungo termine?" + }, + "caravansites-name": { + "question": "Come viene chiamato questo luogo?", + "render": "Questo luogo è chiamato {name}" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "Questo luogo ha una stazione per lo scarico delle acque" + }, + "1": { + "then": "Questo luogo non ha una stazione per lo scarico delle acque" + } + }, + "question": "Questo luogo ha una stazione per lo scarico delle acque?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "Questo luogo ha i servizi igienici" + }, + "1": { + "then": "Questo luogo non ha i servizi igienici" + } + }, + "question": "Questo luogo dispone di servizi igienici?" + }, + "caravansites-website": { + "question": "Questo luogo ha un sito web?", + "render": "Sito web ufficiale: {website}" + } }, - "shortDescription": "Qual è l’origine di un toponimo?", - "title": "Apri Carta Etimologica" - }, - "facadegardens": { - "description": "I giardini veritcali e gli alberi in città non solo portano pace e tranquillità ma creano anche un ambiente piÚ bello, aumentano la biodiversità, rendono il clima piÚ fresco e migliorano la qualità dell’aria.
Klimaan VZW e Mechelen Klimaatneutraal vogliono mappare sia i giardini verticali esistenti che quelli nuovi per mostrarli a quanti vogliono costruire un loro proprio giardino o per quelli che amano la natura e vogliono camminare per la città.
Per ulteriori informazioni visita klimaan.be.", - "layers": { + "title": { + "mappings": { "0": { - "presets": { - "0": { - "description": "Aggiungi un giardino verticale", - "title": "giardino verticale" - } - }, - "tagRenderings": { - "facadegardens-description": { - "question": "Altre informazioni per descrivere il giardino (se necessarie e non riportate qui sopra)", - "render": "Maggiori dettagli: {description}" - }, - "facadegardens-edible": { - "mappings": { - "0": { - "then": "Ci sono piante commestibili" - }, - "1": { - "then": "Non ci sono piante commestibili" - } - }, - "question": "Ci sono piante commestibili?" - }, - "facadegardens-plants": { - "mappings": { - "0": { - "then": "Ci sono viti" - }, - "1": { - "then": "Ci sono piante da fiore" - }, - "2": { - "then": "Ci sono arbusti" - }, - "3": { - "then": "Ci sono piante tappezzanti" - } - }, - "question": "Che tipi di piante sono presenti qui?" - }, - "facadegardens-rainbarrel": { - "mappings": { - "0": { - "then": "C'è un contenitore per raccogliere la pioggia" - }, - "1": { - "then": "Non c'è un contenitore per raccogliere la pioggia" - } - } - }, - "facadegardens-start_date": { - "question": "Quando è stato realizzato il giardino? (è sufficiente l'anno)", - "render": "Data di realizzazione del giardino: {start_date}" - }, - "facadegardens-sunshine": { - "mappings": { - "0": { - "then": "Il giardino è completamente illuminato dal sole" - }, - "1": { - "then": "Il giardino è parzialmente in ombra" - }, - "2": { - "then": "Il giardino è in ombra" - } - }, - "question": "Il giardino è al sole o in ombra?" - } - } - } - }, - "shortDescription": "Questa mappa mostra i giardini verticali, con foto e informazioni utili sulla loro orientazione, sull'illuminazione solare e sui tipi di piante.", - "title": "Giardini verticali" - }, - "food": { - "title": "Ristoranti e fast food" - }, - "fritures": { - "layers": { - "0": { - "override": { - "name": "Friggitoria" - } + "then": "Area camper senza nome" } + }, + "render": "Area camper {name}" } - }, - "ghostbikes": { - "description": "Una bici fantasma è un monumento in ricordo di un ciclista che è morto in un incidente stradale, che ha la forma di un una bicicletta bianca installata in maniera permanente ne luogo dell’incidente.

In questa cartina, è possibile vedere tutte le bici fantasma che sono state aggiunte su OpenStreetMap. Ne manca una? Chiunque puÃ˛ aggiungere o migliorare le informazioni qui presenti (è solo richiesto un account gratuito su OpenStreetMap).", - "title": "Bici fantasma" - }, - "hackerspaces": { - "description": "Su questa cartina è possibile vedere gli hackerspace, aggiungerne di nuovi o aggiornare le informazioni tutto in maniera pratica", - "shortDescription": "Una cartina degli hackerspace", - "title": "Hackerspace" - }, - "hailhydrant": { - "description": "In questa cartina puoi vedere e aggiornare idranti, stazioni dei pompieri, stazioni delle ambulanze ed estintori del tuo quartiere preferito.\n\nPuoi seguire la tua posizione precisa (solo su cellulare) e selezionare i livelli che ti interessano nell’angolo in basso a sinistra. Puoi anche usare questo strumento per aggiungere o modificare i PDI sulla mappa e fornire ulteriori dettagli rispondendo alle domande.\n\nTutte le modifiche che farai verranno automaticamente salvate nel database globale di OpenStreetMap e potranno essere riutilizzate liberamente da tutti.", - "layers": { + }, + "1": { + "description": "Luoghi di sversamento delle acque reflue", + "name": "Luoghi di sversamento delle acque reflue", + "presets": { + "0": { + "description": "Aggiungi un nuovo luogo di sversamento delle acque reflue. Si tratta di luoghi dove chi viaggia in camper puÃ˛ smaltire le acque grigie o le acque nere. Spesso forniscono anche acqua ed elettricità.", + "title": "luogo di sversamento delle acque reflue" + } + }, + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "0": { + "then": "Servono una chiave o un codice di accesso" + }, + "1": { + "then": "È obbligatorio essere un cliente di questo campeggio o di questa area camper" + }, + "2": { + "then": "Chiunque puÃ˛ farne uso" + }, + "3": { + "then": "Chiunque puÃ˛ farne uso" + } + }, + "question": "Chi puÃ˛ utilizzare questo luogo di sversamento?" + }, + "dumpstations-charge": { + "question": "Qual è la tariffa di questo luogo?", + "render": "Ha una tariffa di {charge}" + }, + "dumpstations-chemical-waste": { + "mappings": { + "0": { + "then": "È possibile smaltire le acque del WC chimico qui" + }, + "1": { + "then": "Non è possibile smaltire le acque del WC chimico qui" + } + }, + "question": "È possibile smaltire le acque del WC chimico qui?" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "A pagamento" + }, + "1": { + "then": "È gratuito" + } + }, + "question": "Questo luogo è a pagamento?" + }, + "dumpstations-grey-water": { + "mappings": { + "0": { + "then": "Si possono smaltire le acque grigie qui" + }, + "1": { + "then": "Non si possono smaltire le acque grigie qui" + } + }, + "question": "Si possono smaltire le acque grigie qui?" + }, + "dumpstations-network": { + "question": "Di quale rete fa parte questo luogo? (se non fa parte di nessuna rete, salta)", + "render": "Questo luogo è parte della rete {network}" + }, + "dumpstations-waterpoint": { + "mappings": { + "0": { + "then": "Questo luogo ha un punto per l'approvvigionamento di acqua" + }, + "1": { + "then": "Questo luogo non ha un punto per l'approvvigionamento di acqua" + } + }, + "question": "Questo luogo ha un punto per l'approvvigionamento di acqua?" + } + }, + "title": { + "mappings": { "0": { - "tagRenderings": { - "hydrant-color": { - "mappings": { - "2": { - "then": "L'idrante è rosso." - } - } - }, - "hydrant-type": { - "mappings": { - "0": { - "then": "Il tipo di idrante è sconosciuto." - } - }, - "question": "Di che tipo è questo idrante?", - "render": " Tipo di idrante: {fire_hydrant:type}" - } - } + "then": "Luogo di sversamento" + } + }, + "render": "Luogo di sversamento {name}" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Chi gestisce questo luogo?", + "render": "Questo luogo è gestito da {operator}" + }, + "1": { + "mappings": { + "0": { + "then": "Questo luogo fornisce corrente elettrica" + }, + "1": { + "then": "Questo luogo non fornisce corrente elettrica" + } + }, + "question": "Questo luogo fornisce corrente elettrica?" + } + } + }, + "shortDescription": "Trova aree dove passare la notte con il tuo camper", + "title": "Aree camper" + }, + "charging_stations": { + "description": "Su questa mappa aperta, puoi individuare le stazioni di ricarica o aggiungere informazioni", + "shortDescription": "Una mappa mondiale delle stazioni di ricarica", + "title": "Stazioni di ricarica" + }, + "climbing": { + "description": "In questa cartina puoi trovare vari luoghi per arrampicata come ad esempio palestre di arrampicata, sale di pratica e rocce naturali.", + "descriptionTail": "La cartina di arrampicata è stata originariamente creata da Christian Neumann. Si prega di scrivere qua se si hanno commenti o domande da fare.

Il progetto usa i dati del progetto OpenStreetMap.

", + "layers": { + "0": { + "description": "Un club o associazione di arrampacata", + "name": "Club di arrampicata", + "presets": { + "0": { + "description": "Un club di arrampicata", + "title": "Club di arrampicata" + }, + "1": { + "description": "Un’associazione che ha a che fare con l’arrampicata", + "title": "Associazione di arrampicata" + } + }, + "tagRenderings": { + "climbing_club-name": { + "question": "Qual è il nome di questo club o associazione di arrampicata?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Associazione di arrampicata" + } + }, + "render": "Club di arrampicata" + } + }, + "1": { + "description": "Una palestra di arrampicata", + "name": "Palestre di arrampicata", + "tagRenderings": { + "name": { + "question": "Qual è il nome di questa palestra di arrampicata?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Palestra di arrampicata {name}" + } + }, + "render": "Palestra di arrampicata" + } + }, + "2": { + "name": "Vie di arrampicata", + "presets": { + "0": { + "title": "Via di arrampicata" + } + }, + "tagRenderings": { + "Bolts": { + "mappings": { + "0": { + "then": "In questo percorso non sono presenti bulloni" + }, + "1": { + "then": "In questo percorso non sono presenti bulloni" + } + }, + "question": "Quanti bulloni sono presenti in questo percorso prima di arrivare alla moulinette?", + "render": "Questo percorso ha {climbing:bolts} bulloni" + }, + "Difficulty": { + "question": "Qual è la difficoltà di questa via di arrampicata nel sistema francese/belga?", + "render": "Il grado di difficoltà è {climbing:grade:french} nel sistema francese/belga" + }, + "Length": { + "question": "Quanto è lunga questa via di arrampicata (in metri)?", + "render": "Questo percorso è lungo {canonical(climbing:length)}" + }, + "Name": { + "mappings": { + "0": { + "then": "Questa via di arrampicata non ha un nome" + } + }, + "question": "Come si chiama questa via di arrampicata?", + "render": "{name}" + }, + "Rock type": { + "render": "Il tipo di roccia è {_embedding_features_with_rock:rock} come dichiarato sul muro circostante" + } + }, + "title": { + "mappings": { + "0": { + "then": "Via di arrampicata {name}" + } + }, + "render": "Via di arrampicata" + } + }, + "3": { + "description": "Un’opportunità di arrampicata", + "name": "Opportunità di arrampicata", + "presets": { + "0": { + "description": "Un’opportunità di arrampicata", + "title": "Opportunità di arrampicata" + } + }, + "tagRenderings": { + "Contained routes hist": { + "render": "

Riassunto delle difficoltà

{histogram(_difficulty_hist)}" + }, + "Contained routes length hist": { + "render": "

Riassunto della lunghezza

{histogram(_length_hist)}" + }, + "Contained_climbing_routes": { + "render": "

Contiene {_contained_climbing_routes_count} vie

    {_contained_climbing_routes}
" + }, + "Rock type (crag/rock/cliff only)": { + "mappings": { + "0": { + "then": "Calcare" + } + }, + "question": "Qual è il tipo di roccia qua?", + "render": "Il tipo di roccia è {rock}" + }, + "Type": { + "mappings": { + "0": { + "then": "Un masso per arrampicata (una singola roccia o falesia con una o poche vie di arrampicata che possono essere scalate in sicurezza senza una corda)" + }, + "1": { + "then": "Un muro da arrampicata (un singolo masso o falesia con almeno qualche via per arrampicata)" + } + } + }, + "name": { + "mappings": { + "0": { + "then": "Questa opportunità di arrampicata non ha un nome" + } + }, + "question": "Qual è il nome di questa opportunità di arrampicata?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Muro da arrampicata {name}" + }, + "1": { + "then": "Area di arrampicata {name}" }, "2": { - "description": "Livello che mostra le caserme dei vigili del fuoco.", - "name": "Mappa delle caserme dei vigili del fuoco", - "tagRenderings": { - "station-name": { - "question": "Come si chiama questa caserma dei vigili del fuoco?", - "render": "Questa caserma si chiama {name}." - }, - "station-street": { - "question": " Qual è il nome della via in cui si trova la caserma?" - } - }, - "title": { - "render": "Caserma dei vigili del fuoco" - } + "then": "Sito di arrampicata" + }, + "3": { + "then": "Opportunità di arrampicata {name}" } + }, + "render": "Opportunità di arrampicata" + } + }, + "4": { + "description": "Un’opportunità di arrampicata?", + "name": "Opportunità di arrampicata?", + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + }, + "climbing-possible": { + "mappings": { + "0": { + "then": "Non è possibile arrampicarsi qua" + }, + "1": { + "then": "È possibile arrampicarsi qua" + }, + "2": { + "then": "Non è possibile arrampicarsi qua" + } + }, + "question": "È possibile arrampicarsi qua?" + } }, - "shortDescription": "Carta che mostra gli idranti, gli estintori, le caserme dei vigili del fuoco e le stazioni delle ambulanze.", - "title": "Idranti, estintori, caserme dei vigili del fuoco e stazioni delle ambulanze." + "title": { + "render": "Opportunità di arrampicata?" + } + } }, - "maps": { - "description": "In questa carta puoi trovare tutte le mappe conosciute da OpenStreetMap (tipicamente una grossa mappa su di un pannello informativo che mostra l’area, la città o la regione, ad es. una mappa turistica dietro a un manifesto, la mappa di una riserva naturale, la mappa della rete ciclistica regionale, etc.)

Se manca una mappa, puoi aggiungerla facilmente a questa su OpenStreetMap.", - "shortDescription": "Questo tema mostra tutte le mappe (turistiche) conosciute da OpenStreetMap", - "title": "Una cartina delle cartine" + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "C’è un sito web (anche non ufficiale) con qualche informazione in piÚ (ad es. topografie)?" + }, + "1": { + "mappings": { + "0": { + "then": "L’ elemento in cui è contenuto indica che è pubblicamente accessibile
{_embedding_feature:access:description}" + }, + "1": { + "then": "L’elemento che lo contiene indica che è richiesto un’autorizzazione per accedervi
{_embedding_feature:access:description}" + }, + "2": { + "then": "L’ elemento che lo contiene indica che è accessibile solo ai clienti
{_embedding_feature:access:description}" + }, + "3": { + "then": "L’ elemento che lo contiene indica che è accessibile solamente ai membri del club
{_embedding_feature:access:description}" + } + } + }, + "2": { + "mappings": { + "0": { + "then": "Pubblicamente accessibile a chiunque" + }, + "1": { + "then": "È necessario avere un’autorizzazione per entrare" + }, + "2": { + "then": "Riservato ai clienti" + }, + "3": { + "then": "Riservato ai membri del club" + } + }, + "question": "Chi puÃ˛ accedervi?" + }, + "4": { + "question": "Quale è la lunghezza (media) delle vie in metri?", + "render": "Le vie sono lunghe mediamente {canonical(climbing:length)}" + }, + "5": { + "question": "Qual è il livello della via piÚ facile qua, secondo il sistema di classificazione francese?", + "render": "Il minimo livello di difficoltà è {climbing:grade:french:min} secondo il sistema francese/belga" + }, + "6": { + "question": "Qual è il livello della via piÚ difficile qua, secondo il sistema di classificazione francese?", + "render": "Il massimo livello di difficoltà è {climbing:grade:french:max} secondo il sistema francese/belga" + }, + "7": { + "mappings": { + "0": { + "then": "L’arrampicata su massi è possibile qua" + }, + "1": { + "then": "L’arrampicata su massi non è possibile qua" + }, + "2": { + "then": "L’arrampicata su massi è possibile anche se su poche vie" + }, + "3": { + "then": "Sono presenti {climbing:boulder} vie di arrampicata su massi" + } + }, + "question": "È possibile praticare ‘bouldering’ qua?" + }, + "8": { + "mappings": { + "0": { + "then": "È possibile arrampicarsi con moulinette qua" + }, + "1": { + "then": "Non è possibile arrampicarsi con moulinette qua" + }, + "2": { + "then": "Sono presenti {climbing:toprope} vie con moulinette" + } + }, + "question": "È possibile arrampicarsi con la corda dall’alto qua?" + }, + "9": { + "mappings": { + "0": { + "then": "L’arrampicata sportiva è possibile qua" + }, + "1": { + "then": "L’arrampicata sportiva non è possibile qua" + }, + "2": { + "then": "Sono presenti {climbing:sport} vie di arrampicata sportiva" + } + }, + "question": "È possibile arrampicarsi qua con ancoraggi fissi?" + }, + "10": { + "mappings": { + "0": { + "then": "L’arrampicata tradizionale è possibile qua" + }, + "1": { + "then": "L’arrampicata tradizionale non è possibile qua" + }, + "2": { + "then": "Sono presenti {climbing:traditional} vie di arrampicata tradizionale" + } + }, + "question": "È possibile arrampicarsi in maniera tradizionale qua (usando attrezzi propri, ad es. dadi)?" + }, + "11": { + "mappings": { + "0": { + "then": "È presente una parete per l’arrampicata di velocità" + }, + "1": { + "then": "Non è presente una parete per l’arrampicata di velocità" + }, + "2": { + "then": "Sono presenti {climbing:speed} pareti per l’arrampicata di velocità" + } + }, + "question": "È presente una prete per l’arrampicata di velocità?" + } + }, + "units+": { + "0": { + "applicableUnits": { + "0": { + "human": " metri" + }, + "1": { + "human": " piedi" + } + } + } + } }, - "natuurpunt": { - "description": "In questa cartina è possibile trovare tutte le riserve naturali offerte da Natuupunt. ", - "shortDescription": "Questa cartina mostra le riserve naturali di Natuurpunt", - "title": "Riserve naturali" + "title": "Mappa aperta per le arrampicate" + }, + "cycle_highways": { + "description": "Questa cartina mostra le strade per velocipedi", + "title": "Strade per velocipedi" + }, + "cycle_infra": { + "description": "Una cartina dove vedere e modificare gli elementi riguardanti l’infrastruttura dei velocipedi. Realizzata durante #osoc21.", + "shortDescription": "Una cartina dove vedere e modificare gli elementi riguardanti l’infrastruttura dei velocipedi.", + "title": "Infrastruttura dei velocipedi" + }, + "cyclestreets": { + "description": "Una strada ciclabile è una strada dove il traffico motorizzato non puÃ˛ superare i velocipedi. La sua presenza è segnalata da un cartello stradale specifico. Le strade ciclabili sono diffuse in Olanda e Belgio, ma si possono trovare anche in Germania e in Francia. ", + "layers": { + "0": { + "description": "Una strada ciclabile è una strada in cui i veicoli a motore non possono sorpassare le persone in bicicletta", + "name": "Strade ciclabili" + }, + "1": { + "description": "Questa strada diventerà presto una strada ciclabile", + "name": "Futura strada ciclabile", + "title": { + "mappings": { + "0": { + "then": "{name} diventerà presto una strada ciclabile" + } + }, + "render": "Futura strada ciclabile" + } + }, + "2": { + "description": "Livello per contrassegnare tutte le strade come strade ciclabili", + "name": "Tutte le strade", + "title": { + "render": "Strada" + } + } }, - "observation_towers": { - "description": "Torri pubblicamente accessibili per godere della vista", - "shortDescription": "Torri pubblicamente accessibili per godere della vista", - "title": "Torri di osservazione" + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Questa è una strada ciclabile (e ha un limite di velocità massima di 30 km/h)" + }, + "1": { + "then": "Questa è una strada ciclabile" + }, + "2": { + "then": "Diverrà tra poco una strada ciclabile" + }, + "3": { + "then": "Questa strada non è una strada ciclabile" + } + }, + "question": "È una strada ciclabile?" + }, + "1": { + "question": "Questa strada diventerà una strada ciclabile quando?", + "render": "Questa strada diventerà una strada ciclabile dal {cyclestreet:start_date}" + } + } }, - "openwindpowermap": { - "description": "Una cartina per la visione e la modifica delle turbine eoliche.", - "title": "OpenWindPowerMap" + "shortDescription": "Una cartina per le strade ciclabili", + "title": "Strade ciclabili" + }, + "cyclofix": { + "description": "Questa mappa offre a chi va in bici una soluzione semplice per trovare tutte le infrastrutture di cui ha bisogno.

Puoi tracciare la tua posizione esatta (solo su mobile) e selezionare i livelli che ti interessano nell'angolo in basso a sinistra. Puoi anche usare questo strumento per aggiungere o modificare punti di interesse alla mappa e aggiungere nuove informazioni rispendendo alle domande.

Tutte le modifiche che apporterai saranno automaticamente salvate nel database mondiale di OpenStreetMap e potranno essere liberamente riutilizzate da tutti e tutte.

Per maggiori informazioni sul progetto ciclofix, visita cyclofix.osm.be.", + "title": "Cyclofix - una mappa libera per chi va in bici" + }, + "drinking_water": { + "description": "Questa mappa mostra tutti i luoghi in cui è disponibile acqua potabile ed è possibile aggiungerne di nuovi", + "title": "Acqua potabile" + }, + "etymology": { + "description": "Su questa cartina sono visibili i nomi a cui sono riferiti gli oggetti. Le strade, gli edifici, etc. provengono da OpenStreetMap che è a sua volta collegata a Wikidata. Nel popup, se esiste, verrà mostrato l’articolo Wikipedia o l'elemento Wikidata a cui si riferisce il nome di quell’oggetto. Se l’oggetto stesso ha una pagina Wikpedia, anch’essa verrà mostrata.

Anche tu puoi contribuire!Ingrandisci abbastanza e tutte le strade appariranno. Puoi cliccare su una e apparirà un popup con la ricerca Wikidata. Con pochi clic puoi aggiungere un collegamento etimologico. Tieni presente che per farlo, hai bisogno di un account gratuito su OpenStreetMap.", + "layers": { + "1": { + "override": { + "name": "Strade senza informazioni etimologiche" + } + }, + "2": { + "override": { + "name": "Parchi e foreste senza informazioni etimologiche" + } + } }, - "parkings": { - "description": "Questa cartina mostra diversi posti dove parcheggiare", - "shortDescription": "Questa cartina mostra diversi posti dove parcheggiare", - "title": "Parcheggio" + "shortDescription": "Qual è l’origine di un toponimo?", + "title": "Apri Carta Etimologica" + }, + "facadegardens": { + "description": "I giardini veritcali e gli alberi in città non solo portano pace e tranquillità ma creano anche un ambiente piÚ bello, aumentano la biodiversità, rendono il clima piÚ fresco e migliorano la qualità dell’aria.
Klimaan VZW e Mechelen Klimaatneutraal vogliono mappare sia i giardini verticali esistenti che quelli nuovi per mostrarli a quanti vogliono costruire un loro proprio giardino o per quelli che amano la natura e vogliono camminare per la città.
Per ulteriori informazioni visita klimaan.be.", + "layers": { + "0": { + "description": "Giardini verticali", + "name": "Giardini verticali", + "presets": { + "0": { + "description": "Aggiungi un giardino verticale", + "title": "giardino verticale" + } + }, + "tagRenderings": { + "facadegardens-description": { + "question": "Altre informazioni per descrivere il giardino (se necessarie e non riportate qui sopra)", + "render": "Maggiori dettagli: {description}" + }, + "facadegardens-direction": { + "question": "Com’è orientato questo giardino?", + "render": "Orientamento: {direction} (0 per il Nord e 90 per l’Est)" + }, + "facadegardens-edible": { + "mappings": { + "0": { + "then": "Ci sono piante commestibili" + }, + "1": { + "then": "Non ci sono piante commestibili" + } + }, + "question": "Ci sono piante commestibili?" + }, + "facadegardens-plants": { + "mappings": { + "0": { + "then": "Ci sono viti" + }, + "1": { + "then": "Ci sono piante da fiore" + }, + "2": { + "then": "Ci sono arbusti" + }, + "3": { + "then": "Ci sono piante tappezzanti" + } + }, + "question": "Che tipi di piante sono presenti qui?" + }, + "facadegardens-rainbarrel": { + "mappings": { + "0": { + "then": "C'è un contenitore per raccogliere la pioggia" + }, + "1": { + "then": "Non c'è un contenitore per raccogliere la pioggia" + } + }, + "question": "È stata installata una riserva d’acqua per il giardino?" + }, + "facadegardens-start_date": { + "question": "Quando è stato realizzato il giardino? (è sufficiente l'anno)", + "render": "Data di realizzazione del giardino: {start_date}" + }, + "facadegardens-sunshine": { + "mappings": { + "0": { + "then": "Il giardino è completamente illuminato dal sole" + }, + "1": { + "then": "Il giardino è parzialmente in ombra" + }, + "2": { + "then": "Il giardino è in ombra" + } + }, + "question": "Il giardino è al sole o in ombra?" + } + }, + "title": { + "render": "Giardino verticale" + } + } }, - "personal": { - "description": "Crea un tema personale basato sui livelli disponibili per tutti i temi. Per mostrare dei dati, apri selezione livello", - "title": "Tema personalizzato" - }, - "playgrounds": { - "description": "In questa cartina vengono mostrati i parchi giochi a cui è possibile aggiungere dettagli", - "shortDescription": "Una cartina dei parchi giochi", - "title": "Parchi giochi" - }, - "postboxes": { - "description": "In questa cartina puoi veder e modificare gli uffici postali e le buche delle lettere. Puoi usare questa cartina per trovare dove imbucare la tua prossima cartolina! :)
Hai trovato un errore o una buca delle lettere mancante? Puoi modificare questa cartina con un account gratuito su OpenStreetMap. ", - "shortDescription": "Una cartina che mostra le buche delle lettere e gli uffici postali", - "title": "Buche delle lettere e uffici postali" - }, - "shops": { - "description": "In questa cartina è possibile aggiungere informazioni di base di un negozio, orari di apertura e numeri di telefono", - "shortDescription": "Una cartina modificabile con informazioni di base dei negozi", - "title": "Mappa dei negozi" - }, - "sport_pitches": { - "description": "Una campo sportivo è un’area dove vengono praticati gli sport", - "shortDescription": "Una cartina che mostra i campi sportivi", - "title": "Campi sportivi" - }, - "surveillance": { - "description": "In questa cartina puoi trovare le telecamera di sorveglianza.", - "shortDescription": "Telecamere e altri di mezzi di sorveglianza", - "title": "Sorveglianza sotto controllo" - }, - "toilets": { - "description": "Una cartina dei servizi igienici pubblici", - "title": "Mappa libera delle toilet" - }, - "trees": { - "description": "Mappa tutti gli alberi!", - "shortDescription": "Mappa tutti gli alberi", - "title": "Alberi" - }, - "uk_addresses": { - "description": "Contribuisci a OpenStreetMap inserendo le informazioni sull’indirizzo", - "shortDescription": "Aiuta a costruire un dataset libero per gli indirizzi nel Regno Unito", - "title": "Indirizzi UK" - }, - "waste_basket": { - "description": "In questa cartina troverai i cestini dei rifiuti nei tuoi paraggi. Se manca un cestino, puoi inserirlo tu stesso", - "shortDescription": "Una cartina dei cestini dei rifiuti", - "title": "Cestino dei rifiuti" + "shortDescription": "Questa mappa mostra i giardini verticali, con foto e informazioni utili sulla loro orientazione, sull'illuminazione solare e sui tipi di piante.", + "title": "Giardini verticali" + }, + "food": { + "title": "Ristoranti e fast food" + }, + "fritures": { + "layers": { + "0": { + "override": { + "name": "Friggitoria" + } + } } + }, + "ghostbikes": { + "description": "Una bici fantasma è un monumento in ricordo di un ciclista che è morto in un incidente stradale, che ha la forma di un una bicicletta bianca installata in maniera permanente ne luogo dell’incidente.

In questa cartina, è possibile vedere tutte le bici fantasma che sono state aggiunte su OpenStreetMap. Ne manca una? Chiunque puÃ˛ aggiungere o migliorare le informazioni qui presenti (è solo richiesto un account gratuito su OpenStreetMap).", + "title": "Bici fantasma" + }, + "hackerspaces": { + "description": "Su questa cartina è possibile vedere gli hackerspace, aggiungerne di nuovi o aggiornare le informazioni tutto in maniera pratica", + "shortDescription": "Una cartina degli hackerspace", + "title": "Hackerspace" + }, + "hailhydrant": { + "description": "In questa cartina puoi vedere e aggiornare idranti, stazioni dei pompieri, stazioni delle ambulanze ed estintori del tuo quartiere preferito.\n\nPuoi seguire la tua posizione precisa (solo su cellulare) e selezionare i livelli che ti interessano nell’angolo in basso a sinistra. Puoi anche usare questo strumento per aggiungere o modificare i PDI sulla mappa e fornire ulteriori dettagli rispondendo alle domande.\n\nTutte le modifiche che farai verranno automaticamente salvate nel database globale di OpenStreetMap e potranno essere riutilizzate liberamente da tutti.", + "layers": { + "0": { + "description": "Livello della mappa che mostra gli idranti antincendio.", + "name": "Mappa degli idranti", + "presets": { + "0": { + "description": "Un idrante è un punto di collegamento dove i pompieri possono estrarre acqua. Potrebbe trovarsi sottoterra.", + "title": "Idrante antincendio" + } + }, + "tagRenderings": { + "hydrant-color": { + "mappings": { + "0": { + "then": "Il colore dell’idrante è sconosciuto." + }, + "1": { + "then": "Il colore dell’idrante è giallo." + }, + "2": { + "then": "L'idrante è rosso." + } + }, + "question": "Qual è il colore dell’idrante?", + "render": "Il colore dell’idrante è {colour}" + }, + "hydrant-state": { + "mappings": { + "0": { + "then": "L’idrante è (parzialmente o completamente) funzionante." + }, + "1": { + "then": "L’idrante è fuori servizio." + }, + "2": { + "then": "L’idrante è stato rimosso." + } + }, + "question": "Aggiorna lo stato di funzionamento dell’idrante." + }, + "hydrant-type": { + "mappings": { + "0": { + "then": "Il tipo di idrante è sconosciuto." + }, + "1": { + "then": " Soprasuolo." + }, + "2": { + "then": " Tubo." + }, + "3": { + "then": " A muro." + }, + "4": { + "then": " Sottosuolo." + } + }, + "question": "Di che tipo è questo idrante?", + "render": " Tipo di idrante: {fire_hydrant:type}" + } + }, + "title": { + "render": "Idrante" + } + }, + "1": { + "description": "Livello della mappa che mostra gli idranti antincendio.", + "name": "Cartina degli estintori.", + "presets": { + "0": { + "description": "Un estintore è un dispositivo portatile di piccole dimensioni usato per spegnere un incendio", + "title": "Estintore" + } + }, + "tagRenderings": { + "extinguisher-location": { + "mappings": { + "0": { + "then": "Si trova all’interno." + }, + "1": { + "then": "Si trova all’esterno." + } + }, + "question": "Dove è posizionato?", + "render": "Posizione: {location}" + } + }, + "title": { + "render": "Estintori" + } + }, + "2": { + "description": "Livello che mostra le caserme dei vigili del fuoco.", + "name": "Mappa delle caserme dei vigili del fuoco", + "presets": { + "0": { + "description": "Una caserma dei pompieri è un luogo dove si trovano i mezzi antincendio e i pompieri tra una missione e l’altra.", + "title": "Caserma dei vigili del fuoco" + } + }, + "tagRenderings": { + "station-agency": { + "mappings": { + "0": { + "then": "Servizio antincendio governativo" + } + }, + "question": "Quale agenzia gestisce questa stazione?", + "render": "Questa stazione è gestita da {operator}." + }, + "station-name": { + "question": "Come si chiama questa caserma dei vigili del fuoco?", + "render": "Questa caserma si chiama {name}." + }, + "station-operator": { + "mappings": { + "0": { + "then": "Questa stazione è gestita dal governo." + }, + "1": { + "then": "Questa stazione è gestita dalla comunità oppure un’associazione informale." + }, + "2": { + "then": "Questa stazione è gestita da un gruppo di volontari ufficiale." + }, + "3": { + "then": "Questa stazione è gestita da privati." + } + }, + "question": "Com’è classificato il gestore di questa stazione?", + "render": "Il gestore è un ente {operator:type}." + }, + "station-place": { + "question": "In che località si trova la stazione? (ad es. quartiere, paese o città)", + "render": "La stazione si trova a {addr:place}." + }, + "station-street": { + "question": " Qual è il nome della via in cui si trova la caserma?", + "render": "La stazione si trova in una strada chiamata {addr:street}." + } + }, + "title": { + "render": "Caserma dei vigili del fuoco" + } + }, + "3": { + "description": "La stazione delle ambulanze è un’area per lo stoccaggio delle ambulanze, dell’equipaggiamento medico, dei dispositivi di protezione individuale e di altre forniture medicali.", + "name": "Carta delle stazioni delle ambulanze", + "presets": { + "0": { + "description": "Aggiungi una stazione delle ambulanza alla mappa", + "title": "Stazione delle ambulanze" + } + }, + "tagRenderings": { + "ambulance-agency": { + "question": "Quale agenzia gestisce questa stazione?", + "render": "Questa stazione è gestita da {operator}." + }, + "ambulance-name": { + "question": "Qual è il nome di questa stazione delle ambulanze?", + "render": "Questa stazione è chiamata {name}." + }, + "ambulance-operator-type": { + "mappings": { + "0": { + "then": "La stazione è gestita dal governo." + }, + "1": { + "then": "La stazione è gestita dalla comunità o un’organizzazione non ufficiale." + }, + "2": { + "then": "La stazione è gestita da un gruppo ufficiale di volontari." + }, + "3": { + "then": "La stazione è gestita da un privato." + } + }, + "question": "Com’è classificato il gestore della stazione?", + "render": "L’operatore è un ente {operator:type}." + }, + "ambulance-place": { + "question": "Dove si trova la stazione? (ad es. quartiere, paese o città)", + "render": "La stazione si trova a {addr:place}." + }, + "ambulance-street": { + "question": " Come si chiama la strada in cui si trova questa stazione?", + "render": "Questa stazione si trova in {addr:street}." + } + }, + "title": { + "render": "Stazione delle ambulanze" + } + } + }, + "shortDescription": "Carta che mostra gli idranti, gli estintori, le caserme dei vigili del fuoco e le stazioni delle ambulanze.", + "title": "Idranti, estintori, caserme dei vigili del fuoco e stazioni delle ambulanze." + }, + "maps": { + "description": "In questa carta puoi trovare tutte le mappe conosciute da OpenStreetMap (tipicamente una grossa mappa su di un pannello informativo che mostra l’area, la città o la regione, ad es. una mappa turistica dietro a un manifesto, la mappa di una riserva naturale, la mappa della rete ciclistica regionale, etc.)

Se manca una mappa, puoi aggiungerla facilmente a questa su OpenStreetMap.", + "shortDescription": "Questo tema mostra tutte le mappe (turistiche) conosciute da OpenStreetMap", + "title": "Una cartina delle cartine" + }, + "natuurpunt": { + "description": "In questa cartina è possibile trovare tutte le riserve naturali offerte da Natuupunt. ", + "shortDescription": "Questa cartina mostra le riserve naturali di Natuurpunt", + "title": "Riserve naturali" + }, + "observation_towers": { + "description": "Torri pubblicamente accessibili per godere della vista", + "shortDescription": "Torri pubblicamente accessibili per godere della vista", + "title": "Torri di osservazione" + }, + "openwindpowermap": { + "description": "Una cartina per la visione e la modifica delle turbine eoliche.", + "layers": { + "0": { + "name": "pala eolica", + "presets": { + "0": { + "title": "pala eolica" + } + }, + "tagRenderings": { + "turbine-diameter": { + "question": "Qual è il diametro (in metri) del rotore di questa pala eolica?", + "render": "Il diametro del rotore di questa pala eolica è di {rotor:diameter} metri." + }, + "turbine-height": { + "question": "Qual è l’altezza (in metri e raggio del rotore incluso) di questa pala eolica?", + "render": "L’altezza totale (raggio del rotore incluso) di questa pala eolica è di {height} metri." + }, + "turbine-operator": { + "question": "Chi gestisce questa pala eolica?", + "render": "Questa pala eolica è gestita da {operator}." + }, + "turbine-output": { + "question": "Quant’è la potenza generata da questa pala eolica? (ad es. 2.3 MW)", + "render": "La potenza generata da questa pala eolica è {generator:output:electricity}." + }, + "turbine-start-date": { + "question": "Quando è entrata in funzione questa pala eolica?", + "render": "Questa pala eolica è entrata in funzione in data {start_date}." + } + }, + "title": { + "mappings": { + "0": { + "then": "{name}" + } + }, + "render": "pala eolica" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " megawatt" + }, + "1": { + "human": " kilowatt" + }, + "2": { + "human": " watt" + }, + "3": { + "human": " gigawatt" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": " metri" + } + } + } + } + } + }, + "title": "OpenWindPowerMap" + }, + "parkings": { + "description": "Questa cartina mostra diversi posti dove parcheggiare", + "shortDescription": "Questa cartina mostra diversi posti dove parcheggiare", + "title": "Parcheggio" + }, + "personal": { + "description": "Crea un tema personale basato sui livelli disponibili per tutti i temi. Per mostrare dei dati, apri selezione livello", + "title": "Tema personalizzato" + }, + "playgrounds": { + "description": "In questa cartina vengono mostrati i parchi giochi a cui è possibile aggiungere dettagli", + "shortDescription": "Una cartina dei parchi giochi", + "title": "Parchi giochi" + }, + "postboxes": { + "description": "In questa cartina puoi veder e modificare gli uffici postali e le buche delle lettere. Puoi usare questa cartina per trovare dove imbucare la tua prossima cartolina! :)
Hai trovato un errore o una buca delle lettere mancante? Puoi modificare questa cartina con un account gratuito su OpenStreetMap. ", + "shortDescription": "Una cartina che mostra le buche delle lettere e gli uffici postali", + "title": "Buche delle lettere e uffici postali" + }, + "shops": { + "description": "In questa cartina è possibile aggiungere informazioni di base di un negozio, orari di apertura e numeri di telefono", + "shortDescription": "Una cartina modificabile con informazioni di base dei negozi", + "title": "Mappa dei negozi" + }, + "sport_pitches": { + "description": "Una campo sportivo è un’area dove vengono praticati gli sport", + "shortDescription": "Una cartina che mostra i campi sportivi", + "title": "Campi sportivi" + }, + "surveillance": { + "description": "In questa cartina puoi trovare le telecamera di sorveglianza.", + "shortDescription": "Telecamere e altri di mezzi di sorveglianza", + "title": "Sorveglianza sotto controllo" + }, + "toilets": { + "description": "Una cartina dei servizi igienici pubblici", + "title": "Mappa libera delle toilet" + }, + "trees": { + "description": "Mappa tutti gli alberi!", + "shortDescription": "Mappa tutti gli alberi", + "title": "Alberi" + }, + "uk_addresses": { + "description": "Contribuisci a OpenStreetMap inserendo le informazioni sull’indirizzo", + "shortDescription": "Aiuta a costruire un dataset libero per gli indirizzi nel Regno Unito", + "title": "Indirizzi UK" + }, + "waste_basket": { + "description": "In questa cartina troverai i cestini dei rifiuti nei tuoi paraggi. Se manca un cestino, puoi inserirlo tu stesso", + "shortDescription": "Una cartina dei cestini dei rifiuti", + "title": "Cestino dei rifiuti" + } } \ No newline at end of file diff --git a/langs/themes/ja.json b/langs/themes/ja.json index de0493785..b4c8afeb5 100644 --- a/langs/themes/ja.json +++ b/langs/themes/ja.json @@ -1,873 +1,872 @@ { - "aed": { - "description": "こぎ地å›ŗではčŋ‘くãĢある除į´°å‹•å™¨(AED)をčĻ‹ã¤ã‘ãĻマãƒŧクしぞす", - "title": "ã‚ĒãƒŧプãƒŗAEDマップ" - }, - "artwork": { - "description": "ã‚Ēãƒŧプãƒŗ ã‚ĸãƒŧトワãƒŧク マップへようこそ。世į•Œä¸­ãŽéŠ…åƒã‚„čƒ¸åƒã€åŖãŽčŊ書きãĒおぎã‚ĸãƒŧトワãƒŧクぎ地å›ŗです", - "title": "ã‚Ēãƒŧプãƒŗ ã‚ĸãƒŧトワãƒŧク マップ" - }, - "benches": { - "description": "こぎマップãĢは、OpenStreetMapãĢč¨˜éŒ˛ã•ã‚ŒãĻいるすずãĻぎベãƒŗãƒãŒčĄ¨į¤ēされぞす。個々ぎベãƒŗチ、およãŗå…Ŧå…ąäē¤é€šæŠŸé–ĸぎ停į•™æ‰€ãžãŸã¯éŋé›Ŗ場所ãĢåąžã™ã‚‹ãƒ™ãƒŗチです。OpenStreetMapã‚ĸã‚Ģã‚ĻãƒŗトをäŊŋį”¨ã™ã‚‹ã¨ã€æ–°ã—いベãƒŗチをマップしたり、æ—ĸ存ぎベãƒŗチぎčŠŗį´°ã‚’įˇ¨é›†ã—たりできぞす。", - "shortDescription": "ベãƒŗチぎ地å›ŗ", - "title": "ベãƒŗチ" - }, - "bicyclelib": { - "description": "č‡ĒčģĸčģŠãƒŠã‚¤ãƒ–ナãƒĒã¯ã€å°‘éĄãŽåš´é–“æ–™é‡‘ã§č‡ĒčģĸčģŠã‚’借りられる場所です。æŗ¨į›Žã™ãšããƒĻãƒŧã‚šã‚ąãƒŧ゚としãĻは、子䞛向けぎč‡ĒčģĸčģŠãƒŠã‚¤ãƒ–ナãƒĒã§ã€å­ãŠã‚‚ãŽæˆé•ˇãĢあわせãĻ大きãĒč‡ĒčģĸčģŠã¸å€Ÿã‚Šæ›ŋえられぞす", - "title": "č‡ĒčģĸčģŠãƒŠã‚¤ãƒ–ナãƒĒ" - }, - "bookcases": { - "description": "å…Ŧå…ąãŽæœŦæŖšã¨ã¯ã€æœŦがäŋįŽĄã•ã‚ŒãĻいる小さãĒčĄ—č§’ãŽã‚­ãƒŖビネット、įŽąã€å¤ã„é›ģčŠąãŽãƒˆãƒŠãƒŗク、そぎäģ–ぎį‰ŠãŽã“とです。čĒ°ã§ã‚‚æœŦをįŊŽã„たり持ãŖたりすることができぞす。こぎマップは、すずãĻぎå…Ŧå…ąãŽæœŦæŖšã‚’収集することをį›Žįš„としãĻいぞす。čŋ‘くで新しいæœŦæŖšã‚’čĻ‹ã¤ã‘ることができ、į„Ąæ–™ãŽOpenStreetMapã‚ĸã‚Ģã‚ĻãƒŗトをäŊŋえば、お気ãĢå…ĨりぎæœŦæŖšã‚’į°Ąå˜ãĢčŋŊ加できぞす。", - "title": "ã‚ĒãƒŧプãƒŗæœŦæŖšãƒžãƒƒãƒ—" - }, - "campersite": { - "description": "こぎWebã‚ĩイトでは、すずãĻぎキãƒŖãƒŗピãƒŗグã‚Ģãƒŧぎå…ŦåŧåœčģŠå ´æ‰€ã¨ã€æąšæ°´ã‚’捨ãĻることができる場所を収集しぞす。提䞛されるã‚ĩãƒŧビ゚とã‚ŗ゚トãĢé–ĸするčŠŗį´°ã‚’čŋŊ加できぞす。写įœŸã¨ãƒŦビãƒĨãƒŧをčŋŊ加しぞす。これはã‚Ļェブã‚ĩイトとã‚Ļェブã‚ĸプãƒĒです。デãƒŧã‚ŋはOpenStreetMapãĢäŋå­˜ã•ã‚Œã‚‹ãŽã§ã€æ°¸é ãĢį„Ąæ–™ã§ã€ãŠã‚“ãĒã‚ĸプãƒĒからでも再刊į”¨ã§ããžã™ã€‚", - "layers": { + "aed": { + "description": "こぎ地å›ŗではčŋ‘くãĢある除į´°å‹•å™¨(AED)をčĻ‹ã¤ã‘ãĻマãƒŧクしぞす", + "title": "ã‚ĒãƒŧプãƒŗAEDマップ" + }, + "artwork": { + "description": "ã‚Ēãƒŧプãƒŗ ã‚ĸãƒŧトワãƒŧク マップへようこそ。世į•Œä¸­ãŽéŠ…åƒã‚„čƒ¸åƒã€åŖãŽčŊ書きãĒおぎã‚ĸãƒŧトワãƒŧクぎ地å›ŗです", + "title": "ã‚Ēãƒŧプãƒŗ ã‚ĸãƒŧトワãƒŧク マップ" + }, + "benches": { + "description": "こぎマップãĢは、OpenStreetMapãĢč¨˜éŒ˛ã•ã‚ŒãĻいるすずãĻぎベãƒŗãƒãŒčĄ¨į¤ēされぞす。個々ぎベãƒŗチ、およãŗå…Ŧå…ąäē¤é€šæŠŸé–ĸぎ停į•™æ‰€ãžãŸã¯éŋé›Ŗ場所ãĢåąžã™ã‚‹ãƒ™ãƒŗチです。OpenStreetMapã‚ĸã‚Ģã‚ĻãƒŗトをäŊŋį”¨ã™ã‚‹ã¨ã€æ–°ã—いベãƒŗチをマップしたり、æ—ĸ存ぎベãƒŗチぎčŠŗį´°ã‚’įˇ¨é›†ã—たりできぞす。", + "shortDescription": "ベãƒŗチぎ地å›ŗ", + "title": "ベãƒŗチ" + }, + "bicyclelib": { + "description": "č‡ĒčģĸčģŠãƒŠã‚¤ãƒ–ナãƒĒã¯ã€å°‘éĄãŽåš´é–“æ–™é‡‘ã§č‡ĒčģĸčģŠã‚’借りられる場所です。æŗ¨į›Žã™ãšããƒĻãƒŧã‚šã‚ąãƒŧ゚としãĻは、子䞛向けぎč‡ĒčģĸčģŠãƒŠã‚¤ãƒ–ナãƒĒã§ã€å­ãŠã‚‚ãŽæˆé•ˇãĢあわせãĻ大きãĒč‡ĒčģĸčģŠã¸å€Ÿã‚Šæ›ŋえられぞす", + "title": "č‡ĒčģĸčģŠãƒŠã‚¤ãƒ–ナãƒĒ" + }, + "bookcases": { + "description": "å…Ŧå…ąãŽæœŦæŖšã¨ã¯ã€æœŦがäŋįŽĄã•ã‚ŒãĻいる小さãĒčĄ—č§’ãŽã‚­ãƒŖビネット、įŽąã€å¤ã„é›ģčŠąãŽãƒˆãƒŠãƒŗク、そぎäģ–ぎį‰ŠãŽã“とです。čĒ°ã§ã‚‚æœŦをįŊŽã„たり持ãŖたりすることができぞす。こぎマップは、すずãĻぎå…Ŧå…ąãŽæœŦæŖšã‚’収集することをį›Žįš„としãĻいぞす。čŋ‘くで新しいæœŦæŖšã‚’čĻ‹ã¤ã‘ることができ、į„Ąæ–™ãŽOpenStreetMapã‚ĸã‚Ģã‚ĻãƒŗトをäŊŋえば、お気ãĢå…ĨりぎæœŦæŖšã‚’į°Ąå˜ãĢčŋŊ加できぞす。", + "title": "ã‚ĒãƒŧプãƒŗæœŦæŖšãƒžãƒƒãƒ—" + }, + "campersite": { + "description": "こぎWebã‚ĩイトでは、すずãĻぎキãƒŖãƒŗピãƒŗグã‚Ģãƒŧぎå…ŦåŧåœčģŠå ´æ‰€ã¨ã€æąšæ°´ã‚’捨ãĻることができる場所を収集しぞす。提䞛されるã‚ĩãƒŧビ゚とã‚ŗ゚トãĢé–ĸするčŠŗį´°ã‚’čŋŊ加できぞす。写įœŸã¨ãƒŦビãƒĨãƒŧをčŋŊ加しぞす。これはã‚Ļェブã‚ĩイトとã‚Ļェブã‚ĸプãƒĒです。デãƒŧã‚ŋはOpenStreetMapãĢäŋå­˜ã•ã‚Œã‚‹ãŽã§ã€æ°¸é ãĢį„Ąæ–™ã§ã€ãŠã‚“ãĒã‚ĸプãƒĒからでも再刊į”¨ã§ããžã™ã€‚", + "layers": { + "0": { + "description": "キãƒŖãƒŗプã‚ĩイト", + "name": "キãƒŖãƒŗプã‚ĩイト", + "presets": { + "0": { + "description": "新しいå…Ŧåŧã‚­ãƒŖãƒŗプã‚ĩイトをčŋŊ加しぞす。おåŽĸ様ぎキãƒŖãƒŗピãƒŗグã‚Ģãƒŧで一æŗŠã™ã‚‹æŒ‡åŽšãŽå ´æ‰€ã§ã™ã€‚æœŦį‰ŠãŽã‚­ãƒŖãƒŗプぎようãĢčĻ‹ãˆã‚‹ã‹ã‚‚しれãĒいし、単ãĒる駐čģŠå ´ãŽã‚ˆã†ãĢčĻ‹ãˆã‚‹ã‹ã‚‚しれãĒい。それらは全くįŊ˛åã•ã‚ŒãĻいãĒいかもしれぞせんが、č‡Ēæ˛ģäŊ“ぎæąē厚で厚įžŠã•ã‚ŒãĻいるだけです。夜を過ごすことがäēˆæƒŗされãĒいキãƒŖãƒŗパãƒŧ向けぎ通常ぎ駐čģŠå ´ã¯ã€ã‚­ãƒŖãƒŗプã‚ĩイトではãĒい ", + "title": "キãƒŖãƒŗプã‚ĩイト" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "ここãĢはäŊ•äēēぎキãƒŖãƒŗパãƒŧがæŗŠãžã‚Œãžã™ã‹?(č¨ąå¯ã•ã‚ŒãŸčģŠä¸ĄãŽæ•°ã‚„駐čģŠã‚šãƒšãƒŧ゚が明らかでãĒい場合はįœį•Ĩ)", + "render": "{capacity} äēēが同時ãĢäŊŋį”¨ã§ããžã™" + }, + "caravansites-charge": { + "question": "ここはいくらかかりぞすかīŧŸ", + "render": "こぎ場所は{charge} がåŋ…čĻ" + }, + "caravansites-description": { + "question": "こぎ場所ぎ一čˆŦįš„ãĒčĒŦ明をčŋŊ加しぞすか?(前ãĢå•ã„åˆã‚ã›ãŸæƒ…å ąã‚„ä¸Šč¨˜ãŽæƒ…å ąã‚’įš°ã‚Ščŋ”しå…Ĩ力しãĒいでください。åŽĸčĻŗįš„ãĒ意čĻ‹ã¯ãƒŦビãƒĨãƒŧãĢ反映されぞす)", + "render": "こぎ場所ぎčŠŗį´°:{description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "äŊŋį”¨æ–™ã‚’支払うåŋ…čĻãŒã‚ã‚‹" + }, + "1": { + "then": "į„Ąæ–™ã§äŊŋį”¨å¯čƒŊ" + } + }, + "question": "ここは有料ですか?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "イãƒŗã‚ŋãƒŧネットã‚ĸクã‚ģ゚がある" + }, + "1": { + "then": "イãƒŗã‚ŋãƒŧネットã‚ĸクã‚ģ゚がある" + }, + "2": { + "then": "イãƒŗã‚ŋãƒŧネットãĢã‚ĸクã‚ģ゚できãĒい" + } + }, + "question": "こぎ場所はイãƒŗã‚ŋãƒŧネットãĢã‚ĸクã‚ģ゚できぞすか?" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "イãƒŗã‚ŋãƒŧネットæŽĨįļšãĢはåˆĨ途料金がåŋ…čĻã§ã™" + }, + "1": { + "then": "イãƒŗã‚ŋãƒŧネットæŽĨįļšãĢčŋŊ加料金を支払うåŋ…čĻã¯ã‚りぞせん" + } + }, + "question": "イãƒŗã‚ŋãƒŧネットæŽĨįļšãĢお金はかかりぞすか?" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "ã¯ã„ã€é•ˇæœŸãƒŦãƒŗã‚ŋãƒĢぎ゚ポットもあり、æ—Ĩ常įš„ãĢæģžåœ¨ã™ã‚‹ã“ともできぞす" + }, + "1": { + "then": "いいえ、ここãĢã¯é•ˇæœŸæģžåœ¨č€…はいぞせん" + }, + "2": { + "then": "é•ˇæœŸåĨ‘į´„をしãĻいる場合ぎãŋåŽŋæŗŠå¯čƒŊです(これを選択すると、こぎ場所はこぎ地å›ŗからæļˆãˆãžã™)" + } + }, + "question": "ここãĢã¯é•ˇæœŸãƒŦãƒŗã‚ŋãƒĢぎ゚ポットがありぞすか?" + }, + "caravansites-name": { + "question": "ここはäŊ•ã¨ã„うところですか?", + "render": "こぎ場所は {name} とå‘ŧばれãĻいぞす" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "こぎ場所ãĢã¯čĄ›į”Ÿįš„ãĒゴミ捨ãĻ場がある" + }, + "1": { + "then": "こぎ場所ãĢã¯čĄ›į”Ÿįš„ãĒゴミ捨ãĻ場がãĒい" + } + }, + "question": "こぎ場所ãĢ衛į”Ÿįš„ãĒゴミ捨ãĻ場はありぞすか?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "ここãĢはトイãƒŦがある" + }, + "1": { + "then": "ここãĢはトイãƒŦがãĒい" + } + }, + "question": "ここãĢトイãƒŦはありぞすか?" + }, + "caravansites-website": { + "question": "ここãĢはã‚Ļェブã‚ĩイトがありぞすか?", + "render": "å…ŦåŧWebã‚ĩイト: {website}" + } + }, + "title": { + "mappings": { "0": { - "description": "キãƒŖãƒŗプã‚ĩイト", - "name": "キãƒŖãƒŗプã‚ĩイト", - "presets": { - "0": { - "description": "新しいå…Ŧåŧã‚­ãƒŖãƒŗプã‚ĩイトをčŋŊ加しぞす。おåŽĸ様ぎキãƒŖãƒŗピãƒŗグã‚Ģãƒŧで一æŗŠã™ã‚‹æŒ‡åŽšãŽå ´æ‰€ã§ã™ã€‚æœŦį‰ŠãŽã‚­ãƒŖãƒŗプぎようãĢčĻ‹ãˆã‚‹ã‹ã‚‚しれãĒいし、単ãĒる駐čģŠå ´ãŽã‚ˆã†ãĢčĻ‹ãˆã‚‹ã‹ã‚‚しれãĒい。それらは全くįŊ˛åã•ã‚ŒãĻいãĒいかもしれぞせんが、č‡Ēæ˛ģäŊ“ぎæąē厚で厚įžŠã•ã‚ŒãĻいるだけです。夜を過ごすことがäēˆæƒŗされãĒいキãƒŖãƒŗパãƒŧ向けぎ通常ぎ駐čģŠå ´ã¯ã€ã‚­ãƒŖãƒŗプã‚ĩイトではãĒい ", - "title": "キãƒŖãƒŗプã‚ĩイト" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "ここãĢはäŊ•äēēぎキãƒŖãƒŗパãƒŧがæŗŠãžã‚Œãžã™ã‹?(č¨ąå¯ã•ã‚ŒãŸčģŠä¸ĄãŽæ•°ã‚„駐čģŠã‚šãƒšãƒŧ゚が明らかでãĒい場合はįœį•Ĩ)", - "render": "{capacity} äēēが同時ãĢäŊŋį”¨ã§ããžã™" - }, - "caravansites-charge": { - "question": "ここはいくらかかりぞすかīŧŸ", - "render": "こぎ場所は{charge} がåŋ…čĻ" - }, - "caravansites-description": { - "question": "こぎ場所ぎ一čˆŦįš„ãĒčĒŦ明をčŋŊ加しぞすか?(前ãĢå•ã„åˆã‚ã›ãŸæƒ…å ąã‚„ä¸Šč¨˜ãŽæƒ…å ąã‚’įš°ã‚Ščŋ”しå…Ĩ力しãĒいでください。åŽĸčĻŗįš„ãĒ意čĻ‹ã¯ãƒŦビãƒĨãƒŧãĢ反映されぞす)", - "render": "こぎ場所ぎčŠŗį´°:{description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "äŊŋį”¨æ–™ã‚’支払うåŋ…čĻãŒã‚ã‚‹" - }, - "1": { - "then": "į„Ąæ–™ã§äŊŋį”¨å¯čƒŊ" - } - }, - "question": "ここは有料ですか?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "イãƒŗã‚ŋãƒŧネットã‚ĸクã‚ģ゚がある" - }, - "1": { - "then": "イãƒŗã‚ŋãƒŧネットã‚ĸクã‚ģ゚がある" - }, - "2": { - "then": "イãƒŗã‚ŋãƒŧネットãĢã‚ĸクã‚ģ゚できãĒい" - } - }, - "question": "こぎ場所はイãƒŗã‚ŋãƒŧネットãĢã‚ĸクã‚ģ゚できぞすか?" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "イãƒŗã‚ŋãƒŧネットæŽĨįļšãĢはåˆĨ途料金がåŋ…čĻã§ã™" - }, - "1": { - "then": "イãƒŗã‚ŋãƒŧネットæŽĨįļšãĢčŋŊ加料金を支払うåŋ…čĻã¯ã‚りぞせん" - } - }, - "question": "イãƒŗã‚ŋãƒŧネットæŽĨįļšãĢお金はかかりぞすか?" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "ã¯ã„ã€é•ˇæœŸãƒŦãƒŗã‚ŋãƒĢぎ゚ポットもあり、æ—Ĩ常įš„ãĢæģžåœ¨ã™ã‚‹ã“ともできぞす" - }, - "1": { - "then": "いいえ、ここãĢã¯é•ˇæœŸæģžåœ¨č€…はいぞせん" - }, - "2": { - "then": "é•ˇæœŸåĨ‘į´„をしãĻいる場合ぎãŋåŽŋæŗŠå¯čƒŊです(これを選択すると、こぎ場所はこぎ地å›ŗからæļˆãˆãžã™)" - } - }, - "question": "ここãĢã¯é•ˇæœŸãƒŦãƒŗã‚ŋãƒĢぎ゚ポットがありぞすか?" - }, - "caravansites-name": { - "question": "ここはäŊ•ã¨ã„うところですか?", - "render": "こぎ場所は {name} とå‘ŧばれãĻいぞす" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "こぎ場所ãĢã¯čĄ›į”Ÿįš„ãĒゴミ捨ãĻ場がある" - }, - "1": { - "then": "こぎ場所ãĢã¯čĄ›į”Ÿįš„ãĒゴミ捨ãĻ場がãĒい" - } - }, - "question": "こぎ場所ãĢ衛į”Ÿįš„ãĒゴミ捨ãĻ場はありぞすか?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "ここãĢはトイãƒŦがある" - }, - "1": { - "then": "ここãĢはトイãƒŦがãĒい" - } - }, - "question": "ここãĢトイãƒŦはありぞすか?" - }, - "caravansites-website": { - "question": "ここãĢはã‚Ļェブã‚ĩイトがありぞすか?", - "render": "å…ŦåŧWebã‚ĩイト: {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "į„ĄåãŽã‚­ãƒŖãƒŗプã‚ĩイト" - } - }, - "render": "キãƒŖãƒŗプã‚ĩイト {name}" - } + "then": "į„ĄåãŽã‚­ãƒŖãƒŗプã‚ĩイト" + } + }, + "render": "キãƒŖãƒŗプã‚ĩイト {name}" + } + }, + "1": { + "description": "衛į”Ÿã‚´ãƒŸæ¨ãĻå ´", + "name": "衛į”Ÿã‚´ãƒŸæ¨ãĻå ´", + "presets": { + "0": { + "description": "æ–°ã—ã„čĄ›į”Ÿã‚´ãƒŸæ¨ãĻ場をčŋŊ加しぞす。ここは、キãƒŖãƒŗピãƒŗグã‚Ģãƒŧぎ運čģĸ手が排水やæē帯トイãƒŦぎåģƒæŖ„į‰Šã‚’捨ãĻることができる場所です。éŖ˛æ–™æ°´ã‚„é›ģ気もあることが多いです。", + "title": "衛į”Ÿã‚´ãƒŸæ¨ãĻå ´" + } + }, + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "0": { + "then": "これをäŊŋį”¨ã™ã‚‹ãĢは、ネットワãƒŧクキãƒŧ/ã‚ŗãƒŧドがåŋ…čĻã§ã™" + }, + "1": { + "then": "こぎ場所をäŊŋį”¨ã™ã‚‹ãĢは、キãƒŖãƒŗプ/キãƒŖãƒŗプã‚ĩイトぎおåŽĸ様であるåŋ…čĻãŒã‚りぞす" + }, + "2": { + "then": "čĒ°ã§ã‚‚こぎゴミ捨ãĻ場をäŊŋį”¨ã§ããžã™" + }, + "3": { + "then": "čĒ°ã§ã‚‚こぎゴミ捨ãĻ場をäŊŋį”¨ã§ããžã™" + } + }, + "question": "こぎゴミ捨ãĻ場はčĒ°ãŒäŊŋえるんですか?" + }, + "dumpstations-charge": { + "question": "ここはいくらかかりぞすかīŧŸ", + "render": "こぎ場所は{charge} がåŋ…čĻ" + }, + "dumpstations-chemical-waste": { + "mappings": { + "0": { + "then": "æē帯トイãƒŦぎゴミはここでå‡Ļ分できぞす" + }, + "1": { + "then": "ここではæē帯トイãƒŦぎåģƒæŖ„į‰Šã‚’å‡Ļ分することはできぞせん" + } + }, + "question": "æē帯トイãƒŦãŽã‚´ãƒŸã¯ã“ãĄã‚‰ã§å‡Ļ分できぞすか?" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "äŊŋį”¨æ–™ã‚’支払うåŋ…čĻãŒã‚ã‚‹" + }, + "1": { + "then": "į„Ąæ–™ã§äŊŋį”¨å¯čƒŊ" + } + }, + "question": "ここは有料ですか?" + }, + "dumpstations-grey-water": { + "mappings": { + "0": { + "then": "ã“ã“ã§æąšæ°´(雑排水)を捨ãĻることができぞす" + }, + "1": { + "then": "ã“ã“ã§ã¯æąšæ°´(雑排水)を捨ãĻることはできãĒい" + } + }, + "question": "æąšæ°´(雑排水)ã¯ã“ãĄã‚‰ã§å‡Ļ分できぞすか?" + }, + "dumpstations-network": { + "question": "ここはäŊ•ãŽãƒãƒƒãƒˆãƒ¯ãƒŧクぎ一部ですか?(ãĒければ゚キップ)", + "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗはネットワãƒŧク{network}ぎ一部です" + }, + "dumpstations-waterpoint": { + "mappings": { + "0": { + "then": "こぎ場所ãĢはįĩĻ水所がある" + }, + "1": { + "then": "こぎ場所ãĢはįĩĻ水所がãĒい" + } + }, + "question": "こぎ場所ãĢはįĩĻ水所がありぞすか?" + } + }, + "title": { + "mappings": { + "0": { + "then": "ゴミ捨ãĻå ´" + } + }, + "render": "ゴミ捨ãĻå ´ {name}" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "こぎåē—はčĒ°ãŒįĩŒå–ļしãĻいるんですか?", + "render": "こぎ場所は{operator}ãĢよãŖãĻ運å–ļされぞす" + }, + "1": { + "mappings": { + "0": { + "then": "こぎ場所ãĢはé›ģæēãŒã‚りぞす" }, "1": { - "description": "衛į”Ÿã‚´ãƒŸæ¨ãĻå ´", - "name": "衛į”Ÿã‚´ãƒŸæ¨ãĻå ´", - "presets": { - "0": { - "description": "æ–°ã—ã„čĄ›į”Ÿã‚´ãƒŸæ¨ãĻ場をčŋŊ加しぞす。ここは、キãƒŖãƒŗピãƒŗグã‚Ģãƒŧぎ運čģĸ手が排水やæē帯トイãƒŦぎåģƒæŖ„į‰Šã‚’捨ãĻることができる場所です。éŖ˛æ–™æ°´ã‚„é›ģ気もあることが多いです。", - "title": "衛į”Ÿã‚´ãƒŸæ¨ãĻå ´" - } - }, - "tagRenderings": { - "dumpstations-access": { - "mappings": { - "0": { - "then": "これをäŊŋį”¨ã™ã‚‹ãĢは、ネットワãƒŧクキãƒŧ/ã‚ŗãƒŧドがåŋ…čĻã§ã™" - }, - "1": { - "then": "こぎ場所をäŊŋį”¨ã™ã‚‹ãĢは、キãƒŖãƒŗプ/キãƒŖãƒŗプã‚ĩイトぎおåŽĸ様であるåŋ…čĻãŒã‚りぞす" - }, - "2": { - "then": "čĒ°ã§ã‚‚こぎゴミ捨ãĻ場をäŊŋį”¨ã§ããžã™" - }, - "3": { - "then": "čĒ°ã§ã‚‚こぎゴミ捨ãĻ場をäŊŋį”¨ã§ããžã™" - } - }, - "question": "こぎゴミ捨ãĻ場はčĒ°ãŒäŊŋえるんですか?" - }, - "dumpstations-charge": { - "question": "ここはいくらかかりぞすかīŧŸ", - "render": "こぎ場所は{charge} がåŋ…čĻ" - }, - "dumpstations-chemical-waste": { - "mappings": { - "0": { - "then": "æē帯トイãƒŦぎゴミはここでå‡Ļ分できぞす" - }, - "1": { - "then": "ここではæē帯トイãƒŦぎåģƒæŖ„į‰Šã‚’å‡Ļ分することはできぞせん" - } - }, - "question": "æē帯トイãƒŦãŽã‚´ãƒŸã¯ã“ãĄã‚‰ã§å‡Ļ分できぞすか?" - }, - "dumpstations-fee": { - "mappings": { - "0": { - "then": "äŊŋį”¨æ–™ã‚’支払うåŋ…čĻãŒã‚ã‚‹" - }, - "1": { - "then": "į„Ąæ–™ã§äŊŋį”¨å¯čƒŊ" - } - }, - "question": "ここは有料ですか?" - }, - "dumpstations-grey-water": { - "mappings": { - "0": { - "then": "ã“ã“ã§æąšæ°´(雑排水)を捨ãĻることができぞす" - }, - "1": { - "then": "ã“ã“ã§ã¯æąšæ°´(雑排水)を捨ãĻることはできãĒい" - } - }, - "question": "æąšæ°´(雑排水)ã¯ã“ãĄã‚‰ã§å‡Ļ分できぞすか?" - }, - "dumpstations-network": { - "question": "ここはäŊ•ãŽãƒãƒƒãƒˆãƒ¯ãƒŧクぎ一部ですか?(ãĒければ゚キップ)", - "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗはネットワãƒŧク{network}ぎ一部です" - }, - "dumpstations-waterpoint": { - "mappings": { - "0": { - "then": "こぎ場所ãĢはįĩĻ水所がある" - }, - "1": { - "then": "こぎ場所ãĢはįĩĻ水所がãĒい" - } - }, - "question": "こぎ場所ãĢはįĩĻ水所がありぞすか?" - } - }, - "title": { - "mappings": { - "0": { - "then": "ゴミ捨ãĻå ´" - } - }, - "render": "ゴミ捨ãĻå ´ {name}" - } + "then": "こぎ場所ãĢはé›ģæēãŒã‚りぞせん" } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "こぎåē—はčĒ°ãŒįĩŒå–ļしãĻいるんですか?", - "render": "こぎ場所は{operator}ãĢよãŖãĻ運å–ļされぞす" - }, - "1": { - "mappings": { - "0": { - "then": "こぎ場所ãĢはé›ģæēãŒã‚りぞす" - }, - "1": { - "then": "こぎ場所ãĢはé›ģæēãŒã‚りぞせん" - } - }, - "question": "こぎ場所ãĢé›ģæēã¯ã‚りぞすか?" - } - } - }, - "shortDescription": "キãƒŖãƒŗパãƒŧã¨å¤œã‚’å…ąãĢするキãƒŖãƒŗプã‚ĩイトをčĻ‹ã¤ã‘ã‚‹", - "title": "キãƒŖãƒŗプã‚ĩイト" + }, + "question": "こぎ場所ãĢé›ģæēã¯ã‚りぞすか?" + } + } }, - "charging_stations": { - "description": "こぎã‚Ēãƒŧプãƒŗマップでは充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗãĢé–ĸã™ã‚‹æƒ…å ąã‚’čĻ‹ã¤ã‘ãĻマãƒŧクすることができぞす", - "shortDescription": "充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗぎ世į•Œåœ°å›ŗ", - "title": "充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗ" - }, - "climbing": { - "description": "こぎ地å›ŗãĢは、č‡Ēį„ļぎ中ぎクナイミãƒŗグジム、ボãƒĢダãƒĒãƒŗグホãƒŧãƒĢã€å˛ŠãĒお、さぞざぞãĒクナイミãƒŗグぎ抟äŧšãŒã‚りぞす。", - "descriptionTail": "į™ģåąąåœ°å›ŗはもともと Christian Neumann ãĢよãŖãĻäŊœæˆã•ã‚ŒãŸã‚‚ぎです。フã‚ŖãƒŧドバックやčŗĒ問がありぞしたら、ごé€ŖįĩĄãã ã•ã„。

こぎプロジェクトでは、OpenStreetMapプロジェクトぎデãƒŧã‚ŋをäŊŋį”¨ã—ぞす。

", - "layers": { + "shortDescription": "キãƒŖãƒŗパãƒŧã¨å¤œã‚’å…ąãĢするキãƒŖãƒŗプã‚ĩイトをčĻ‹ã¤ã‘ã‚‹", + "title": "キãƒŖãƒŗプã‚ĩイト" + }, + "charging_stations": { + "description": "こぎã‚Ēãƒŧプãƒŗマップでは充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗãĢé–ĸã™ã‚‹æƒ…å ąã‚’čĻ‹ã¤ã‘ãĻマãƒŧクすることができぞす", + "shortDescription": "充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗぎ世į•Œåœ°å›ŗ", + "title": "充é›ģ゚テãƒŧã‚ˇãƒ§ãƒŗ" + }, + "climbing": { + "description": "こぎ地å›ŗãĢは、č‡Ēį„ļぎ中ぎクナイミãƒŗグジム、ボãƒĢダãƒĒãƒŗグホãƒŧãƒĢã€å˛ŠãĒお、さぞざぞãĒクナイミãƒŗグぎ抟äŧšãŒã‚りぞす。", + "descriptionTail": "į™ģåąąåœ°å›ŗはもともと Christian Neumann ãĢよãŖãĻäŊœæˆã•ã‚ŒãŸã‚‚ぎです。フã‚ŖãƒŧドバックやčŗĒ問がありぞしたら、ごé€ŖįĩĄãã ã•ã„。

こぎプロジェクトでは、OpenStreetMapプロジェクトぎデãƒŧã‚ŋをäŊŋį”¨ã—ぞす。

", + "layers": { + "0": { + "description": "クナイミãƒŗグクナブやå›ŖäŊ“", + "name": "クナイミãƒŗグクナブ", + "presets": { + "0": { + "description": "クナイミãƒŗグクナブ", + "title": "クナイミãƒŗグクナブ" + }, + "1": { + "description": "į™ģåąąãĢé–ĸわるNGO", + "title": "クナイミãƒŗグNGO" + } + }, + "tagRenderings": { + "climbing_club-name": { + "question": "こぎį™ģåąąã‚¯ãƒŠãƒ–ã‚„NGOぎ名前はäŊ•ã§ã™ã‹?", + "render": "{name}" + } + }, + "title": { + "mappings": { "0": { - "description": "クナイミãƒŗグクナブやå›ŖäŊ“", - "name": "クナイミãƒŗグクナブ", - "presets": { - "0": { - "description": "クナイミãƒŗグクナブ", - "title": "クナイミãƒŗグクナブ" - }, - "1": { - "description": "į™ģåąąãĢé–ĸわるNGO", - "title": "クナイミãƒŗグNGO" - } - }, - "tagRenderings": { - "climbing_club-name": { - "question": "こぎį™ģåąąã‚¯ãƒŠãƒ–ã‚„NGOぎ名前はäŊ•ã§ã™ã‹?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "クナイミãƒŗグNGO" - } - }, - "render": "クナイミãƒŗグクナブ" - } + "then": "クナイミãƒŗグNGO" + } + }, + "render": "クナイミãƒŗグクナブ" + } + }, + "1": { + "description": "クナイミãƒŗグジム", + "name": "クナイミãƒŗグジム", + "tagRenderings": { + "name": { + "question": "こぎクナイミãƒŗグジムはäŊ•ã¨ã„う名前ですか?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "クナイミãƒŗグジム{name}" + } + }, + "render": "クナイミãƒŗグジム" + } + }, + "2": { + "name": "į™ģ坂ãƒĢãƒŧト", + "tagRenderings": { + "Difficulty": { + "render": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ãĢよると、{climbing:grade:french}ぎ困é›ŖåēĻです" + }, + "Length": { + "render": "こぎãƒĢãƒŧãƒˆé•ˇã¯ã€ {canonical(climbing:length)} ãƒĄãƒŧã‚ŋãƒŧです" + }, + "Name": { + "mappings": { + "0": { + "then": "こぎį™ģ坂ãƒĢãƒŧトãĢは名前がありぞせん" + } + }, + "question": "こぎį™ģ坂ãƒĢãƒŧトぎ名前はäŊ•ã§ã™ã‹?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "į™ģ坂ãƒĢãƒŧト{name}" + } + }, + "render": "į™ģ坂ãƒĢãƒŧト" + } + }, + "3": { + "description": "į™ģ坂教厤", + "name": "į™ģ坂教厤", + "presets": { + "0": { + "description": "į™ģ坂教厤", + "title": "į™ģ坂教厤" + } + }, + "tagRenderings": { + "name": { + "mappings": { + "0": { + "then": "こぎį™ģ坂教厤ãĢは名前がついãĻいãĒい" + } + }, + "question": "こぎį™ģ坂教厤ぎ名前はäŊ•ã§ã™ã‹?", + "render": "{name}" + } + }, + "title": { + "render": "į™ģ坂教厤" + } + }, + "4": { + "description": "į™ģ坂教厤īŧŸ", + "name": "į™ģ坂教厤īŧŸ", + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + }, + "climbing-possible": { + "mappings": { + "0": { + "then": "ここではį™ģることができãĒい" + }, + "1": { + "then": "ここではį™ģることができる" + }, + "2": { + "then": "ここではį™ģることができãĒい" + } + }, + "question": "ここでį™ģ坂はできぞすか?" + } + }, + "title": { + "render": "į™ģ坂教厤īŧŸ" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "もãŖã¨æƒ…å ąãŽã‚ã‚‹(非å…ŦåŧãŽ)ã‚Ļェブã‚ĩイトはありぞすか(䞋えば、topos)?" + }, + "4": { + "question": "ãƒĢãƒŧトぎ(åšŗ均)é•ˇã•ã¯ãƒĄãƒŧトãƒĢ単äŊã§ã„くつですか?", + "render": "ãƒĢãƒŧãƒˆãŽé•ˇã•ã¯åšŗ均で{canonical(climbing:length)}です" + }, + "5": { + "question": "ここで一į•Ēį°Ąå˜ãĒãƒĢãƒŧトぎãƒŦベãƒĢは、フナãƒŗ゚ぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§äŊ•ã§ã™ã‹?", + "render": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§ã¯ã€æœ€å°ãŽé›Ŗ易åēĻは{climbing:grade:french:min}です" + }, + "6": { + "question": "フナãƒŗ゚ぎナãƒŗã‚¯čŠ•äžĄãĢよると、ここで一į•Ēé›ŖしいãƒĢãƒŧトぎãƒŦベãƒĢはおれくらいですか?", + "render": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§ã¯ã€æœ€å¤§ãŽé›Ŗ易åēĻは{climbing:grade:french:max}です" + }, + "7": { + "mappings": { + "0": { + "then": "ボãƒĢダãƒĒãƒŗグはここで可čƒŊです" }, "1": { - "description": "クナイミãƒŗグジム", - "name": "クナイミãƒŗグジム", - "tagRenderings": { - "name": { - "question": "こぎクナイミãƒŗグジムはäŊ•ã¨ã„う名前ですか?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "クナイミãƒŗグジム{name}" - } - }, - "render": "クナイミãƒŗグジム" - } + "then": "ここではボãƒĢダãƒĒãƒŗグはできぞせん" }, "2": { - "name": "į™ģ坂ãƒĢãƒŧト", - "tagRenderings": { - "Difficulty": { - "render": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ãĢよると、{climbing:grade:french}ぎ困é›ŖåēĻです" - }, - "Length": { - "render": "こぎãƒĢãƒŧãƒˆé•ˇã¯ã€ {canonical(climbing:length)} ãƒĄãƒŧã‚ŋãƒŧです" - }, - "Name": { - "mappings": { - "0": { - "then": "こぎį™ģ坂ãƒĢãƒŧトãĢは名前がありぞせん" - } - }, - "question": "こぎį™ģ坂ãƒĢãƒŧトぎ名前はäŊ•ã§ã™ã‹?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "į™ģ坂ãƒĢãƒŧト{name}" - } - }, - "render": "į™ģ坂ãƒĢãƒŧト" - } + "then": "ボãƒĢダãƒĒãƒŗグは可čƒŊですが、少しぎãƒĢãƒŧトしかありぞせん" }, "3": { - "description": "į™ģ坂教厤", - "name": "į™ģ坂教厤", - "presets": { - "0": { - "description": "į™ģ坂教厤", - "title": "į™ģ坂教厤" - } - }, - "tagRenderings": { - "name": { - "mappings": { - "0": { - "then": "こぎį™ģ坂教厤ãĢは名前がついãĻいãĒい" - } - }, - "question": "こぎį™ģ坂教厤ぎ名前はäŊ•ã§ã™ã‹?", - "render": "{name}" - } - }, - "title": { - "render": "į™ģ坂教厤" - } - }, - "4": { - "description": "į™ģ坂教厤īŧŸ", - "name": "į™ģ坂教厤īŧŸ", - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - }, - "climbing-possible": { - "mappings": { - "0": { - "then": "ここではį™ģることができãĒい" - }, - "1": { - "then": "ここではį™ģることができる" - }, - "2": { - "then": "ここではį™ģることができãĒい" - } - }, - "question": "ここでį™ģ坂はできぞすか?" - } - }, - "title": { - "render": "į™ģ坂教厤īŧŸ" - } + "then": "{climbing:boulder} ボãƒĢダãƒŧãƒĢãƒŧトがある" } + }, + "question": "ここでボãƒĢダãƒĒãƒŗグはできぞすか?" }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "もãŖã¨æƒ…å ąãŽã‚ã‚‹(非å…ŦåŧãŽ)ã‚Ļェブã‚ĩイトはありぞすか(䞋えば、topos)?" - }, - "4": { - "question": "ãƒĢãƒŧトぎ(åšŗ均)é•ˇã•ã¯ãƒĄãƒŧトãƒĢ単äŊã§ã„くつですか?", - "render": "ãƒĢãƒŧãƒˆãŽé•ˇã•ã¯åšŗ均で{canonical(climbing:length)}です" - }, - "5": { - "question": "ここで一į•Ēį°Ąå˜ãĒãƒĢãƒŧトぎãƒŦベãƒĢは、フナãƒŗ゚ぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§äŊ•ã§ã™ã‹?", - "render": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§ã¯ã€æœ€å°ãŽé›Ŗ易åēĻは{climbing:grade:french:min}です" - }, - "6": { - "question": "フナãƒŗ゚ぎナãƒŗã‚¯čŠ•äžĄãĢよると、ここで一į•Ēé›ŖしいãƒĢãƒŧトぎãƒŦベãƒĢはおれくらいですか?", - "render": "フナãƒŗã‚š/ベãƒĢã‚Žãƒŧぎナãƒŗã‚¯čŠ•äžĄã‚ˇã‚šãƒ†ãƒ ã§ã¯ã€æœ€å¤§ãŽé›Ŗ易åēĻは{climbing:grade:french:max}です" - }, - "7": { - "mappings": { - "0": { - "then": "ボãƒĢダãƒĒãƒŗグはここで可čƒŊです" - }, - "1": { - "then": "ここではボãƒĢダãƒĒãƒŗグはできぞせん" - }, - "2": { - "then": "ボãƒĢダãƒĒãƒŗグは可čƒŊですが、少しぎãƒĢãƒŧトしかありぞせん" - }, - "3": { - "then": "{climbing:boulder} ボãƒĢダãƒŧãƒĢãƒŧトがある" - } - }, - "question": "ここでボãƒĢダãƒĒãƒŗグはできぞすか?" - }, - "8": { - "mappings": { - "0": { - "then": "ここでTopropeį™ģ坂ができぞす" - }, - "1": { - "then": "ここではTopropeį™ģ坂はできぞせん" - }, - "2": { - "then": "{climbing:toprope} į™ģ坂ãƒĢãƒŧトがある" - } - }, - "question": "ここでtopropeį™ģ坂はできぞすか?" - }, - "9": { - "mappings": { - "0": { - "then": "ここで゚ポãƒŧツクナイミãƒŗグができぞす" - }, - "1": { - "then": "ここでぱポãƒŧツクナイミãƒŗグはできぞせん" - }, - "2": { - "then": "゚ポãƒŧツクナイミãƒŗグぎ {climbing:sport} ãƒĢãƒŧトがある" - } - }, - "question": "ここではå›ē厚ã‚ĸãƒŗã‚ĢãƒŧåŧãŽã‚šãƒãƒŧツクナイミãƒŗグはできぞすか?" - }, - "10": { - "mappings": { - "0": { - "then": "ここではäŧįĩąįš„ãĒį™ģåąąãŒå¯čƒŊです" - }, - "1": { - "then": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§ã¯ã§ããĒい" - }, - "2": { - "then": "{climbing:traditional} ぎäŧįĩąįš„ãĒį™ģåąąãƒĢãƒŧトがある" - } - }, - "question": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§å¯čƒŊですか(䞋えば、チョックぎようãĒį‹Ŧč‡Ēぎゎã‚ĸをäŊŋį”¨ã—ãĻ)īŧŸ" - }, - "11": { - "mappings": { - "0": { - "then": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある" - }, - "1": { - "then": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがãĒい" - }, - "2": { - "then": "{climbing:speed} ぎ゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある" - } - }, - "question": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢはありぞすか?" - } - } - }, - "title": "į™ģåąąåœ°å›ŗを開く" - }, - "cyclestreets": { - "description": "cyclestreetとは、č‡Ē動čģŠãŒã‚ĩイクãƒĒ゚トをčŋŊいčļŠã™ã“とができãĒい道です。専į”¨ãŽé“čˇ¯æ¨™č­˜ã§čĄ¨į¤ēされぞす。Cyclestreetsはã‚ĒナãƒŗダやベãƒĢã‚ŽãƒŧãĢもありぞすが、ドイツやフナãƒŗã‚šãĢもありぞす。 ", - "layers": { + "8": { + "mappings": { "0": { - "description": "cyclestreetとは、č‡Ē動čģŠãĢよるäē¤é€šãŒã‚ĩイクãƒĒ゚トをčŋŊいčļŠã™ã“とができãĒã„é“čˇ¯ã§ã™", - "name": "Cyclestreets" + "then": "ここでTopropeį™ģ坂ができぞす" }, "1": { - "description": "こぎ通りはぞもãĒくcyclestreetãĢãĒりぞす", - "name": "将æĨぎcyclestreet", - "title": { - "mappings": { - "0": { - "then": "{name}は、もうすぐcyclestreetãĢãĒる" - } - }, - "render": "将æĨぎcyclestreet" - } + "then": "ここではTopropeį™ģ坂はできぞせん" }, "2": { - "description": "äģģæ„ãŽé“čˇ¯ã‚’Cycle StreetとしãĻマãƒŧクするãƒŦイヤ", - "name": "すずãĻãŽé“čˇ¯", - "title": { - "render": "゚トãƒĒãƒŧト" - } + "then": "{climbing:toprope} į™ģ坂ãƒĢãƒŧトがある" } + }, + "question": "ここでtopropeį™ģ坂はできぞすか?" }, - "overrideAll": { - "tagRenderings+": { - "0": { - "mappings": { - "0": { - "then": "cyclestreet(最éĢ˜é€ŸåēĻは30km/h)" - }, - "1": { - "then": "こぎ通りはcyclestreetだ" - }, - "2": { - "then": "こぎ通りはぞもãĒくcyclstreetãĢãĒるだろう" - }, - "3": { - "then": "こぎ通りはcyclestreetではãĒい" - } - }, - "question": "こぎ通りはcyclestreetですか?" - }, - "1": { - "question": "こぎ通りはいつcyclestreetãĢãĒるんですか?", - "render": "こぎ通りは{cyclestreet:start_date}ãĢ、cyclestreetãĢãĒりぞす" - } - } - }, - "shortDescription": "cyclestreetsぎ地å›ŗ", - "title": "Cyclestreets" - }, - "cyclofix": { - "description": "こぎマップぎį›Žįš„は、ã‚ĩイクãƒĒ゚トぎニãƒŧã‚ēãĢ遊したæ–Ŋč¨­ã‚’čĻ‹ã¤ã‘るためぎäŊŋいやすいã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗを提䞛することです。

æ­ŖįĸēãĒäŊįŊŽã‚’čŋŊčˇĄã—(ãƒĸバイãƒĢぎãŋ)、åˇĻ下ã‚ŗãƒŧナãƒŧでé–ĸé€ŖするãƒŦイヤを選択できぞす。こぎツãƒŧãƒĢをäŊŋį”¨ã—ãĻ、マップãĢピãƒŗ(æŗ¨į›Žį‚š)をčŋŊ加ぞたはįˇ¨é›†ã—たり、čŗĒ問ãĢį­”えることでより多くぎデãƒŧã‚ŋを提䞛することもできぞす。

変更内厚はすずãĻOpenStreetMapぎグロãƒŧバãƒĢデãƒŧã‚ŋベãƒŧã‚šãĢč‡Ē動įš„ãĢäŋå­˜ã•ã‚Œã€äģ–ぎãƒĻãƒŧã‚ļãƒŧがč‡Ēį”ąãĢ再刊į”¨ã§ããžã™ã€‚

cyclofixプロジェクトぎčŠŗį´°ãĢついãĻは、 cyclofix.osm.be を参į…§ã—ãĻください。", - "title": "Cyclofix - ã‚ĩイクãƒĒ゚トぎためぎã‚Ēãƒŧプãƒŗマップ" - }, - "drinking_water": { - "description": "こぎ地å›ŗãĢは、一čˆŦãĢã‚ĸクã‚ģ゚可čƒŊãĒéŖ˛æ–™æ°´ã‚šãƒãƒƒãƒˆãŒį¤ēされãĻおり、į°Ąå˜ãĢčŋŊ加することができる", - "title": "éŖ˛æ–™æ°´" - }, - "facadegardens": { - "description": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’、éƒŊ市ぎįˇ‘ãŽãƒ•ã‚Ąã‚ĩãƒŧドと樚木は、åšŗ和と静けさをもたらすだけでãĒく、よりįžŽã—いéƒŊ市、より大きãĒį”Ÿį‰Šå¤šæ§˜æ€§ã€å†ˇå´åŠšæžœã€ã‚ˆã‚Šč‰¯ã„大気čŗĒをもたらす。
KlimaanぎVZWとMechelenぎKlimaatneutraalは、č‡Ē分でåē­ã‚’äŊœã‚ŠãŸã„äēēやč‡Ēį„ļを愛するéƒŊå¸‚ãŽæ­ŠčĄŒč€…ãŽãŸã‚ãĢ、æ—ĸå­˜ãŽãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ã¨æ–°ã—ã„ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ぎマッピãƒŗã‚°ã—ãŸã„ã¨č€ƒãˆãĻいぞす。
こぎプロジェクトãĢé–ĸするčŠŗį´°æƒ…å ąã¯klimaanãĢありぞす。", - "layers": { + "9": { + "mappings": { "0": { - "description": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’", - "name": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’", - "presets": { - "0": { - "description": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ã‚’čŋŊ加する", - "title": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’" - } - }, - "tagRenderings": { - "facadegardens-description": { - "question": "åē­åœ’ãĢé–ĸするčŋŊ加ぎčĒŦæ˜Žæƒ…å ą(åŋ…čĻãĒå ´åˆã§ãžã ä¸Šč¨˜ãĢ記čŧ‰ã•ã‚ŒãĻいãĒい場合)", - "render": "čŠŗį´°æƒ…å ą: {description}" - }, - "facadegardens-direction": { - "question": "åē­ãŽå‘きはおうãĒãŖãĻいぞすか?", - "render": "斚向: {direction} (0=N で 90=O)" - }, - "facadegardens-edible": { - "mappings": { - "0": { - "then": "éŖŸį”¨ãŽæ¤į‰ŠãŒã‚ã‚‹" - }, - "1": { - "then": "éŖŸį”¨æ¤į‰Šã¯å­˜åœ¨ã—ãĒい" - } - }, - "question": "éŖŸį”¨ãŽæ¤į‰Šã¯ã‚りぞすか?" - }, - "facadegardens-plants": { - "mappings": { - "0": { - "then": "つるがある" - }, - "1": { - "then": "čŠąã‚’å’˛ã‹ã›ã‚‹æ¤į‰ŠãŒã‚ã‚‹" - }, - "2": { - "then": "äŊŽæœ¨ãŒã‚ã‚‹" - }, - "3": { - "then": "地をはう植į‰ŠãŒã‚ã‚‹" - } - }, - "question": "ここではおんãĒ植į‰ŠãŒč‚˛ã¤ã‚“ですか?" - }, - "facadegardens-rainbarrel": { - "mappings": { - "0": { - "then": "雨æ¨Ŋがある" - }, - "1": { - "then": "雨æ¨Ŋはありぞせん" - } - }, - "question": "åē­ãĢæ°´æĄļãŒč¨­įŊŽã•ã‚ŒãĻいるぎですか?" - }, - "facadegardens-start_date": { - "question": "そぎåē­åœ’はいつ造られたぎですか?(åģēč¨­åš´ã§ååˆ†ã§ã™)", - "render": "åē­åœ’ぎåģē設æ—Ĩ: {start_date}" - }, - "facadegardens-sunshine": { - "mappings": { - "0": { - "then": "åē­ã¯æ—ĨがあたãŖãĻいる" - }, - "1": { - "then": "åē­ã¯éƒ¨åˆ†įš„ãĢæ—Ĩ陰である" - }, - "2": { - "then": "åē­ã¯æ—Ĩ陰である" - } - }, - "question": "åē­ã¯æ—Ĩ陰ですか、æ—ĨåŊ“たりがいいですか?" - } - }, - "title": { - "render": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’" - } - } - }, - "shortDescription": "こぎマップãĢã¯ã€ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’がå›ŗとともãĢ襨į¤ēされ、斚向、æ—Ĩį…§ã€æ¤į‰ŠãŽã‚ŋイプãĢé–ĸする有į”¨ãĒæƒ…å ąãŒį¤ēされぞす。", - "title": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’" - }, - "ghostbikes": { - "description": "ゴãƒŧ゚トバイクは、äē¤é€šäē‹æ•…でæ­ģäēĄã—たã‚ĩイクãƒĒã‚šãƒˆã‚’č¨˜åŋĩするもぎで、äē‹æ•…įžå ´ãŽčŋ‘くãĢ恒䚅įš„ãĢįŊŽã‹ã‚ŒãŸį™Ŋいč‡ĒčģĸčģŠãŽåŊĸをしãĻいぞす。

こぎマップãĢは、OpenStreetMapでįŸĨられãĻいるゴãƒŧ゚トバイクがすずãĻ襨į¤ēされぞす。ゴãƒŧã‚šãƒˆãƒã‚¤ã‚¯ã¯čĄŒæ–šä¸æ˜Žã§ã™ã‹?čĒ°ã§ã‚‚ã“ã“ã§æƒ…å ąãŽčŋŊ加や更新ができぞす。åŋ…čĻãĒぎは(į„Ąæ–™ãŽ)OpenStreetMapã‚ĸã‚Ģã‚Ļãƒŗトだけです。", - "title": "ゴãƒŧ゚トバイク" - }, - "hailhydrant": { - "description": "こぎマップでは、お気ãĢå…Ĩりぎčŋ‘éšŖãĢあるæļˆįĢ栓、æļˆé˜˛įŊ˛ã€æ•‘æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ、æļˆįĢ器を検į´ĸしãĻ更新できぞす。\n\næ­ŖįĸēãĒäŊįŊŽã‚’čŋŊčˇĄã—(ãƒĸバイãƒĢぎãŋ)、åˇĻ下ã‚ŗãƒŧナãƒŧでé–ĸé€ŖするãƒŦイヤを選択できぞす。こぎツãƒŧãƒĢをäŊŋį”¨ã—ãĻ、マップãĢピãƒŗ(æŗ¨čĻ–į‚š)をčŋŊ加ぞたはįˇ¨é›†ã—たり、刊į”¨å¯čƒŊãĒčŗĒ問ãĢį­”えることãĢよãŖãĻčŋŊ加ぎčŠŗį´°ã‚’提䞛することもできぞす。\n\nすずãĻぎ変更はč‡Ē動įš„ãĢOpenStreetMapぎグロãƒŧバãƒĢデãƒŧã‚ŋベãƒŧã‚šãĢäŋå­˜ã•ã‚Œã€äģ–ぎãƒĻãƒŧã‚ļがč‡Ēį”ąãĢ再刊į”¨ã§ããžã™ã€‚", - "layers": { - "0": { - "description": "æļˆįĢæ “ã‚’čĄ¨į¤ēするマップãƒŦイヤ。", - "name": "æļˆįĢ栓ぎ地å›ŗ", - "presets": { - "0": { - "description": "æļˆįĢ栓はæļˆé˜˛åŖĢãŒæ°´ã‚’æą˛ãŋ上げることができるæŽĨįļšį‚šã§ã™ã€‚地下ãĢあるかもしれぞせん。", - "title": "æļˆįĢ栓" - } - }, - "tagRenderings": { - "hydrant-color": { - "mappings": { - "0": { - "then": "æļˆįĢæ “ãŽč‰˛ã¯ä¸æ˜Žã§ã™ã€‚" - }, - "1": { - "then": "æļˆįĢæ “ãŽč‰˛ã¯éģ„č‰˛ã§ã™ã€‚" - }, - "2": { - "then": "æļˆįĢæ “ãŽč‰˛ã¯čĩ¤ã§ã™ã€‚" - } - }, - "question": "æļˆįĢæ “ãŽč‰˛ã¯äŊ•č‰˛ã§ã™ã‹?", - "render": "æļˆįĢæ “ãŽč‰˛ã¯{color}です" - }, - "hydrant-state": { - "mappings": { - "0": { - "then": "æļˆįĢ栓は(厌全ãĢぞたは部分įš„ãĢ)抟čƒŊしãĻいぞす。" - }, - "1": { - "then": "æļˆįĢ栓はäŊŋį”¨ã§ããžã›ã‚“。" - }, - "2": { - "then": "æļˆįĢ栓が撤åŽģされぞした。" - } - }, - "question": "æļˆįĢ栓ぎナイフã‚ĩイクãƒĢ゚テãƒŧã‚ŋ゚を更新しぞす。", - "render": "ナイフã‚ĩイクãƒĢ゚テãƒŧã‚ŋã‚š" - }, - "hydrant-type": { - "mappings": { - "0": { - "then": "æļˆįĢ栓ぎį¨ŽéĄžã¯ä¸æ˜Žã§ã™ã€‚" - }, - "1": { - "then": " ピナãƒŧ型。" - }, - "2": { - "then": " パイプ型。" - }, - "3": { - "then": " åŖåž‹ã€‚" - }, - "4": { - "then": "地下åŧã€‚" - } - }, - "question": "おんãĒæļˆįĢ栓ãĒんですか?", - "render": " æļˆįĢ栓ぎã‚ŋイプ:{fire_hydrant:type}" - } - }, - "title": { - "render": "æļˆįĢ栓" - } + "then": "ここで゚ポãƒŧツクナイミãƒŗグができぞす" }, "1": { - "description": "æļˆįĢæ “ã‚’čĄ¨į¤ēするマップãƒŦイヤ。", - "name": "æļˆįĢ器ぎ地å›ŗです。", - "presets": { - "0": { - "description": "æļˆįĢ器は、įĢįŊをæ­ĸめるためãĢäŊŋį”¨ã•ã‚Œã‚‹å°åž‹ã§æē帯可čƒŊãĒčŖ…įŊŽã§ã‚ã‚‹", - "title": "æļˆįĢ器" - } - }, - "tagRenderings": { - "extinguisher-location": { - "mappings": { - "0": { - "then": "åą‹å†…ãĢある。" - }, - "1": { - "then": "åą‹å¤–ãĢある。" - } - }, - "question": "おこãĢあるんですか?", - "render": "場所:{location}" - } - }, - "title": { - "render": "æļˆįĢ器" - } + "then": "ここでぱポãƒŧツクナイミãƒŗグはできぞせん" }, "2": { - "description": "æļˆé˜˛įŊ˛ã‚’襨į¤ēするためぎマップãƒŦイヤ。", - "name": "æļˆé˜˛įŊ˛ãŽåœ°å›ŗ", - "presets": { - "0": { - "description": "æļˆé˜˛įŊ˛ã¯ã€é‹čģĸしãĻいãĒいときãĢæļˆé˜˛čģŠã‚„æļˆé˜˛åŖĢがいる場所です。", - "title": "æļˆé˜˛įŊ˛" - } - }, - "tagRenderings": { - "station-agency": { - "mappings": { - "0": { - "then": "æļˆé˜˛åą€(æļˆé˜˛åē)" - } - }, - "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗを運å–ļしãĻいるぎはおこですか?", - "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{operator}ãĢよãŖãĻ運å–ļされãĻいぞす。" - }, - "station-name": { - "question": "こぎæļˆé˜˛įŊ˛ãŽåå‰ã¯äŊ•ã§ã™ã‹?", - "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前は{name}です。" - }, - "station-operator": { - "mappings": { - "0": { - "then": "゚テãƒŧã‚ˇãƒ§ãƒŗはč‡Ēæ˛ģäŊ“が運å–ļする。" - }, - "1": { - "then": "äģģ意å›ŖäŊ“ã‚„ã‚ŗミãƒĨニテã‚Ŗが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" - }, - "2": { - "then": "å…Ŧį›Šå›ŖäŊ“が運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" - }, - "3": { - "then": "個äēēが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" - } - }, - "question": "゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļãŽåˆ†éĄžã¯?", - "render": "運å–ļč€…ã¯ã€{operator:type} です。" - }, - "station-place": { - "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎäŊæ‰€ã¯?(例: 地åŒē、村、ぞたはį”ēぎ名į§°)", - "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{addr:place}ãĢありぞす。" - }, - "station-street": { - "question": " 救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ所在地はおこですか?", - "render": "{addr:street} æ˛ŋいãĢありぞす。" - } - }, - "title": { - "render": "æļˆé˜˛įŊ˛" - } + "then": "゚ポãƒŧツクナイミãƒŗグぎ {climbing:sport} ãƒĢãƒŧトがある" + } + }, + "question": "ここではå›ē厚ã‚ĸãƒŗã‚ĢãƒŧåŧãŽã‚šãƒãƒŧツクナイミãƒŗグはできぞすか?" + }, + "10": { + "mappings": { + "0": { + "then": "ここではäŧįĩąįš„ãĒį™ģåąąãŒå¯čƒŊです" + }, + "1": { + "then": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§ã¯ã§ããĒい" + }, + "2": { + "then": "{climbing:traditional} ぎäŧįĩąįš„ãĒį™ģåąąãƒĢãƒŧトがある" + } + }, + "question": "äŧįĩąįš„ãĒį™ģåąąã¯ã“ã“ã§å¯čƒŊですか(䞋えば、チョックぎようãĒį‹Ŧč‡Ēぎゎã‚ĸをäŊŋį”¨ã—ãĻ)īŧŸ" + }, + "11": { + "mappings": { + "0": { + "then": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある" + }, + "1": { + "then": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがãĒい" + }, + "2": { + "then": "{climbing:speed} ぎ゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢがある" + } + }, + "question": "゚ピãƒŧドクナイミãƒŗグã‚Ļã‚ŠãƒŧãƒĢはありぞすか?" + } + } + }, + "title": "į™ģåąąåœ°å›ŗを開く" + }, + "cyclestreets": { + "description": "cyclestreetとは、č‡Ē動čģŠãŒã‚ĩイクãƒĒ゚トをčŋŊいčļŠã™ã“とができãĒい道です。専į”¨ãŽé“čˇ¯æ¨™č­˜ã§čĄ¨į¤ēされぞす。Cyclestreetsはã‚ĒナãƒŗダやベãƒĢã‚ŽãƒŧãĢもありぞすが、ドイツやフナãƒŗã‚šãĢもありぞす。 ", + "layers": { + "0": { + "description": "cyclestreetとは、č‡Ē動čģŠãĢよるäē¤é€šãŒã‚ĩイクãƒĒ゚トをčŋŊいčļŠã™ã“とができãĒã„é“čˇ¯ã§ã™", + "name": "Cyclestreets" + }, + "1": { + "description": "こぎ通りはぞもãĒくcyclestreetãĢãĒりぞす", + "name": "将æĨぎcyclestreet", + "title": { + "mappings": { + "0": { + "then": "{name}は、もうすぐcyclestreetãĢãĒる" + } + }, + "render": "将æĨぎcyclestreet" + } + }, + "2": { + "description": "äģģæ„ãŽé“čˇ¯ã‚’Cycle StreetとしãĻマãƒŧクするãƒŦイヤ", + "name": "すずãĻãŽé“čˇ¯", + "title": { + "render": "゚トãƒĒãƒŧト" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "cyclestreet(最éĢ˜é€ŸåēĻは30km/h)" + }, + "1": { + "then": "こぎ通りはcyclestreetだ" + }, + "2": { + "then": "こぎ通りはぞもãĒくcyclstreetãĢãĒるだろう" }, "3": { - "description": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗは、救æ€ĨčģŠã€åŒģį™‚抟器、個äēēį”¨äŋč­ˇå…ˇã€ãŠã‚ˆãŗそぎäģ–ぎåŒģį™‚į”¨å“ã‚’äŋįŽĄã™ã‚‹å ´æ‰€ã§ã™ã€‚", - "name": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ地å›ŗ", - "presets": { - "0": { - "description": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ(æļˆé˜˛įŊ˛)をマップãĢčŋŊ加する", - "title": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ(æļˆé˜˛įŊ˛)" - } - }, - "tagRenderings": { - "ambulance-agency": { - "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗを運å–ļしãĻいるぎはおこですか?", - "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{operator}ãĢよãŖãĻ運å–ļされãĻいぞす。" - }, - "ambulance-name": { - "question": "こぎ救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前はäŊ•ã§ã™ã‹?", - "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前は{name}です。" - }, - "ambulance-operator-type": { - "mappings": { - "0": { - "then": "゚テãƒŧã‚ˇãƒ§ãƒŗはč‡Ēæ˛ģäŊ“が運å–ļする。" - }, - "1": { - "then": "äģģ意å›ŖäŊ“ã‚„ã‚ŗミãƒĨニテã‚Ŗが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" - }, - "2": { - "then": "å…Ŧį›Šå›ŖäŊ“が運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" - }, - "3": { - "then": "個äēēが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" - } - }, - "question": "゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļãŽåˆ†éĄžã¯?", - "render": "運å–ļč€…ã¯ã€{operator:type} です。" - }, - "ambulance-place": { - "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎäŊæ‰€ã¯?(例: 地åŒē、村、ぞたはį”ēぎ名į§°)", - "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{addr:place}ãĢありぞす。" - }, - "ambulance-street": { - "question": " 救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ所在地はおこですか?", - "render": "{addr:street} æ˛ŋいãĢありぞす。" - } - }, - "title": { - "render": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ" - } + "then": "こぎ通りはcyclestreetではãĒい" } + }, + "question": "こぎ通りはcyclestreetですか?" }, - "shortDescription": "æļˆįĢ栓、æļˆįĢ器、æļˆé˜˛įŊ˛æļˆįĢ栓、æļˆįĢ器、æļˆé˜˛įŊ˛ã€ãŠã‚ˆãŗ救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗã‚’čĄ¨į¤ēしぞす。", - "title": "æļˆįĢ栓、æļˆįĢ器、æļˆé˜˛įŊ˛ã€æ•‘æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗです。" + "1": { + "question": "こぎ通りはいつcyclestreetãĢãĒるんですか?", + "render": "こぎ通りは{cyclestreet:start_date}ãĢ、cyclestreetãĢãĒりぞす" + } + } }, - "maps": { - "description": "こぎマップãĢは、OpenStreetMapがįŸĨãŖãĻいるすずãĻãŽãƒžãƒƒãƒ—ãŒčĄ¨į¤ēされぞす。通常は、エãƒĒã‚ĸ、éƒŊ市、ぞたは地域をį¤ēã™æƒ…å ąãƒœãƒŧド上ぎ大きãĒãƒžãƒƒãƒ—ãŒčĄ¨į¤ēされぞす。たとえば、ビãƒĢボãƒŧãƒ‰ãŽčƒŒéĸãĢあるčĻŗ光マップ、č‡Ēį„ļäŋč­ˇåŒēぎマップ、地域内ぎã‚ĩイクãƒĒãƒŗグネットワãƒŧクぎマップãĒおです。)

マップがãĒい場合は、こぎマップをOpenStreetMapãĢį°Ąå˜ãĢマップできぞす。", - "shortDescription": "こぎテãƒŧマãĢは、OpenStreetMapがįŸĨãŖãĻいるすずãĻぎ(čĻŗ光)ãƒžãƒƒãƒ—ãŒčĄ¨į¤ēされぞす", - "title": "マップぎマップ" + "shortDescription": "cyclestreetsぎ地å›ŗ", + "title": "Cyclestreets" + }, + "cyclofix": { + "description": "こぎマップぎį›Žįš„は、ã‚ĩイクãƒĒ゚トぎニãƒŧã‚ēãĢ遊したæ–Ŋč¨­ã‚’čĻ‹ã¤ã‘るためぎäŊŋいやすいã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗを提䞛することです。

æ­ŖįĸēãĒäŊįŊŽã‚’čŋŊčˇĄã—(ãƒĸバイãƒĢぎãŋ)、åˇĻ下ã‚ŗãƒŧナãƒŧでé–ĸé€ŖするãƒŦイヤを選択できぞす。こぎツãƒŧãƒĢをäŊŋį”¨ã—ãĻ、マップãĢピãƒŗ(æŗ¨į›Žį‚š)をčŋŊ加ぞたはįˇ¨é›†ã—たり、čŗĒ問ãĢį­”えることでより多くぎデãƒŧã‚ŋを提䞛することもできぞす。

変更内厚はすずãĻOpenStreetMapぎグロãƒŧバãƒĢデãƒŧã‚ŋベãƒŧã‚šãĢč‡Ē動įš„ãĢäŋå­˜ã•ã‚Œã€äģ–ぎãƒĻãƒŧã‚ļãƒŧがč‡Ēį”ąãĢ再刊į”¨ã§ããžã™ã€‚

cyclofixプロジェクトぎčŠŗį´°ãĢついãĻは、 cyclofix.osm.be を参į…§ã—ãĻください。", + "title": "Cyclofix - ã‚ĩイクãƒĒ゚トぎためぎã‚Ēãƒŧプãƒŗマップ" + }, + "drinking_water": { + "description": "こぎ地å›ŗãĢは、一čˆŦãĢã‚ĸクã‚ģ゚可čƒŊãĒéŖ˛æ–™æ°´ã‚šãƒãƒƒãƒˆãŒį¤ēされãĻおり、į°Ąå˜ãĢčŋŊ加することができる", + "title": "éŖ˛æ–™æ°´" + }, + "facadegardens": { + "description": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’、éƒŊ市ぎįˇ‘ãŽãƒ•ã‚Ąã‚ĩãƒŧドと樚木は、åšŗ和と静けさをもたらすだけでãĒく、よりįžŽã—いéƒŊ市、より大きãĒį”Ÿį‰Šå¤šæ§˜æ€§ã€å†ˇå´åŠšæžœã€ã‚ˆã‚Šč‰¯ã„大気čŗĒをもたらす。
KlimaanぎVZWとMechelenぎKlimaatneutraalは、č‡Ē分でåē­ã‚’äŊœã‚ŠãŸã„äēēやč‡Ēį„ļを愛するéƒŊå¸‚ãŽæ­ŠčĄŒč€…ãŽãŸã‚ãĢ、æ—ĸå­˜ãŽãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ã¨æ–°ã—ã„ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ぎマッピãƒŗã‚°ã—ãŸã„ã¨č€ƒãˆãĻいぞす。
こぎプロジェクトãĢé–ĸするčŠŗį´°æƒ…å ąã¯klimaanãĢありぞす。", + "layers": { + "0": { + "description": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’", + "name": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’", + "presets": { + "0": { + "description": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’ã‚’čŋŊ加する", + "title": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’" + } + }, + "tagRenderings": { + "facadegardens-description": { + "question": "åē­åœ’ãĢé–ĸするčŋŊ加ぎčĒŦæ˜Žæƒ…å ą(åŋ…čĻãĒå ´åˆã§ãžã ä¸Šč¨˜ãĢ記čŧ‰ã•ã‚ŒãĻいãĒい場合)", + "render": "čŠŗį´°æƒ…å ą: {description}" + }, + "facadegardens-direction": { + "question": "åē­ãŽå‘きはおうãĒãŖãĻいぞすか?", + "render": "斚向: {direction} (0=N で 90=O)" + }, + "facadegardens-edible": { + "mappings": { + "0": { + "then": "éŖŸį”¨ãŽæ¤į‰ŠãŒã‚ã‚‹" + }, + "1": { + "then": "éŖŸį”¨æ¤į‰Šã¯å­˜åœ¨ã—ãĒい" + } + }, + "question": "éŖŸį”¨ãŽæ¤į‰Šã¯ã‚りぞすか?" + }, + "facadegardens-plants": { + "mappings": { + "0": { + "then": "つるがある" + }, + "1": { + "then": "čŠąã‚’å’˛ã‹ã›ã‚‹æ¤į‰ŠãŒã‚ã‚‹" + }, + "2": { + "then": "äŊŽæœ¨ãŒã‚ã‚‹" + }, + "3": { + "then": "地をはう植į‰ŠãŒã‚ã‚‹" + } + }, + "question": "ここではおんãĒ植į‰ŠãŒč‚˛ã¤ã‚“ですか?" + }, + "facadegardens-rainbarrel": { + "mappings": { + "0": { + "then": "雨æ¨Ŋがある" + }, + "1": { + "then": "雨æ¨Ŋはありぞせん" + } + }, + "question": "åē­ãĢæ°´æĄļãŒč¨­įŊŽã•ã‚ŒãĻいるぎですか?" + }, + "facadegardens-start_date": { + "question": "そぎåē­åœ’はいつ造られたぎですか?(åģēč¨­åš´ã§ååˆ†ã§ã™)", + "render": "åē­åœ’ぎåģē設æ—Ĩ: {start_date}" + }, + "facadegardens-sunshine": { + "mappings": { + "0": { + "then": "åē­ã¯æ—ĨがあたãŖãĻいる" + }, + "1": { + "then": "åē­ã¯éƒ¨åˆ†įš„ãĢæ—Ĩ陰である" + }, + "2": { + "then": "åē­ã¯æ—Ĩ陰である" + } + }, + "question": "åē­ã¯æ—Ĩ陰ですか、æ—ĨåŊ“たりがいいですか?" + } + }, + "title": { + "render": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’" + } + } }, - "personal": { - "description": "すずãĻぎテãƒŧマぎäŊŋį”¨å¯čƒŊãĒすずãĻぎãƒŦイヤãƒŧãĢåŸēãĨいãĻ個äēēį”¨ãƒ†ãƒŧマをäŊœæˆã™ã‚‹", - "title": "個äēēįš„ãĒテãƒŧマ" + "shortDescription": "こぎマップãĢã¯ã€ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’がå›ŗとともãĢ襨į¤ēされ、斚向、æ—Ĩį…§ã€æ¤į‰ŠãŽã‚ŋイプãĢé–ĸする有į”¨ãĒæƒ…å ąãŒį¤ēされぞす。", + "title": "ãƒ•ã‚Ąã‚ĩãƒŧドåē­åœ’" + }, + "ghostbikes": { + "description": "ゴãƒŧ゚トバイクは、äē¤é€šäē‹æ•…でæ­ģäēĄã—たã‚ĩイクãƒĒã‚šãƒˆã‚’č¨˜åŋĩするもぎで、äē‹æ•…įžå ´ãŽčŋ‘くãĢ恒䚅įš„ãĢįŊŽã‹ã‚ŒãŸį™Ŋいč‡ĒčģĸčģŠãŽåŊĸをしãĻいぞす。

こぎマップãĢは、OpenStreetMapでįŸĨられãĻいるゴãƒŧ゚トバイクがすずãĻ襨į¤ēされぞす。ゴãƒŧã‚šãƒˆãƒã‚¤ã‚¯ã¯čĄŒæ–šä¸æ˜Žã§ã™ã‹?čĒ°ã§ã‚‚ã“ã“ã§æƒ…å ąãŽčŋŊ加や更新ができぞす。åŋ…čĻãĒぎは(į„Ąæ–™ãŽ)OpenStreetMapã‚ĸã‚Ģã‚Ļãƒŗトだけです。", + "title": "ゴãƒŧ゚トバイク" + }, + "hailhydrant": { + "description": "こぎマップでは、お気ãĢå…Ĩりぎčŋ‘éšŖãĢあるæļˆįĢ栓、æļˆé˜˛įŊ˛ã€æ•‘æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ、æļˆįĢ器を検į´ĸしãĻ更新できぞす。\n\næ­ŖįĸēãĒäŊįŊŽã‚’čŋŊčˇĄã—(ãƒĸバイãƒĢぎãŋ)、åˇĻ下ã‚ŗãƒŧナãƒŧでé–ĸé€ŖするãƒŦイヤを選択できぞす。こぎツãƒŧãƒĢをäŊŋį”¨ã—ãĻ、マップãĢピãƒŗ(æŗ¨čĻ–į‚š)をčŋŊ加ぞたはįˇ¨é›†ã—たり、刊į”¨å¯čƒŊãĒčŗĒ問ãĢį­”えることãĢよãŖãĻčŋŊ加ぎčŠŗį´°ã‚’提䞛することもできぞす。\n\nすずãĻぎ変更はč‡Ē動įš„ãĢOpenStreetMapぎグロãƒŧバãƒĢデãƒŧã‚ŋベãƒŧã‚šãĢäŋå­˜ã•ã‚Œã€äģ–ぎãƒĻãƒŧã‚ļがč‡Ēį”ąãĢ再刊į”¨ã§ããžã™ã€‚", + "layers": { + "0": { + "description": "æļˆįĢæ “ã‚’čĄ¨į¤ēするマップãƒŦイヤ。", + "name": "æļˆįĢ栓ぎ地å›ŗ", + "presets": { + "0": { + "description": "æļˆįĢ栓はæļˆé˜˛åŖĢãŒæ°´ã‚’æą˛ãŋ上げることができるæŽĨįļšį‚šã§ã™ã€‚地下ãĢあるかもしれぞせん。", + "title": "æļˆįĢ栓" + } + }, + "tagRenderings": { + "hydrant-color": { + "mappings": { + "0": { + "then": "æļˆįĢæ “ãŽč‰˛ã¯ä¸æ˜Žã§ã™ã€‚" + }, + "1": { + "then": "æļˆįĢæ “ãŽč‰˛ã¯éģ„č‰˛ã§ã™ã€‚" + }, + "2": { + "then": "æļˆįĢæ “ãŽč‰˛ã¯čĩ¤ã§ã™ã€‚" + } + }, + "question": "æļˆįĢæ “ãŽč‰˛ã¯äŊ•č‰˛ã§ã™ã‹?", + "render": "æļˆįĢæ “ãŽč‰˛ã¯{colour}です" + }, + "hydrant-state": { + "mappings": { + "0": { + "then": "æļˆįĢ栓は(厌全ãĢぞたは部分įš„ãĢ)抟čƒŊしãĻいぞす。" + }, + "1": { + "then": "æļˆįĢ栓はäŊŋį”¨ã§ããžã›ã‚“。" + }, + "2": { + "then": "æļˆįĢ栓が撤åŽģされぞした。" + } + }, + "question": "æļˆįĢ栓ぎナイフã‚ĩイクãƒĢ゚テãƒŧã‚ŋ゚を更新しぞす。" + }, + "hydrant-type": { + "mappings": { + "0": { + "then": "æļˆįĢ栓ぎį¨ŽéĄžã¯ä¸æ˜Žã§ã™ã€‚" + }, + "1": { + "then": " ピナãƒŧ型。" + }, + "2": { + "then": " パイプ型。" + }, + "3": { + "then": " åŖåž‹ã€‚" + }, + "4": { + "then": "地下åŧã€‚" + } + }, + "question": "おんãĒæļˆįĢ栓ãĒんですか?", + "render": " æļˆįĢ栓ぎã‚ŋイプ:{fire_hydrant:type}" + } + }, + "title": { + "render": "æļˆįĢ栓" + } + }, + "1": { + "description": "æļˆįĢæ “ã‚’čĄ¨į¤ēするマップãƒŦイヤ。", + "name": "æļˆįĢ器ぎ地å›ŗです。", + "presets": { + "0": { + "description": "æļˆįĢ器は、įĢįŊをæ­ĸめるためãĢäŊŋį”¨ã•ã‚Œã‚‹å°åž‹ã§æē帯可čƒŊãĒčŖ…įŊŽã§ã‚ã‚‹", + "title": "æļˆįĢ器" + } + }, + "tagRenderings": { + "extinguisher-location": { + "mappings": { + "0": { + "then": "åą‹å†…ãĢある。" + }, + "1": { + "then": "åą‹å¤–ãĢある。" + } + }, + "question": "おこãĢあるんですか?", + "render": "場所:{location}" + } + }, + "title": { + "render": "æļˆįĢ器" + } + }, + "2": { + "description": "æļˆé˜˛įŊ˛ã‚’襨į¤ēするためぎマップãƒŦイヤ。", + "name": "æļˆé˜˛įŊ˛ãŽåœ°å›ŗ", + "presets": { + "0": { + "description": "æļˆé˜˛įŊ˛ã¯ã€é‹čģĸしãĻいãĒいときãĢæļˆé˜˛čģŠã‚„æļˆé˜˛åŖĢがいる場所です。", + "title": "æļˆé˜˛įŊ˛" + } + }, + "tagRenderings": { + "station-agency": { + "mappings": { + "0": { + "then": "æļˆé˜˛åą€(æļˆé˜˛åē)" + } + }, + "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗを運å–ļしãĻいるぎはおこですか?", + "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{operator}ãĢよãŖãĻ運å–ļされãĻいぞす。" + }, + "station-name": { + "question": "こぎæļˆé˜˛įŊ˛ãŽåå‰ã¯äŊ•ã§ã™ã‹?", + "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前は{name}です。" + }, + "station-operator": { + "mappings": { + "0": { + "then": "゚テãƒŧã‚ˇãƒ§ãƒŗはč‡Ēæ˛ģäŊ“が運å–ļする。" + }, + "1": { + "then": "äģģ意å›ŖäŊ“ã‚„ã‚ŗミãƒĨニテã‚Ŗが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" + }, + "2": { + "then": "å…Ŧį›Šå›ŖäŊ“が運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" + }, + "3": { + "then": "個äēēが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" + } + }, + "question": "゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļãŽåˆ†éĄžã¯?", + "render": "運å–ļč€…ã¯ã€{operator:type} です。" + }, + "station-place": { + "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎäŊæ‰€ã¯?(例: 地åŒē、村、ぞたはį”ēぎ名į§°)", + "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{addr:place}ãĢありぞす。" + }, + "station-street": { + "question": " 救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ所在地はおこですか?", + "render": "{addr:street} æ˛ŋいãĢありぞす。" + } + }, + "title": { + "render": "æļˆé˜˛įŊ˛" + } + }, + "3": { + "description": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗは、救æ€ĨčģŠã€åŒģį™‚抟器、個äēēį”¨äŋč­ˇå…ˇã€ãŠã‚ˆãŗそぎäģ–ぎåŒģį™‚į”¨å“ã‚’äŋįŽĄã™ã‚‹å ´æ‰€ã§ã™ã€‚", + "name": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ地å›ŗ", + "presets": { + "0": { + "description": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ(æļˆé˜˛įŊ˛)をマップãĢčŋŊ加する", + "title": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ(æļˆé˜˛įŊ˛)" + } + }, + "tagRenderings": { + "ambulance-agency": { + "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗを運å–ļしãĻいるぎはおこですか?", + "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{operator}ãĢよãŖãĻ運å–ļされãĻいぞす。" + }, + "ambulance-name": { + "question": "こぎ救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前はäŊ•ã§ã™ã‹?", + "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎ名前は{name}です。" + }, + "ambulance-operator-type": { + "mappings": { + "0": { + "then": "゚テãƒŧã‚ˇãƒ§ãƒŗはč‡Ēæ˛ģäŊ“が運å–ļする。" + }, + "1": { + "then": "äģģ意å›ŖäŊ“ã‚„ã‚ŗミãƒĨニテã‚Ŗが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" + }, + "2": { + "then": "å…Ŧį›Šå›ŖäŊ“が運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" + }, + "3": { + "then": "個äēēが運å–ļしãĻいる゚テãƒŧã‚ˇãƒ§ãƒŗである。" + } + }, + "question": "゚テãƒŧã‚ˇãƒ§ãƒŗぎ運å–ļãŽåˆ†éĄžã¯?", + "render": "運å–ļč€…ã¯ã€{operator:type} です。" + }, + "ambulance-place": { + "question": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗぎäŊæ‰€ã¯?(例: 地åŒē、村、ぞたはį”ēぎ名į§°)", + "render": "こぎ゚テãƒŧã‚ˇãƒ§ãƒŗは{addr:place}ãĢありぞす。" + }, + "ambulance-street": { + "question": " 救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗぎ所在地はおこですか?", + "render": "{addr:street} æ˛ŋいãĢありぞす。" + } + }, + "title": { + "render": "救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗ" + } + } }, - "playgrounds": { - "description": "こぎ地å›ŗでは遊ãŗ場をčĻ‹ã¤ã‘æƒ…å ąã‚’čŋŊ加することができぞす", - "shortDescription": "遊ãŗ場ぎある地å›ŗ", - "title": "遊ãŗå ´" - }, - "shops": { - "description": "こぎ地å›ŗãĢはåē—ぎåŸēæœŦæƒ…å ąã‚’č¨˜å…Ĩしたりå–ļæĨ­æ™‚é–“ã‚„é›ģ芹į•Ēåˇã‚’čŋŊ加することができぞす", - "shortDescription": "åŸēæœŦįš„ãĒã‚ˇãƒ§ãƒƒãƒ—æƒ…å ąã‚’åĢむįˇ¨é›†å¯čƒŊãĒマップ", - "title": "ã‚Ēãƒŧプãƒŗ ã‚ˇãƒ§ãƒƒãƒ— マップ" - }, - "sport_pitches": { - "description": "゚ポãƒŧツįĢļ技場は、゚ポãƒŧãƒ„ãŒčĄŒã‚ã‚Œã‚‹å ´æ‰€ã§ã™", - "shortDescription": "゚ポãƒŧツįĢļ技場をį¤ēす地å›ŗ", - "title": "゚ポãƒŧツįĢļ技場" - }, - "surveillance": { - "description": "こぎã‚Ēãƒŧプãƒŗマップでは、į›ŖčĻ–ã‚ĢãƒĄãƒŠã‚’įĸēčĒã§ããžã™ã€‚", - "shortDescription": "į›ŖčĻ–ã‚ĢãƒĄãƒŠãŠã‚ˆãŗそぎäģ–ぎį›ŖčĻ–手æŽĩ", - "title": "į›ŖčĻ–ã‚ĢãƒĄãƒŠãŽį›ŖčĻ–" - }, - "toilets": { - "description": "å…ŦčĄ†ãƒˆã‚¤ãƒŦぎ地å›ŗ", - "title": "ã‚ĒãƒŧプãƒŗトイãƒŦマップ" - }, - "trees": { - "description": "すずãĻぎ樚木をマッピãƒŗグしぞす!", - "shortDescription": "すずãĻぎ樚木をマッピãƒŗグする", - "title": "樚木" - } + "shortDescription": "æļˆįĢ栓、æļˆįĢ器、æļˆé˜˛įŊ˛æļˆįĢ栓、æļˆįĢ器、æļˆé˜˛įŊ˛ã€ãŠã‚ˆãŗ救æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗã‚’čĄ¨į¤ēしぞす。", + "title": "æļˆįĢ栓、æļˆįĢ器、æļˆé˜˛įŊ˛ã€æ•‘æ€Ĩ゚テãƒŧã‚ˇãƒ§ãƒŗです。" + }, + "maps": { + "description": "こぎマップãĢは、OpenStreetMapがįŸĨãŖãĻいるすずãĻãŽãƒžãƒƒãƒ—ãŒčĄ¨į¤ēされぞす。通常は、エãƒĒã‚ĸ、éƒŊ市、ぞたは地域をį¤ēã™æƒ…å ąãƒœãƒŧド上ぎ大きãĒãƒžãƒƒãƒ—ãŒčĄ¨į¤ēされぞす。たとえば、ビãƒĢボãƒŧãƒ‰ãŽčƒŒéĸãĢあるčĻŗ光マップ、č‡Ēį„ļäŋč­ˇåŒēぎマップ、地域内ぎã‚ĩイクãƒĒãƒŗグネットワãƒŧクぎマップãĒおです。)

マップがãĒい場合は、こぎマップをOpenStreetMapãĢį°Ąå˜ãĢマップできぞす。", + "shortDescription": "こぎテãƒŧマãĢは、OpenStreetMapがįŸĨãŖãĻいるすずãĻぎ(čĻŗ光)ãƒžãƒƒãƒ—ãŒčĄ¨į¤ēされぞす", + "title": "マップぎマップ" + }, + "personal": { + "description": "すずãĻぎテãƒŧマぎäŊŋį”¨å¯čƒŊãĒすずãĻぎãƒŦイヤãƒŧãĢåŸēãĨいãĻ個äēēį”¨ãƒ†ãƒŧマをäŊœæˆã™ã‚‹", + "title": "個äēēįš„ãĒテãƒŧマ" + }, + "playgrounds": { + "description": "こぎ地å›ŗでは遊ãŗ場をčĻ‹ã¤ã‘æƒ…å ąã‚’čŋŊ加することができぞす", + "shortDescription": "遊ãŗ場ぎある地å›ŗ", + "title": "遊ãŗå ´" + }, + "shops": { + "description": "こぎ地å›ŗãĢはåē—ぎåŸēæœŦæƒ…å ąã‚’č¨˜å…Ĩしたりå–ļæĨ­æ™‚é–“ã‚„é›ģ芹į•Ēåˇã‚’čŋŊ加することができぞす", + "shortDescription": "åŸēæœŦįš„ãĒã‚ˇãƒ§ãƒƒãƒ—æƒ…å ąã‚’åĢむįˇ¨é›†å¯čƒŊãĒマップ", + "title": "ã‚Ēãƒŧプãƒŗ ã‚ˇãƒ§ãƒƒãƒ— マップ" + }, + "sport_pitches": { + "description": "゚ポãƒŧツįĢļ技場は、゚ポãƒŧãƒ„ãŒčĄŒã‚ã‚Œã‚‹å ´æ‰€ã§ã™", + "shortDescription": "゚ポãƒŧツįĢļ技場をį¤ēす地å›ŗ", + "title": "゚ポãƒŧツįĢļ技場" + }, + "surveillance": { + "description": "こぎã‚Ēãƒŧプãƒŗマップでは、į›ŖčĻ–ã‚ĢãƒĄãƒŠã‚’įĸēčĒã§ããžã™ã€‚", + "shortDescription": "į›ŖčĻ–ã‚ĢãƒĄãƒŠãŠã‚ˆãŗそぎäģ–ぎį›ŖčĻ–手æŽĩ", + "title": "į›ŖčĻ–ã‚ĢãƒĄãƒŠãŽį›ŖčĻ–" + }, + "toilets": { + "description": "å…ŦčĄ†ãƒˆã‚¤ãƒŦぎ地å›ŗ", + "title": "ã‚ĒãƒŧプãƒŗトイãƒŦマップ" + }, + "trees": { + "description": "すずãĻぎ樚木をマッピãƒŗグしぞす!", + "shortDescription": "すずãĻぎ樚木をマッピãƒŗグする", + "title": "樚木" + } } \ No newline at end of file diff --git a/langs/themes/nb_NO.json b/langs/themes/nb_NO.json index 06d427c96..0738450f8 100644 --- a/langs/themes/nb_NO.json +++ b/langs/themes/nb_NO.json @@ -1,287 +1,341 @@ { - "aed": { - "description": "Defibrillatorer i nÃĻrheten", - "title": "Åpne AED-kart" - }, - "artwork": { - "description": "Velkommen til det ÃĨpne kunstverkskartet, et kart over statuer, byster, grafitti, og andre kunstverk i verden" - }, - "benches": { - "shortDescription": "Et benkekart", - "title": "Benker" - }, - "bicyclelib": { - "title": "Sykkelbibliotek" - }, - "binoculars": { - "shortDescription": "Et kart over fastmonterte kikkerter", - "title": "Kikkerter" - }, - "bookcases": { - "title": "Kart over ÃĨpne bokhyller" - }, - "cafes_and_pubs": { - "title": "Kafeer og kneiper" - }, - "campersite": { - "layers": { - "0": { - "tagRenderings": { - "caravansites-charge": { - "question": "pø", - "render": "Dette stedet tar {charge}" - }, - "caravansites-description": { - "render": "Flere detaljer om dette stedet: {description}" - }, - "caravansites-fee": { - "mappings": { - "1": { - "then": "Kan brukes gratis" - } - } - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "Dette stedet har toalettfasiliteter" - }, - "1": { - "then": "Dette stedet har ikke toalettfasiliteter" - } - }, - "question": "Har dette stedet toaletter?" - }, - "caravansites-website": { - "question": "Har dette stedet en nettside?", - "render": "Offisiell nettside: {website}" - } - } + "aed": { + "description": "Defibrillatorer i nÃĻrheten", + "title": "Åpne AED-kart" + }, + "artwork": { + "description": "Velkommen til det ÃĨpne kunstverkskartet, et kart over statuer, byster, grafitti, og andre kunstverk i verden" + }, + "benches": { + "shortDescription": "Et benkekart", + "title": "Benker" + }, + "bicyclelib": { + "title": "Sykkelbibliotek" + }, + "binoculars": { + "shortDescription": "Et kart over fastmonterte kikkerter", + "title": "Kikkerter" + }, + "bookcases": { + "title": "Kart over ÃĨpne bokhyller" + }, + "cafes_and_pubs": { + "title": "Kafeer og kneiper" + }, + "campersite": { + "layers": { + "0": { + "tagRenderings": { + "caravansites-charge": { + "question": "pø", + "render": "Dette stedet tar {charge}" + }, + "caravansites-description": { + "render": "Flere detaljer om dette stedet: {description}" + }, + "caravansites-fee": { + "mappings": { + "1": { + "then": "Kan brukes gratis" + } } + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "Dette stedet har toalettfasiliteter" + }, + "1": { + "then": "Dette stedet har ikke toalettfasiliteter" + } + }, + "question": "Har dette stedet toaletter?" + }, + "caravansites-website": { + "question": "Har dette stedet en nettside?", + "render": "Offisiell nettside: {website}" + } } + } + } + }, + "charging_stations": { + "shortDescription": "Et verdensomspennende kart over ladestasjoner", + "title": "Ladestasjoner" + }, + "climbing": { + "layers": { + "0": { + "description": "En klatreklubb eller organisasjoner", + "name": "Klatreklubb", + "presets": { + "0": { + "description": "En klatreklubb", + "title": "Klatreklubb" + } + }, + "title": { + "render": "Klatreklubb" + } + }, + "2": { + "name": "Klatreruter", + "tagRenderings": { + "Length": { + "question": "Hvor mange meter er klatreruten?", + "render": "Denne ruten er {canonical(climbing:length)} lang" + }, + "Name": { + "mappings": { + "0": { + "then": "Denne klatreruten har ikke noe navn" + } + }, + "question": "Hva er navnet pÃĨ denne klatreruten?", + "render": "{name}" + } + }, + "title": { + "render": "Klatrerute" + } + }, + "3": { + "description": "En klatremulighet", + "presets": { + "0": { + "description": "En klatremulighet", + "title": "Klatremulighet" + } + }, + "title": { + "render": "Klatremulighet" + } + }, + "4": { + "description": "En klatremulighet?", + "name": "Klatremuligheter?", + "tagRenderings": { + "climbing-possible": { + "mappings": { + "0": { + "then": "Klatring er ikke mulig her" + }, + "1": { + "then": "Klatring er mulig her" + }, + "2": { + "then": "Klatring er ikke mulig her" + } + }, + "question": "Er klatring mulig her?" + } + }, + "title": { + "render": "Klatremulighet?" + } + } }, - "charging_stations": { - "shortDescription": "Et verdensomspennende kart over ladestasjoner", - "title": "Ladestasjoner" - }, - "climbing": { - "layers": { + "overrideAll": { + "tagRenderings+": { + "7": { + "mappings": { "0": { - "description": "En klatreklubb eller organisasjoner", - "name": "Klatreklubb", - "presets": { - "0": { - "description": "En klatreklubb", - "title": "Klatreklubb" - } - }, - "title": { - "render": "Klatreklubb" - } + "then": "Buldring er mulig her" + }, + "1": { + "then": "Buldring er ikke mulig her" + } + }, + "question": "Er buldring mulig her?" + } + } + }, + "title": "Åpent klatrekart" + }, + "cycle_infra": { + "shortDescription": "Alt relatert til sykkelinfrastruktur.", + "title": "Sykkelinfrastruktur" + }, + "cyclestreets": { + "layers": { + "0": { + "name": "Sykkelgater" + }, + "1": { + "description": "Denne gaten vil bli sykkelgate snart", + "name": "Fremtidig sykkelvei", + "title": { + "mappings": { + "0": { + "then": "{name} vil bli sykkelgate snart" + } + }, + "render": "Fremtidig sykkelvei" + } + }, + "2": { + "description": "Lag for ÃĨ markere hvilken som helst gate som sykkelvei", + "name": "Alle gater", + "title": { + "render": "Gate" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Denne gaten er en sykkelvei (og har en fartsgrense pÃĨ 30 km/t)" + }, + "1": { + "then": "Denne gaten er en sykkelvei" }, "2": { - "name": "Klatreruter", - "tagRenderings": { - "Length": { - "render": "Denne ruten er {canonical(climbing:length)} lang" - } - }, - "title": { - "render": "Klatrerute" - } + "then": "Denne gaten vil bli sykkelvei ganske snart" }, "3": { - "description": "En klatremulighet", - "presets": { - "0": { - "description": "En klatremulighet", - "title": "Klatremulighet" - } - }, - "title": { - "render": "Klatremulighet" - } - }, - "4": { - "description": "En klatremulighet?", - "name": "Klatremuligheter?", - "tagRenderings": { - "climbing-possible": { - "mappings": { - "0": { - "then": "Klatring er ikke mulig her" - }, - "1": { - "then": "Klatring er mulig her" - }, - "2": { - "then": "Klatring er ikke mulig her" - } - }, - "question": "Er klatring mulig her?" - } - }, - "title": { - "render": "Klatremulighet?" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "7": { - "mappings": { - "0": { - "then": "Buldring er mulig her" - }, - "1": { - "then": "Buldring er ikke mulig her" - } - }, - "question": "Er buldring mulig her?" - } - } - }, - "title": "Åpent klatrekart" - }, - "cycle_infra": { - "shortDescription": "Alt relatert til sykkelinfrastruktur.", - "title": "Sykkelinfrastruktur" - }, - "cyclestreets": { - "layers": { - "1": { - "name": "Fremtidig sykkelvei", - "title": { - "render": "Fremtidig sykkelvei" - } - }, - "2": { - "description": "Lag for ÃĨ markere hvilken som helst gate som sykkelvei", - "name": "Alle gater" - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "mappings": { - "0": { - "then": "Denne gaten er en sykkelvei (og har en fartsgrense pÃĨ 30 km/t)" - }, - "1": { - "then": "Denne gaten er en sykkelvei" - }, - "2": { - "then": "Denne gaten vil bli sykkelvei ganske snart" - }, - "3": { - "then": "Denne gaten er ikke en sykkelvei" - } - }, - "question": "Er denne gaten en sykkelvei?" - } - } - }, - "shortDescription": "Et kart over sykkelveier", - "title": "Sykkelgater" - }, - "cyclofix": { - "title": "Cyclofix — et ÃĨpent kart for syklister" - }, - "drinking_water": { - "description": "Offentlig tilgjengelig drikkevannssteder", - "title": "Drikkevann" - }, - "facadegardens": { - "layers": { - "0": { - "tagRenderings": { - "facadegardens-sunshine": { - "mappings": { - "1": { - "then": "Denne hagen er i delvis skygge" - } - } - } - } + "then": "Denne gaten er ikke en sykkelvei" } + }, + "question": "Er denne gaten en sykkelvei?" } + } }, - "food": { - "title": "Restauranter og søppelmat" - }, - "ghostbikes": { - "title": "Spøkelsessykler" - }, - "hailhydrant": { - "layers": { - "0": { - "description": "Kartlag for ÃĨ vise brannhydranter.", - "name": "Kart over brannhydranter", - "presets": { - "0": { - "title": "Brannhydrant" - } - }, - "tagRenderings": { - "hydrant-color": { - "question": "Hvilken farge har brannhydranten?", - "render": "Brannhydranter er {colour}" - } - }, - "title": { - "render": "Brannhydrant" - } - }, - "1": { - "description": "Kartlag for ÃĨ vise brannslokkere.", - "name": "Kart over brannhydranter", - "presets": { - "0": { - "title": "Brannslukker" - } - }, - "title": { - "render": "Brannslokkere" - } - }, - "2": { - "name": "Kart over brannstasjoner", - "title": { - "render": "Brannstasjon" - } + "shortDescription": "Et kart over sykkelveier", + "title": "Sykkelgater" + }, + "cyclofix": { + "title": "Cyclofix — et ÃĨpent kart for syklister" + }, + "drinking_water": { + "description": "Offentlig tilgjengelig drikkevannssteder", + "title": "Drikkevann" + }, + "facadegardens": { + "layers": { + "0": { + "tagRenderings": { + "facadegardens-sunshine": { + "mappings": { + "1": { + "then": "Denne hagen er i delvis skygge" + } } - }, - "title": "Hydranter, brannslukkere, brannstasjoner, og ambulansestasjoner." - }, - "maps": { - "title": "Et kart over kart" - }, - "natuurpunt": { - "title": "Naturreservater" - }, - "parkings": { - "shortDescription": "Dette kartet viser forskjellige parkeringsplasser", - "title": "Parkering" - }, - "personal": { - "title": "Personlig tema" - }, - "playgrounds": { - "shortDescription": "Et kart med lekeplasser", - "title": "Lekeplasser" - }, - "postboxes": { - "title": "Postboks og postkontor-kart" - }, - "shops": { - "title": "Kart over ÃĨpne butikker" - }, - "toilets": { - "title": "Åpent toalettkart" - }, - "trees": { - "description": "Kartlegg trÃĻrne.", - "shortDescription": "Kartlegg alle trÃĻrne", - "title": "TrÃĻr" + } + } + } } + }, + "food": { + "title": "Restauranter og søppelmat" + }, + "ghostbikes": { + "title": "Spøkelsessykler" + }, + "hailhydrant": { + "layers": { + "0": { + "description": "Kartlag for ÃĨ vise brannhydranter.", + "name": "Kart over brannhydranter", + "presets": { + "0": { + "title": "Brannhydrant" + } + }, + "tagRenderings": { + "hydrant-color": { + "question": "Hvilken farge har brannhydranten?", + "render": "Brannhydranter er {colour}" + } + }, + "title": { + "render": "Brannhydrant" + } + }, + "1": { + "description": "Kartlag for ÃĨ vise brannslokkere.", + "name": "Kart over brannhydranter", + "presets": { + "0": { + "title": "Brannslukker" + } + }, + "title": { + "render": "Brannslokkere" + } + }, + "2": { + "name": "Kart over brannstasjoner", + "presets": { + "0": { + "title": "Brannstasjon" + } + }, + "tagRenderings": { + "station-name": { + "render": "Denne stasjonen heter {name}." + }, + "station-operator": { + "mappings": { + "0": { + "then": "Stasjonen drives av myndighetene." + } + } + } + }, + "title": { + "render": "Brannstasjon" + } + } + }, + "title": "Hydranter, brannslukkere, brannstasjoner, og ambulansestasjoner." + }, + "maps": { + "title": "Et kart over kart" + }, + "natuurpunt": { + "title": "Naturreservater" + }, + "openwindpowermap": { + "layers": { + "0": { + "units": { + "0": { + "applicableUnits": { + "1": { + "human": " kilowatt" + } + } + } + } + } + } + }, + "parkings": { + "shortDescription": "Dette kartet viser forskjellige parkeringsplasser", + "title": "Parkering" + }, + "personal": { + "title": "Personlig tema" + }, + "playgrounds": { + "shortDescription": "Et kart med lekeplasser", + "title": "Lekeplasser" + }, + "postboxes": { + "title": "Postboks og postkontor-kart" + }, + "shops": { + "title": "Kart over ÃĨpne butikker" + }, + "toilets": { + "title": "Åpent toalettkart" + }, + "trees": { + "description": "Kartlegg trÃĻrne.", + "shortDescription": "Kartlegg alle trÃĻrne", + "title": "TrÃĻr" + } } \ No newline at end of file diff --git a/langs/themes/nl.json b/langs/themes/nl.json index e3eb92270..217b91cca 100644 --- a/langs/themes/nl.json +++ b/langs/themes/nl.json @@ -1,1074 +1,1074 @@ { - "aed": { - "description": "Op deze kaart kan je informatie over AEDs vinden en verbeteren", - "title": "Open AED-kaart" - }, - "aed_brugge": { - "description": "Op deze kaart kan je informatie over AEDs vinden en verbeteren + een export van de brugse defibrillatoren", - "title": "Open AED-kaart - Brugge edition" - }, - "artwork": { - "description": "Welkom op de open kunstwerken-kaart, een kaart van standbeelden, bustes, graffiti en andere kunstwerken over de hele wereld", - "title": "Open kunstwerken-kaart" - }, - "benches": { - "description": "Deze kaart toont alle zitbanken die zijn opgenomen in OpenStreetMap: individuele banken en banken bij bushaltes. Met een OpenStreetMap-account kan je informatie verbeteren en nieuwe zitbanken toevoegen.", - "shortDescription": "Een kaart van zitbanken", - "title": "Zitbanken" - }, - "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.", - "title": "Fietsbibliotheken" - }, - "binoculars": { - "description": "Een kaart met verrekijkers die op een vaste plaats zijn gemonteerd", - "shortDescription": "Een kaart met publieke verrekijker", - "title": "Verrekijkers" - }, - "bookcases": { - "description": "Een boekenruilkast is een kastje waar iedereen een boek kan nemen of achterlaten. Op deze kaart kan je deze boekenruilkasten terugvinden en met een gratis OpenStreetMap-account, ook boekenruilkasten toevoegen of informatie verbeteren", - "title": "Open boekenruilkasten-kaart" - }, - "buurtnatuur": { - "description": "logo-groenmeld je aan voor e-mailupdates.", - "descriptionTail": "

Tips

  • Over groen ingekleurde gebieden weten we alles wat we willen weten.
  • Bij rood ingekleurde gebieden ontbreekt nog heel wat info: klik een gebied aan en beantwoord de vragen.
  • Je kan altijd een vraag overslaan als je het antwoord niet weet of niet zeker bent
  • Je kan altijd een foto toevoegen
  • Je kan ook zelf een gebied toevoegen door op de kaart te klikken
  • Open buurtnatuur.be op je smartphone om al wandelend foto's te maken en vragen te beantwoorden

De oorspronkelijke data komt van OpenStreetMap en je antwoorden worden daar bewaard.
Omdat iedereen vrij kan meewerken aan dit project, kunnen we niet garanderen dat er geen fouten opduiken.Kan je hier niet aanpassen wat je wilt, dan kan je dat zelf via OpenStreetMap.org doen. Groen kan geen enkele verantwoordelijkheid nemen over de kaart.

Je privacy is belangrijk. We tellen wel hoeveel gebruikers deze website bezoeken. We plaatsen een cookie waar geen persoonlijke informatie in bewaard wordt. Als je inlogt, komt er een tweede cookie bij met je inloggegevens.
", - "layers": { + "aed": { + "description": "Op deze kaart kan je informatie over AEDs vinden en verbeteren", + "title": "Open AED-kaart" + }, + "aed_brugge": { + "description": "Op deze kaart kan je informatie over AEDs vinden en verbeteren + een export van de brugse defibrillatoren", + "title": "Open AED-kaart - Brugge edition" + }, + "artwork": { + "description": "Welkom op de open kunstwerken-kaart, een kaart van standbeelden, bustes, graffiti en andere kunstwerken over de hele wereld", + "title": "Open kunstwerken-kaart" + }, + "benches": { + "description": "Deze kaart toont alle zitbanken die zijn opgenomen in OpenStreetMap: individuele banken en banken bij bushaltes. Met een OpenStreetMap-account kan je informatie verbeteren en nieuwe zitbanken toevoegen.", + "shortDescription": "Een kaart van zitbanken", + "title": "Zitbanken" + }, + "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.", + "title": "Fietsbibliotheken" + }, + "binoculars": { + "description": "Een kaart met verrekijkers die op een vaste plaats zijn gemonteerd", + "shortDescription": "Een kaart met publieke verrekijker", + "title": "Verrekijkers" + }, + "bookcases": { + "description": "Een boekenruilkast is een kastje waar iedereen een boek kan nemen of achterlaten. Op deze kaart kan je deze boekenruilkasten terugvinden en met een gratis OpenStreetMap-account, ook boekenruilkasten toevoegen of informatie verbeteren", + "title": "Open boekenruilkasten-kaart" + }, + "buurtnatuur": { + "description": "logo-groenmeld je aan voor e-mailupdates.", + "descriptionTail": "

Tips

  • Over groen ingekleurde gebieden weten we alles wat we willen weten.
  • Bij rood ingekleurde gebieden ontbreekt nog heel wat info: klik een gebied aan en beantwoord de vragen.
  • Je kan altijd een vraag overslaan als je het antwoord niet weet of niet zeker bent
  • Je kan altijd een foto toevoegen
  • Je kan ook zelf een gebied toevoegen door op de kaart te klikken
  • Open buurtnatuur.be op je smartphone om al wandelend foto's te maken en vragen te beantwoorden

De oorspronkelijke data komt van OpenStreetMap en je antwoorden worden daar bewaard.
Omdat iedereen vrij kan meewerken aan dit project, kunnen we niet garanderen dat er geen fouten opduiken.Kan je hier niet aanpassen wat je wilt, dan kan je dat zelf via OpenStreetMap.org doen. Groen kan geen enkele verantwoordelijkheid nemen over de kaart.

Je privacy is belangrijk. We tellen wel hoeveel gebruikers deze website bezoeken. We plaatsen een cookie waar geen persoonlijke informatie in bewaard wordt. Als je inlogt, komt er een tweede cookie bij met je inloggegevens.
", + "layers": { + "0": { + "description": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.", + "name": "Natuurgebied", + "presets": { + "0": { + "description": "Voeg een ontbrekend, erkend natuurreservaat toe, bv. een gebied dat beheerd wordt door het ANB of natuurpunt", + "title": "Natuurreservaat" + } + }, + "title": { + "mappings": { "0": { - "description": "Een natuurgebied is een gebied waar actief ruimte gemaakt word voor de natuur. Typisch zijn deze in beheer van Natuurpunt of het Agentschap Natuur en Bos of zijn deze erkend door de overheid.", - "name": "Natuurgebied", - "presets": { - "0": { - "description": "Voeg een ontbrekend, erkend natuurreservaat toe, bv. een gebied dat beheerd wordt door het ANB of natuurpunt", - "title": "Natuurreservaat" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name:nl}" - }, - "1": { - "then": "{name}" - } - }, - "render": "Natuurgebied" - } + "then": "{name:nl}" }, "1": { - "description": "Een park is een publiek toegankelijke, groene ruimte binnen de stad. Ze is typisch ingericht voor recreatief gebruik, met (verharde) wandelpaden, zitbanken, vuilnisbakken, een gezellig vijvertje, ...", - "name": "Park", - "presets": { - "0": { - "description": "Voeg een ontbrekend park toe", - "title": "Park" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name:nl}" - }, - "1": { - "then": "{name}" - } - }, - "render": "Park" - } - }, - "2": { - "description": "Een bos is een verzameling bomen, al dan niet als productiehout.", - "name": "Bos", - "presets": { - "0": { - "description": "Voeg een ontbrekend bos toe aan de kaart", - "title": "Bos" - } - }, - "title": { - "mappings": { - "0": { - "then": "{name:nl}" - }, - "1": { - "then": "{name}" - } - }, - "render": "Bos" - } + "then": "{name}" } + }, + "render": "Natuurgebied" + } + }, + "1": { + "description": "Een park is een publiek toegankelijke, groene ruimte binnen de stad. Ze is typisch ingericht voor recreatief gebruik, met (verharde) wandelpaden, zitbanken, vuilnisbakken, een gezellig vijvertje, ...", + "name": "Park", + "presets": { + "0": { + "description": "Voeg een ontbrekend park toe", + "title": "Park" + } }, - "overrideAll": { - "tagRenderings+": { - "0": { - "mappings": { - "0": { - "then": "Dit gebied is vrij toegankelijk" - }, - "1": { - "then": "Vrij toegankelijk" - }, - "2": { - "then": "Niet toegankelijk" - }, - "3": { - "then": "Niet toegankelijk, want privÊgebied" - }, - "4": { - "then": "Toegankelijk, ondanks dat het privegebied is" - }, - "5": { - "then": "Enkel toegankelijk met een gids of tijdens een activiteit" - }, - "6": { - "then": "Toegankelijk mits betaling" - } - }, - "question": "Is dit gebied toegankelijk?", - "render": "De toegankelijkheid van dit gebied is: {access:description}" - }, - "1": { - "mappings": { - "1": { - "then": "Dit gebied wordt beheerd door Natuurpunt" - }, - "2": { - "then": "Dit gebied wordt beheerd door {operator}" - }, - "3": { - "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" - } - }, - "question": "Wie beheert dit gebied?", - "render": "Beheer door {operator}" - }, - "2": { - "render": "Extra info: {description}" - }, - "3": { - "render": "Extra info via buurtnatuur.be: {description:0}" - }, - "4": { - "question": "Wat is de Nederlandstalige naam van dit gebied?", - "render": "Dit gebied heet {name:nl}" - }, - "5": { - "mappings": { - "0": { - "then": "Dit gebied heeft geen naam" - } - }, - "question": "Wat is de naam van dit gebied?", - "render": "Dit gebied heet {name}" - } - } - }, - "shortDescription": "Met deze tool kan je natuur in je buurt in kaart brengen en meer informatie geven over je favoriete plekje", - "title": "Breng jouw buurtnatuur in kaart" - }, - "cafes_and_pubs": { - "description": "CafÊs, kroegen 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.", - "layers": { + "title": { + "mappings": { "0": { - "description": "camperplaatsen", - "name": "Camperplaatsen", - "presets": { - "0": { - "description": "Voeg een nieuwe officiÃĢle camperplaats toe. Dit zijn speciaal aangeduide plaatsen waar het toegestaan is om te overnachten met een camper. Ze kunnen er uitzien als een parking, of soms eerder als een camping. Soms staan ze niet ter plaatse aangeduid, maar heeft de gemeente wel degelijk beslist dat dit een camperplaats is. Een parking voor campers waar je niet mag overnachten is gÊÊn camperplaats. ", - "title": "camperplaats" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "Hoeveel campers kunnen hier overnachten? (sla dit over als er geen duidelijk aantal plaatsen of aangeduid maximum is)", - "render": "{capacity} campers kunnen deze plaats tegelijk gebruiken" - }, - "caravansites-charge": { - "question": "Hoeveel kost deze plaats?", - "render": "Deze plaats vraagt {charge}" - }, - "caravansites-description": { - "question": "Wil je graag een algemene beschrijving toevoegen van deze plaats? (Herhaal hier niet de antwoorden op de vragen die reeds gesteld zijn. Hou het objectief - je kan je mening geven via een review)", - "render": "Meer details over deze plaats: {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "Gebruik is betalend" - }, - "1": { - "then": "Kan gratis gebruikt worden" - } - }, - "question": "Moet men betalen om deze camperplaats te gebruiken?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "Er is internettoegang" - }, - "1": { - "then": "Er is internettoegang" - } - } - }, - "caravansites-name": { - "question": "Wat is de naam van deze plaats?", - "render": "Deze plaats heet {name}" - }, - "caravansites-website": { - "render": "OfficiÃĢle website: : {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Camper site" - } - }, - "render": "Camperplaats {name}" - } - } - }, - "shortDescription": "Vind locaties waar je de nacht kan doorbrengen met je mobilehome", - "title": "Camperplaatsen" - }, - "charging_stations": { - "shortDescription": "Een wereldwijde kaart van oplaadpunten", - "title": "Oplaadpunten" - }, - "climbing": { - "description": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, bolderzalen en klimmen in de natuur", - "descriptionTail": "De klimkaart is oorspronkelijk gemaakt door Christian Neumann op kletterspots.de.", - "layers": { - "0": { - "description": "Een klimclub of organisatie", - "name": "Klimclub", - "presets": { - "0": { - "description": "Een klimclub", - "title": "Klimclub" - }, - "1": { - "description": "Een VZW die werkt rond klimmen", - "title": "Een klimorganisatie" - } - }, - "tagRenderings": { - "climbing_club-name": { - "question": "Wat is de naam van deze klimclub?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Klimorganisatie" - } - }, - "render": "Klimclub" - } + "then": "{name:nl}" }, "1": { - "description": "Een klimzaal", - "name": "Klimzalen", - "tagRenderings": { - "name": { - "question": "Wat is de naam van dit Klimzaal?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Klimzaal {name}" - } - }, - "render": "Klimzaal" - } + "then": "{name}" + } + }, + "render": "Park" + } + }, + "2": { + "description": "Een bos is een verzameling bomen, al dan niet als productiehout.", + "name": "Bos", + "presets": { + "0": { + "description": "Voeg een ontbrekend bos toe aan de kaart", + "title": "Bos" + } + }, + "title": { + "mappings": { + "0": { + "then": "{name:nl}" + }, + "1": { + "then": "{name}" + } + }, + "render": "Bos" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Dit gebied is vrij toegankelijk" + }, + "1": { + "then": "Vrij toegankelijk" }, "2": { - "name": "Klimroute", - "presets": { - "0": { - "title": "Klimroute" - } - }, - "tagRenderings": { - "Difficulty": { - "question": "Hoe moeilijk is deze klimroute volgens het Franse/Belgische systeem?", - "render": "De klimmoeilijkheid is {climbing:grade:french} volgens het Franse/Belgische systeem" - }, - "Length": { - "question": "Hoe lang is deze klimroute (in meters)?", - "render": "Deze klimroute is {canonical(climbing:length)} lang" - }, - "Name": { - "mappings": { - "0": { - "then": "Deze klimroute heeft geen naam" - } - }, - "question": "Hoe heet deze klimroute?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Klimroute {name}" - } - }, - "render": "Klimroute" - } + "then": "Niet toegankelijk" }, "3": { - "description": "Een klimgelegenheid", - "name": "Klimgelegenheden", - "presets": { - "0": { - "description": "Een klimgelegenheid", - "title": "Klimgelegenheid" - } - }, - "tagRenderings": { - "Rock type (crag/rock/cliff only)": { - "mappings": { - "0": { - "then": "Kalksteen" - } - } - }, - "name": { - "mappings": { - "0": { - "then": "Dit Klimgelegenheid heeft geen naam" - } - }, - "question": "Wat is de naam van dit Klimgelegenheid?", - "render": "{name}" - } - }, - "title": { - "mappings": { - "1": { - "then": "Klimsite {name}" - }, - "2": { - "then": "Klimsite" - }, - "3": { - "then": "Klimgelegenheid {name}" - } - }, - "render": "Klimgelegenheid" - } + "then": "Niet toegankelijk, want privÊgebied" }, "4": { - "description": "Een klimgelegenheid?", - "name": "Klimgelegenheiden?", - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - }, - "climbing-possible": { - "mappings": { - "0": { - "then": "Klimmen is hier niet mogelijk" - }, - "1": { - "then": "Klimmen is hier niet toegelaten" - }, - "2": { - "then": "Klimmen is hier niet toegelaten" - } - } - } - }, - "title": { - "render": "Klimgelegenheid?" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "Is er een (onofficiÃĢle) website met meer informatie (b.v. met topos)?" - }, - "1": { - "mappings": { - "0": { - "then": "Een omvattend element geeft aan dat dit publiek toegangkelijk is
{_embedding_feature:access:description}" - }, - "1": { - "then": "Een omvattend element geeft aan dat een toelating nodig is om hier te klimmen
{_embedding_feature:access:description}" - } - } - }, - "4": { - "question": "Wat is de (gemiddelde) lengte van de klimroutes, in meter?", - "render": "De klimroutes zijn gemiddeld {canonical(climbing:length)} lang" - }, - "5": { - "question": "Wat is het niveau van de makkelijkste route, volgens het Franse classificatiesysteem?", - "render": "De minimale klimmoeilijkheid is {climbing:grade:french:min} volgens het Franse/Belgische systeem" - }, - "6": { - "question": "Wat is het niveau van de moeilijkste route, volgens het Franse classificatiesysteem?", - "render": "De maximale klimmoeilijkheid is {climbing:grade:french:max} volgens het Franse/Belgische systeem" - }, - "7": { - "mappings": { - "0": { - "then": "Bolderen kan hier" - }, - "1": { - "then": "Bolderen kan hier niet" - }, - "2": { - "then": "Bolderen kan hier, maar er zijn niet zoveel routes" - }, - "3": { - "then": "Er zijn hier {climbing:boulder} bolderroutes" - } - }, - "question": "Is het mogelijk om hier te bolderen?" - }, - "8": { - "mappings": { - "0": { - "then": "Toprope-klimmen kan hier" - }, - "1": { - "then": "Toprope-klimmen kan hier niet" - }, - "2": { - "then": "Er zijn hier {climbing:toprope} toprope routes" - } - }, - "question": "Is het mogelijk om hier te toprope-klimmen?" - }, - "9": { - "mappings": { - "0": { - "then": "Sportklimmen/voorklimmen kan hier" - }, - "1": { - "then": "Sportklimmen/voorklimmen kan hier niet" - }, - "2": { - "then": "Er zijn hier {climbing:sport} sportklimroutes/voorklimroutes" - } - }, - "question": "Is het mogelijk om hier te sportklimmen/voorklimmen op reeds aangebrachte haken?" - }, - "10": { - "mappings": { - "0": { - "then": "Traditioneel klimmen kan hier" - }, - "1": { - "then": "Traditioneel klimmen kan hier niet" - }, - "2": { - "then": "Er zijn hier {climbing:traditional} traditionele klimroutes" - } - }, - "question": "Is het mogelijk om hier traditioneel te klimmen?
(Dit is klimmen met klemblokjes en friends)" - }, - "11": { - "mappings": { - "0": { - "then": "Er is een snelklimmuur voor speed climbing" - }, - "1": { - "then": "Er is geen snelklimmuur voor speed climbing" - }, - "2": { - "then": "Er zijn hier {climbing:speed} snelklimmuren" - } - }, - "question": "Is er een snelklimmuur (speed climbing)?" - } - }, - "units+": { - "0": { - "applicableUnits": { - "0": { - "human": " meter" - }, - "1": { - "human": " voet" - } - } - } - } - }, - "title": "Open klimkaart" - }, - "cycle_infra": { - "description": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken. Gemaakt tijdens #osoc21.", - "shortDescription": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken.", - "title": "Fietsinfrastructuur" - }, - "cyclestreets": { - "description": "Een fietsstraat is een straat waar
  • automobilisten geen fietsers mogen inhalen
  • Er een maximumsnelheid van 30km/u geldt
  • Fietsers gemotoriseerde voertuigen links mogen inhalen
  • Fietsers nog steeds voorrang aan rechts moeten verlenen - ook aan auto's en voetgangers op het zebrapad


Op deze open kaart kan je alle gekende fietsstraten zien en kan je ontbrekende fietsstraten aanduiden. Om de kaart aan te passen, moet je je aanmelden met OpenStreetMap en helemaal inzoomen tot straatniveau. ", - "layers": { - "0": { - "description": "Een fietsstraat is een straat waar gemotoriseerd verkeer een fietser niet mag inhalen.", - "name": "Fietsstraten" - }, - "1": { - "description": "Deze straat wordt binnenkort een fietsstraat", - "name": "Toekomstige fietsstraat", - "title": { - "mappings": { - "0": { - "then": "{name} wordt fietsstraat" - } - }, - "render": "Toekomstige fietsstraat" - } - }, - "2": { - "description": "Laag waar je een straat als fietsstraat kan markeren", - "name": "Alle straten", - "title": { - "render": "Straat" - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "mappings": { - "0": { - "then": "Deze straat is een fietsstraat (en dus zone 30)" - }, - "1": { - "then": "Deze straat i een fietsstraat" - }, - "2": { - "then": "Deze straat wordt binnenkort een fietsstraat" - }, - "3": { - "then": "Deze straat is geen fietsstraat" - } - }, - "question": "Is deze straat een fietsstraat?" - }, - "1": { - "question": "Wanneer wordt deze straat een fietsstraat?", - "render": "Deze straat wordt fietsstraat op {cyclestreet:start_date}" - } - } - }, - "shortDescription": "Een kaart met alle gekende fietsstraten", - "title": "Fietsstraten" - }, - "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.", - "title": "Cyclofix - een open kaart voor fietsers" - }, - "drinking_water": { - "description": "Op deze kaart staan publiek toegankelijke drinkwaterpunten en kan je makkelijk een nieuw drinkwaterpunt toevoegen", - "title": "Drinkwaterpunten" - }, - "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": { - "1": { - "override": { - "name": "Straten zonder etymologische informatie" - } - }, - "2": { - "override": { - "name": "Parken en bossen zonder etymologische informatie" - } - } - }, - "shortDescription": "Wat is de oorsprong van een plaatsnaam?", - "title": "Open Etymology-kaart" - }, - "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.", - "layers": { - "0": { - "description": "Geveltuintjes", - "name": "Geveltuintjes", - "presets": { - "0": { - "description": "Voeg geveltuintje toe", - "title": "geveltuintje" - } - }, - "tagRenderings": { - "facadegardens-description": { - "question": "Aanvullende omschrijving van de tuin (indien nodig, en voor zover nog niet omschreven hierboven)", - "render": "Meer details: {description}" - }, - "facadegardens-direction": { - "question": "Hoe is de tuin georiÃĢnteerd?", - "render": "OriÃĢntatie: {direction} (waarbij 0=N en 90=O)" - }, - "facadegardens-edible": { - "mappings": { - "0": { - "then": "Er staan eetbare planten" - }, - "1": { - "then": "Er staan geen eetbare planten" - } - }, - "question": "Staan er eetbare planten?" - }, - "facadegardens-plants": { - "mappings": { - "0": { - "then": "Er staat een klimplant" - }, - "1": { - "then": "Er staan bloeiende planten" - }, - "2": { - "then": "Er staan struiken" - }, - "3": { - "then": "Er staan bodembedekkers" - } - }, - "question": "Wat voor planten staan hier?" - }, - "facadegardens-rainbarrel": { - "mappings": { - "0": { - "then": "Er is een regenton" - }, - "1": { - "then": "Er is geen regenton" - } - }, - "question": "Is er een regenton voorzien bij het tuintje?" - }, - "facadegardens-start_date": { - "question": "Wanneer werd de tuin aangelegd? (vul gewoon een jaartal in)", - "render": "Aanlegdatum van de tuin: {start_date}" - }, - "facadegardens-sunshine": { - "mappings": { - "0": { - "then": "Het is een volle zon tuintje" - }, - "1": { - "then": "Het is een halfschaduw tuintje" - }, - "2": { - "then": "Het is een schaduw tuintje" - } - }, - "question": "Ligt de tuin in zon/half schaduw of schaduw?" - } - }, - "title": { - "render": "Geveltuintje" - } - } - }, - "shortDescription": "Deze kaart toont geveltuintjes met foto's en bruikbare info over oriÃĢntatie, zonlicht en planttypes.", - "title": "Straatgeveltuintjes" - }, - "food": { - "description": "Restaurants en fast food", - "title": "Eetgelegenheden" - }, - "fritures": { - "description": "Op deze kaart vind je je favoriete frituur!", - "layers": { - "0": { - "override": { - "name": "Frituren" - } - } - }, - "title": "Friturenkaart" - }, - "fruit_trees": { - "description": "Op deze kaart vindt je boomgaarden en fruitbomen", - "layers": { - "0": { - "name": "Boomgaarden", - "presets": { - "0": { - "description": "Voeg een boomgaard toe (als punt - omtrek nog te tekenen)", - "title": "Boomgaard" - } - }, - "title": { - "render": "Boomgaard" - } - }, - "1": { - "description": "Een boom", - "name": "Boom", - "presets": { - "0": { - "description": "Voeg hier een boom toe", - "title": "Boom" - } - }, - "tagRenderings": { - "fruitboom-description": { - "question": "Welke beschrijving past bij deze boom?", - "render": "Beschrijving: {description}" - }, - "fruitboom-ref": { - "question": "Is er een refernetienummer?", - "render": "Referentienummer: {ref}" - }, - "fruitboom-species:nl": { - "question": "Wat is de soort van deze boom (in het Nederlands)?", - "render": "De soort is {species:nl}" - }, - "fruitboom-taxon": { - "question": "Wat is het taxon (ras) van deze boom?", - "render": "Het ras (taxon) van deze boom is {taxon}" - } - }, - "title": { - "render": "Boom" - } - } - }, - "shortDescription": "Boomgaarden en fruitbomen", - "title": "Open Boomgaardenkaart" - }, - "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.", - "title": "Witte Fietsen" - }, - "grb": { - "description": "GRB Fixup", - "layers": { - "3": { - "description": "Dit gebouw heeft een foutmelding", - "name": "Fixmes op gebouwen", - "tagRenderings": { - "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} " - } - }, - "title": { - "mappings": { - "0": { - "then": "{fixme}" - } - }, - "render": "{addr:street} {addr:housenumber}" - } + "then": "Toegankelijk, ondanks dat het privegebied is" }, "5": { - "description": "Dit gebouw heeft een foutmelding", - "name": "Fixmes op gebouwen", - "tagRenderings": { - "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} " - } - }, - "title": { - "mappings": { - "0": { - "then": "{fixme}" - } - }, - "render": "{addr:street} {addr:housenumber}" - } + "then": "Enkel toegankelijk met een gids of tijdens een activiteit" + }, + "6": { + "then": "Toegankelijk mits betaling" } + }, + "question": "Is dit gebied toegankelijk?", + "render": "De toegankelijkheid van dit gebied is: {access:description}" }, - "shortDescription": "Grb Fixup", - "title": "GRB Fixup" - }, - "maps": { - "description": "Op deze kaart kan je alle kaarten zien die OpenStreetMap kent.

Ontbreekt er een kaart, dan kan je die kaart hier ook gemakelijk aan deze kaart toevoegen.", - "shortDescription": "Een kaart met alle kaarten die OpenStreetMap kent", - "title": "Een kaart met Kaarten" - }, - "nature": { - "description": "Op deze kaart vind je informatie voor natuurliefhebbers, zoals info over het natuurgebied waar je inzit, vogelkijkhutten, informatieborden, ...", - "shortDescription": "Deze kaart bevat informatie voor natuurliefhebbers", - "title": "De Natuur in" - }, - "natuurpunt": { - "description": "Op deze kaart vind je alle natuurgebieden die Natuurpunt ter beschikking stelt", - "shortDescription": "Deze kaart toont de natuurgebieden van Natuurpunt", - "title": "Natuurgebieden" - }, - "observation_towers": { - "description": "Publieke uitkijktorens om van het panorama te genieten", - "shortDescription": "Publieke uitkijktorens om van het panorama te genieten", - "title": "Uitkijktorens" - }, - "openwindpowermap": { - "layers": { - "0": { - "name": "windturbine", - "presets": { - "0": { - "title": "windturbine" - } - }, - "title": { - "render": "windturbine" - }, - "units": { - "0": { - "applicableUnits": { - "0": { - "human": " megawatt" - }, - "1": { - "human": " kilowatt" - }, - "2": { - "human": " watt" - }, - "3": { - "human": " gigawatt" - } - } - }, - "1": { - "applicableUnits": { - "0": { - "human": " meter" - } - } - } - } - } - } - }, - "parkings": { - "description": "Deze kaart toont verschillende parkeerplekken", - "shortDescription": "Deze kaart toont verschillende parkeerplekken", - "title": "Parking" - }, - "personal": { - "description": "Stel je eigen thema samen door lagen te combineren van alle andere themas", - "title": "Persoonlijk thema" - }, - "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", - "title": "Speelplekken" - }, - "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": { - "7": { - "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!" - }, - "sport_pitches": { - "description": "Een sportveld is een ingerichte plaats met infrastructuur om een sport te beoefenen", - "shortDescription": "Deze kaart toont sportvelden", - "title": "Sportvelden" - }, - "street_lighting": { - "description": "Op deze kaart vind je alles over straatlantaarns", - "layers": { + "1": { + "mappings": { "1": { - "name": "Verlichte straten", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Deze straat is verlicht" - }, - "1": { - "then": "Deze straat is niet verlicht" - }, - "2": { - "then": "Deze straat is 's nachts verlicht" - }, - "3": { - "then": "Deze straat is 24/7 verlicht" - } - }, - "question": "Is deze straat verlicht?" - } - }, - "title": { - "render": "Verlichte straat" - } + "then": "Dit gebied wordt beheerd door Natuurpunt" }, "2": { - "name": "Alle straten", - "tagRenderings": { - "lit": { - "mappings": { - "0": { - "then": "Deze straat is verlicht" - }, - "1": { - "then": "Deze straat is niet verlicht" - }, - "2": { - "then": "Deze straat is 's nachts verlicht" - }, - "3": { - "then": "Deze straat is 24/7 verlicht" - } - }, - "question": "Is deze straat verlicht?" - } - }, - "title": { - "render": "Straat" - } + "then": "Dit gebied wordt beheerd door {operator}" + }, + "3": { + "then": "Dit gebied wordt beheerd door het Agentschap Natuur en Bos" } + }, + "question": "Wie beheert dit gebied?", + "render": "Beheer door {operator}" }, - "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" - }, - "toerisme_vlaanderen": { - "description": "Op deze kaart kan je info zien die relevant is voor toerisme, zoals:
  • Eetgelegenheden
  • CafÊs en bars
  • (Fiets)oplaadpunten
  • Fietspompen, fietserverhuur en fietswinkels
  • Uitkijktorens
  • ...
Zie je fouten op de kaart? Dan kan je zelf makkelijk aanpasingen maken, die zichtbaar zijn voor iedereen. Hiervoor dien je een gratis OpenStreetMap account voor te maken.", - "descriptionTail": "Met de steun van Toerisme Vlaanderen", - "shortDescription": "Een kaart om toeristisch relevante info op aan te duiden", - "title": "Toeristisch relevante info" - }, - "toilets": { - "description": "Een kaart met openbare toiletten", - "title": "Open Toilettenkaart" - }, - "trees": { - "description": "Breng bomen in kaart!", - "shortDescription": "Breng bomen in kaart", - "title": "Bomen" - }, - "uk_addresses": { - "description": "Draag bij aan OpenStreetMap door adresinformatie in te vullen", - "layers": { - "2": { - "description": "Adressen", - "tagRenderings": { - "uk_addresses_housenumber": { - "mappings": { - "0": { - "then": "Dit gebouw heeft geen huisnummer" - } - }, - "render": "Het huisnummer is {addr:housenumber}" - } - } + "2": { + "render": "Extra info: {description}" + }, + "3": { + "render": "Extra info via buurtnatuur.be: {description:0}" + }, + "4": { + "question": "Wat is de Nederlandstalige naam van dit gebied?", + "render": "Dit gebied heet {name:nl}" + }, + "5": { + "mappings": { + "0": { + "then": "Dit gebied heeft geen naam" } + }, + "question": "Wat is de naam van dit gebied?", + "render": "Dit gebied heet {name}" } + } }, - "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", - "shortDescription": "Een kaart met vuilnisbakken", - "title": "Vuilnisbak" + "shortDescription": "Met deze tool kan je natuur in je buurt in kaart brengen en meer informatie geven over je favoriete plekje", + "title": "Breng jouw buurtnatuur in kaart" + }, + "cafes_and_pubs": { + "description": "CafÊs, kroegen 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.", + "layers": { + "0": { + "description": "camperplaatsen", + "name": "Camperplaatsen", + "presets": { + "0": { + "description": "Voeg een nieuwe officiÃĢle camperplaats toe. Dit zijn speciaal aangeduide plaatsen waar het toegestaan is om te overnachten met een camper. Ze kunnen er uitzien als een parking, of soms eerder als een camping. Soms staan ze niet ter plaatse aangeduid, maar heeft de gemeente wel degelijk beslist dat dit een camperplaats is. Een parking voor campers waar je niet mag overnachten is gÊÊn camperplaats. ", + "title": "camperplaats" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "Hoeveel campers kunnen hier overnachten? (sla dit over als er geen duidelijk aantal plaatsen of aangeduid maximum is)", + "render": "{capacity} campers kunnen deze plaats tegelijk gebruiken" + }, + "caravansites-charge": { + "question": "Hoeveel kost deze plaats?", + "render": "Deze plaats vraagt {charge}" + }, + "caravansites-description": { + "question": "Wil je graag een algemene beschrijving toevoegen van deze plaats? (Herhaal hier niet de antwoorden op de vragen die reeds gesteld zijn. Hou het objectief - je kan je mening geven via een review)", + "render": "Meer details over deze plaats: {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "Gebruik is betalend" + }, + "1": { + "then": "Kan gratis gebruikt worden" + } + }, + "question": "Moet men betalen om deze camperplaats te gebruiken?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "Er is internettoegang" + }, + "1": { + "then": "Er is internettoegang" + } + } + }, + "caravansites-name": { + "question": "Wat is de naam van deze plaats?", + "render": "Deze plaats heet {name}" + }, + "caravansites-website": { + "render": "OfficiÃĢle website: : {website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Camper site" + } + }, + "render": "Camperplaats {name}" + } + } + }, + "shortDescription": "Vind locaties waar je de nacht kan doorbrengen met je mobilehome", + "title": "Camperplaatsen" + }, + "charging_stations": { + "shortDescription": "Een wereldwijde kaart van oplaadpunten", + "title": "Oplaadpunten" + }, + "climbing": { + "description": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, bolderzalen en klimmen in de natuur", + "descriptionTail": "De klimkaart is oorspronkelijk gemaakt door Christian Neumann op kletterspots.de.", + "layers": { + "0": { + "description": "Een klimclub of organisatie", + "name": "Klimclub", + "presets": { + "0": { + "description": "Een klimclub", + "title": "Klimclub" + }, + "1": { + "description": "Een VZW die werkt rond klimmen", + "title": "Een klimorganisatie" + } + }, + "tagRenderings": { + "climbing_club-name": { + "question": "Wat is de naam van deze klimclub?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Klimorganisatie" + } + }, + "render": "Klimclub" + } + }, + "1": { + "description": "Een klimzaal", + "name": "Klimzalen", + "tagRenderings": { + "name": { + "question": "Wat is de naam van dit Klimzaal?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Klimzaal {name}" + } + }, + "render": "Klimzaal" + } + }, + "2": { + "name": "Klimroute", + "presets": { + "0": { + "title": "Klimroute" + } + }, + "tagRenderings": { + "Difficulty": { + "question": "Hoe moeilijk is deze klimroute volgens het Franse/Belgische systeem?", + "render": "De klimmoeilijkheid is {climbing:grade:french} volgens het Franse/Belgische systeem" + }, + "Length": { + "question": "Hoe lang is deze klimroute (in meters)?", + "render": "Deze klimroute is {canonical(climbing:length)} lang" + }, + "Name": { + "mappings": { + "0": { + "then": "Deze klimroute heeft geen naam" + } + }, + "question": "Hoe heet deze klimroute?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Klimroute {name}" + } + }, + "render": "Klimroute" + } + }, + "3": { + "description": "Een klimgelegenheid", + "name": "Klimgelegenheden", + "presets": { + "0": { + "description": "Een klimgelegenheid", + "title": "Klimgelegenheid" + } + }, + "tagRenderings": { + "Rock type (crag/rock/cliff only)": { + "mappings": { + "0": { + "then": "Kalksteen" + } + } + }, + "name": { + "mappings": { + "0": { + "then": "Dit Klimgelegenheid heeft geen naam" + } + }, + "question": "Wat is de naam van dit Klimgelegenheid?", + "render": "{name}" + } + }, + "title": { + "mappings": { + "1": { + "then": "Klimsite {name}" + }, + "2": { + "then": "Klimsite" + }, + "3": { + "then": "Klimgelegenheid {name}" + } + }, + "render": "Klimgelegenheid" + } + }, + "4": { + "description": "Een klimgelegenheid?", + "name": "Klimgelegenheiden?", + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + }, + "climbing-possible": { + "mappings": { + "0": { + "then": "Klimmen is hier niet mogelijk" + }, + "1": { + "then": "Klimmen is hier niet toegelaten" + }, + "2": { + "then": "Klimmen is hier niet toegelaten" + } + } + } + }, + "title": { + "render": "Klimgelegenheid?" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "Is er een (onofficiÃĢle) website met meer informatie (b.v. met topos)?" + }, + "1": { + "mappings": { + "0": { + "then": "Een omvattend element geeft aan dat dit publiek toegangkelijk is
{_embedding_feature:access:description}" + }, + "1": { + "then": "Een omvattend element geeft aan dat een toelating nodig is om hier te klimmen
{_embedding_feature:access:description}" + } + } + }, + "4": { + "question": "Wat is de (gemiddelde) lengte van de klimroutes, in meter?", + "render": "De klimroutes zijn gemiddeld {canonical(climbing:length)} lang" + }, + "5": { + "question": "Wat is het niveau van de makkelijkste route, volgens het Franse classificatiesysteem?", + "render": "De minimale klimmoeilijkheid is {climbing:grade:french:min} volgens het Franse/Belgische systeem" + }, + "6": { + "question": "Wat is het niveau van de moeilijkste route, volgens het Franse classificatiesysteem?", + "render": "De maximale klimmoeilijkheid is {climbing:grade:french:max} volgens het Franse/Belgische systeem" + }, + "7": { + "mappings": { + "0": { + "then": "Bolderen kan hier" + }, + "1": { + "then": "Bolderen kan hier niet" + }, + "2": { + "then": "Bolderen kan hier, maar er zijn niet zoveel routes" + }, + "3": { + "then": "Er zijn hier {climbing:boulder} bolderroutes" + } + }, + "question": "Is het mogelijk om hier te bolderen?" + }, + "8": { + "mappings": { + "0": { + "then": "Toprope-klimmen kan hier" + }, + "1": { + "then": "Toprope-klimmen kan hier niet" + }, + "2": { + "then": "Er zijn hier {climbing:toprope} toprope routes" + } + }, + "question": "Is het mogelijk om hier te toprope-klimmen?" + }, + "9": { + "mappings": { + "0": { + "then": "Sportklimmen/voorklimmen kan hier" + }, + "1": { + "then": "Sportklimmen/voorklimmen kan hier niet" + }, + "2": { + "then": "Er zijn hier {climbing:sport} sportklimroutes/voorklimroutes" + } + }, + "question": "Is het mogelijk om hier te sportklimmen/voorklimmen op reeds aangebrachte haken?" + }, + "10": { + "mappings": { + "0": { + "then": "Traditioneel klimmen kan hier" + }, + "1": { + "then": "Traditioneel klimmen kan hier niet" + }, + "2": { + "then": "Er zijn hier {climbing:traditional} traditionele klimroutes" + } + }, + "question": "Is het mogelijk om hier traditioneel te klimmen?
(Dit is klimmen met klemblokjes en friends)" + }, + "11": { + "mappings": { + "0": { + "then": "Er is een snelklimmuur voor speed climbing" + }, + "1": { + "then": "Er is geen snelklimmuur voor speed climbing" + }, + "2": { + "then": "Er zijn hier {climbing:speed} snelklimmuren" + } + }, + "question": "Is er een snelklimmuur (speed climbing)?" + } + }, + "units+": { + "0": { + "applicableUnits": { + "0": { + "human": " meter" + }, + "1": { + "human": " voet" + } + } + } + } + }, + "title": "Open klimkaart" + }, + "cycle_infra": { + "description": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken. Gemaakt tijdens #osoc21.", + "shortDescription": "Een kaart waar je info over de fietsinfrastructuur kan bekijken en bewerken.", + "title": "Fietsinfrastructuur" + }, + "cyclestreets": { + "description": "Een fietsstraat is een straat waar
  • automobilisten geen fietsers mogen inhalen
  • Er een maximumsnelheid van 30km/u geldt
  • Fietsers gemotoriseerde voertuigen links mogen inhalen
  • Fietsers nog steeds voorrang aan rechts moeten verlenen - ook aan auto's en voetgangers op het zebrapad


Op deze open kaart kan je alle gekende fietsstraten zien en kan je ontbrekende fietsstraten aanduiden. Om de kaart aan te passen, moet je je aanmelden met OpenStreetMap en helemaal inzoomen tot straatniveau. ", + "layers": { + "0": { + "description": "Een fietsstraat is een straat waar gemotoriseerd verkeer een fietser niet mag inhalen.", + "name": "Fietsstraten" + }, + "1": { + "description": "Deze straat wordt binnenkort een fietsstraat", + "name": "Toekomstige fietsstraat", + "title": { + "mappings": { + "0": { + "then": "{name} wordt fietsstraat" + } + }, + "render": "Toekomstige fietsstraat" + } + }, + "2": { + "description": "Laag waar je een straat als fietsstraat kan markeren", + "name": "Alle straten", + "title": { + "render": "Straat" + } + } + }, + "overrideAll": { + "tagRenderings+": { + "0": { + "mappings": { + "0": { + "then": "Deze straat is een fietsstraat (en dus zone 30)" + }, + "1": { + "then": "Deze straat is een fietsstraat" + }, + "2": { + "then": "Deze straat wordt binnenkort een fietsstraat" + }, + "3": { + "then": "Deze straat is geen fietsstraat" + } + }, + "question": "Is de straat {name} een fietsstraat?" + }, + "1": { + "question": "Wanneer wordt deze straat een fietsstraat?", + "render": "Deze straat wordt fietsstraat op {cyclestreet:start_date}" + } + } + }, + "shortDescription": "Een kaart met alle gekende fietsstraten", + "title": "Fietsstraten" + }, + "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.", + "title": "Cyclofix - een open kaart voor fietsers" + }, + "drinking_water": { + "description": "Op deze kaart staan publiek toegankelijke drinkwaterpunten en kan je makkelijk een nieuw drinkwaterpunt toevoegen", + "title": "Drinkwaterpunten" + }, + "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": { + "1": { + "override": { + "name": "Straten zonder etymologische informatie" + } + }, + "2": { + "override": { + "name": "Parken en bossen zonder etymologische informatie" + } + } + }, + "shortDescription": "Wat is de oorsprong van een plaatsnaam?", + "title": "Open Etymology-kaart" + }, + "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.", + "layers": { + "0": { + "description": "Geveltuintjes", + "name": "Geveltuintjes", + "presets": { + "0": { + "description": "Voeg geveltuintje toe", + "title": "geveltuintje" + } + }, + "tagRenderings": { + "facadegardens-description": { + "question": "Aanvullende omschrijving van de tuin (indien nodig, en voor zover nog niet omschreven hierboven)", + "render": "Meer details: {description}" + }, + "facadegardens-direction": { + "question": "Hoe is de tuin georiÃĢnteerd?", + "render": "OriÃĢntatie: {direction} (waarbij 0=N en 90=O)" + }, + "facadegardens-edible": { + "mappings": { + "0": { + "then": "Er staan eetbare planten" + }, + "1": { + "then": "Er staan geen eetbare planten" + } + }, + "question": "Staan er eetbare planten?" + }, + "facadegardens-plants": { + "mappings": { + "0": { + "then": "Er staat een klimplant" + }, + "1": { + "then": "Er staan bloeiende planten" + }, + "2": { + "then": "Er staan struiken" + }, + "3": { + "then": "Er staan bodembedekkers" + } + }, + "question": "Wat voor planten staan hier?" + }, + "facadegardens-rainbarrel": { + "mappings": { + "0": { + "then": "Er is een regenton" + }, + "1": { + "then": "Er is geen regenton" + } + }, + "question": "Is er een regenton voorzien bij het tuintje?" + }, + "facadegardens-start_date": { + "question": "Wanneer werd de tuin aangelegd? (vul gewoon een jaartal in)", + "render": "Aanlegdatum van de tuin: {start_date}" + }, + "facadegardens-sunshine": { + "mappings": { + "0": { + "then": "Het is een volle zon tuintje" + }, + "1": { + "then": "Het is een halfschaduw tuintje" + }, + "2": { + "then": "Het is een schaduw tuintje" + } + }, + "question": "Ligt de tuin in zon/half schaduw of schaduw?" + } + }, + "title": { + "render": "Geveltuintje" + } + } + }, + "shortDescription": "Deze kaart toont geveltuintjes met foto's en bruikbare info over oriÃĢntatie, zonlicht en planttypes.", + "title": "Straatgeveltuintjes" + }, + "food": { + "description": "Restaurants en fast food", + "title": "Eetgelegenheden" + }, + "fritures": { + "description": "Op deze kaart vind je je favoriete frituur!", + "layers": { + "0": { + "override": { + "name": "Frituren" + } + } + }, + "title": "Friturenkaart" + }, + "fruit_trees": { + "description": "Op deze kaart vindt je boomgaarden en fruitbomen", + "layers": { + "0": { + "name": "Boomgaarden", + "presets": { + "0": { + "description": "Voeg een boomgaard toe (als punt - omtrek nog te tekenen)", + "title": "Boomgaard" + } + }, + "title": { + "render": "Boomgaard" + } + }, + "1": { + "description": "Een boom", + "name": "Boom", + "presets": { + "0": { + "description": "Voeg hier een boom toe", + "title": "Boom" + } + }, + "tagRenderings": { + "fruitboom-description": { + "question": "Welke beschrijving past bij deze boom?", + "render": "Beschrijving: {description}" + }, + "fruitboom-ref": { + "question": "Is er een refernetienummer?", + "render": "Referentienummer: {ref}" + }, + "fruitboom-species:nl": { + "question": "Wat is de soort van deze boom (in het Nederlands)?", + "render": "De soort is {species:nl}" + }, + "fruitboom-taxon": { + "question": "Wat is het taxon (ras) van deze boom?", + "render": "Het ras (taxon) van deze boom is {taxon}" + } + }, + "title": { + "render": "Boom" + } + } + }, + "shortDescription": "Boomgaarden en fruitbomen", + "title": "Open Boomgaardenkaart" + }, + "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.", + "title": "Witte Fietsen" + }, + "grb": { + "description": "GRB Fixup", + "layers": { + "3": { + "description": "Dit gebouw heeft een foutmelding", + "name": "Fixmes op gebouwen", + "tagRenderings": { + "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} " + } + }, + "title": { + "mappings": { + "0": { + "then": "{fixme}" + } + }, + "render": "{addr:street} {addr:housenumber}" + } + }, + "5": { + "description": "Dit gebouw heeft een foutmelding", + "name": "Fixmes op gebouwen", + "tagRenderings": { + "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} " + } + }, + "title": { + "mappings": { + "0": { + "then": "{fixme}" + } + }, + "render": "{addr:street} {addr:housenumber}" + } + } + }, + "shortDescription": "Grb Fixup", + "title": "GRB Fixup" + }, + "maps": { + "description": "Op deze kaart kan je alle kaarten zien die OpenStreetMap kent.

Ontbreekt er een kaart, dan kan je die kaart hier ook gemakelijk aan deze kaart toevoegen.", + "shortDescription": "Een kaart met alle kaarten die OpenStreetMap kent", + "title": "Een kaart met Kaarten" + }, + "nature": { + "description": "Op deze kaart vind je informatie voor natuurliefhebbers, zoals info over het natuurgebied waar je inzit, vogelkijkhutten, informatieborden, ...", + "shortDescription": "Deze kaart bevat informatie voor natuurliefhebbers", + "title": "De Natuur in" + }, + "natuurpunt": { + "description": "Op deze kaart vind je alle natuurgebieden die Natuurpunt ter beschikking stelt", + "shortDescription": "Deze kaart toont de natuurgebieden van Natuurpunt", + "title": "Natuurgebieden" + }, + "observation_towers": { + "description": "Publieke uitkijktorens om van het panorama te genieten", + "shortDescription": "Publieke uitkijktorens om van het panorama te genieten", + "title": "Uitkijktorens" + }, + "openwindpowermap": { + "layers": { + "0": { + "name": "windturbine", + "presets": { + "0": { + "title": "windturbine" + } + }, + "title": { + "render": "windturbine" + }, + "units": { + "0": { + "applicableUnits": { + "0": { + "human": " megawatt" + }, + "1": { + "human": " kilowatt" + }, + "2": { + "human": " watt" + }, + "3": { + "human": " gigawatt" + } + } + }, + "1": { + "applicableUnits": { + "0": { + "human": " meter" + } + } + } + } + } } + }, + "parkings": { + "description": "Deze kaart toont verschillende parkeerplekken", + "shortDescription": "Deze kaart toont verschillende parkeerplekken", + "title": "Parking" + }, + "personal": { + "description": "Stel je eigen thema samen door lagen te combineren van alle andere themas", + "title": "Persoonlijk thema" + }, + "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", + "title": "Speelplekken" + }, + "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": { + "7": { + "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!" + }, + "sport_pitches": { + "description": "Een sportveld is een ingerichte plaats met infrastructuur om een sport te beoefenen", + "shortDescription": "Deze kaart toont sportvelden", + "title": "Sportvelden" + }, + "street_lighting": { + "description": "Op deze kaart vind je alles over straatlantaarns", + "layers": { + "1": { + "name": "Verlichte straten", + "tagRenderings": { + "lit": { + "mappings": { + "0": { + "then": "Deze straat is verlicht" + }, + "1": { + "then": "Deze straat is niet verlicht" + }, + "2": { + "then": "Deze straat is 's nachts verlicht" + }, + "3": { + "then": "Deze straat is 24/7 verlicht" + } + }, + "question": "Is deze straat verlicht?" + } + }, + "title": { + "render": "Verlichte straat" + } + }, + "2": { + "name": "Alle straten", + "tagRenderings": { + "lit": { + "mappings": { + "0": { + "then": "Deze straat is verlicht" + }, + "1": { + "then": "Deze straat is niet verlicht" + }, + "2": { + "then": "Deze straat is 's nachts verlicht" + }, + "3": { + "then": "Deze straat is 24/7 verlicht" + } + }, + "question": "Is deze straat verlicht?" + } + }, + "title": { + "render": "Straat" + } + } + }, + "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" + }, + "toerisme_vlaanderen": { + "description": "Op deze kaart kan je info zien die relevant is voor toerisme, zoals:
  • Eetgelegenheden
  • CafÊs en bars
  • (Fiets)oplaadpunten
  • Fietspompen, fietserverhuur en fietswinkels
  • Uitkijktorens
  • ...
Zie je fouten op de kaart? Dan kan je zelf makkelijk aanpasingen maken, die zichtbaar zijn voor iedereen. Hiervoor dien je een gratis OpenStreetMap account voor te maken.", + "descriptionTail": "Met de steun van Toerisme Vlaanderen", + "shortDescription": "Een kaart om toeristisch relevante info op aan te duiden", + "title": "Toeristisch relevante info" + }, + "toilets": { + "description": "Een kaart met openbare toiletten", + "title": "Open Toilettenkaart" + }, + "trees": { + "description": "Breng bomen in kaart!", + "shortDescription": "Breng bomen in kaart", + "title": "Bomen" + }, + "uk_addresses": { + "description": "Draag bij aan OpenStreetMap door adresinformatie in te vullen", + "layers": { + "2": { + "description": "Adressen", + "tagRenderings": { + "uk_addresses_housenumber": { + "mappings": { + "0": { + "then": "Dit gebouw heeft geen huisnummer" + } + }, + "render": "Het huisnummer is {addr:housenumber}" + } + } + } + } + }, + "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", + "shortDescription": "Een kaart met vuilnisbakken", + "title": "Vuilnisbak" + } } \ No newline at end of file diff --git a/langs/themes/pl.json b/langs/themes/pl.json index 48289dbab..afaf282d9 100644 --- a/langs/themes/pl.json +++ b/langs/themes/pl.json @@ -1,24 +1,24 @@ { - "aed": { - "description": "Na tej mapie moÅŧna znaleÅēć i oznaczyć defibrylatory w okolicy", - "title": "OtwÃŗrz mapę AED" - }, - "artwork": { - "title": "OtwÃŗrz mapę dzieł sztuki" - }, - "ghostbikes": { - "title": "Duch roweru" - }, - "surveillance": { - "description": "Na tej otwartej mapie moÅŧna znaleÅēć kamery monitoringu.", - "shortDescription": "Kamery monitorujące i inne środki nadzoru" - }, - "toilets": { - "description": "Mapa toalet publicznych", - "title": "Mapa otwartych toalet" - }, - "trees": { - "shortDescription": "Sporządzić mapę wszystkich drzew", - "title": "Drzewa" - } + "aed": { + "description": "Na tej mapie moÅŧna znaleÅēć i oznaczyć defibrylatory w okolicy", + "title": "OtwÃŗrz mapę AED" + }, + "artwork": { + "title": "OtwÃŗrz mapę dzieł sztuki" + }, + "ghostbikes": { + "title": "Duch roweru" + }, + "surveillance": { + "description": "Na tej otwartej mapie moÅŧna znaleÅēć kamery monitoringu.", + "shortDescription": "Kamery monitorujące i inne środki nadzoru" + }, + "toilets": { + "description": "Mapa toalet publicznych", + "title": "Mapa otwartych toalet" + }, + "trees": { + "shortDescription": "Sporządzić mapę wszystkich drzew", + "title": "Drzewa" + } } \ No newline at end of file diff --git a/langs/themes/pt_BR.json b/langs/themes/pt_BR.json index 6c7de8bfd..2116e8d9d 100644 --- a/langs/themes/pt_BR.json +++ b/langs/themes/pt_BR.json @@ -1,172 +1,172 @@ { - "aed": { - "description": "Neste mapa, pode-se encontrar e marcar desfibriladores prÃŗximos", - "title": "Abrir mapa AED" - }, - "benches": { - "shortDescription": "Um mapa de bancadas", - "title": "Bancadas" - }, - "bicyclelib": { - "title": "Bibliotecas de bicicletas" - }, - "bookcases": { - "title": "Abrir Mapa de Estantes" - }, - "campersite": { - "layers": { - "0": { - "description": "Locais de acampamento", - "name": "Locais de acampamento", - "presets": { - "0": { - "title": "local de acampamento" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "Quantos campistas podem ficar aqui? (pule se nÃŖo houver um nÃēmero Ãŗbvio de vagas ou veículos permitidos)", - "render": "{capacity} campistas podem usar este lugar ao mesmo tempo" - }, - "caravansites-charge": { - "question": "Quanto este lugar cobra?", - "render": "Este lugar cobra {charge}" - }, - "caravansites-description": { - "render": "Mais detalhes sobre este lugar: {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "VocÃĒ precisa pagar para usar" - }, - "1": { - "then": "Pode ser usado de graça" - } - }, - "question": "Este lugar cobra alguma taxa?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "HÃĄ acesso à internet" - }, - "1": { - "then": "HÃĄ acesso à Internet" - }, - "2": { - "then": "NÃŖo hÃĄ acesso à internet" - } - }, - "question": "Este lugar fornece acesso a internet?" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "VocÃĒ precisa pagar um extra pelo acesso à internet" - }, - "1": { - "then": "VocÃĒ nÃŖo precisa pagar um extra pelo acesso à internet" - } - }, - "question": "VocÃĒ tem que pagar pelo acesso à internet?" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "Sim, hÃĄ alguns pontos para aluguel a longo prazo, mas vocÃĒ tambÊm pode ficar em uma base diÃĄria" - }, - "1": { - "then": "NÃŖo, nÃŖo hÃĄ hÃŗspedes permanentes aqui" - } - }, - "question": "Este lugar oferece vagas para aluguel a longo prazo?" - }, - "caravansites-name": { - "question": "Qual o nome deste lugar?", - "render": "Este lugar Ê chamado de {name}" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "Este local tem uma estaçÃŖo de aterro sanitÃĄrio" - }, - "1": { - "then": "Este local nÃŖo tem uma estaçÃŖo de aterro sanitÃĄrio" - } - }, - "question": "Este local tem uma estaçÃŖo de aterro sanitÃĄrio?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "Este lugar tem banheiros" - }, - "1": { - "then": "Este lugar nÃŖo tem banheiros" - } - }, - "question": "Este lugar tem banheiros?" - }, - "caravansites-website": { - "question": "Este lugar tem um website?", - "render": "Site oficial: {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "Locais de acampamento sem nome" - } - }, - "render": "Local de acampamento {name}" - } - }, - "1": { - "description": "EstaçÃĩes de despejo sanitÃĄrio", - "name": "EstaçÃĩes de despejo sanitÃĄrio", - "tagRenderings": { - "dumpstations-charge": { - "question": "Quanto este lugar cobra?", - "render": "Este lugar cobra {charge}" - }, - "dumpstations-fee": { - "mappings": { - "0": { - "then": "VocÃĒ precisa pagar pelo uso" - }, - "1": { - "then": "Pode ser usado gratuitamente" - } - }, - "question": "Este lugar cobra alguma taxa?" - }, - "dumpstations-waterpoint": { - "mappings": { - "0": { - "then": "Este lugar tem um ponto de ÃĄgua" - }, - "1": { - "then": "Este lugar nÃŖo tem um ponto de ÃĄgua" - } - }, - "question": "Este lugar tem um ponto de ÃĄgua?" - } - }, - "title": { - "mappings": { - "0": { - "then": "EstaçÃŖo de despejo" - } - }, - "render": "EstaçÃŖo de despejo {nome}" - } - } + "aed": { + "description": "Neste mapa, pode-se encontrar e marcar desfibriladores prÃŗximos", + "title": "Abrir mapa AED" + }, + "benches": { + "shortDescription": "Um mapa de bancadas", + "title": "Bancadas" + }, + "bicyclelib": { + "title": "Bibliotecas de bicicletas" + }, + "bookcases": { + "title": "Abrir Mapa de Estantes" + }, + "campersite": { + "layers": { + "0": { + "description": "Locais de acampamento", + "name": "Locais de acampamento", + "presets": { + "0": { + "title": "local de acampamento" + } }, - "shortDescription": "Encontre locais para passar a noite com o seu campista", - "title": "Locais de acampamento" + "tagRenderings": { + "caravansites-capacity": { + "question": "Quantos campistas podem ficar aqui? (pule se nÃŖo houver um nÃēmero Ãŗbvio de vagas ou veículos permitidos)", + "render": "{capacity} campistas podem usar este lugar ao mesmo tempo" + }, + "caravansites-charge": { + "question": "Quanto este lugar cobra?", + "render": "Este lugar cobra {charge}" + }, + "caravansites-description": { + "render": "Mais detalhes sobre este lugar: {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "VocÃĒ precisa pagar para usar" + }, + "1": { + "then": "Pode ser usado de graça" + } + }, + "question": "Este lugar cobra alguma taxa?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "HÃĄ acesso à internet" + }, + "1": { + "then": "HÃĄ acesso à Internet" + }, + "2": { + "then": "NÃŖo hÃĄ acesso à internet" + } + }, + "question": "Este lugar fornece acesso a internet?" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "VocÃĒ precisa pagar um extra pelo acesso à internet" + }, + "1": { + "then": "VocÃĒ nÃŖo precisa pagar um extra pelo acesso à internet" + } + }, + "question": "VocÃĒ tem que pagar pelo acesso à internet?" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "Sim, hÃĄ alguns pontos para aluguel a longo prazo, mas vocÃĒ tambÊm pode ficar em uma base diÃĄria" + }, + "1": { + "then": "NÃŖo, nÃŖo hÃĄ hÃŗspedes permanentes aqui" + } + }, + "question": "Este lugar oferece vagas para aluguel a longo prazo?" + }, + "caravansites-name": { + "question": "Qual o nome deste lugar?", + "render": "Este lugar Ê chamado de {name}" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "Este local tem uma estaçÃŖo de aterro sanitÃĄrio" + }, + "1": { + "then": "Este local nÃŖo tem uma estaçÃŖo de aterro sanitÃĄrio" + } + }, + "question": "Este local tem uma estaçÃŖo de aterro sanitÃĄrio?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "Este lugar tem banheiros" + }, + "1": { + "then": "Este lugar nÃŖo tem banheiros" + } + }, + "question": "Este lugar tem banheiros?" + }, + "caravansites-website": { + "question": "Este lugar tem um website?", + "render": "Site oficial: {website}" + } + }, + "title": { + "mappings": { + "0": { + "then": "Locais de acampamento sem nome" + } + }, + "render": "Local de acampamento {name}" + } + }, + "1": { + "description": "EstaçÃĩes de despejo sanitÃĄrio", + "name": "EstaçÃĩes de despejo sanitÃĄrio", + "tagRenderings": { + "dumpstations-charge": { + "question": "Quanto este lugar cobra?", + "render": "Este lugar cobra {charge}" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "VocÃĒ precisa pagar pelo uso" + }, + "1": { + "then": "Pode ser usado gratuitamente" + } + }, + "question": "Este lugar cobra alguma taxa?" + }, + "dumpstations-waterpoint": { + "mappings": { + "0": { + "then": "Este lugar tem um ponto de ÃĄgua" + }, + "1": { + "then": "Este lugar nÃŖo tem um ponto de ÃĄgua" + } + }, + "question": "Este lugar tem um ponto de ÃĄgua?" + } + }, + "title": { + "mappings": { + "0": { + "then": "EstaçÃŖo de despejo" + } + }, + "render": "EstaçÃŖo de despejo {nome}" + } + } }, - "ghostbikes": { - "title": "Bicicleta fantasma" - } + "shortDescription": "Encontre locais para passar a noite com o seu campista", + "title": "Locais de acampamento" + }, + "ghostbikes": { + "title": "Bicicleta fantasma" + } } \ No newline at end of file diff --git a/langs/themes/ru.json b/langs/themes/ru.json index 692300526..504e3b9cd 100644 --- a/langs/themes/ru.json +++ b/langs/themes/ru.json @@ -1,511 +1,511 @@ { - "aed": { - "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ вŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ĐŊĐ°ĐšŅ‚и и ĐžŅ‚ĐŧĐĩŅ‚иŅ‚ŅŒ ĐąĐģиĐļĐ°ĐšŅˆĐ¸Đĩ Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€Ņ‹", - "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° АВД (АвŅ‚ĐžĐŧĐ°Ņ‚иСиŅ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Ņ… вĐŊĐĩŅˆĐŊиŅ… Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€ĐžĐ˛)" - }, - "artwork": { - "description": "ДобŅ€Đž ĐŋĐžĐļĐ°ĐģОваŅ‚ŅŒ ĐŊĐ° Open Artwork Map, ĐēĐ°Ņ€Ņ‚Ņƒ ŅŅ‚Đ°Ņ‚ŅƒĐš, ĐąŅŽŅŅ‚Ов, ĐŗŅ€Đ°Ņ„Ņ„иŅ‚и и Đ´Ņ€ŅƒĐŗиŅ… ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиК иŅĐēŅƒŅŅŅ‚ва ĐŋĐž вŅĐĩĐŧŅƒ ĐŧиŅ€Ņƒ", - "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиК иŅĐēŅƒŅŅŅ‚ва" - }, - "benches": { - "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ ĐŋĐžĐēаСаĐŊŅ‹ вŅĐĩ ŅĐēĐ°ĐŧĐĩĐšĐēи, СаĐŋиŅĐ°ĐŊĐŊŅ‹Đĩ в OpenStreetMap: ĐžŅ‚Đ´ĐĩĐģŅŒĐŊŅ‹Đĩ ŅĐēĐ°ĐŧĐĩĐšĐēи, Đ° Ņ‚Đ°ĐēĐļĐĩ ŅĐēĐ°ĐŧĐĩĐšĐēи, ĐžŅ‚ĐŊĐžŅŅŅ‰Đ¸ĐĩŅŅ Đē ĐžŅŅ‚Đ°ĐŊОвĐēĐ°Đŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ° иĐģи ĐŊавĐĩŅĐ°Đŧ. ИĐŧĐĩŅ ŅƒŅ‡Ņ‘Ņ‚ĐŊŅƒŅŽ СаĐŋиŅŅŒ OpenStreetMap, вŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ĐŊĐ°ĐŊĐžŅĐ¸Ņ‚ŅŒ ĐŊĐ° ĐēĐ°Ņ€Ņ‚Ņƒ ĐŊОвŅ‹Đĩ ŅĐēĐ°ĐŧĐĩĐšĐēи иĐģи Ņ€ĐĩĐ´Đ°ĐēŅ‚иŅ€ĐžĐ˛Đ°Ņ‚ŅŒ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ Đž ŅŅƒŅ‰ĐĩŅŅ‚вŅƒŅŽŅ‰Đ¸Ņ… ŅĐēĐ°ĐŧĐĩĐšĐēĐ°Ņ….", - "shortDescription": "КаŅ€Ņ‚Đ° ŅĐēĐ°ĐŧĐĩĐĩĐē", - "title": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи" - }, - "bicyclelib": { - "description": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ° - ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž, ĐŗĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐŧĐžĐļĐŊĐž вСŅŅ‚ŅŒ ĐŊĐ° вŅ€ĐĩĐŧŅ, Ņ‡Đ°ŅŅ‚Đž Са ĐŊĐĩйОĐģŅŒŅˆŅƒŅŽ ĐĩĐļĐĩĐŗОдĐŊŅƒŅŽ ĐŋĐģĐ°Ņ‚Ņƒ. ПŅ€Đ¸ĐŧĐĩŅ€ĐžĐŧ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ ŅĐ˛ĐģŅŅŽŅ‚ŅŅ йийĐģиОŅ‚ĐĩĐēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš, Ņ‡Ņ‚Đž ĐŋОСвОĐģŅĐĩŅ‚ иĐŧ ŅĐŧĐĩĐŊиŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ ĐŊĐ° йОĐģŅŒŅˆĐ¸Đš, ĐēĐžĐŗĐ´Đ° ĐžĐŊи ĐŋĐĩŅ€ĐĩŅ€Đ°ŅŅ‚Đ°ŅŽŅ‚ ŅĐ˛ĐžĐš ĐŊŅ‹ĐŊĐĩŅˆĐŊиК вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´", - "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đĩ йийĐģиОŅ‚ĐĩĐēи" - }, - "bookcases": { - "description": "ОбŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ - ŅŅ‚Đž ĐŊĐĩйОĐģŅŒŅˆĐžĐš ŅƒĐģиŅ‡ĐŊŅ‹Đš ŅˆĐēĐ°Ņ„, ĐēĐžŅ€ĐžĐąĐēĐ°, ŅŅ‚Đ°Ņ€Ņ‹Đš Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐŊŅ‹Đš Đ°ĐŋĐŋĐ°Ņ€Đ°Ņ‚ иĐģи Đ´Ņ€ŅƒĐŗиĐĩ ĐŋŅ€ĐĩĐ´ĐŧĐĩŅ‚Ņ‹, ĐŗĐ´Đĩ Ņ…Ņ€Đ°ĐŊŅŅ‚ŅŅ ĐēĐŊиĐŗи. КаĐļĐ´Ņ‹Đš ĐŧĐžĐļĐĩŅ‚ ĐŋĐžĐģĐžĐļиŅ‚ŅŒ иĐģи вСŅŅ‚ŅŒ ĐēĐŊиĐŗŅƒ. ĐĻĐĩĐģŅŒ ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Ņ‹ - ŅĐžĐąŅ€Đ°Ņ‚ŅŒ вŅĐĩ ŅŅ‚и ĐēĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹. ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ОйĐŊĐ°Ņ€ŅƒĐļиŅ‚ŅŒ ĐŊОвŅ‹Đĩ ĐēĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹ ĐŋОйĐģиСОŅŅ‚и и, иĐŧĐĩŅ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊŅ‹Đš Đ°ĐēĐēĐ°ŅƒĐŊŅ‚ OpenStreetMap, ĐąŅ‹ŅŅ‚Ņ€Đž дОйавиŅ‚ŅŒ ŅĐ˛ĐžĐ¸ ĐģŅŽĐąĐ¸ĐŧŅ‹Đĩ ĐēĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹.", - "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° ĐēĐŊиĐļĐŊŅ‹Ņ… ŅˆĐēĐ°Ņ„Ов" - }, - "campersite": { - "description": "На ŅŅ‚ĐžĐŧ ŅĐ°ĐšŅ‚Đĩ ŅĐžĐąŅ€Đ°ĐŊŅ‹ вŅĐĩ ĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅ‹Đĩ ĐŧĐĩŅŅ‚Đ° ĐžŅŅ‚Đ°ĐŊОвĐēи ĐēĐĩĐŧĐŋĐĩŅ€ĐžĐ˛ и ĐŧĐĩŅŅ‚Đ°, ĐŗĐ´Đĩ ĐŧĐžĐļĐŊĐž ŅĐąŅ€ĐžŅĐ¸Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ и Ņ‡ĐĩŅ€ĐŊŅƒŅŽ вОдŅƒ. ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ дОйавиŅ‚ŅŒ ĐŋОдŅ€ĐžĐąĐŊŅƒŅŽ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ Đž ĐŋŅ€ĐĩĐ´ĐžŅŅ‚авĐģŅĐĩĐŧŅ‹Ņ… ŅƒŅĐģŅƒĐŗĐ°Ņ… и иŅ… ŅŅ‚ОиĐŧĐžŅŅ‚и. ДобавĐģŅŅ‚ŅŒ Ņ„ĐžŅ‚ĐžĐŗŅ€Đ°Ņ„ии и ĐžŅ‚СŅ‹Đ˛Ņ‹. Đ­Ņ‚Đž вĐĩĐą-ŅĐ°ĐšŅ‚ и вĐĩĐą-ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩ. ДаĐŊĐŊŅ‹Đĩ Ņ…Ņ€Đ°ĐŊŅŅ‚ŅŅ в OpenStreetMap, ĐŋĐžŅŅ‚ĐžĐŧŅƒ ĐžĐŊи ĐąŅƒĐ´ŅƒŅ‚ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊŅ‹Đŧи вŅĐĩĐŗĐ´Đ° и ĐŧĐžĐŗŅƒŅ‚ ĐąŅ‹Ņ‚ŅŒ ĐŋОвŅ‚ĐžŅ€ĐŊĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊŅ‹ ĐģŅŽĐąŅ‹Đŧ ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩĐŧ.", - "layers": { + "aed": { + "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ вŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ĐŊĐ°ĐšŅ‚и и ĐžŅ‚ĐŧĐĩŅ‚иŅ‚ŅŒ ĐąĐģиĐļĐ°ĐšŅˆĐ¸Đĩ Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€Ņ‹", + "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° АВД (АвŅ‚ĐžĐŧĐ°Ņ‚иСиŅ€ĐžĐ˛Đ°ĐŊĐŊŅ‹Ņ… вĐŊĐĩŅˆĐŊиŅ… Đ´ĐĩŅ„ийŅ€Đ¸ĐģĐģŅŅ‚ĐžŅ€ĐžĐ˛)" + }, + "artwork": { + "description": "ДобŅ€Đž ĐŋĐžĐļĐ°ĐģОваŅ‚ŅŒ ĐŊĐ° Open Artwork Map, ĐēĐ°Ņ€Ņ‚Ņƒ ŅŅ‚Đ°Ņ‚ŅƒĐš, ĐąŅŽŅŅ‚Ов, ĐŗŅ€Đ°Ņ„Ņ„иŅ‚и и Đ´Ņ€ŅƒĐŗиŅ… ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиК иŅĐēŅƒŅŅŅ‚ва ĐŋĐž вŅĐĩĐŧŅƒ ĐŧиŅ€Ņƒ", + "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° ĐŋŅ€ĐžĐ¸ĐˇĐ˛ĐĩĐ´ĐĩĐŊиК иŅĐēŅƒŅŅŅ‚ва" + }, + "benches": { + "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ ĐŋĐžĐēаСаĐŊŅ‹ вŅĐĩ ŅĐēĐ°ĐŧĐĩĐšĐēи, СаĐŋиŅĐ°ĐŊĐŊŅ‹Đĩ в OpenStreetMap: ĐžŅ‚Đ´ĐĩĐģŅŒĐŊŅ‹Đĩ ŅĐēĐ°ĐŧĐĩĐšĐēи, Đ° Ņ‚Đ°ĐēĐļĐĩ ŅĐēĐ°ĐŧĐĩĐšĐēи, ĐžŅ‚ĐŊĐžŅŅŅ‰Đ¸ĐĩŅŅ Đē ĐžŅŅ‚Đ°ĐŊОвĐēĐ°Đŧ ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊĐžĐŗĐž Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚Đ° иĐģи ĐŊавĐĩŅĐ°Đŧ. ИĐŧĐĩŅ ŅƒŅ‡Ņ‘Ņ‚ĐŊŅƒŅŽ СаĐŋиŅŅŒ OpenStreetMap, вŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ĐŊĐ°ĐŊĐžŅĐ¸Ņ‚ŅŒ ĐŊĐ° ĐēĐ°Ņ€Ņ‚Ņƒ ĐŊОвŅ‹Đĩ ŅĐēĐ°ĐŧĐĩĐšĐēи иĐģи Ņ€ĐĩĐ´Đ°ĐēŅ‚иŅ€ĐžĐ˛Đ°Ņ‚ŅŒ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ Đž ŅŅƒŅ‰ĐĩŅŅ‚вŅƒŅŽŅ‰Đ¸Ņ… ŅĐēĐ°ĐŧĐĩĐšĐēĐ°Ņ….", + "shortDescription": "КаŅ€Ņ‚Đ° ŅĐēĐ°ĐŧĐĩĐĩĐē", + "title": "ĐĄĐēĐ°ĐŧĐĩĐšĐēи" + }, + "bicyclelib": { + "description": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊĐ°Ņ йийĐģиОŅ‚ĐĩĐēĐ° - ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž, ĐŗĐ´Đĩ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´Ņ‹ ĐŧĐžĐļĐŊĐž вСŅŅ‚ŅŒ ĐŊĐ° вŅ€ĐĩĐŧŅ, Ņ‡Đ°ŅŅ‚Đž Са ĐŊĐĩйОĐģŅŒŅˆŅƒŅŽ ĐĩĐļĐĩĐŗОдĐŊŅƒŅŽ ĐŋĐģĐ°Ņ‚Ņƒ. ПŅ€Đ¸ĐŧĐĩŅ€ĐžĐŧ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиŅ ŅĐ˛ĐģŅŅŽŅ‚ŅŅ йийĐģиОŅ‚ĐĩĐēи вĐĩĐģĐžŅĐ¸ĐŋĐĩдОв Đ´ĐģŅ Đ´ĐĩŅ‚ĐĩĐš, Ņ‡Ņ‚Đž ĐŋОСвОĐģŅĐĩŅ‚ иĐŧ ŅĐŧĐĩĐŊиŅ‚ŅŒ вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ ĐŊĐ° йОĐģŅŒŅˆĐ¸Đš, ĐēĐžĐŗĐ´Đ° ĐžĐŊи ĐŋĐĩŅ€ĐĩŅ€Đ°ŅŅ‚Đ°ŅŽŅ‚ ŅĐ˛ĐžĐš ĐŊŅ‹ĐŊĐĩŅˆĐŊиК вĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´", + "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ĐŊŅ‹Đĩ йийĐģиОŅ‚ĐĩĐēи" + }, + "bookcases": { + "description": "ОбŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Đš ĐēĐŊиĐļĐŊŅ‹Đš ŅˆĐēĐ°Ņ„ - ŅŅ‚Đž ĐŊĐĩйОĐģŅŒŅˆĐžĐš ŅƒĐģиŅ‡ĐŊŅ‹Đš ŅˆĐēĐ°Ņ„, ĐēĐžŅ€ĐžĐąĐēĐ°, ŅŅ‚Đ°Ņ€Ņ‹Đš Ņ‚ĐĩĐģĐĩŅ„ĐžĐŊĐŊŅ‹Đš Đ°ĐŋĐŋĐ°Ņ€Đ°Ņ‚ иĐģи Đ´Ņ€ŅƒĐŗиĐĩ ĐŋŅ€ĐĩĐ´ĐŧĐĩŅ‚Ņ‹, ĐŗĐ´Đĩ Ņ…Ņ€Đ°ĐŊŅŅ‚ŅŅ ĐēĐŊиĐŗи. КаĐļĐ´Ņ‹Đš ĐŧĐžĐļĐĩŅ‚ ĐŋĐžĐģĐžĐļиŅ‚ŅŒ иĐģи вСŅŅ‚ŅŒ ĐēĐŊиĐŗŅƒ. ĐĻĐĩĐģŅŒ ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Ņ‹ - ŅĐžĐąŅ€Đ°Ņ‚ŅŒ вŅĐĩ ŅŅ‚и ĐēĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹. ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ОйĐŊĐ°Ņ€ŅƒĐļиŅ‚ŅŒ ĐŊОвŅ‹Đĩ ĐēĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹ ĐŋОйĐģиСОŅŅ‚и и, иĐŧĐĩŅ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊŅ‹Đš Đ°ĐēĐēĐ°ŅƒĐŊŅ‚ OpenStreetMap, ĐąŅ‹ŅŅ‚Ņ€Đž дОйавиŅ‚ŅŒ ŅĐ˛ĐžĐ¸ ĐģŅŽĐąĐ¸ĐŧŅ‹Đĩ ĐēĐŊиĐļĐŊŅ‹Đĩ ŅˆĐēĐ°Ņ„Ņ‹.", + "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° ĐēĐŊиĐļĐŊŅ‹Ņ… ŅˆĐēĐ°Ņ„Ов" + }, + "campersite": { + "description": "На ŅŅ‚ĐžĐŧ ŅĐ°ĐšŅ‚Đĩ ŅĐžĐąŅ€Đ°ĐŊŅ‹ вŅĐĩ ĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅ‹Đĩ ĐŧĐĩŅŅ‚Đ° ĐžŅŅ‚Đ°ĐŊОвĐēи ĐēĐĩĐŧĐŋĐĩŅ€ĐžĐ˛ и ĐŧĐĩŅŅ‚Đ°, ĐŗĐ´Đĩ ĐŧĐžĐļĐŊĐž ŅĐąŅ€ĐžŅĐ¸Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ и Ņ‡ĐĩŅ€ĐŊŅƒŅŽ вОдŅƒ. ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ дОйавиŅ‚ŅŒ ĐŋОдŅ€ĐžĐąĐŊŅƒŅŽ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ Đž ĐŋŅ€ĐĩĐ´ĐžŅŅ‚авĐģŅĐĩĐŧŅ‹Ņ… ŅƒŅĐģŅƒĐŗĐ°Ņ… и иŅ… ŅŅ‚ОиĐŧĐžŅŅ‚и. ДобавĐģŅŅ‚ŅŒ Ņ„ĐžŅ‚ĐžĐŗŅ€Đ°Ņ„ии и ĐžŅ‚СŅ‹Đ˛Ņ‹. Đ­Ņ‚Đž вĐĩĐą-ŅĐ°ĐšŅ‚ и вĐĩĐą-ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩ. ДаĐŊĐŊŅ‹Đĩ Ņ…Ņ€Đ°ĐŊŅŅ‚ŅŅ в OpenStreetMap, ĐŋĐžŅŅ‚ĐžĐŧŅƒ ĐžĐŊи ĐąŅƒĐ´ŅƒŅ‚ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊŅ‹Đŧи вŅĐĩĐŗĐ´Đ° и ĐŧĐžĐŗŅƒŅ‚ ĐąŅ‹Ņ‚ŅŒ ĐŋОвŅ‚ĐžŅ€ĐŊĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊŅ‹ ĐģŅŽĐąŅ‹Đŧ ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩĐŧ.", + "layers": { + "0": { + "description": "ĐŋĐģĐžŅ‰Đ°Đ´Đēи Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°", + "name": "ПĐģĐžŅ‰Đ°Đ´Đēи Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°", + "presets": { + "0": { + "description": "ДобавŅŒŅ‚Đĩ ĐŊОвŅƒŅŽ ĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°. Đ­Ņ‚Đž ŅĐŋĐĩŅ†Đ¸Đ°ĐģŅŒĐŊĐž ĐžŅ‚вĐĩĐ´Ņ‘ĐŊĐŊŅ‹Đĩ ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ ĐŊĐžŅ‡ĐģĐĩĐŗĐ° Ņ авŅ‚ĐžŅ„ŅƒŅ€ĐŗĐžĐŊĐžĐŧ. ОĐŊи ĐŧĐžĐŗŅƒŅ‚ вŅ‹ĐŗĐģŅĐ´ĐĩŅ‚ŅŒ ĐēĐ°Đē ĐŊĐ°ŅŅ‚ĐžŅŅ‰Đ¸Đš ĐēĐĩĐŧĐŋиĐŊĐŗ иĐģи ĐŋŅ€ĐžŅŅ‚Đž вŅ‹ĐŗĐģŅĐ´ĐĩŅ‚ŅŒ ĐēĐ°Đē ĐŋĐ°Ņ€ĐēОвĐēĐ°. ОĐŊи ĐŊĐĩ ĐŧĐžĐŗŅƒŅ‚ ĐąŅ‹Ņ‚ŅŒ ОйОСĐŊĐ°Ņ‡ĐĩĐŊŅ‹ вООйŅ‰Đĩ, Đ° ĐŋŅ€ĐžŅŅ‚Đž ĐąŅ‹Ņ‚ŅŒ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģĐĩĐŊŅ‹ в ĐŧŅƒĐŊиŅ†Đ¸ĐŋĐ°ĐģŅŒĐŊĐžĐŧ Ņ€ĐĩŅˆĐĩĐŊии. ОбŅ‹Ņ‡ĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°, ĐŋŅ€ĐĩĐ´ĐŊаСĐŊĐ°Ņ‡ĐĩĐŊĐŊĐ°Ņ Đ´ĐģŅ ĐžŅ‚Đ´Ņ‹Ņ…Đ°ŅŽŅ‰Đ¸Ņ…, ĐŗĐ´Đĩ ĐŊĐĩ ĐžĐļидаĐĩŅ‚ŅŅ, Ņ‡Ņ‚Đž ĐžĐŊи ĐŋŅ€ĐžĐ˛ĐĩĐ´ŅƒŅ‚ ĐŊĐžŅ‡ŅŒ ŅŅ‚Đž -НЕ- ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ° ", + "title": "ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "ĐĄĐēĐžĐģŅŒĐēĐž ĐēĐĩĐŧĐŋĐĩŅ€ĐžĐ˛ ĐŧĐžĐļĐĩŅ‚ СдĐĩŅŅŒ ĐžŅŅ‚Đ°ĐŊОвиŅ‚ŅŒŅŅ? (ĐŋŅ€ĐžĐŋŅƒŅŅ‚иŅ‚Đĩ, ĐĩŅĐģи ĐŊĐĩŅ‚ ĐžŅ‡ĐĩвидĐŊĐžĐŗĐž ĐēĐžĐģиŅ‡ĐĩŅŅ‚ва ĐŧĐĩŅŅ‚ иĐģи Ņ€Đ°ĐˇŅ€ĐĩŅˆŅ‘ĐŊĐŊŅ‹Ņ… Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚ĐŊŅ‹Ņ… ŅŅ€ĐĩĐ´ŅŅ‚в)", + "render": "{capacity} ĐēĐĩĐŧĐŋĐĩŅ€ĐžĐ˛ ĐŧĐžĐŗŅƒŅ‚ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž ОдĐŊОвŅ€ĐĩĐŧĐĩĐŊĐŊĐž" + }, + "caravansites-charge": { + "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚?", + "render": "Đ­Ņ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚ {charge}" + }, + "caravansites-description": { + "question": "ĐĨĐžŅ‚ĐĩĐģи ĐąŅ‹ вŅ‹ дОйавиŅ‚ŅŒ ОйŅ‰ĐĩĐĩ ĐžĐŋиŅĐ°ĐŊиĐĩ ŅŅ‚ĐžĐŗĐž ĐŧĐĩŅŅ‚Đ°? (НĐĩ ĐŋОвŅ‚ĐžŅ€ŅĐšŅ‚Đĩ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ, ĐēĐžŅ‚ĐžŅ€Đ°Ņ ŅƒĐļĐĩ ĐŊĐ°ĐŋиŅĐ°ĐŊĐ° вŅ‹ŅˆĐĩ иĐģи ĐŊĐ° ĐēĐžŅ‚ĐžŅ€ŅƒŅŽ вŅ‹ ŅƒĐļĐĩ ĐžŅ‚вĐĩŅ‚иĐģи Ņ€Đ°ĐŊĐĩĐĩ. ПоĐļĐ°ĐģŅƒĐšŅŅ‚Đ°, ĐąŅƒĐ´ŅŒŅ‚Đĩ ОйŅŠĐĩĐēŅ‚ивĐŊŅ‹ - ĐŧĐŊĐĩĐŊиŅ Đ´ĐžĐģĐļĐŊŅ‹ ĐąŅ‹Ņ‚ŅŒ в ĐžŅ‚СŅ‹Đ˛Đ°Ņ…)", + "render": "БоĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Ой ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ: {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "За иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиĐĩ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ" + }, + "1": { + "then": "МоĐļĐŊĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊĐž" + } + }, + "question": "ВзиĐŧĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŋĐģĐ°Ņ‚Đ°?" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "ЕŅŅ‚ŅŒ Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" + }, + "1": { + "then": "ЕŅŅ‚ŅŒ Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" + }, + "2": { + "then": "НĐĩŅ‚ Đ´ĐžŅŅ‚ŅƒĐŋĐ° в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" + } + }, + "question": "ПŅ€ĐĩĐ´ĐžŅŅ‚авĐģŅĐĩŅ‚ Đģи ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚?" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "За Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ Đ´ĐžĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐž" + }, + "1": { + "then": "ВаĐŧ ĐŊĐĩ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ Đ´ĐžĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐž Са Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" + } + }, + "question": "НŅƒĐļĐŊĐž Đģи ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ Са Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚?" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "Да, СдĐĩŅŅŒ ĐĩŅŅ‚ŅŒ ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ Đ´ĐžĐģĐŗĐžŅŅ€ĐžŅ‡ĐŊОК Đ°Ņ€ĐĩĐŊĐ´Ņ‹, ĐŊĐž вŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ĐžŅŅ‚Đ°ĐŊОвиŅ‚ŅŒŅŅ и ĐŊĐ° ŅŅƒŅ‚Đēи" + }, + "1": { + "then": "НĐĩŅ‚, СдĐĩŅŅŒ ĐŊĐĩŅ‚ ĐŋĐžŅŅ‚ĐžŅĐŊĐŊŅ‹Ņ… ĐŗĐžŅŅ‚ĐĩĐš" + }, + "2": { + "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž ĐžŅŅ‚Đ°ĐŊОвиŅ‚ŅŒŅŅ, Ņ‚ĐžĐģŅŒĐēĐž ĐĩŅĐģи Ņƒ ваŅ Đ´ĐžĐģĐŗĐžŅŅ€ĐžŅ‡ĐŊŅ‹Đš ĐēĐžĐŊŅ‚Ņ€Đ°ĐēŅ‚ (ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž иŅŅ‡ĐĩСĐŊĐĩŅ‚ Ņ ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐĩŅĐģи вŅ‹ вŅ‹ĐąĐĩŅ€ĐĩŅ‚Đĩ ŅŅ‚Đž)" + } + }, + "question": "ПŅ€ĐĩĐ´ĐģĐ°ĐŗĐ°ĐĩŅ‚ Đģи ŅŅ‚Đ° ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ Đ´ĐžĐģĐŗĐžŅŅ€ĐžŅ‡ĐŊОК Đ°Ņ€ĐĩĐŊĐ´Ņ‹?" + }, + "caravansites-name": { + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž?", + "render": "Đ­Ņ‚Đž ĐŧĐĩŅŅ‚Đž ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ ĐēĐĩĐŧĐŋиĐŊĐŗĐĩ ĐĩŅŅ‚ŅŒ ĐŧĐĩŅŅ‚Đž Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ ĐēĐĩĐŧĐŋиĐŊĐŗĐĩ ĐŊĐĩŅ‚ ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛" + } + }, + "question": "В ŅŅ‚ĐžĐŧ ĐēĐĩĐŧĐŋиĐŊĐŗĐĩ ĐĩŅŅ‚ŅŒ ĐŧĐĩŅŅ‚Đž Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛?" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐĩŅŅ‚ŅŒ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŊĐĩŅ‚ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов" + } + }, + "question": "ЗдĐĩŅŅŒ ĐĩŅŅ‚ŅŒ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹?" + }, + "caravansites-website": { + "question": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ĐžĐŗĐž ĐŧĐĩŅŅ‚Đ° вĐĩĐą-ŅĐ°ĐšŅ‚?", + "render": "ОŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅ‹Đš ŅĐ°ĐšŅ‚: {website}" + } + }, + "title": { + "mappings": { "0": { - "description": "ĐŋĐģĐžŅ‰Đ°Đ´Đēи Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°", - "name": "ПĐģĐžŅ‰Đ°Đ´Đēи Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°", - "presets": { - "0": { - "description": "ДобавŅŒŅ‚Đĩ ĐŊОвŅƒŅŽ ĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅƒŅŽ ĐŋĐģĐžŅ‰Đ°Đ´ĐēŅƒ Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°. Đ­Ņ‚Đž ŅĐŋĐĩŅ†Đ¸Đ°ĐģŅŒĐŊĐž ĐžŅ‚вĐĩĐ´Ņ‘ĐŊĐŊŅ‹Đĩ ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ ĐŊĐžŅ‡ĐģĐĩĐŗĐ° Ņ авŅ‚ĐžŅ„ŅƒŅ€ĐŗĐžĐŊĐžĐŧ. ОĐŊи ĐŧĐžĐŗŅƒŅ‚ вŅ‹ĐŗĐģŅĐ´ĐĩŅ‚ŅŒ ĐēĐ°Đē ĐŊĐ°ŅŅ‚ĐžŅŅ‰Đ¸Đš ĐēĐĩĐŧĐŋиĐŊĐŗ иĐģи ĐŋŅ€ĐžŅŅ‚Đž вŅ‹ĐŗĐģŅĐ´ĐĩŅ‚ŅŒ ĐēĐ°Đē ĐŋĐ°Ņ€ĐēОвĐēĐ°. ОĐŊи ĐŊĐĩ ĐŧĐžĐŗŅƒŅ‚ ĐąŅ‹Ņ‚ŅŒ ОйОСĐŊĐ°Ņ‡ĐĩĐŊŅ‹ вООйŅ‰Đĩ, Đ° ĐŋŅ€ĐžŅŅ‚Đž ĐąŅ‹Ņ‚ŅŒ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģĐĩĐŊŅ‹ в ĐŧŅƒĐŊиŅ†Đ¸ĐŋĐ°ĐģŅŒĐŊĐžĐŧ Ņ€ĐĩŅˆĐĩĐŊии. ОбŅ‹Ņ‡ĐŊĐ°Ņ ĐŋĐ°Ņ€ĐēОвĐēĐ°, ĐŋŅ€ĐĩĐ´ĐŊаСĐŊĐ°Ņ‡ĐĩĐŊĐŊĐ°Ņ Đ´ĐģŅ ĐžŅ‚Đ´Ņ‹Ņ…Đ°ŅŽŅ‰Đ¸Ņ…, ĐŗĐ´Đĩ ĐŊĐĩ ĐžĐļидаĐĩŅ‚ŅŅ, Ņ‡Ņ‚Đž ĐžĐŊи ĐŋŅ€ĐžĐ˛ĐĩĐ´ŅƒŅ‚ ĐŊĐžŅ‡ŅŒ ŅŅ‚Đž -НЕ- ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ° ", - "title": "ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ°" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "ĐĄĐēĐžĐģŅŒĐēĐž ĐēĐĩĐŧĐŋĐĩŅ€ĐžĐ˛ ĐŧĐžĐļĐĩŅ‚ СдĐĩŅŅŒ ĐžŅŅ‚Đ°ĐŊОвиŅ‚ŅŒŅŅ? (ĐŋŅ€ĐžĐŋŅƒŅŅ‚иŅ‚Đĩ, ĐĩŅĐģи ĐŊĐĩŅ‚ ĐžŅ‡ĐĩвидĐŊĐžĐŗĐž ĐēĐžĐģиŅ‡ĐĩŅŅ‚ва ĐŧĐĩŅŅ‚ иĐģи Ņ€Đ°ĐˇŅ€ĐĩŅˆŅ‘ĐŊĐŊŅ‹Ņ… Ņ‚Ņ€Đ°ĐŊŅĐŋĐžŅ€Ņ‚ĐŊŅ‹Ņ… ŅŅ€ĐĩĐ´ŅŅ‚в)", - "render": "{capacity} ĐēĐĩĐŧĐŋĐĩŅ€ĐžĐ˛ ĐŧĐžĐŗŅƒŅ‚ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž ОдĐŊОвŅ€ĐĩĐŧĐĩĐŊĐŊĐž" - }, - "caravansites-charge": { - "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚?", - "render": "Đ­Ņ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚ {charge}" - }, - "caravansites-description": { - "question": "ĐĨĐžŅ‚ĐĩĐģи ĐąŅ‹ вŅ‹ дОйавиŅ‚ŅŒ ОйŅ‰ĐĩĐĩ ĐžĐŋиŅĐ°ĐŊиĐĩ ŅŅ‚ĐžĐŗĐž ĐŧĐĩŅŅ‚Đ°? (НĐĩ ĐŋОвŅ‚ĐžŅ€ŅĐšŅ‚Đĩ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ, ĐēĐžŅ‚ĐžŅ€Đ°Ņ ŅƒĐļĐĩ ĐŊĐ°ĐŋиŅĐ°ĐŊĐ° вŅ‹ŅˆĐĩ иĐģи ĐŊĐ° ĐēĐžŅ‚ĐžŅ€ŅƒŅŽ вŅ‹ ŅƒĐļĐĩ ĐžŅ‚вĐĩŅ‚иĐģи Ņ€Đ°ĐŊĐĩĐĩ. ПоĐļĐ°ĐģŅƒĐšŅŅ‚Đ°, ĐąŅƒĐ´ŅŒŅ‚Đĩ ОйŅŠĐĩĐēŅ‚ивĐŊŅ‹ - ĐŧĐŊĐĩĐŊиŅ Đ´ĐžĐģĐļĐŊŅ‹ ĐąŅ‹Ņ‚ŅŒ в ĐžŅ‚СŅ‹Đ˛Đ°Ņ…)", - "render": "БоĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Ой ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ: {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "За иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиĐĩ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ" - }, - "1": { - "then": "МоĐļĐŊĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊĐž" - } - }, - "question": "ВзиĐŧĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŋĐģĐ°Ņ‚Đ°?" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "ЕŅŅ‚ŅŒ Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" - }, - "1": { - "then": "ЕŅŅ‚ŅŒ Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" - }, - "2": { - "then": "НĐĩŅ‚ Đ´ĐžŅŅ‚ŅƒĐŋĐ° в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" - } - }, - "question": "ПŅ€ĐĩĐ´ĐžŅŅ‚авĐģŅĐĩŅ‚ Đģи ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚?" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "За Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ Đ´ĐžĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐž" - }, - "1": { - "then": "ВаĐŧ ĐŊĐĩ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ Đ´ĐžĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐž Са Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚" - } - }, - "question": "НŅƒĐļĐŊĐž Đģи ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ Са Đ´ĐžŅŅ‚ŅƒĐŋ в ИĐŊŅ‚ĐĩŅ€ĐŊĐĩŅ‚?" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "Да, СдĐĩŅŅŒ ĐĩŅŅ‚ŅŒ ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ Đ´ĐžĐģĐŗĐžŅŅ€ĐžŅ‡ĐŊОК Đ°Ņ€ĐĩĐŊĐ´Ņ‹, ĐŊĐž вŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ĐžŅŅ‚Đ°ĐŊОвиŅ‚ŅŒŅŅ и ĐŊĐ° ŅŅƒŅ‚Đēи" - }, - "1": { - "then": "НĐĩŅ‚, СдĐĩŅŅŒ ĐŊĐĩŅ‚ ĐŋĐžŅŅ‚ĐžŅĐŊĐŊŅ‹Ņ… ĐŗĐžŅŅ‚ĐĩĐš" - }, - "2": { - "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž ĐžŅŅ‚Đ°ĐŊОвиŅ‚ŅŒŅŅ, Ņ‚ĐžĐģŅŒĐēĐž ĐĩŅĐģи Ņƒ ваŅ Đ´ĐžĐģĐŗĐžŅŅ€ĐžŅ‡ĐŊŅ‹Đš ĐēĐžĐŊŅ‚Ņ€Đ°ĐēŅ‚ (ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž иŅŅ‡ĐĩСĐŊĐĩŅ‚ Ņ ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐĩŅĐģи вŅ‹ вŅ‹ĐąĐĩŅ€ĐĩŅ‚Đĩ ŅŅ‚Đž)" - } - }, - "question": "ПŅ€ĐĩĐ´ĐģĐ°ĐŗĐ°ĐĩŅ‚ Đģи ŅŅ‚Đ° ĐŋĐģĐžŅ‰Đ°Đ´ĐēĐ° ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ Đ´ĐžĐģĐŗĐžŅŅ€ĐžŅ‡ĐŊОК Đ°Ņ€ĐĩĐŊĐ´Ņ‹?" - }, - "caravansites-name": { - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž?", - "render": "Đ­Ņ‚Đž ĐŧĐĩŅŅ‚Đž ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ ĐēĐĩĐŧĐŋиĐŊĐŗĐĩ ĐĩŅŅ‚ŅŒ ĐŧĐĩŅŅ‚Đž Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ ĐēĐĩĐŧĐŋиĐŊĐŗĐĩ ĐŊĐĩŅ‚ ĐŧĐĩŅŅ‚Đ° Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛" - } - }, - "question": "В ŅŅ‚ĐžĐŧ ĐēĐĩĐŧĐŋиĐŊĐŗĐĩ ĐĩŅŅ‚ŅŒ ĐŧĐĩŅŅ‚Đž Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛?" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐĩŅŅ‚ŅŒ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŊĐĩŅ‚ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов" - } - }, - "question": "ЗдĐĩŅŅŒ ĐĩŅŅ‚ŅŒ Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ņ‹?" - }, - "caravansites-website": { - "question": "ЕŅŅ‚ŅŒ Đģи Ņƒ ŅŅ‚ĐžĐŗĐž ĐŧĐĩŅŅ‚Đ° вĐĩĐą-ŅĐ°ĐšŅ‚?", - "render": "ОŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅ‹Đš ŅĐ°ĐšŅ‚: {website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "МĐĩŅŅ‚Đž Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ° ĐąĐĩС ĐŊаСваĐŊиŅ" - } - }, - "render": "МĐĩŅŅ‚Đž Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ° {name}" - } - }, - "1": { - "description": "АŅŅĐĩĐŊиСаŅ†Đ¸ĐžĐŊĐŊŅ‹Đĩ ŅĐģивĐŊŅ‹Đĩ ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸", - "name": "МĐĩŅŅ‚Đ° Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛", - "tagRenderings": { - "dumpstations-access": { - "mappings": { - "2": { - "then": "ЛŅŽĐąĐžĐš ĐŧĐžĐļĐĩŅ‚ вОŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК ŅŅ‚Đ°ĐŊŅ†Đ¸ĐĩĐš ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸" - }, - "3": { - "then": "ЛŅŽĐąĐžĐš ĐŧĐžĐļĐĩŅ‚ вОŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК ŅŅ‚Đ°ĐŊŅ†Đ¸ĐĩĐš ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸" - } - }, - "question": "КŅ‚Đž ĐŧĐžĐļĐĩŅ‚ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ŅŅ‚Ņƒ ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŽ ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸?" - }, - "dumpstations-charge": { - "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚?", - "render": "Đ­Ņ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚ {charge}" - }, - "dumpstations-chemical-waste": { - "mappings": { - "0": { - "then": "ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐžŅ‚Ņ…ОдŅ‹ Ņ…иĐŧиŅ‡ĐĩŅĐēиŅ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов СдĐĩŅŅŒ" - }, - "1": { - "then": "ЗдĐĩŅŅŒ ĐŊĐĩĐģŅŒĐˇŅ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐžŅ‚Ņ…ОдŅ‹ Ņ…иĐŧиŅ‡ĐĩŅĐēиŅ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов" - } - }, - "question": "МоĐļĐŊĐž Đģи СдĐĩŅŅŒ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐžŅ‚Ņ…ОдŅ‹ Ņ…иĐŧиŅ‡ĐĩŅĐēиŅ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов?" - }, - "dumpstations-fee": { - "mappings": { - "0": { - "then": "За иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиĐĩ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ" - }, - "1": { - "then": "МоĐļĐŊĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊĐž" - } - }, - "question": "ВзиĐŧĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŋĐģĐ°Ņ‚Đ°?" - }, - "dumpstations-grey-water": { - "mappings": { - "0": { - "then": "ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ вОдŅƒ СдĐĩŅŅŒ" - }, - "1": { - "then": "ЗдĐĩŅŅŒ ĐŊĐĩĐģŅŒĐˇŅ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ вОдŅƒ" - } - }, - "question": "МоĐļĐŊĐž Đģи СдĐĩŅŅŒ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ вОдŅƒ?" - }, - "dumpstations-network": { - "question": "К ĐēĐ°ĐēОК ŅĐĩŅ‚и ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ? (ĐŋŅ€ĐžĐŋŅƒŅŅ‚иŅ‚Đĩ, ĐĩŅĐģи ĐŊĐĩĐŋŅ€Đ¸ĐŧĐĩĐŊиĐŧĐž)", - "render": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ - Ņ‡Đ°ŅŅ‚ŅŒ ŅĐĩŅ‚и {network}" - }, - "dumpstations-waterpoint": { - "mappings": { - "0": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐĩŅŅ‚ŅŒ вОдОŅĐŊĐ°ĐąĐļĐĩĐŊиĐĩ" - }, - "1": { - "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŊĐĩŅ‚ вОдОŅĐŊĐ°ĐąĐļĐĩĐŊиŅ" - } - }, - "question": "ЕŅŅ‚ŅŒ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ вОдОŅĐŊĐ°ĐąĐļĐĩĐŊиĐĩ?" - } - }, - "title": { - "mappings": { - "0": { - "then": "АŅŅĐĩĐŊиСаŅ†Đ¸ĐžĐŊĐŊĐ°Ņ ŅĐģивĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ" - } - }, - "render": "АŅŅĐĩĐŊиСаŅ†Đ¸ĐžĐŊĐŊĐ°Ņ ŅĐģивĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ {name}" - } - } - }, - "shortDescription": "НайŅ‚и ĐŧĐĩŅŅ‚Đ° ĐžŅŅ‚Đ°ĐŊОвĐēи, Ņ‡Ņ‚ОйŅ‹ ĐŋŅ€ĐžĐ˛ĐĩŅŅ‚и ĐŊĐžŅ‡ŅŒ в авŅ‚ĐžŅ„ŅƒŅ€ĐŗĐžĐŊĐĩ", - "title": "КĐĩĐŧĐŋиĐŊĐŗи" - }, - "charging_stations": { - "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ вŅ‹ ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и и ĐžŅ‚ĐŧĐĩŅ‚иŅ‚ŅŒ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ Đž СаŅ€ŅĐ´ĐŊŅ‹Ņ… ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŅ…" - }, - "climbing": { - "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ вŅ‹ ĐŊаКдĐĩŅ‚Đĩ Ņ€Đ°ĐˇĐģиŅ‡ĐŊŅ‹Đĩ вОСĐŧĐžĐļĐŊĐžŅŅ‚и Đ´ĐģŅ ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ, Ņ‚Đ°ĐēиĐĩ ĐēĐ°Đē ŅĐēĐ°ĐģОдŅ€ĐžĐŧŅ‹, СаĐģŅ‹ Đ´ĐģŅ йОŅƒĐģĐ´ĐĩŅ€Đ¸ĐŊĐŗĐ° и ŅĐēĐ°ĐģŅ‹ ĐŊĐ° ĐŋŅ€Đ¸Ņ€ĐžĐ´Đĩ.", - "descriptionTail": "ХОСдаŅ‚ĐĩĐģŅŒ ĐēĐ°Ņ€Ņ‚Ņ‹ ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ — Christian Neumann. ПоĐļĐ°ĐģŅƒĐšŅŅ‚Đ°, ĐŋиŅˆĐ¸Ņ‚Đĩ ĐĩŅĐģи Ņƒ ваŅ ĐĩŅŅ‚ŅŒ ĐžŅ‚СŅ‹Đ˛ иĐģи вОĐŋŅ€ĐžŅŅ‹.

ПŅ€ĐžĐĩĐēŅ‚ иŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ Đ´Đ°ĐŊĐŊŅ‹Đĩ OpenStreetMap.

", - "layers": { - "0": { - "name": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ", - "presets": { - "0": { - "description": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ", - "title": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ" - } - }, - "tagRenderings": { - "climbing_club-name": { - "render": "{name}" - } - }, - "title": { - "render": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ" - } - }, - "1": { - "tagRenderings": { - "name": { - "render": "{name}" - } - } - }, - "2": { - "tagRenderings": { - "Name": { - "render": "{name}" - } - } - }, - "3": { - "tagRenderings": { - "name": { - "render": "{name}" - } - } - }, - "4": { - "tagRenderings": { - "climbing-opportunity-name": { - "render": "{name}" - } - } - } - }, - "overrideAll": { - "tagRenderings+": { - "0": { - "question": "ЕŅŅ‚ŅŒ Đģи (ĐŊĐĩĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅ‹Đš) вĐĩĐą-ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš (ĐŊĐ°ĐŋŅ€., topos)?" - }, - "2": { - "mappings": { - "3": { - "then": "ĐĸĐžĐģŅŒĐēĐž Ņ‡ĐģĐĩĐŊĐ°Đŧ ĐēĐģŅƒĐąĐ°" - } - } - }, - "9": { - "mappings": { - "0": { - "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž СаĐŊŅŅ‚ŅŒŅŅ ŅĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đŧ ŅĐēĐ°ĐģĐžĐģаСаĐŊиĐĩĐŧ" - }, - "1": { - "then": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐžĐĩ ŅĐēĐ°ĐģĐžĐģаСаĐŊиĐĩ СдĐĩŅŅŒ ĐŊĐĩвОСĐŧĐžĐļĐŊĐž" - } - } - } - } - }, - "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ" - }, - "cyclestreets": { - "layers": { - "2": { - "name": "ВŅĐĩ ŅƒĐģиŅ†Ņ‹", - "title": { - "render": "ĐŖĐģиŅ†Đ°" - } + "then": "МĐĩŅŅ‚Đž Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ° ĐąĐĩС ĐŊаСваĐŊиŅ" } + }, + "render": "МĐĩŅŅ‚Đž Đ´ĐģŅ ĐēĐĩĐŧĐŋиĐŊĐŗĐ° {name}" } - }, - "cyclofix": { - "title": "Cyclofix - ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов" - }, - "drinking_water": { - "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ ĐŋĐžĐēаСŅ‹Đ˛Đ°ŅŽŅ‚ŅŅ и ĐŧĐžĐŗŅƒŅ‚ ĐąŅ‹Ņ‚ŅŒ ĐģĐĩĐŗĐēĐž дОйавĐģĐĩĐŊŅ‹ ОйŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đĩ Ņ‚ĐžŅ‡Đēи ĐŋиŅ‚ŅŒĐĩвОК вОдŅ‹", - "title": "ПиŅ‚ŅŒĐĩваŅ вОда" - }, - "facadegardens": { - "layers": { + }, + "1": { + "description": "АŅŅĐĩĐŊиСаŅ†Đ¸ĐžĐŊĐŊŅ‹Đĩ ŅĐģивĐŊŅ‹Đĩ ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸", + "name": "МĐĩŅŅ‚Đ° Đ´ĐģŅ ŅĐģива ĐžŅ‚Ņ…ОдОв иС Ņ‚ŅƒĐ°ĐģĐĩŅ‚ĐŊŅ‹Ņ… Ņ€ĐĩСĐĩŅ€Đ˛ŅƒĐ°Ņ€ĐžĐ˛", + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "2": { + "then": "ЛŅŽĐąĐžĐš ĐŧĐžĐļĐĩŅ‚ вОŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК ŅŅ‚Đ°ĐŊŅ†Đ¸ĐĩĐš ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸" + }, + "3": { + "then": "ЛŅŽĐąĐžĐš ĐŧĐžĐļĐĩŅ‚ вОŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ ŅŅ‚ОК ŅŅ‚Đ°ĐŊŅ†Đ¸ĐĩĐš ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸" + } + }, + "question": "КŅ‚Đž ĐŧĐžĐļĐĩŅ‚ иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ŅŅ‚Ņƒ ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŽ ŅƒŅ‚иĐģиСаŅ†Đ¸Đ¸?" + }, + "dumpstations-charge": { + "question": "ĐĄĐēĐžĐģŅŒĐēĐž ŅŅ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚?", + "render": "Đ­Ņ‚Đž ĐŧĐĩŅŅ‚Đž вСиĐŧĐ°ĐĩŅ‚ {charge}" + }, + "dumpstations-chemical-waste": { + "mappings": { + "0": { + "then": "ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐžŅ‚Ņ…ОдŅ‹ Ņ…иĐŧиŅ‡ĐĩŅĐēиŅ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов СдĐĩŅŅŒ" + }, + "1": { + "then": "ЗдĐĩŅŅŒ ĐŊĐĩĐģŅŒĐˇŅ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐžŅ‚Ņ…ОдŅ‹ Ņ…иĐŧиŅ‡ĐĩŅĐēиŅ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов" + } + }, + "question": "МоĐļĐŊĐž Đģи СдĐĩŅŅŒ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ĐžŅ‚Ņ…ОдŅ‹ Ņ…иĐŧиŅ‡ĐĩŅĐēиŅ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов?" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "За иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиĐĩ ĐŊŅƒĐļĐŊĐž ĐŋĐģĐ°Ņ‚иŅ‚ŅŒ" + }, + "1": { + "then": "МоĐļĐŊĐž иŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ĐąĐĩŅĐŋĐģĐ°Ņ‚ĐŊĐž" + } + }, + "question": "ВзиĐŧĐ°ĐĩŅ‚ŅŅ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŋĐģĐ°Ņ‚Đ°?" + }, + "dumpstations-grey-water": { + "mappings": { + "0": { + "then": "ВŅ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ вОдŅƒ СдĐĩŅŅŒ" + }, + "1": { + "then": "ЗдĐĩŅŅŒ ĐŊĐĩĐģŅŒĐˇŅ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ вОдŅƒ" + } + }, + "question": "МоĐļĐŊĐž Đģи СдĐĩŅŅŒ ŅƒŅ‚иĐģиСиŅ€ĐžĐ˛Đ°Ņ‚ŅŒ ŅĐĩŅ€ŅƒŅŽ вОдŅƒ?" + }, + "dumpstations-network": { + "question": "К ĐēĐ°ĐēОК ŅĐĩŅ‚и ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ? (ĐŋŅ€ĐžĐŋŅƒŅŅ‚иŅ‚Đĩ, ĐĩŅĐģи ĐŊĐĩĐŋŅ€Đ¸ĐŧĐĩĐŊиĐŧĐž)", + "render": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ - Ņ‡Đ°ŅŅ‚ŅŒ ŅĐĩŅ‚и {network}" + }, + "dumpstations-waterpoint": { + "mappings": { + "0": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐĩŅŅ‚ŅŒ вОдОŅĐŊĐ°ĐąĐļĐĩĐŊиĐĩ" + }, + "1": { + "then": "В ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ ĐŊĐĩŅ‚ вОдОŅĐŊĐ°ĐąĐļĐĩĐŊиŅ" + } + }, + "question": "ЕŅŅ‚ŅŒ Đģи в ŅŅ‚ĐžĐŧ ĐŧĐĩŅŅ‚Đĩ вОдОŅĐŊĐ°ĐąĐļĐĩĐŊиĐĩ?" + } + }, + "title": { + "mappings": { "0": { - "tagRenderings": { - "facadegardens-description": { - "question": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Đž ŅĐ°Đ´Đĩ (ĐĩŅĐģи Ņ‚Ņ€ĐĩĐąŅƒĐĩŅ‚ŅŅ иĐģи ĐĩŅ‰Đĩ ĐŊĐĩ ŅƒĐēаСаĐŊĐ° вŅ‹ŅˆĐĩ)", - "render": "ПодŅ€ĐžĐąĐŊĐĩĐĩ: {description}" - }, - "facadegardens-plants": { - "question": "КаĐēиĐĩ видŅ‹ Ņ€Đ°ŅŅ‚ĐĩĐŊиК ОйиŅ‚Đ°ŅŽŅ‚ СдĐĩŅŅŒ?" - }, - "facadegardens-rainbarrel": { - "mappings": { - "0": { - "then": "ЕŅŅ‚ŅŒ йОŅ‡ĐēĐ° Ņ Đ´ĐžĐļĐ´ĐĩвОК вОдОК" - }, - "1": { - "then": "НĐĩŅ‚ йОŅ‡Đēи Ņ Đ´ĐžĐļĐ´ĐĩвОК вОдОК" - } - } - }, - "facadegardens-start_date": { - "render": "ДаŅ‚Đ° ŅŅ‚Ņ€ĐžĐ¸Ņ‚ĐĩĐģŅŒŅŅ‚ва ŅĐ°Đ´Đ°: {start_date}" - }, - "facadegardens-sunshine": { - "question": "ĐĄĐ°Đ´ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊ ĐŊĐ° ŅĐžĐģĐŊĐĩŅ‡ĐŊОК ŅŅ‚ĐžŅ€ĐžĐŊĐĩ иĐģи в Ņ‚ĐĩĐŊи?" - } - } + "then": "АŅŅĐĩĐŊиСаŅ†Đ¸ĐžĐŊĐŊĐ°Ņ ŅĐģивĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ" } + }, + "render": "АŅŅĐĩĐŊиСаŅ†Đ¸ĐžĐŊĐŊĐ°Ņ ŅĐģивĐŊĐ°Ņ ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ {name}" } + } }, - "ghostbikes": { - "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost" + "shortDescription": "НайŅ‚и ĐŧĐĩŅŅ‚Đ° ĐžŅŅ‚Đ°ĐŊОвĐēи, Ņ‡Ņ‚ОйŅ‹ ĐŋŅ€ĐžĐ˛ĐĩŅŅ‚и ĐŊĐžŅ‡ŅŒ в авŅ‚ĐžŅ„ŅƒŅ€ĐŗĐžĐŊĐĩ", + "title": "КĐĩĐŧĐŋиĐŊĐŗи" + }, + "charging_stations": { + "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ вŅ‹ ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и и ĐžŅ‚ĐŧĐĩŅ‚иŅ‚ŅŒ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ Đž СаŅ€ŅĐ´ĐŊŅ‹Ņ… ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŅ…" + }, + "climbing": { + "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ вŅ‹ ĐŊаКдĐĩŅ‚Đĩ Ņ€Đ°ĐˇĐģиŅ‡ĐŊŅ‹Đĩ вОСĐŧĐžĐļĐŊĐžŅŅ‚и Đ´ĐģŅ ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ, Ņ‚Đ°ĐēиĐĩ ĐēĐ°Đē ŅĐēĐ°ĐģОдŅ€ĐžĐŧŅ‹, СаĐģŅ‹ Đ´ĐģŅ йОŅƒĐģĐ´ĐĩŅ€Đ¸ĐŊĐŗĐ° и ŅĐēĐ°ĐģŅ‹ ĐŊĐ° ĐŋŅ€Đ¸Ņ€ĐžĐ´Đĩ.", + "descriptionTail": "ХОСдаŅ‚ĐĩĐģŅŒ ĐēĐ°Ņ€Ņ‚Ņ‹ ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ — Christian Neumann. ПоĐļĐ°ĐģŅƒĐšŅŅ‚Đ°, ĐŋиŅˆĐ¸Ņ‚Đĩ ĐĩŅĐģи Ņƒ ваŅ ĐĩŅŅ‚ŅŒ ĐžŅ‚СŅ‹Đ˛ иĐģи вОĐŋŅ€ĐžŅŅ‹.

ПŅ€ĐžĐĩĐēŅ‚ иŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ Đ´Đ°ĐŊĐŊŅ‹Đĩ OpenStreetMap.

", + "layers": { + "0": { + "name": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ", + "presets": { + "0": { + "description": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ", + "title": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ" + } + }, + "tagRenderings": { + "climbing_club-name": { + "render": "{name}" + } + }, + "title": { + "render": "КĐģŅƒĐą ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ" + } + }, + "1": { + "tagRenderings": { + "name": { + "render": "{name}" + } + } + }, + "2": { + "tagRenderings": { + "Name": { + "render": "{name}" + } + } + }, + "3": { + "tagRenderings": { + "name": { + "render": "{name}" + } + } + }, + "4": { + "tagRenderings": { + "climbing-opportunity-name": { + "render": "{name}" + } + } + } }, - "hailhydrant": { - "layers": { + "overrideAll": { + "tagRenderings+": { + "0": { + "question": "ЕŅŅ‚ŅŒ Đģи (ĐŊĐĩĐžŅ„иŅ†Đ¸Đ°ĐģŅŒĐŊŅ‹Đš) вĐĩĐą-ŅĐ°ĐšŅ‚ Ņ йОĐģĐĩĐĩ ĐŋОдŅ€ĐžĐąĐŊОК иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ĐĩĐš (ĐŊĐ°ĐŋŅ€., topos)?" + }, + "2": { + "mappings": { + "3": { + "then": "ĐĸĐžĐģŅŒĐēĐž Ņ‡ĐģĐĩĐŊĐ°Đŧ ĐēĐģŅƒĐąĐ°" + } + } + }, + "9": { + "mappings": { "0": { - "description": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ ĐŗидŅ€Đ°ĐŊŅ‚Ņ‹.", - "name": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ĐŗидŅ€Đ°ĐŊŅ‚Ов", - "presets": { - "0": { - "title": "ПоĐļĐ°Ņ€ĐŊŅ‹Đš ĐŗидŅ€Đ°ĐŊŅ‚" - } - }, - "tagRenderings": { - "hydrant-color": { - "mappings": { - "0": { - "then": "ĐĻвĐĩŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚Đ° ĐŊĐĩ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊ." - }, - "1": { - "then": "ГидŅ€Đ°ĐŊŅ‚ ĐļŅ‘ĐģŅ‚ĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ°." - }, - "2": { - "then": "ГидŅ€Đ°ĐŊŅ‚ ĐēŅ€Đ°ŅĐŊĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ°." - } - }, - "question": "КаĐēĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ° ĐŗидŅ€Đ°ĐŊŅ‚?", - "render": "ĐĻвĐĩŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚Đ° {colour}" - }, - "hydrant-state": { - "mappings": { - "0": { - "then": "ГидŅ€Đ°ĐŊŅ‚ (ĐŋĐžĐģĐŊĐžŅŅ‚ŅŒŅŽ иĐģи Ņ‡Đ°ŅŅ‚иŅ‡ĐŊĐž) в Ņ€Đ°ĐąĐžŅ‡ĐĩĐŧ ŅĐžŅŅ‚ĐžŅĐŊии." - }, - "2": { - "then": "ГидŅ€Đ°ĐŊŅ‚ Đ´ĐĩĐŧĐžĐŊŅ‚иŅ€ĐžĐ˛Đ°ĐŊ." - } - } - }, - "hydrant-type": { - "mappings": { - "0": { - "then": "ĐĸиĐŋ ĐŗидŅ€Đ°ĐŊŅ‚Đ° ĐŊĐĩ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊ." - }, - "3": { - "then": " ĐĸиĐŋ ŅŅ‚ĐĩĐŊŅ‹." - } - }, - "question": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚ĐžŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚?", - "render": " ĐĸиĐŋ ĐŗидŅ€Đ°ĐŊŅ‚Đ°: {fire_hydrant:type}" - } - }, - "title": { - "render": "ГидŅ€Đ°ĐŊŅ‚" - } + "then": "ЗдĐĩŅŅŒ ĐŧĐžĐļĐŊĐž СаĐŊŅŅ‚ŅŒŅŅ ŅĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đŧ ŅĐēĐ°ĐģĐžĐģаСаĐŊиĐĩĐŧ" }, "1": { - "description": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи.", - "name": "КаŅ€Ņ‚Đ° ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģĐĩĐš.", - "presets": { - "0": { - "description": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģŅŒ - ĐŊĐĩйОĐģŅŒŅˆĐžĐĩ ĐŋĐĩŅ€ĐĩĐŊĐžŅĐŊĐžĐĩ ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚вО Đ´ĐģŅ Ņ‚ŅƒŅˆĐĩĐŊиŅ ĐžĐŗĐŊŅ", - "title": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģŅŒ" - } - }, - "tagRenderings": { - "extinguisher-location": { - "mappings": { - "0": { - "then": "ВĐŊŅƒŅ‚Ņ€Đ¸." - }, - "1": { - "then": "ĐĄĐŊĐ°Ņ€ŅƒĐļи." - } - }, - "question": "ГдĐĩ ŅŅ‚Đž Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž?", - "render": "МĐĩŅŅ‚ĐžĐŋĐžĐģĐžĐļĐĩĐŊиĐĩ: {location}" - } - }, - "title": { - "render": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи" - } - }, - "2": { - "description": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ Ņ‡Đ°ŅŅ‚и.", - "name": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… Ņ‡Đ°ŅŅ‚ĐĩĐš", - "presets": { - "0": { - "title": "ПоĐļĐ°Ņ€ĐŊĐ°Ņ Ņ‡Đ°ŅŅ‚ŅŒ" - } - }, - "tagRenderings": { - "station-name": { - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊĐ°Ņ Ņ‡Đ°ŅŅ‚ŅŒ?", - "render": "Đ­Ņ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}." - }, - "station-place": { - "question": "ГдĐĩ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° Ņ‡Đ°ŅŅ‚ŅŒ? (ĐŊĐ°ĐŋŅ€., ĐŊаСваĐŊиĐĩ ĐŊĐ°ŅĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐŋŅƒĐŊĐēŅ‚Đ°)", - "render": "Đ­Ņ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° в {addr:place}." - }, - "station-street": { - "question": " По ĐēĐ°ĐēĐžĐŧŅƒ Đ°Đ´Ņ€ĐĩŅŅƒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ?", - "render": "ЧаŅŅ‚ŅŒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° вдОĐģŅŒ ŅˆĐžŅŅĐĩ {addr:street}." - } - }, - "title": { - "render": "ПоĐļĐ°Ņ€ĐŊĐ°Ņ Ņ‡Đ°ŅŅ‚ŅŒ" - } - }, - "3": { - "name": "КаŅ€Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Đš ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸", - "presets": { - "0": { - "description": "ДобавиŅ‚ŅŒ ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŽ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸ ĐŊĐ° ĐēĐ°Ņ€Ņ‚Ņƒ", - "title": "ĐĄŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸" - } - }, - "tagRenderings": { - "ambulance-name": { - "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸?", - "render": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}." - }, - "ambulance-place": { - "question": "ГдĐĩ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ? (ĐŊĐ°ĐŋŅ€., ĐŊаСваĐŊиĐĩ ĐŊĐ°ŅĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐŋŅƒĐŊĐēŅ‚Đ°)" - }, - "ambulance-street": { - "question": " По ĐēĐ°ĐēĐžĐŧŅƒ Đ°Đ´Ņ€ĐĩŅŅƒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ?", - "render": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° вдОĐģŅŒ ŅˆĐžŅŅĐĩ {addr:street}." - } - }, - "title": { - "render": "ĐĄŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸" - } + "then": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊĐžĐĩ ŅĐēĐ°ĐģĐžĐģаСаĐŊиĐĩ СдĐĩŅŅŒ ĐŊĐĩвОСĐŧĐžĐļĐŊĐž" } - }, - "shortDescription": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ĐŗидŅ€Đ°ĐŊŅ‚Ов, ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģĐĩĐš, ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ŅŅ‚Đ°ĐŊŅ†Đ¸Đš и ŅŅ‚Đ°ĐŊŅ†Đ¸Đš ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸.", - "title": "ПоĐļĐ°Ņ€ĐŊŅ‹Đĩ ĐŗидŅ€Đ°ĐŊŅ‚Ņ‹, ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи, ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸ и ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸." + } + } + } }, - "maps": { - "title": "КаŅ€Ņ‚Đ° ĐēĐ°Ņ€Ņ‚" - }, - "personal": { - "description": "ХОСдаŅ‚ŅŒ ĐŋĐĩŅ€ŅĐžĐŊĐ°ĐģŅŒĐŊŅƒŅŽ Ņ‚ĐĩĐŧŅƒ ĐŊĐ° ĐžŅĐŊОвĐĩ Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Ņ… ŅĐģĐžŅ‘в Ņ‚ĐĩĐŧ" - }, - "playgrounds": { - "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и иĐŗŅ€ĐžĐ˛Ņ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи и дОйавиŅ‚ŅŒ Đ´ĐžĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊŅƒŅŽ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ", - "shortDescription": "КаŅ€Ņ‚Đ° иĐŗŅ€ĐžĐ˛Ņ‹Ņ… ĐŋĐģĐžŅ‰Đ°Đ´ĐžĐē", - "title": "ИĐŗŅ€ĐžĐ˛Ņ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи" - }, - "shops": { - "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚ŅŒ ĐēĐ°Ņ€Ņ‚Ņƒ ĐŧĐ°ĐŗаСиĐŊОв" - }, - "sport_pitches": { - "shortDescription": "КаŅ€Ņ‚Đ°, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ°Ņ ŅĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", - "title": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи" - }, - "toilets": { - "description": "КаŅ€Ņ‚Đ° ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Ņ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов", - "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов" - }, - "trees": { - "description": "НаĐŊĐĩŅĐ¸Ņ‚Đĩ вŅĐĩ Đ´ĐĩŅ€ĐĩвŅŒŅ ĐŊĐ° ĐēĐ°Ņ€Ņ‚Ņƒ!", - "shortDescription": "КаŅ€Ņ‚Đ° Đ´ĐĩŅ€ĐĩвŅŒĐĩв", - "title": "ДĐĩŅ€ĐĩвŅŒŅ" + "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° ŅĐēĐ°ĐģĐžĐģаСаĐŊиŅ" + }, + "cyclestreets": { + "layers": { + "2": { + "name": "ВŅĐĩ ŅƒĐģиŅ†Ņ‹", + "title": { + "render": "ĐŖĐģиŅ†Đ°" + } + } } + }, + "cyclofix": { + "title": "Cyclofix - ĐžŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° Đ´ĐģŅ вĐĩĐģĐžŅĐ¸ĐŋĐĩдиŅŅ‚Ов" + }, + "drinking_water": { + "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ ĐŋĐžĐēаСŅ‹Đ˛Đ°ŅŽŅ‚ŅŅ и ĐŧĐžĐŗŅƒŅ‚ ĐąŅ‹Ņ‚ŅŒ ĐģĐĩĐŗĐēĐž дОйавĐģĐĩĐŊŅ‹ ОйŅ‰ĐĩĐ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Đĩ Ņ‚ĐžŅ‡Đēи ĐŋиŅ‚ŅŒĐĩвОК вОдŅ‹", + "title": "ПиŅ‚ŅŒĐĩваŅ вОда" + }, + "facadegardens": { + "layers": { + "0": { + "tagRenderings": { + "facadegardens-description": { + "question": "ДоĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊĐ°Ņ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸Ņ Đž ŅĐ°Đ´Đĩ (ĐĩŅĐģи Ņ‚Ņ€ĐĩĐąŅƒĐĩŅ‚ŅŅ иĐģи ĐĩŅ‰Đĩ ĐŊĐĩ ŅƒĐēаСаĐŊĐ° вŅ‹ŅˆĐĩ)", + "render": "ПодŅ€ĐžĐąĐŊĐĩĐĩ: {description}" + }, + "facadegardens-plants": { + "question": "КаĐēиĐĩ видŅ‹ Ņ€Đ°ŅŅ‚ĐĩĐŊиК ОйиŅ‚Đ°ŅŽŅ‚ СдĐĩŅŅŒ?" + }, + "facadegardens-rainbarrel": { + "mappings": { + "0": { + "then": "ЕŅŅ‚ŅŒ йОŅ‡ĐēĐ° Ņ Đ´ĐžĐļĐ´ĐĩвОК вОдОК" + }, + "1": { + "then": "НĐĩŅ‚ йОŅ‡Đēи Ņ Đ´ĐžĐļĐ´ĐĩвОК вОдОК" + } + } + }, + "facadegardens-start_date": { + "render": "ДаŅ‚Đ° ŅŅ‚Ņ€ĐžĐ¸Ņ‚ĐĩĐģŅŒŅŅ‚ва ŅĐ°Đ´Đ°: {start_date}" + }, + "facadegardens-sunshine": { + "question": "ĐĄĐ°Đ´ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊ ĐŊĐ° ŅĐžĐģĐŊĐĩŅ‡ĐŊОК ŅŅ‚ĐžŅ€ĐžĐŊĐĩ иĐģи в Ņ‚ĐĩĐŊи?" + } + } + } + } + }, + "ghostbikes": { + "title": "ВĐĩĐģĐžŅĐ¸ĐŋĐĩĐ´ Ghost" + }, + "hailhydrant": { + "layers": { + "0": { + "description": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ ĐŗидŅ€Đ°ĐŊŅ‚Ņ‹.", + "name": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ĐŗидŅ€Đ°ĐŊŅ‚Ов", + "presets": { + "0": { + "title": "ПоĐļĐ°Ņ€ĐŊŅ‹Đš ĐŗидŅ€Đ°ĐŊŅ‚" + } + }, + "tagRenderings": { + "hydrant-color": { + "mappings": { + "0": { + "then": "ĐĻвĐĩŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚Đ° ĐŊĐĩ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊ." + }, + "1": { + "then": "ГидŅ€Đ°ĐŊŅ‚ ĐļŅ‘ĐģŅ‚ĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ°." + }, + "2": { + "then": "ГидŅ€Đ°ĐŊŅ‚ ĐēŅ€Đ°ŅĐŊĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ°." + } + }, + "question": "КаĐēĐžĐŗĐž Ņ†Đ˛ĐĩŅ‚Đ° ĐŗидŅ€Đ°ĐŊŅ‚?", + "render": "ĐĻвĐĩŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚Đ° {colour}" + }, + "hydrant-state": { + "mappings": { + "0": { + "then": "ГидŅ€Đ°ĐŊŅ‚ (ĐŋĐžĐģĐŊĐžŅŅ‚ŅŒŅŽ иĐģи Ņ‡Đ°ŅŅ‚иŅ‡ĐŊĐž) в Ņ€Đ°ĐąĐžŅ‡ĐĩĐŧ ŅĐžŅŅ‚ĐžŅĐŊии." + }, + "2": { + "then": "ГидŅ€Đ°ĐŊŅ‚ Đ´ĐĩĐŧĐžĐŊŅ‚иŅ€ĐžĐ˛Đ°ĐŊ." + } + } + }, + "hydrant-type": { + "mappings": { + "0": { + "then": "ĐĸиĐŋ ĐŗидŅ€Đ°ĐŊŅ‚Đ° ĐŊĐĩ ĐžĐŋŅ€ĐĩĐ´ĐĩĐģŅ‘ĐŊ." + }, + "3": { + "then": " ĐĸиĐŋ ŅŅ‚ĐĩĐŊŅ‹." + } + }, + "question": "К ĐēĐ°ĐēĐžĐŧŅƒ Ņ‚иĐŋŅƒ ĐžŅ‚ĐŊĐžŅĐ¸Ņ‚ŅŅ ŅŅ‚ĐžŅ‚ ĐŗидŅ€Đ°ĐŊŅ‚?", + "render": " ĐĸиĐŋ ĐŗидŅ€Đ°ĐŊŅ‚Đ°: {fire_hydrant:type}" + } + }, + "title": { + "render": "ГидŅ€Đ°ĐŊŅ‚" + } + }, + "1": { + "description": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи.", + "name": "КаŅ€Ņ‚Đ° ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģĐĩĐš.", + "presets": { + "0": { + "description": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģŅŒ - ĐŊĐĩйОĐģŅŒŅˆĐžĐĩ ĐŋĐĩŅ€ĐĩĐŊĐžŅĐŊĐžĐĩ ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚вО Đ´ĐģŅ Ņ‚ŅƒŅˆĐĩĐŊиŅ ĐžĐŗĐŊŅ", + "title": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģŅŒ" + } + }, + "tagRenderings": { + "extinguisher-location": { + "mappings": { + "0": { + "then": "ВĐŊŅƒŅ‚Ņ€Đ¸." + }, + "1": { + "then": "ĐĄĐŊĐ°Ņ€ŅƒĐļи." + } + }, + "question": "ГдĐĩ ŅŅ‚Đž Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐž?", + "render": "МĐĩŅŅ‚ĐžĐŋĐžĐģĐžĐļĐĩĐŊиĐĩ: {location}" + } + }, + "title": { + "render": "ОĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи" + } + }, + "2": { + "description": "ĐĄĐģОК ĐēĐ°Ņ€Ņ‚Ņ‹, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ¸Đš ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ Ņ‡Đ°ŅŅ‚и.", + "name": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… Ņ‡Đ°ŅŅ‚ĐĩĐš", + "presets": { + "0": { + "title": "ПоĐļĐ°Ņ€ĐŊĐ°Ņ Ņ‡Đ°ŅŅ‚ŅŒ" + } + }, + "tagRenderings": { + "station-name": { + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊĐ°Ņ Ņ‡Đ°ŅŅ‚ŅŒ?", + "render": "Đ­Ņ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}." + }, + "station-place": { + "question": "ГдĐĩ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° Ņ‡Đ°ŅŅ‚ŅŒ? (ĐŊĐ°ĐŋŅ€., ĐŊаСваĐŊиĐĩ ĐŊĐ°ŅĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐŋŅƒĐŊĐēŅ‚Đ°)", + "render": "Đ­Ņ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° в {addr:place}." + }, + "station-street": { + "question": " По ĐēĐ°ĐēĐžĐŧŅƒ Đ°Đ´Ņ€ĐĩŅŅƒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° Ņ‡Đ°ŅŅ‚ŅŒ?", + "render": "ЧаŅŅ‚ŅŒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° вдОĐģŅŒ ŅˆĐžŅŅĐĩ {addr:street}." + } + }, + "title": { + "render": "ПоĐļĐ°Ņ€ĐŊĐ°Ņ Ņ‡Đ°ŅŅ‚ŅŒ" + } + }, + "3": { + "name": "КаŅ€Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Đš ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸", + "presets": { + "0": { + "description": "ДобавиŅ‚ŅŒ ŅŅ‚Đ°ĐŊŅ†Đ¸ŅŽ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸ ĐŊĐ° ĐēĐ°Ņ€Ņ‚Ņƒ", + "title": "ĐĄŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸" + } + }, + "tagRenderings": { + "ambulance-name": { + "question": "КаĐē ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸?", + "render": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ ĐŊаСŅ‹Đ˛Đ°ĐĩŅ‚ŅŅ {name}." + }, + "ambulance-place": { + "question": "ГдĐĩ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ? (ĐŊĐ°ĐŋŅ€., ĐŊаСваĐŊиĐĩ ĐŊĐ°ŅĐĩĐģŅ‘ĐŊĐŊĐžĐŗĐž ĐŋŅƒĐŊĐēŅ‚Đ°)" + }, + "ambulance-street": { + "question": " По ĐēĐ°ĐēĐžĐŧŅƒ Đ°Đ´Ņ€ĐĩŅŅƒ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° ŅŅ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ?", + "render": "Đ­Ņ‚Đ° ŅŅ‚Đ°ĐŊŅ†Đ¸Ņ Ņ€Đ°ŅĐŋĐžĐģĐžĐļĐĩĐŊĐ° вдОĐģŅŒ ŅˆĐžŅŅĐĩ {addr:street}." + } + }, + "title": { + "render": "ĐĄŅ‚Đ°ĐŊŅ†Đ¸Ņ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸" + } + } + }, + "shortDescription": "КаŅ€Ņ‚Đ° ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ĐŗидŅ€Đ°ĐŊŅ‚Ов, ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģĐĩĐš, ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Ņ… ŅŅ‚Đ°ĐŊŅ†Đ¸Đš и ŅŅ‚Đ°ĐŊŅ†Đ¸Đš ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸.", + "title": "ПоĐļĐ°Ņ€ĐŊŅ‹Đĩ ĐŗидŅ€Đ°ĐŊŅ‚Ņ‹, ĐžĐŗĐŊĐĩŅ‚ŅƒŅˆĐ¸Ņ‚ĐĩĐģи, ĐŋĐžĐļĐ°Ņ€ĐŊŅ‹Đĩ ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸ и ŅŅ‚Đ°ĐŊŅ†Đ¸Đ¸ ŅĐēĐžŅ€ĐžĐš ĐŋĐžĐŧĐžŅ‰Đ¸." + }, + "maps": { + "title": "КаŅ€Ņ‚Đ° ĐēĐ°Ņ€Ņ‚" + }, + "personal": { + "description": "ХОСдаŅ‚ŅŒ ĐŋĐĩŅ€ŅĐžĐŊĐ°ĐģŅŒĐŊŅƒŅŽ Ņ‚ĐĩĐŧŅƒ ĐŊĐ° ĐžŅĐŊОвĐĩ Đ´ĐžŅŅ‚ŅƒĐŋĐŊŅ‹Ņ… ŅĐģĐžŅ‘в Ņ‚ĐĩĐŧ" + }, + "playgrounds": { + "description": "На ŅŅ‚ОК ĐēĐ°Ņ€Ņ‚Đĩ ĐŧĐžĐļĐŊĐž ĐŊĐ°ĐšŅ‚и иĐŗŅ€ĐžĐ˛Ņ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи и дОйавиŅ‚ŅŒ Đ´ĐžĐŋĐžĐģĐŊиŅ‚ĐĩĐģŅŒĐŊŅƒŅŽ иĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Đ¸ŅŽ", + "shortDescription": "КаŅ€Ņ‚Đ° иĐŗŅ€ĐžĐ˛Ņ‹Ņ… ĐŋĐģĐžŅ‰Đ°Đ´ĐžĐē", + "title": "ИĐŗŅ€ĐžĐ˛Ņ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи" + }, + "shops": { + "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚ŅŒ ĐēĐ°Ņ€Ņ‚Ņƒ ĐŧĐ°ĐŗаСиĐŊОв" + }, + "sport_pitches": { + "shortDescription": "КаŅ€Ņ‚Đ°, ĐžŅ‚ОйŅ€Đ°ĐļĐ°ŅŽŅ‰Đ°Ņ ŅĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи", + "title": "ĐĄĐŋĐžŅ€Ņ‚ивĐŊŅ‹Đĩ ĐŋĐģĐžŅ‰Đ°Đ´Đēи" + }, + "toilets": { + "description": "КаŅ€Ņ‚Đ° ОйŅ‰ĐĩŅŅ‚вĐĩĐŊĐŊŅ‹Ņ… Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов", + "title": "ОŅ‚ĐēŅ€Ņ‹Ņ‚Đ°Ņ ĐēĐ°Ņ€Ņ‚Đ° Ņ‚ŅƒĐ°ĐģĐĩŅ‚Ов" + }, + "trees": { + "description": "НаĐŊĐĩŅĐ¸Ņ‚Đĩ вŅĐĩ Đ´ĐĩŅ€ĐĩвŅŒŅ ĐŊĐ° ĐēĐ°Ņ€Ņ‚Ņƒ!", + "shortDescription": "КаŅ€Ņ‚Đ° Đ´ĐĩŅ€ĐĩвŅŒĐĩв", + "title": "ДĐĩŅ€ĐĩвŅŒŅ" + } } \ No newline at end of file diff --git a/langs/themes/sv.json b/langs/themes/sv.json index 8c5ac8469..d2d04c4c4 100644 --- a/langs/themes/sv.json +++ b/langs/themes/sv.json @@ -1,12 +1,12 @@ { - "aed": { - "description": "PÃĨ denna karta kan man hitta och markera närliggande defibrillatorer", - "title": "Öppna AED-karta" - }, - "artwork": { - "title": "Öppen konstverkskarta" - }, - "ghostbikes": { - "title": "SpÃļkcykel" - } + "aed": { + "description": "PÃĨ denna karta kan man hitta och markera närliggande defibrillatorer", + "title": "Öppna AED-karta" + }, + "artwork": { + "title": "Öppen konstverkskarta" + }, + "ghostbikes": { + "title": "SpÃļkcykel" + } } \ No newline at end of file diff --git a/langs/themes/zh_Hant.json b/langs/themes/zh_Hant.json index 9a25e5000..eeeb35218 100644 --- a/langs/themes/zh_Hant.json +++ b/langs/themes/zh_Hant.json @@ -1,274 +1,323 @@ { - "aed": { - "description": "在這äģŊ地圖上īŧŒäŊ å¯äģĨæ‰žåˆ°čˆ‡æ¨™č¨˜é™„čŋ‘įš„除éĄĢ器", - "title": "開攞AED地圖" - }, - "artwork": { - "description": "æ­ĄčŋŽäž†åˆ°é–‹æ”žč—čĄ“品地圖īŧŒé€™äģŊåœ°åœ–æœƒéĄ¯į¤ē全世į•Œįš„雕像、半čēĢåƒã€åĄ—é´‰äģĨ及å…ļäģ–éĄžåž‹įš„č—čĄ“å“", - "title": "é–‹æ”žč—čĄ“å“åœ°åœ–" - }, - "benches": { - "description": "這äģŊåœ°åœ–éĄ¯į¤ēé–‹æ”žčĄ—åœ–ä¸Šæ‰€æœ‰č¨˜éŒ„įš„é•ˇæ¤…īŧšå–Žį¨įš„é•ˇæ¤…īŧŒåąŦæ–ŧ大įœžé‹čŧ¸įĢ™éģžæˆ–æļŧäē­įš„é•ˇæ¤…ã€‚åĒčĻæœ‰é–‹æ”žčĄ—圖å¸ŗ號īŧŒäŊ å¯äģĨ新åĸžé•ˇæ¤…或是įˇ¨čŧ¯æ—ĸæœ‰é•ˇæ¤…įš„čŠŗį´°å…§åŽšã€‚", - "shortDescription": "é•ˇæ¤…įš„地圖", - "title": "é•ˇæ¤…" - }, - "bicyclelib": { - "description": "å–ŽčģŠåœ–書館是指每嚴支äģ˜å°éĄč˛ģį”¨īŧŒį„ļ垌可äģĨį§Ÿį”¨å–ŽčģŠįš„地斚。最有名įš„å–ŽčģŠåœ–æ›¸é¤¨æĄˆäž‹æ˜¯įĩĻ小孊įš„īŧŒčƒŊå¤ čŽ“é•ˇå¤§įš„小孊į”¨į›Žå‰įš„å–ŽčģŠæ›æˆæ¯”čŧƒå¤§įš„å–ŽčģŠ", - "title": "å–ŽčģŠåœ–書館" - }, - "bookcases": { - "description": "å…Ŧå…ąæ›¸æžļæ˜¯čĄ—é‚ŠįŽąå­ã€į›’å­ã€čˆŠįš„é›ģ芹äē­æˆ–是å…ļäģ–存攞書æœŦįš„į‰ŠäģļīŧŒæ¯ä¸€å€‹äēēéƒŊčƒŊ攞įŊŽæˆ–æ‹ŋ取書æœŦ。這äģŊ地圖æ”ļé›†æ‰€æœ‰éĄžåž‹įš„書æžļīŧŒäŊ å¯äģĨæŽĸį´ĸäŊ é™„čŋ‘æ–°įš„書æžļīŧŒåŒæ™‚䚟čƒŊį”¨å…č˛ģįš„é–‹æ”žčĄ—åœ–å¸ŗ號來åŋĢ速新åĸžäŊ æœ€æ„›įš„書æžļ。", - "title": "開攞書æžļ地圖" - }, - "campersite": { - "description": "這個įļ˛įĢ™æ”ļé›†æ‰€æœ‰åŽ˜æ–šéœ˛į‡Ÿåœ°éģžīŧŒäģĨ及é‚Ŗ邊čƒŊ排攞åģĸ水。äŊ å¯äģĨ加上čŠŗį´°įš„服務項į›Žčˆ‡åƒšæ ŧīŧŒåŠ ä¸Šåœ–į‰‡äģĨåŠčŠ•åƒšã€‚é€™æ˜¯įļ˛įĢ™čˆ‡įļ˛čˇ¯ appīŧŒčŗ‡æ–™å‰‡æ˜¯å­˜åœ¨é–‹æ”žčĄ—圖īŧŒå› æ­¤æœƒæ°¸é å…č˛ģīŧŒč€Œä¸”可äģĨčĸĢ所有 app 再刊į”¨ã€‚", - "layers": { - "0": { - "description": "露į‡Ÿåœ°", - "name": "露į‡Ÿåœ°", - "presets": { - "0": { - "title": "露į‡Ÿåœ°" - } - }, - "tagRenderings": { - "caravansites-capacity": { - "question": "å¤šå°‘éœ˛į‡Ÿč€…čƒŊ夠垅在這čŖĄīŧŸ(åĻ‚æžœæ˛’æœ‰æ˜ŽéĄ¯įš„įŠēé–“æ•¸å­—æˆ–æ˜¯å…č¨ąčģŠčŧ›å‰‡å¯äģĨčˇŗ過)", - "render": "{capacity} 露į‡Ÿč€…čƒŊ夠同時äŊŋį”¨é€™å€‹åœ°æ–š" - }, - "caravansites-charge": { - "question": "這個地斚æ”ļ多少č˛ģį”¨īŧŸ", - "render": "這個地斚æ”ļč˛ģ {charge}" - }, - "caravansites-description": { - "question": "äŊ æƒŗčĻį‚ē這個地斚加一čˆŦįš„敘čŋ°å—ŽīŧŸ(不čĻé‡čĻ†åŠ å…ˆå‰å•éŽæˆ–提䞛įš„čŗ‡č¨ŠīŧŒčĢ‹äŋæŒæ•˜čŋ°æ€§-čĢ‹å°‡æ„čĻ‹į•™åœ¨čŠ•åƒš)", - "render": "這個地斚更čŠŗį´°įš„čŗ‡č¨Šīŧš {description}" - }, - "caravansites-fee": { - "mappings": { - "0": { - "then": "äŊ čĻäģ˜č˛ģ才čƒŊäŊŋį”¨" - }, - "1": { - "then": "可äģĨ免č˛ģäŊŋį”¨" - } - }, - "question": "這個地斚æ”ļč˛ģ嗎īŧŸ" - }, - "caravansites-internet": { - "mappings": { - "0": { - "then": "這čŖĄæœ‰įļ˛čˇ¯é€Ŗįˇš" - }, - "1": { - "then": "這čŖĄæœ‰įļ˛čˇ¯é€Ŗįˇš" - }, - "2": { - "then": "這čŖĄæ˛’有įļ˛čˇ¯é€Ŗįˇš" - } - }, - "question": "這個地斚有提įļ˛čˇ¯é€Ŗįˇšå—ŽīŧŸ" - }, - "caravansites-internet-fee": { - "mappings": { - "0": { - "then": "äŊ éœ€čĻéĄå¤–äģ˜č˛ģ來äŊŋį”¨įļ˛čˇ¯é€Ŗįˇš" - }, - "1": { - "then": "äŊ ä¸éœ€čĻéĄå¤–äģ˜č˛ģ來äŊŋį”¨įļ˛čˇ¯é€Ŗįˇš" - } - }, - "question": "äŊ éœ€čĻį‚ēįļ˛čˇ¯é€Ŗįˇšäģ˜č˛ģ嗎īŧŸ" - }, - "caravansites-long-term": { - "mappings": { - "0": { - "then": "有īŧŒé€™å€‹åœ°æ–šæœ‰æäž›é•ˇæœŸį§Ÿį”¨īŧŒäŊ†äŊ äšŸå¯äģĨį”¨å¤Šč¨ˆįŽ—č˛ģį”¨" - }, - "1": { - "then": "æ˛’æœ‰īŧŒé€™čŖĄæ˛’有永䚅įš„åŽĸæˆļ" - }, - "2": { - "then": "åĻ‚æžœæœ‰é•ˇæœŸį§Ÿį”¨åˆį´„才有可čƒŊ垅下䞆(åĻ‚æžœäŊ é¸æ“‡é€™å€‹åœ°æ–šå‰‡æœƒåœ¨é€™äģŊ地圖æļˆå¤ą)" - } - }, - "question": "é€™å€‹åœ°æ–šæœ‰æäž›é•ˇæœŸį§Ÿį”¨å—ŽīŧŸ" - }, - "caravansites-name": { - "question": "這個地斚åĢ做äģ€éēŧīŧŸ", - "render": "這個地斚åĢ做 {name}" - }, - "caravansites-sanitary-dump": { - "mappings": { - "0": { - "then": "é€™å€‹åœ°æ–šæœ‰čĄ›į”Ÿč¨­æ–Ŋ" - }, - "1": { - "then": "é€™å€‹åœ°æ–šæ˛’æœ‰čĄ›į”Ÿč¨­æ–Ŋ" - } - }, - "question": "é€™å€‹åœ°æ–šæœ‰čĄ›į”Ÿč¨­æ–Ŋ嗎īŧŸ" - }, - "caravansites-toilets": { - "mappings": { - "0": { - "then": "這個地斚有åģæ‰€" - }, - "1": { - "then": "這個地斚ä¸Ļæ˛’æœ‰åģæ‰€" - } - }, - "question": "這個地斚有åģæ‰€å—ŽīŧŸ" - }, - "caravansites-website": { - "question": "這個地斚有įļ˛įĢ™å—ŽīŧŸ", - "render": "厘斚įļ˛įĢ™īŧš{website}" - } - }, - "title": { - "mappings": { - "0": { - "then": "æ˛’æœ‰åį¨ąįš„éœ˛į‡Ÿåœ°" - } - }, - "render": "露į‡Ÿåœ° {name}" - } + "aed": { + "description": "在這äģŊ地圖上īŧŒäŊ å¯äģĨæ‰žåˆ°čˆ‡æ¨™č¨˜é™„čŋ‘įš„除éĄĢ器", + "title": "開攞AED地圖" + }, + "artwork": { + "description": "æ­ĄčŋŽäž†åˆ°é–‹æ”žč—čĄ“品地圖īŧŒé€™äģŊåœ°åœ–æœƒéĄ¯į¤ē全世į•Œįš„雕像、半čēĢåƒã€åĄ—é´‰äģĨ及å…ļäģ–éĄžåž‹įš„č—čĄ“å“", + "title": "é–‹æ”žč—čĄ“å“åœ°åœ–" + }, + "benches": { + "description": "這äģŊåœ°åœ–éĄ¯į¤ēé–‹æ”žčĄ—åœ–ä¸Šæ‰€æœ‰č¨˜éŒ„įš„é•ˇæ¤…īŧšå–Žį¨įš„é•ˇæ¤…īŧŒåąŦæ–ŧ大įœžé‹čŧ¸įĢ™éģžæˆ–æļŧäē­įš„é•ˇæ¤…ã€‚åĒčĻæœ‰é–‹æ”žčĄ—圖å¸ŗ號īŧŒäŊ å¯äģĨ新åĸžé•ˇæ¤…或是įˇ¨čŧ¯æ—ĸæœ‰é•ˇæ¤…įš„čŠŗį´°å…§åŽšã€‚", + "shortDescription": "é•ˇæ¤…įš„地圖", + "title": "é•ˇæ¤…" + }, + "bicyclelib": { + "description": "å–ŽčģŠåœ–書館是指每嚴支äģ˜å°éĄč˛ģį”¨īŧŒį„ļ垌可äģĨį§Ÿį”¨å–ŽčģŠįš„地斚。最有名įš„å–ŽčģŠåœ–æ›¸é¤¨æĄˆäž‹æ˜¯įĩĻ小孊įš„īŧŒčƒŊå¤ čŽ“é•ˇå¤§įš„小孊į”¨į›Žå‰įš„å–ŽčģŠæ›æˆæ¯”čŧƒå¤§įš„å–ŽčģŠ", + "title": "å–ŽčģŠåœ–書館" + }, + "binoculars": { + "description": "å›ē厚一地įš„æœ›é éĄåœ°åœ–īŧŒį‰šåˆĨ是čƒŊ夠在旅遊景éģžã€č§€æ™¯éģžã€åŸŽéŽŽį’°æ™¯éģžīŧŒæˆ–是č‡Ēį„ļäŋč­ˇå€æ‰žåˆ°ã€‚", + "shortDescription": "å›ēåŽšæœ›é éĄįš„地圖", + "title": "æœ›é éĄ" + }, + "bookcases": { + "description": "å…Ŧå…ąæ›¸æžļæ˜¯čĄ—é‚ŠįŽąå­ã€į›’å­ã€čˆŠįš„é›ģ芹äē­æˆ–是å…ļäģ–存攞書æœŦįš„į‰ŠäģļīŧŒæ¯ä¸€å€‹äēēéƒŊčƒŊ攞įŊŽæˆ–æ‹ŋ取書æœŦ。這äģŊ地圖æ”ļé›†æ‰€æœ‰éĄžåž‹įš„書æžļīŧŒäŊ å¯äģĨæŽĸį´ĸäŊ é™„čŋ‘æ–°įš„書æžļīŧŒåŒæ™‚䚟čƒŊį”¨å…č˛ģįš„é–‹æ”žčĄ—åœ–å¸ŗ號來åŋĢ速新åĸžäŊ æœ€æ„›įš„書æžļ。", + "title": "開攞書æžļ地圖" + }, + "cafes_and_pubs": { + "title": "å’–å•Ąåģŗčˆ‡é…’å§" + }, + "campersite": { + "description": "這個įļ˛įĢ™æ”ļé›†æ‰€æœ‰åŽ˜æ–šéœ˛į‡Ÿåœ°éģžīŧŒäģĨ及é‚Ŗ邊čƒŊ排攞åģĸ水。äŊ å¯äģĨ加上čŠŗį´°įš„服務項į›Žčˆ‡åƒšæ ŧīŧŒåŠ ä¸Šåœ–į‰‡äģĨåŠčŠ•åƒšã€‚é€™æ˜¯įļ˛įĢ™čˆ‡įļ˛čˇ¯ appīŧŒčŗ‡æ–™å‰‡æ˜¯å­˜åœ¨é–‹æ”žčĄ—圖īŧŒå› æ­¤æœƒæ°¸é å…č˛ģīŧŒč€Œä¸”可äģĨčĸĢ所有 app 再刊į”¨ã€‚", + "layers": { + "0": { + "description": "露į‡Ÿåœ°", + "name": "露į‡Ÿåœ°", + "presets": { + "0": { + "description": "新åĸžæ­Ŗåŧéœ˛į‡Ÿåœ°éģžīŧŒé€šå¸¸æ˜¯č¨­č¨ˆįĩĻ過夜įš„éœ˛į‡Ÿč€…įš„地éģžã€‚įœ‹čĩˇäž†åƒæ˜¯įœŸįš„éœ˛į‡Ÿåœ°æˆ–是一čˆŦįš„停čģŠå ´īŧŒč€Œä¸”äšŸč¨ąæ˛’æœ‰äģģäŊ•æŒ‡æ¨™īŧŒäŊ†åœ¨åŸŽéŽŽčĸĢåŽšč­°åœ°éģžã€‚åĻ‚果一čˆŦįĩĻ露į‡Ÿč€…įš„停čģŠå ´ä¸Ļ不是į”¨äž†éŽå¤œīŧŒå‰‡ä¸æ˜¯éœ˛į‡Ÿåœ°éģž ", + "title": "露į‡Ÿåœ°" + } + }, + "tagRenderings": { + "caravansites-capacity": { + "question": "å¤šå°‘éœ˛į‡Ÿč€…čƒŊ夠垅在這čŖĄīŧŸ(åĻ‚æžœæ˛’æœ‰æ˜ŽéĄ¯įš„įŠēé–“æ•¸å­—æˆ–æ˜¯å…č¨ąčģŠčŧ›å‰‡å¯äģĨčˇŗ過)", + "render": "{capacity} 露į‡Ÿč€…čƒŊ夠同時äŊŋį”¨é€™å€‹åœ°æ–š" + }, + "caravansites-charge": { + "question": "這個地斚æ”ļ多少č˛ģį”¨īŧŸ", + "render": "這個地斚æ”ļč˛ģ {charge}" + }, + "caravansites-description": { + "question": "äŊ æƒŗčĻį‚ē這個地斚加一čˆŦįš„敘čŋ°å—ŽīŧŸ(不čĻé‡čĻ†åŠ å…ˆå‰å•éŽæˆ–提䞛įš„čŗ‡č¨ŠīŧŒčĢ‹äŋæŒæ•˜čŋ°æ€§-čĢ‹å°‡æ„čĻ‹į•™åœ¨čŠ•åƒš)", + "render": "這個地斚更čŠŗį´°įš„čŗ‡č¨Šīŧš {description}" + }, + "caravansites-fee": { + "mappings": { + "0": { + "then": "äŊ čĻäģ˜č˛ģ才čƒŊäŊŋį”¨" + }, + "1": { + "then": "可äģĨ免č˛ģäŊŋį”¨" + } }, - "1": { - "tagRenderings": { - "dumpstations-chemical-waste": { - "mappings": { - "0": { - "then": "äŊ å¯äģĨ在這邊丟æŖ„åģæ‰€åŒ–å­¸åģĸæŖ„į‰Š" - }, - "1": { - "then": "äŊ ä¸čƒŊ在這邊丟æŖ„åģæ‰€åŒ–å­¸åģĸæŖ„į‰Š" - } - }, - "question": "äŊ čƒŊ在這čŖĄä¸ŸæŖ„åģæ‰€åŒ–å­¸åģĸæŖ„į‰Šå—ŽīŧŸ" - } - } - } - }, - "shortDescription": "露į‡Ÿč€…å°‹æ‰žæ¸ĄéŽå¤œæ™šįš„場地", - "title": "露į‡Ÿåœ°éģž" - }, - "charging_stations": { - "description": "在這äģŊ開攞地圖上īŧŒäŊ å¯äģĨå°‹æ‰žčˆ‡æ¨™į¤ē充é›ģįĢ™įš„čŗ‡č¨Š", - "shortDescription": "全世į•Œįš„å……é›ģįĢ™åœ°åœ–", - "title": "充é›ģįĢ™" - }, - "climbing": { - "description": "在這äģŊ地圖上äŊ æœƒį™ŧįžčƒŊ夠攀įˆŦ抟會īŧŒåƒæ˜¯æ”€å˛ŠéĢ”č‚˛é¤¨ã€æŠąįŸŗ大åģŗäģĨ及大č‡Ēį„ļį•ļ中įš„åˇ¨įŸŗ。", - "descriptionTail": "攀įˆŦ地圖最初į”ą Christian Neumann čŖŊäŊœã€‚åĻ‚æžœäŊ æœ‰å›žéĨ‹æ„čĻ‹æˆ–å•éĄŒčĢ‹åˆ°Please 這邊反應。

é€™å°ˆæĄˆäŊŋį”¨äž†č‡Ēé–‹æ”žčĄ—åœ–å°ˆæĄˆįš„čŗ‡æ–™ã€‚

", - "layers": { - "0": { - "description": "æ”€å˛Šį¤žåœ˜æˆ–įĩ„įš”", - "name": "æ”€å˛Šį¤žåœ˜", - "tagRenderings": { - "climbing_club-name": { - "render": "{name}" - } - }, - "title": { - "mappings": { - "0": { - "then": "æ”€å˛Š NGO" - } - }, - "render": "æ”€å˛Šį¤žåœ˜" - } - } - }, - "title": "開攞攀įˆŦ地圖" - }, - "cyclestreets": { - "description": "å–ŽčģŠčĄ—道是抟動čģŠčŧ›å—限åˆļīŧŒåĒå…č¨ąå–ŽčģŠé€ščĄŒįš„é“čˇ¯ã€‚é€šå¸¸æœƒæœ‰čˇ¯æ¨™éĄ¯į¤ēį‰šåˆĨįš„äē¤é€šæŒ‡æ¨™ã€‚å–ŽčģŠčĄ—é“é€šå¸¸åœ¨čˇč˜­ã€æ¯”åˆŠæ™‚įœ‹åˆ°īŧŒäŊ†åžˇåœ‹čˆ‡æŗ•åœ‹äšŸæœ‰ã€‚ ", - "layers": { - "0": { - "name": "å–ŽčģŠčĄ—道" + "question": "這個地斚æ”ļč˛ģ嗎īŧŸ" + }, + "caravansites-internet": { + "mappings": { + "0": { + "then": "這čŖĄæœ‰įļ˛čˇ¯é€Ŗįˇš" + }, + "1": { + "then": "這čŖĄæœ‰įļ˛čˇ¯é€Ŗįˇš" + }, + "2": { + "then": "這čŖĄæ˛’有įļ˛čˇ¯é€Ŗįˇš" + } }, - "1": { - "name": "將䞆įš„å–ŽčģŠčĄ—道" - } - }, - "shortDescription": "å–ŽčģŠčĄ—道įš„地圖", - "title": "å–ŽčģŠčĄ—道" - }, - "cyclofix": { - "description": "這äģŊ地圖įš„į›Žįš„是į‚ēå–ŽčģŠé¨ŽåŖĢčƒŊ夠čŧ•æ˜“éĄ¯į¤ēæģŋčļŗäģ–å€‘éœ€æą‚įš„į›¸é—œč¨­æ–Ŋ。

äŊ å¯äģĨčŋŊ蚤äŊ įĸē切äŊįŊŽ (åĒæœ‰čĄŒå‹•į‰ˆ)īŧŒäģĨ及在åˇĻä¸‹č§’é¸æ“‡į›¸é—œįš„åœ–åą¤ã€‚äŊ å¯äģĨäŊŋį”¨é€™åˇĨå…ˇåœ¨åœ°åœ–æ–°åĸžæˆ–įˇ¨čŧ¯é‡˜å­īŧŒäģĨ及透過回į­”å•éĄŒäž†æäž›æ›´å¤ščŗ‡č¨Šã€‚

所有äŊ įš„čŽŠå‹•éƒŊ會č‡Ēå‹•å­˜åœ¨é–‹æ”žčĄ—åœ–é€™å…¨įƒčŗ‡æ–™åœ–īŧŒä¸Ļ且čƒŊčĸĢäģģäŊ•äēēč‡Ēį”ąå–į”¨ã€‚

äŊ å¯äģĨ到 cyclofix.osm.be é–ąčŽ€æ›´å¤ščŗ‡č¨Šã€‚", - "title": "å–ŽčģŠäŋŽæ­Ŗ - å–ŽčģŠé¨ŽåŖĢįš„開攞地圖" - }, - "drinking_water": { - "description": "在這äģŊ地圖上īŧŒå…Ŧå…ąå¯åŠįš„éŖ˛æ°´éģžå¯äģĨéĄ¯į¤ēå‡ē來īŧŒäšŸčƒŊčŧ•æ˜“įš„åĸžåŠ ", - "title": "éŖ˛į”¨æ°´" - }, - "facadegardens": { - "layers": { - "0": { - "description": "įĢ‹éĸčŠąåœ’", - "name": "įĢ‹éĸčŠąåœ’", - "title": { - "render": "įĢ‹éĸčŠąåœ’" - } - } - }, - "shortDescription": "é€™åœ°åœ–éĄ¯į¤ēįĢ‹éĸčŠąåœ’įš„į…§į‰‡äģĨ及å…ļäģ–像是斚向、æ—Ĩį…§äģĨ及植æ Ŋį¨ŽéĄžį­‰å¯Ļį”¨č¨Šæ¯ã€‚", - "title": "įĢ‹éĸčŠąåœ’" - }, - "ghostbikes": { - "description": "åšŊ靈喎čģŠæ˜¯į”¨äž†į´€åŋĩæ­ģæ–ŧäē¤é€šäē‹æ•…įš„å–ŽčģŠé¨ŽåŖĢīŧŒåœ¨äē‹į™ŧ地éģžé™„čŋ‘攞įŊŽį™Ŋč‰˛å–ŽčģŠã€‚

在這äģŊ地圖上éĸīŧŒäŊ å¯äģĨįœ‹åˆ°æ‰€æœ‰åœ¨é–‹æ”žčĄ—åœ–åˇ˛įŸĨįš„åšŊ靈喎čģŠã€‚有įŧēæŧįš„åšŊ靈喎čģŠå—ŽīŧŸæ‰€æœ‰äēēéƒŊ可äģĨ在這邊新åĸžæˆ–是更新čŗ‡č¨Š-åĒ有äŊ æœ‰(免č˛ģ)é–‹æ”žčĄ—åœ–å¸ŗč™Ÿã€‚", - "title": "åšŊ靈喎čģŠ" - }, - "hailhydrant": { - "description": "在這äģŊ地圖上éĸäŊ å¯äģĨ在äŊ å–œæ„›įš„į¤žå€å°‹æ‰žčˆ‡æ›´æ–°æļˆé˜˛æ “、æļˆé˜˛éšŠã€æ€Ĩ救įĢ™čˆ‡æģ…įĢ器。\n\näŊ å¯äģĨčŋŊ蚤įĸē切äŊįŊŽ (åĒæœ‰čĄŒå‹•į‰ˆ) äģĨ及在åˇĻä¸‹č§’é¸æ“‡čˆ‡äŊ į›¸é—œįš„åœ–åą¤ã€‚äŊ äšŸå¯äģĨäŊŋį”¨é€™åˇĨå…ˇæ–°åĸžæˆ–įˇ¨čŧ¯åœ°åœ–上įš„釘子 (興čļŖéģž)īŧŒäģĨ及透過回į­”一äē›å•éĄŒæäž›éĄå¤–įš„čŗ‡č¨Šã€‚\n\n所有äŊ åšå‡ēįš„čŽŠå‹•éƒŊ會č‡Ēå‹•å­˜åˆ°é–‹æ”žčĄ—åœ–é€™å€‹å…¨įƒčŗ‡æ–™åēĢīŧŒč€Œä¸”čƒŊč‡Ēį”ąčŽ“å…ļäģ–äēē取į”¨ã€‚", - "layers": { - "0": { - "description": "éĄ¯į¤ēæļˆé˜˛æ “įš„åœ°åœ–åœ–åą¤ã€‚", - "name": "æļˆé˜˛æ “地圖" + "question": "這個地斚有提įļ˛čˇ¯é€Ŗįˇšå—ŽīŧŸ" + }, + "caravansites-internet-fee": { + "mappings": { + "0": { + "then": "äŊ éœ€čĻéĄå¤–äģ˜č˛ģ來äŊŋį”¨įļ˛čˇ¯é€Ŗįˇš" + }, + "1": { + "then": "äŊ ä¸éœ€čĻéĄå¤–äģ˜č˛ģ來äŊŋį”¨įļ˛čˇ¯é€Ŗįˇš" + } }, - "1": { - "description": "éĄ¯į¤ēæļˆé˜˛æ “įš„åœ°åœ–åœ–åą¤ã€‚" - } + "question": "äŊ éœ€čĻį‚ēįļ˛čˇ¯é€Ŗįˇšäģ˜č˛ģ嗎īŧŸ" + }, + "caravansites-long-term": { + "mappings": { + "0": { + "then": "有īŧŒé€™å€‹åœ°æ–šæœ‰æäž›é•ˇæœŸį§Ÿį”¨īŧŒäŊ†äŊ äšŸå¯äģĨį”¨å¤Šč¨ˆįŽ—č˛ģį”¨" + }, + "1": { + "then": "æ˛’æœ‰īŧŒé€™čŖĄæ˛’有永䚅įš„åŽĸæˆļ" + }, + "2": { + "then": "åĻ‚æžœæœ‰é•ˇæœŸį§Ÿį”¨åˆį´„才有可čƒŊ垅下䞆(åĻ‚æžœäŊ é¸æ“‡é€™å€‹åœ°æ–šå‰‡æœƒåœ¨é€™äģŊ地圖æļˆå¤ą)" + } + }, + "question": "é€™å€‹åœ°æ–šæœ‰æäž›é•ˇæœŸį§Ÿį”¨å—ŽīŧŸ" + }, + "caravansites-name": { + "question": "這個地斚åĢ做äģ€éēŧīŧŸ", + "render": "這個地斚åĢ做 {name}" + }, + "caravansites-sanitary-dump": { + "mappings": { + "0": { + "then": "é€™å€‹åœ°æ–šæœ‰čĄ›į”Ÿč¨­æ–Ŋ" + }, + "1": { + "then": "é€™å€‹åœ°æ–šæ˛’æœ‰čĄ›į”Ÿč¨­æ–Ŋ" + } + }, + "question": "é€™å€‹åœ°æ–šæœ‰čĄ›į”Ÿč¨­æ–Ŋ嗎īŧŸ" + }, + "caravansites-toilets": { + "mappings": { + "0": { + "then": "這個地斚有åģæ‰€" + }, + "1": { + "then": "這個地斚ä¸Ļæ˛’æœ‰åģæ‰€" + } + }, + "question": "這個地斚有åģæ‰€å—ŽīŧŸ" + }, + "caravansites-website": { + "question": "這個地斚有įļ˛įĢ™å—ŽīŧŸ", + "render": "厘斚įļ˛įĢ™īŧš{website}" + } }, - "shortDescription": "éĄ¯į¤ēæļˆé˜˛æ “、æģ…įĢ器、æļˆé˜˛éšŠčˆ‡æ€Ĩ救įĢ™įš„地圖。", - "title": "æļˆé˜˛æ “、æģ…įĢ器、æļˆé˜˛éšŠã€äģĨ及æ€Ĩ救įĢ™ã€‚" + "title": { + "mappings": { + "0": { + "then": "æ˛’æœ‰åį¨ąįš„éœ˛į‡Ÿåœ°" + } + }, + "render": "露į‡Ÿåœ° {name}" + } + }, + "1": { + "description": "åžƒåœžč™•į†įĢ™", + "name": "åžƒåœžč™•į†įĢ™", + "presets": { + "0": { + "description": "新åĸžåžƒåœžįĢ™īŧŒé€™é€šå¸¸æ˜¯æäž›éœ˛į‡Ÿé§•é§›ä¸ŸæŖ„åģĸæ°´čˆ‡åŒ–å­¸æ€§åģæ‰€åģĸæ°´įš„地斚īŧŒäšŸæœƒæœ‰éŖ˛į”¨æ°´čˆ‡é›ģ力。", + "title": "垃圞丟æŖ„įĢ™" + } + }, + "tagRenderings": { + "dumpstations-access": { + "mappings": { + "0": { + "then": "äŊ éœ€čĻįļ˛čˇ¯é‘°åŒ™/密įĸŧ來äŊŋį”¨é€™å€‹č¨­æ–Ŋ" + }, + "1": { + "then": "äŊ éœ€čĻæ˜¯éœ˛į‡Ÿ/露į‡Ÿåœ°įš„åŽĸæˆļ才čƒŊäŊŋį”¨é€™ä¸€åœ°æ–š" + }, + "2": { + "then": "äģģäŊ•äēēéƒŊ可äģĨäŊŋį”¨é€™å€‹čĄ›į”ŸåģĸæŖ„į‰ŠįĢ™" + }, + "3": { + "then": "äģģäŊ•äēēéƒŊ可äģĨäŊŋį”¨é€™å€‹åžƒåœžįĢ™" + } + }, + "question": "čĒ°å¯äģĨäŊŋį”¨é€™å€‹åžƒåœžįĢ™īŧŸ" + }, + "dumpstations-charge": { + "question": "這個地斚æ”ļč˛ģ多少īŧŸ", + "render": "這個地斚æ”ļč˛ģ {charge}" + }, + "dumpstations-chemical-waste": { + "mappings": { + "0": { + "then": "äŊ å¯äģĨ在這邊丟æŖ„åģæ‰€åŒ–å­¸åģĸæŖ„į‰Š" + }, + "1": { + "then": "äŊ ä¸čƒŊ在這邊丟æŖ„åģæ‰€åŒ–å­¸åģĸæŖ„į‰Š" + } + }, + "question": "äŊ čƒŊ在這čŖĄä¸ŸæŖ„åģæ‰€åŒ–å­¸åģĸæŖ„į‰Šå—ŽīŧŸ" + }, + "dumpstations-fee": { + "mappings": { + "0": { + "then": "äŊ éœ€čĻäģ˜č˛ģ才čƒŊäŊŋį”¨" + }, + "1": { + "then": "這čŖĄå¯äģĨ免č˛ģäŊŋį”¨" + } + }, + "question": "這個地斚需čĻäģ˜č˛ģ嗎īŧŸ" + } + } + } }, - "maps": { - "description": "在這äģŊ地圖äŊ å¯äģĨæ‰žåˆ°æ‰€åœ¨åœ¨é–‹æ”žčĄ—åœ–ä¸Šåˇ˛įŸĨįš„地圖 - į‰šåˆĨæ˜¯éĄ¯į¤ē地區、城市、區域įš„čŗ‡č¨Šį‰ˆéĸ上įš„大型地圖īŧŒäž‹åĻ‚äŊˆå‘ŠæŦ„čƒŒéĸįš„旅遊地圖īŧŒč‡Ēį„ļäŋč­ˇå€įš„地圖īŧŒå€åŸŸįš„å–ŽčģŠįļ˛čˇ¯åœ°åœ–īŧŒ...)

åĻ‚果有įŧē少įš„地圖īŧŒäŊ å¯äģĨčŧ•æ˜“åœ¨é–‹æ”žčĄ—åœ–ä¸Šæ–°åĸžé€™åœ°åœ–。", - "shortDescription": "這äģŊä¸ģéĄŒéĄ¯į¤ēæ‰€æœ‰åˇ˛įŸĨįš„é–‹æ”žčĄ—åœ–ä¸Šįš„ (旅遊) 地圖", - "title": "地圖įš„地圖" + "shortDescription": "露į‡Ÿč€…å°‹æ‰žæ¸ĄéŽå¤œæ™šįš„場地", + "title": "露į‡Ÿåœ°éģž" + }, + "charging_stations": { + "description": "在這äģŊ開攞地圖上īŧŒäŊ å¯äģĨå°‹æ‰žčˆ‡æ¨™į¤ē充é›ģįĢ™įš„čŗ‡č¨Š", + "shortDescription": "全世į•Œįš„å……é›ģįĢ™åœ°åœ–", + "title": "充é›ģįĢ™" + }, + "climbing": { + "description": "在這äģŊ地圖上äŊ æœƒį™ŧįžčƒŊ夠攀įˆŦ抟會īŧŒåƒæ˜¯æ”€å˛ŠéĢ”č‚˛é¤¨ã€æŠąįŸŗ大åģŗäģĨ及大č‡Ēį„ļį•ļ中įš„åˇ¨įŸŗ。", + "descriptionTail": "攀įˆŦ地圖最初į”ą Christian Neumann čŖŊäŊœã€‚åĻ‚æžœäŊ æœ‰å›žéĨ‹æ„čĻ‹æˆ–å•éĄŒčĢ‹åˆ°Please 這邊反應。

é€™å°ˆæĄˆäŊŋį”¨äž†č‡Ēé–‹æ”žčĄ—åœ–å°ˆæĄˆįš„čŗ‡æ–™ã€‚

", + "layers": { + "0": { + "description": "æ”€å˛Šį¤žåœ˜æˆ–įĩ„įš”", + "name": "æ”€å˛Šį¤žåœ˜", + "tagRenderings": { + "climbing_club-name": { + "render": "{name}" + } + }, + "title": { + "mappings": { + "0": { + "then": "æ”€å˛Š NGO" + } + }, + "render": "æ”€å˛Šį¤žåœ˜" + } + } }, - "personal": { - "description": "垞所有可į”¨įš„ä¸ģéĄŒåœ–åą¤å‰ĩåģē個äēē化ä¸ģ題", - "title": "個äēē化ä¸ģ題" + "title": "開攞攀įˆŦ地圖" + }, + "cyclestreets": { + "description": "å–ŽčģŠčĄ—道是抟動čģŠčŧ›å—限åˆļīŧŒåĒå…č¨ąå–ŽčģŠé€ščĄŒįš„é“čˇ¯ã€‚é€šå¸¸æœƒæœ‰čˇ¯æ¨™éĄ¯į¤ēį‰šåˆĨįš„äē¤é€šæŒ‡æ¨™ã€‚å–ŽčģŠčĄ—é“é€šå¸¸åœ¨čˇč˜­ã€æ¯”åˆŠæ™‚įœ‹åˆ°īŧŒäŊ†åžˇåœ‹čˆ‡æŗ•åœ‹äšŸæœ‰ã€‚ ", + "layers": { + "0": { + "name": "å–ŽčģŠčĄ—道" + }, + "1": { + "name": "將䞆įš„å–ŽčģŠčĄ—道" + } }, - "playgrounds": { - "description": "在這äģŊ地圖上īŧŒäŊ å¯äģĨ尋扞遊樂場äģĨ及å…ļį›¸é—œčŗ‡č¨Š", - "shortDescription": "遊樂場įš„地圖", - "title": "遊樂場" + "shortDescription": "å–ŽčģŠčĄ—道įš„地圖", + "title": "å–ŽčģŠčĄ—道" + }, + "cyclofix": { + "description": "這äģŊ地圖įš„į›Žįš„是į‚ēå–ŽčģŠé¨ŽåŖĢčƒŊ夠čŧ•æ˜“éĄ¯į¤ēæģŋčļŗäģ–å€‘éœ€æą‚įš„į›¸é—œč¨­æ–Ŋ。

äŊ å¯äģĨčŋŊ蚤äŊ įĸē切äŊįŊŽ (åĒæœ‰čĄŒå‹•į‰ˆ)īŧŒäģĨ及在åˇĻä¸‹č§’é¸æ“‡į›¸é—œįš„åœ–åą¤ã€‚äŊ å¯äģĨäŊŋį”¨é€™åˇĨå…ˇåœ¨åœ°åœ–æ–°åĸžæˆ–įˇ¨čŧ¯é‡˜å­īŧŒäģĨ及透過回į­”å•éĄŒäž†æäž›æ›´å¤ščŗ‡č¨Šã€‚

所有äŊ įš„čŽŠå‹•éƒŊ會č‡Ēå‹•å­˜åœ¨é–‹æ”žčĄ—åœ–é€™å…¨įƒčŗ‡æ–™åœ–īŧŒä¸Ļ且čƒŊčĸĢäģģäŊ•äēēč‡Ēį”ąå–į”¨ã€‚

äŊ å¯äģĨ到 cyclofix.osm.be é–ąčŽ€æ›´å¤ščŗ‡č¨Šã€‚", + "title": "å–ŽčģŠäŋŽæ­Ŗ - å–ŽčģŠé¨ŽåŖĢįš„開攞地圖" + }, + "drinking_water": { + "description": "在這äģŊ地圖上īŧŒå…Ŧå…ąå¯åŠįš„éŖ˛æ°´éģžå¯äģĨéĄ¯į¤ēå‡ē來īŧŒäšŸčƒŊčŧ•æ˜“įš„åĸžåŠ ", + "title": "éŖ˛į”¨æ°´" + }, + "facadegardens": { + "layers": { + "0": { + "description": "įĢ‹éĸčŠąåœ’", + "name": "įĢ‹éĸčŠąåœ’", + "title": { + "render": "įĢ‹éĸčŠąåœ’" + } + } }, - "shops": { - "description": "這äģŊ地圖上īŧŒäŊ å¯äģĨæ¨™č¨˜å•†åŽļåŸēæœŦčŗ‡č¨ŠīŧŒæ–°åĸžį‡ŸæĨ­æ™‚é–“äģĨåŠč¯įĩĄé›ģ芹", - "title": "開攞商åē—地圖" + "shortDescription": "é€™åœ°åœ–éĄ¯į¤ēįĢ‹éĸčŠąåœ’įš„į…§į‰‡äģĨ及å…ļäģ–像是斚向、æ—Ĩį…§äģĨ及植æ Ŋį¨ŽéĄžį­‰å¯Ļį”¨č¨Šæ¯ã€‚", + "title": "įĢ‹éĸčŠąåœ’" + }, + "ghostbikes": { + "description": "åšŊ靈喎čģŠæ˜¯į”¨äž†į´€åŋĩæ­ģæ–ŧäē¤é€šäē‹æ•…įš„å–ŽčģŠé¨ŽåŖĢīŧŒåœ¨äē‹į™ŧ地éģžé™„čŋ‘攞įŊŽį™Ŋč‰˛å–ŽčģŠã€‚

在這äģŊ地圖上éĸīŧŒäŊ å¯äģĨįœ‹åˆ°æ‰€æœ‰åœ¨é–‹æ”žčĄ—åœ–åˇ˛įŸĨįš„åšŊ靈喎čģŠã€‚有įŧēæŧįš„åšŊ靈喎čģŠå—ŽīŧŸæ‰€æœ‰äēēéƒŊ可äģĨ在這邊新åĸžæˆ–是更新čŗ‡č¨Š-åĒ有äŊ æœ‰(免č˛ģ)é–‹æ”žčĄ—åœ–å¸ŗč™Ÿã€‚", + "title": "åšŊ靈喎čģŠ" + }, + "hailhydrant": { + "description": "在這äģŊ地圖上éĸäŊ å¯äģĨ在äŊ å–œæ„›įš„į¤žå€å°‹æ‰žčˆ‡æ›´æ–°æļˆé˜˛æ “、æļˆé˜˛éšŠã€æ€Ĩ救įĢ™čˆ‡æģ…įĢ器。\n\näŊ å¯äģĨčŋŊ蚤įĸē切äŊįŊŽ (åĒæœ‰čĄŒå‹•į‰ˆ) äģĨ及在åˇĻä¸‹č§’é¸æ“‡čˆ‡äŊ į›¸é—œįš„åœ–åą¤ã€‚äŊ äšŸå¯äģĨäŊŋį”¨é€™åˇĨå…ˇæ–°åĸžæˆ–įˇ¨čŧ¯åœ°åœ–上įš„釘子 (興čļŖéģž)īŧŒäģĨ及透過回į­”一äē›å•éĄŒæäž›éĄå¤–įš„čŗ‡č¨Šã€‚\n\n所有äŊ åšå‡ēįš„čŽŠå‹•éƒŊ會č‡Ēå‹•å­˜åˆ°é–‹æ”žčĄ—åœ–é€™å€‹å…¨įƒčŗ‡æ–™åēĢīŧŒč€Œä¸”čƒŊč‡Ēį”ąčŽ“å…ļäģ–äēē取į”¨ã€‚", + "layers": { + "0": { + "description": "éĄ¯į¤ēæļˆé˜˛æ “įš„åœ°åœ–åœ–åą¤ã€‚", + "name": "æļˆé˜˛æ “地圖" + }, + "1": { + "description": "éĄ¯į¤ēæļˆé˜˛æ “įš„åœ°åœ–åœ–åą¤ã€‚" + } }, - "sport_pitches": { - "description": "é‹å‹•å ´åœ°æ˜¯é€˛čĄŒé‹å‹•įš„地斚", - "shortDescription": "éĄ¯į¤ē運動場地įš„地圖", - "title": "運動場地" - }, - "surveillance": { - "description": "在這äģŊ開攞地圖īŧŒäŊ å¯äģĨ扞到į›ŖčĻ–éĄé ­ã€‚", - "shortDescription": "į›ŖčĻ–éĄé ­čˆ‡å…ļäģ–åž‹åŧįš„į›ŖčĻ–", - "title": "čĸĢį›ŖčĻ–įš„į›ŖčĻ–器" - }, - "toilets": { - "description": "å…Ŧå…ąåģæ‰€įš„地圖", - "title": "開攞åģæ‰€åœ°åœ–" - }, - "trees": { - "description": "įšĒčŖŊ所有樚木īŧ", - "shortDescription": "所有樚木įš„地圖", - "title": "樚木" - } + "shortDescription": "éĄ¯į¤ēæļˆé˜˛æ “、æģ…įĢ器、æļˆé˜˛éšŠčˆ‡æ€Ĩ救įĢ™įš„地圖。", + "title": "æļˆé˜˛æ “、æģ…įĢ器、æļˆé˜˛éšŠã€äģĨ及æ€Ĩ救įĢ™ã€‚" + }, + "maps": { + "description": "在這äģŊ地圖äŊ å¯äģĨæ‰žåˆ°æ‰€åœ¨åœ¨é–‹æ”žčĄ—åœ–ä¸Šåˇ˛įŸĨįš„地圖 - į‰šåˆĨæ˜¯éĄ¯į¤ē地區、城市、區域įš„čŗ‡č¨Šį‰ˆéĸ上įš„大型地圖īŧŒäž‹åĻ‚äŊˆå‘ŠæŦ„čƒŒéĸįš„旅遊地圖īŧŒč‡Ēį„ļäŋč­ˇå€įš„地圖īŧŒå€åŸŸįš„å–ŽčģŠįļ˛čˇ¯åœ°åœ–īŧŒ...)

åĻ‚果有įŧē少įš„地圖īŧŒäŊ å¯äģĨčŧ•æ˜“åœ¨é–‹æ”žčĄ—åœ–ä¸Šæ–°åĸžé€™åœ°åœ–。", + "shortDescription": "這äģŊä¸ģéĄŒéĄ¯į¤ēæ‰€æœ‰åˇ˛įŸĨįš„é–‹æ”žčĄ—åœ–ä¸Šįš„ (旅遊) 地圖", + "title": "地圖įš„地圖" + }, + "personal": { + "description": "垞所有可į”¨įš„ä¸ģéĄŒåœ–åą¤å‰ĩåģē個äēē化ä¸ģ題", + "title": "個äēē化ä¸ģ題" + }, + "playgrounds": { + "description": "在這äģŊ地圖上īŧŒäŊ å¯äģĨ尋扞遊樂場äģĨ及å…ļį›¸é—œčŗ‡č¨Š", + "shortDescription": "遊樂場įš„地圖", + "title": "遊樂場" + }, + "shops": { + "description": "這äģŊ地圖上īŧŒäŊ å¯äģĨæ¨™č¨˜å•†åŽļåŸēæœŦčŗ‡č¨ŠīŧŒæ–°åĸžį‡ŸæĨ­æ™‚é–“äģĨåŠč¯įĩĄé›ģ芹", + "title": "開攞商åē—地圖" + }, + "sport_pitches": { + "description": "é‹å‹•å ´åœ°æ˜¯é€˛čĄŒé‹å‹•įš„地斚", + "shortDescription": "éĄ¯į¤ē運動場地įš„地圖", + "title": "運動場地" + }, + "surveillance": { + "description": "在這äģŊ開攞地圖īŧŒäŊ å¯äģĨ扞到į›ŖčĻ–éĄé ­ã€‚", + "shortDescription": "į›ŖčĻ–éĄé ­čˆ‡å…ļäģ–åž‹åŧįš„į›ŖčĻ–", + "title": "čĸĢį›ŖčĻ–įš„į›ŖčĻ–器" + }, + "toilets": { + "description": "å…Ŧå…ąåģæ‰€įš„地圖", + "title": "開攞åģæ‰€åœ°åœ–" + }, + "trees": { + "description": "įšĒčŖŊ所有樚木īŧ", + "shortDescription": "所有樚木įš„地圖", + "title": "樚木" + } } \ No newline at end of file diff --git a/langs/zh_Hant.json b/langs/zh_Hant.json index 8c72b001d..20603e2d1 100644 --- a/langs/zh_Hant.json +++ b/langs/zh_Hant.json @@ -53,128 +53,128 @@ } }, "general": { - "opening_hours": { - "ph_closed": "į„Ąį‡ŸæĨ­", - "ph_open": "有į‡ŸæĨ­", - "ph_not_known": " ", - "open_24_7": "24小時į‡ŸæĨ­", - "closed_permanently": "不清æĨšé—œé–‰å¤šäš…äē†", - "closed_until": "{date} čĩˇé—œé–‰", - "not_all_rules_parsed": "這間åē—įš„開攞時間į›¸į•ļ複雜īŧŒåœ¨čŧ¸å…Ĩ元į´ æ™‚åŋŊį•ĨæŽĨ下來įš„čĻå‰‡īŧš", - "openTill": "įĩæŸæ™‚é–“", - "opensAt": "開始時間", - "open_during_ph": "國厚假æ—Ĩįš„時候īŧŒé€™å€‹å ´æ‰€æ˜¯", - "error_loading": "錯čĒ¤īŧšį„Ąæŗ•čĻ–čĻē化開攞時間。" + "opening_hours": { + "ph_closed": "į„Ąį‡ŸæĨ­", + "ph_open": "有į‡ŸæĨ­", + "ph_not_known": " ", + "open_24_7": "24小時į‡ŸæĨ­", + "closed_permanently": "不清æĨšé—œé–‰å¤šäš…äē†", + "closed_until": "{date} čĩˇé—œé–‰", + "not_all_rules_parsed": "這間åē—įš„開攞時間į›¸į•ļ複雜īŧŒåœ¨čŧ¸å…Ĩ元į´ æ™‚åŋŊį•ĨæŽĨ下來įš„čĻå‰‡īŧš", + "openTill": "įĩæŸæ™‚é–“", + "opensAt": "開始時間", + "open_during_ph": "國厚假æ—Ĩįš„時候īŧŒé€™å€‹å ´æ‰€æ˜¯", + "error_loading": "錯čĒ¤īŧšį„Ąæŗ•čĻ–čĻē化開攞時間。" + }, + "weekdays": { + "sunday": "星期æ—Ĩ", + "saturday": "星期六", + "friday": "星期äē”", + "thursday": "星期四", + "wednesday": "星期三", + "tuesday": "星期äēŒ", + "monday": "星期一", + "abbreviations": { + "sunday": "星期æ—Ĩ", + "saturday": "星期六", + "friday": "星期äē”", + "thursday": "星期四", + "wednesday": "星期三", + "tuesday": "星期äēŒ", + "monday": "星期一" + } + }, + "layerSelection": { + "title": "é¸æ“‡åœ–åą¤", + "zoomInToSeeThisLayer": "攞大䞆įœ‹é€™å€‹åœ–åą¤" + }, + "backgroundMap": "čƒŒæ™¯åœ°åœ–", + "aboutMapcomplete": "

關æ–ŧ MapComplete

äŊŋį”¨ MapComplete äŊ å¯äģĨ藉į”ąå–Žä¸€ä¸ģéĄŒčąå¯Œé–‹æ”žčĄ—åœ–įš„圖čŗ‡ã€‚回į­”åšžå€‹å•éĄŒīŧŒį„ļ垌嚞分鐘䚋內äŊ įš„č˛ĸįģįĢ‹åˆģå°ąå‚ŗ遍全įƒīŧä¸ģ題įļ­č­ˇč€…åŽšč­°ä¸ģ題įš„å…ƒį´ ã€å•éĄŒčˆ‡čĒžč¨€ã€‚

į™ŧįžæ›´å¤š

MapComplete į¸Ŋ是提䞛學įŋ’æ›´å¤šé–‹æ”žčĄ—åœ–ä¸‹ä¸€æ­Ĩįš„įŸĨč­˜ã€‚

  • į•ļäŊ å…§åĩŒįļ˛įĢ™īŧŒįļ˛é å…§åĩŒæœƒé€Ŗįĩåˆ°å…¨čžĸåš•įš„ MapComplete
  • 全čžĸåš•įš„į‰ˆæœŦ提䞛關æ–ŧé–‹æ”žčĄ—åœ–įš„čŗ‡č¨Š
  • 不į™ģå…ĨæĒĸčĻ–成果īŧŒäŊ†æ˜¯čĻįˇ¨čŧ¯å‰‡éœ€į™ģå…Ĩ OSM。
  • åĻ‚æžœäŊ æ˛’有į™ģå…ĨīŧŒäŊ æœƒčĸĢčĻæą‚å…ˆį™ģå…Ĩ
  • į•ļäŊ å›žį­”å–Žä¸€å•éĄŒæ™‚īŧŒäŊ å¯äģĨ在地圖新åĸžæ–°įš„į¯€éģž
  • 過äē†ä¸€é™Ŗ子īŧŒå¯Ļ際įš„ OSM-標įą¤æœƒéĄ¯į¤ēīŧŒäš‹åžŒæœƒé€Ŗįĩåˆ° wiki


äŊ æœ‰æŗ¨æ„åˆ°å•éĄŒå—ŽīŧŸäŊ æƒŗčĢ‹æą‚功čƒŊ嗎īŧŸæƒŗčĻåšĢåŋ™įŋģč­¯å—ŽīŧŸäž†åˆ°åŽŸå§‹įĸŧæˆ–æ˜¯å•éĄŒčŋŊčš¤å™¨ã€‚

æƒŗčĻįœ‹åˆ°äŊ įš„進åēĻ嗎īŧŸåˆ°OsmChačŋŊ蚤įˇ¨čŧ¯æ•¸ã€‚

", + "customThemeIntro": "

åŽĸčŖŊ化ä¸ģ題

觀įœ‹é€™äē›å…ˆå‰äŊŋį”¨č€…å‰ĩ造įš„ä¸ģéĄŒã€‚", + "noTagsSelected": "æ˛’æœ‰é¸å–æ¨™įą¤", + "getStartedNewAccount": " 或是 č¨ģ冊新å¸ŗ號", + "getStartedLogin": "į™ģå…Ĩé–‹æ”žčĄ—åœ–å¸ŗč™Ÿäž†é–‹å§‹", + "goToInbox": "é–‹å•Ÿč¨Šæ¯æĄ†", + "fewChangesBefore": "čĢ‹å…ˆå›žį­”有關æ—ĸ有į¯€éģžįš„å•éĄŒå†äž†æ–°åĸžæ–°į¯€éģžã€‚", + "readYourMessages": "čĢ‹å…ˆé–ąčŽ€é–‹æ”žčĄ—åœ–č¨Šæ¯äš‹å‰å†äž†æ–°åĸžæ–°į¯€éģžã€‚", + "morescreen": { + "createYourOwnTheme": "åžžé›ļ開始åģēįĢ‹äŊ įš„ MapComplete ä¸ģ題", + "streetcomplete": "čĄŒå‹•čŖįŊŽåĻæœ‰éĄžäŧŧįš„應į”¨į¨‹åŧ StreetComplete。", + "requestATheme": "åĻ‚æžœäŊ æœ‰åŽĸčŖŊ化čĻæą‚īŧŒčĢ‹åˆ°å•éĄŒčŋŊč¸Ē器é‚Ŗ邊提å‡ēčĻæą‚", + "intro": "

įœ‹æ›´å¤šä¸ģéĄŒåœ°åœ–īŧŸ

æ‚¨å–œæ­Ąč’é›†åœ°į†čŗ‡æ–™å—ŽīŧŸ
還有更多ä¸ģéĄŒã€‚" + }, + "sharescreen": { + "fsIncludeCurrentLocation": "包åĢį›Žå‰äŊįŊŽ", + "fsIncludeCurrentLayers": "包åĢį›Žå‰é¸æ“‡åœ–åą¤", + "fsIncludeCurrentBackgroundMap": "包åĢį›Žå‰čƒŒæ™¯é¸æ“‡{name}", + "fsGeolocation": "啟į”¨'地į†åŽšäŊč‡ĒčēĢ'按鈕 (åĒæœ‰čĄŒå‹•į‰ˆæœŦ)", + "fsAddNew": "啟į”¨'新åĸžæ–°įš„čˆˆčļŖéģž'按鈕", + "fsLayerControlToggle": "é–‹å§‹æ™‚æ“´åą•åœ–åą¤æŽ§åˆļ", + "fsLayers": "啟į”¨åœ–åą¤æŽ§åˆļ", + "fsWelcomeMessage": "éĄ¯į¤ēæ­ĄčŋŽč¨Šæ¯äģĨ及į›¸é—œé įą¤", + "fsSearch": "啟į”¨æœå°‹åˆ—", + "fsUserbadge": "啟į”¨į™ģå…Ĩ按鈕", + "editThemeDescription": "新åĸžæˆ–æ”ščŽŠé€™å€‹åœ°åœ–įš„å•éĄŒ", + "editThisTheme": "įˇ¨čŧ¯é€™å€‹ä¸ģ題", + "thanksForSharing": "感čŦåˆ†äēĢīŧ", + "copiedToClipboard": "複čŖŊé€Ŗįĩåˆ°į°Ąč˛ŧį°ŋ", + "embedIntro": "

åĩŒå…Ĩ到äŊ įš„įļ˛įĢ™

čĢ‹č€ƒæ…Žå°‡é€™äģŊ地圖åĩŒå…Ĩ您įš„įļ˛įĢ™ã€‚
åœ°åœ–æ¯‹é ˆéĄå¤–æŽˆæŦŠīŧŒéžå¸¸æ­ĄčŋŽæ‚¨å¤šåŠ åˆŠį”¨ã€‚
一切éƒŊ是免č˛ģįš„īŧŒč€Œä¸”䚋垌䚟是免č˛ģįš„īŧŒčļŠæœ‰æ›´å¤šäēēäŊŋį”¨īŧŒå‰‡čļŠéĄ¯åž—厃įš„僚å€ŧ。", + "addToHomeScreen": "

新åĸžåˆ°æ‚¨įš„ä¸ģį•Ģéĸ

您可äģĨčŧ•æ˜“將這įļ˛įĢ™æ–°åĸžåˆ°æ‚¨æ™ē慧型手抟įš„ä¸ģį•ĢéĸīŧŒåœ¨įļ˛å€åˆ—éģžé¸ã€Œæ–°åĸžåˆ°ä¸ģį•Ģéĸ按鈕」䞆做這äģļäē‹æƒ…。", + "intro": "

分äēĢ這地圖

複čŖŊ下éĸįš„é€Ŗįĩäž†å‘æœ‹å‹čˆ‡åŽļäēē分äēĢ這äģŊ地圖īŧš" + }, + "attribution": { + "codeContributionsBy": "MapComplete 是į”ą {contributors} 和å…ļäģ– {hiddenCount} äŊč˛ĸįģč€…æ§‹åģēč€Œæˆ", + "mapContributionsByAndHidden": "į›Žå‰éĄ¯åˆ°įš„čŗ‡æ–™æ˜¯į”ą {contributors} 和å…ļäģ– {hiddenCount} äŊč˛ĸįģ者įˇ¨čŧ¯č˛ĸįģ", + "mapContributionsBy": "į›Žå‰æĒĸčĻ–įš„čŗ‡æ–™į”ą {contributors} č˛ĸįģįˇ¨čŧ¯", + "iconAttribution": { + "title": "äŊŋį”¨įš„圖į¤ē" }, - "weekdays": { - "sunday": "星期æ—Ĩ", - "saturday": "星期六", - "friday": "星期äē”", - "thursday": "星期四", - "wednesday": "星期三", - "tuesday": "星期äēŒ", - "monday": "星期一", - "abbreviations": { - "sunday": "星期æ—Ĩ", - "saturday": "星期六", - "friday": "星期äē”", - "thursday": "星期四", - "wednesday": "星期三", - "tuesday": "星期äēŒ", - "monday": "星期一" - } - }, - "layerSelection": { - "title": "é¸æ“‡åœ–åą¤", - "zoomInToSeeThisLayer": "攞大䞆įœ‹é€™å€‹åœ–åą¤" - }, - "backgroundMap": "čƒŒæ™¯åœ°åœ–", - "aboutMapcomplete": "

關æ–ŧ MapComplete

äŊŋį”¨ MapComplete äŊ å¯äģĨ藉į”ąå–Žä¸€ä¸ģéĄŒčąå¯Œé–‹æ”žčĄ—åœ–įš„圖čŗ‡ã€‚回į­”åšžå€‹å•éĄŒīŧŒį„ļ垌嚞分鐘䚋內äŊ įš„č˛ĸįģįĢ‹åˆģå°ąå‚ŗ遍全įƒīŧä¸ģ題įļ­č­ˇč€…åŽšč­°ä¸ģ題įš„å…ƒį´ ã€å•éĄŒčˆ‡čĒžč¨€ã€‚

į™ŧįžæ›´å¤š

MapComplete į¸Ŋ是提䞛學įŋ’æ›´å¤šé–‹æ”žčĄ—åœ–ä¸‹ä¸€æ­Ĩįš„įŸĨč­˜ã€‚

  • į•ļäŊ å…§åĩŒįļ˛įĢ™īŧŒįļ˛é å…§åĩŒæœƒé€Ŗįĩåˆ°å…¨čžĸåš•įš„ MapComplete
  • 全čžĸåš•įš„į‰ˆæœŦ提䞛關æ–ŧé–‹æ”žčĄ—åœ–įš„čŗ‡č¨Š
  • 不į™ģå…ĨæĒĸčĻ–成果īŧŒäŊ†æ˜¯čĻįˇ¨čŧ¯å‰‡éœ€į™ģå…Ĩ OSM。
  • åĻ‚æžœäŊ æ˛’有į™ģå…ĨīŧŒäŊ æœƒčĸĢčĻæą‚å…ˆį™ģå…Ĩ
  • į•ļäŊ å›žį­”å–Žä¸€å•éĄŒæ™‚īŧŒäŊ å¯äģĨ在地圖新åĸžæ–°įš„į¯€éģž
  • 過äē†ä¸€é™Ŗ子īŧŒå¯Ļ際įš„ OSM-標įą¤æœƒéĄ¯į¤ēīŧŒäš‹åžŒæœƒé€Ŗįĩåˆ° wiki


äŊ æœ‰æŗ¨æ„åˆ°å•éĄŒå—ŽīŧŸäŊ æƒŗčĢ‹æą‚功čƒŊ嗎īŧŸæƒŗčĻåšĢåŋ™įŋģč­¯å—ŽīŧŸäž†åˆ°åŽŸå§‹įĸŧæˆ–æ˜¯å•éĄŒčŋŊčš¤å™¨ã€‚

æƒŗčĻįœ‹åˆ°äŊ įš„進åēĻ嗎īŧŸåˆ°OsmChačŋŊ蚤įˇ¨čŧ¯æ•¸ã€‚

", - "customThemeIntro": "

åŽĸčŖŊ化ä¸ģ題

觀įœ‹é€™äē›å…ˆå‰äŊŋį”¨č€…å‰ĩ造įš„ä¸ģéĄŒã€‚", - "noTagsSelected": "æ˛’æœ‰é¸å–æ¨™įą¤", - "getStartedNewAccount": " 或是 č¨ģ冊新å¸ŗ號", - "getStartedLogin": "į™ģå…Ĩé–‹æ”žčĄ—åœ–å¸ŗč™Ÿäž†é–‹å§‹", - "goToInbox": "é–‹å•Ÿč¨Šæ¯æĄ†", - "fewChangesBefore": "čĢ‹å…ˆå›žį­”有關æ—ĸ有į¯€éģžįš„å•éĄŒå†äž†æ–°åĸžæ–°į¯€éģžã€‚", - "readYourMessages": "čĢ‹å…ˆé–ąčŽ€é–‹æ”žčĄ—åœ–č¨Šæ¯äš‹å‰å†äž†æ–°åĸžæ–°į¯€éģžã€‚", - "morescreen": { - "createYourOwnTheme": "åžžé›ļ開始åģēįĢ‹äŊ įš„ MapComplete ä¸ģ題", - "streetcomplete": "čĄŒå‹•čŖįŊŽåĻæœ‰éĄžäŧŧįš„應į”¨į¨‹åŧ StreetComplete。", - "requestATheme": "åĻ‚æžœäŊ æœ‰åŽĸčŖŊ化čĻæą‚īŧŒčĢ‹åˆ°å•éĄŒčŋŊč¸Ē器é‚Ŗ邊提å‡ēčĻæą‚", - "intro": "

įœ‹æ›´å¤šä¸ģéĄŒåœ°åœ–īŧŸ

æ‚¨å–œæ­Ąč’é›†åœ°į†čŗ‡æ–™å—ŽīŧŸ
還有更多ä¸ģéĄŒã€‚" - }, - "sharescreen": { - "fsIncludeCurrentLocation": "包åĢį›Žå‰äŊįŊŽ", - "fsIncludeCurrentLayers": "包åĢį›Žå‰é¸æ“‡åœ–åą¤", - "fsIncludeCurrentBackgroundMap": "包åĢį›Žå‰čƒŒæ™¯é¸æ“‡{name}", - "fsGeolocation": "啟į”¨'地į†åŽšäŊč‡ĒčēĢ'按鈕 (åĒæœ‰čĄŒå‹•į‰ˆæœŦ)", - "fsAddNew": "啟į”¨'新åĸžæ–°įš„čˆˆčļŖéģž'按鈕", - "fsLayerControlToggle": "é–‹å§‹æ™‚æ“´åą•åœ–åą¤æŽ§åˆļ", - "fsLayers": "啟į”¨åœ–åą¤æŽ§åˆļ", - "fsWelcomeMessage": "éĄ¯į¤ēæ­ĄčŋŽč¨Šæ¯äģĨ及į›¸é—œé įą¤", - "fsSearch": "啟į”¨æœå°‹åˆ—", - "fsUserbadge": "啟į”¨į™ģå…Ĩ按鈕", - "editThemeDescription": "新åĸžæˆ–æ”ščŽŠé€™å€‹åœ°åœ–įš„å•éĄŒ", - "editThisTheme": "įˇ¨čŧ¯é€™å€‹ä¸ģ題", - "thanksForSharing": "感čŦåˆ†äēĢīŧ", - "copiedToClipboard": "複čŖŊé€Ŗįĩåˆ°į°Ąč˛ŧį°ŋ", - "embedIntro": "

åĩŒå…Ĩ到äŊ įš„įļ˛įĢ™

čĢ‹č€ƒæ…Žå°‡é€™äģŊ地圖åĩŒå…Ĩ您įš„įļ˛įĢ™ã€‚
åœ°åœ–æ¯‹é ˆéĄå¤–æŽˆæŦŠīŧŒéžå¸¸æ­ĄčŋŽæ‚¨å¤šåŠ åˆŠį”¨ã€‚
一切éƒŊ是免č˛ģįš„īŧŒč€Œä¸”䚋垌䚟是免č˛ģįš„īŧŒčļŠæœ‰æ›´å¤šäēēäŊŋį”¨īŧŒå‰‡čļŠéĄ¯åž—厃įš„僚å€ŧ。", - "addToHomeScreen": "

新åĸžåˆ°æ‚¨įš„ä¸ģį•Ģéĸ

您可äģĨčŧ•æ˜“將這įļ˛įĢ™æ–°åĸžåˆ°æ‚¨æ™ē慧型手抟įš„ä¸ģį•ĢéĸīŧŒåœ¨įļ˛å€åˆ—éģžé¸ã€Œæ–°åĸžåˆ°ä¸ģį•Ģéĸ按鈕」䞆做這äģļäē‹æƒ…。", - "intro": "

分äēĢ這地圖

複čŖŊ下éĸįš„é€Ŗįĩäž†å‘æœ‹å‹čˆ‡åŽļäēē分äēĢ這äģŊ地圖īŧš" - }, - "attribution": { - "codeContributionsBy": "MapComplete 是į”ą {contributors} 和å…ļäģ– {hiddenCount} äŊč˛ĸįģč€…æ§‹åģēč€Œæˆ", - "mapContributionsByAndHidden": "į›Žå‰éĄ¯åˆ°įš„čŗ‡æ–™æ˜¯į”ą {contributors} 和å…ļäģ– {hiddenCount} äŊč˛ĸįģ者įˇ¨čŧ¯č˛ĸįģ", - "mapContributionsBy": "į›Žå‰æĒĸčĻ–įš„čŗ‡æ–™į”ą {contributors} č˛ĸįģįˇ¨čŧ¯", - "iconAttribution": { - "title": "äŊŋį”¨įš„圖į¤ē" - }, - "themeBy": "į”ą {author} įļ­č­ˇä¸ģ題", - "attributionContent": "

所有čŗ‡æ–™į”ąé–‹æ”žčĄ—圖提䞛īŧŒåœ¨é–‹æ”žčŗ‡æ–™åēĢ授æŦŠæĸæŦžäš‹ä¸‹č‡Ēį”ąå†åˆŠį”¨ã€‚

", - "attributionTitle": "įŊ˛åé€šįŸĨ" - }, - "openStreetMapIntro": "

開攞įš„地圖

åĻ‚果有一äģŊ地圖īŧŒäģģäŊ•äēēéƒŊčƒŊč‡Ēį”ąäŊŋį”¨čˆ‡įˇ¨čŧ¯īŧŒå–Žä¸€įš„地圖čƒŊå¤ å„˛å­˜æ‰€æœ‰åœ°į†į›¸é—œčŗ‡č¨ŠīŧŸé€™æ¨Ŗä¸å°ąåžˆé…ˇå—ŽīŧŸæŽĨ著īŧŒæ‰€æœ‰įš„įļ˛įĢ™äŊŋį”¨ä¸åŒįš„、į¯„圍小įš„īŧŒä¸į›¸åŽšįš„地圖 (通常䚟éƒŊ過時äē†)īŧŒäšŸå°ąä¸å†éœ€čĻäē†ã€‚

é–‹æ”žčĄ—åœ–å°ąæ˜¯é€™æ¨Ŗįš„地圖īŧŒäēēäēēéƒŊčƒŊ免č˛ģ這äē›åœ–čŗ‡ (åĒčĻįŊ˛åčˆ‡å…Ŧé–‹čŽŠå‹•é€™čŗ‡æ–™)。åĒčĻéĩåžĒ這äē›īŧŒäģģäŊ•äēēéƒŊčƒŊč‡Ēį”ąæ–°åĸžæ–°čŗ‡æ–™čˆ‡äŋŽæ­Ŗ錯čĒ¤īŧŒé€™äē›įļ˛įĢ™äšŸéƒŊäŊŋį”¨é–‹æ”žčĄ—圖īŧŒčŗ‡æ–™äšŸéƒŊ來č‡Ēé–‹æ”žčĄ—åœ–īŧŒäŊ įš„į­”æĄˆčˆ‡äŋŽæ­ŖäšŸæœƒåŠ åˆ°é–‹æ”žčĄ—åœ–ä¸Šéĸ。

č¨ąå¤šäēēčˆ‡æ‡‰į”¨į¨‹åŧåˇ˛įļ“æŽĄį”¨é–‹æ”žčĄ—圖äē†īŧšOrganic Maps、OsmAndīŧŒé‚„有 Facebook、InstagramīŧŒč˜‹æžœåœ°åœ–、Bing 地圖(部分)æŽĄį”¨é–‹æ”žčĄ—圖。åĻ‚æžœäŊ åœ¨é–‹æ”žčĄ—åœ–ä¸ŠčŽŠå‹•čŗ‡æ–™īŧŒäšŸæœƒåŒæ™‚åŊąéŸŋ這äē›æ‡‰į”¨ - 在äģ–們下æŦĄæ›´æ–°čŗ‡æ–™äš‹åžŒīŧ

", - "questions": { - "emailIs": "{category} įš„é›ģ子éƒĩäģļ地址是{email}", - "emailOf": "{category} įš„é›ģ子éƒĩäģļ地址是īŧŸ", - "websiteIs": "įļ˛įĢ™īŧš{website}", - "websiteOf": "{category} įš„įļ˛įĢ™įļ˛å€æ˜¯īŧŸ", - "phoneNumberIs": "æ­¤ {category} įš„é›ģ話號įĸŧį‚ē {phone}", - "phoneNumberOf": "{category} įš„é›ģ話號įĸŧ是īŧŸ" - }, - "noNameCategory": "{category} æ˛’æœ‰åį¨ą", - "nameInlineQuestion": "這個 {category} įš„名į¨ąæ˜¯ $$$", - "about": "į›¸į•ļ厚易įˇ¨čŧ¯īŧŒč€Œä¸”čƒŊį‚ēé–‹æ”žčĄ—åœ–æ–°åĸžį‰šåŽšä¸ģ題", - "pickLanguage": "選擇čĒžč¨€īŧš ", - "add": { - "layerNotEnabled": "åœ–åą¤ {layer} į›Žå‰į„Ąæŗ•äŊŋį”¨īŧŒčĢ‹å…ˆå•Ÿį”¨é€™åœ–åą¤å†åŠ æ–°įš„į¯€éģž", - "openLayerControl": "é–‹å•Ÿåœ–åą¤æŽ§åˆļæĄ†", - "confirmButton": "在此新åĸž {category}。
大åŽļéƒŊ可äģĨįœ‹åˆ°æ‚¨æ–°åĸžįš„內厚
", - "confirmIntro": "

在這čŖĄæ–°åĸž {title} īŧŸ

äŊ åœ¨é€™čŖĄæ–°åĸžįš„į¯€éģžæ‰€æœ‰äēēéƒŊįœ‹åž—到。čĢ‹åĒ有在įĸē厚有į‰Šäģļ存在įš„情åŊĸ下才新åĸžä¸ŠåŽģīŧŒč¨ąå¤šæ‡‰į”¨į¨‹åŧéƒŊäŊŋį”¨é€™äģŊčŗ‡æ–™ã€‚", - "stillLoading": "į›Žå‰äģåœ¨čŧ‰å…Ĩčŗ‡æ–™īŧŒčĢ‹į¨åžŒå†äž†æ–°åĸžį¯€éģžã€‚", - "zoomInFurther": "攞大䞆新åĸžæ–°įš„į¯€éģžã€‚", - "pleaseLogin": "čĢ‹å…ˆį™ģå…Ĩ䞆新åĸžį¯€éģž", - "intro": "您éģžæ“Šč™•į›Žå‰æœĒæœ‰åˇ˛įŸĨįš„čŗ‡æ–™ã€‚
", - "title": "新åĸžæ–°įš„į¯€éģžīŧŸ", - "addNew": "在這čŖĄæ–°åĸžæ–°įš„ {category}" - }, - "osmLinkTooltip": "åœ¨é–‹æ”žčĄ—åœ–æ­ˇå˛å’Œæ›´å¤šįˇ¨čŧ¯é¸é …下éĸ來æĒĸčĻ–這į‰Šäģļ", - "number": "號įĸŧ", - "skippedQuestions": "有äē›å•éĄŒåˇ˛įļ“čˇŗ過äē†", - "oneSkippedQuestion": "čˇŗéŽä¸€å€‹å•éĄŒ", - "skip": "čˇŗéŽé€™å•éĄŒ", - "cancel": "取æļˆ", - "save": "å„˛å­˜", - "returnToTheMap": "回到地圖", - "search": { - "error": "有į‹€æŗį™ŧį”Ÿäē†â€Ļ", - "nothing": "æ˛’æœ‰æ‰žåˆ°â€Ļ", - "searching": "搜尋中â€Ļ", - "search": "搜尋地éģž" - }, - "loginToStart": "į™ģå…Ĩ䚋垌䞆回į­”é€™å•éĄŒ", - "welcomeBack": "äŊ åˇ˛įļ“į™ģå…Ĩäē†īŧŒæ­ĄčŋŽå›žäž†īŧ", - "loginWithOpenStreetMap": "į”¨é–‹æ”žčĄ—圖å¸ŗ號į™ģå…Ĩ" + "themeBy": "į”ą {author} įļ­č­ˇä¸ģ題", + "attributionContent": "

所有čŗ‡æ–™į”ąé–‹æ”žčĄ—圖提䞛īŧŒåœ¨é–‹æ”žčŗ‡æ–™åēĢ授æŦŠæĸæŦžäš‹ä¸‹č‡Ēį”ąå†åˆŠį”¨ã€‚

", + "attributionTitle": "įŊ˛åé€šįŸĨ" + }, + "openStreetMapIntro": "

開攞įš„地圖

åĻ‚果有一äģŊ地圖īŧŒäģģäŊ•äēēéƒŊčƒŊč‡Ēį”ąäŊŋį”¨čˆ‡įˇ¨čŧ¯īŧŒå–Žä¸€įš„地圖čƒŊå¤ å„˛å­˜æ‰€æœ‰åœ°į†į›¸é—œčŗ‡č¨ŠīŧŸé€™æ¨Ŗä¸å°ąåžˆé…ˇå—ŽīŧŸæŽĨ著īŧŒæ‰€æœ‰įš„įļ˛įĢ™äŊŋį”¨ä¸åŒįš„、į¯„圍小įš„īŧŒä¸į›¸åŽšįš„地圖 (通常䚟éƒŊ過時äē†)īŧŒäšŸå°ąä¸å†éœ€čĻäē†ã€‚

é–‹æ”žčĄ—åœ–å°ąæ˜¯é€™æ¨Ŗįš„地圖īŧŒäēēäēēéƒŊčƒŊ免č˛ģ這äē›åœ–čŗ‡ (åĒčĻįŊ˛åčˆ‡å…Ŧé–‹čŽŠå‹•é€™čŗ‡æ–™)。åĒčĻéĩåžĒ這äē›īŧŒäģģäŊ•äēēéƒŊčƒŊč‡Ēį”ąæ–°åĸžæ–°čŗ‡æ–™čˆ‡äŋŽæ­Ŗ錯čĒ¤īŧŒé€™äē›įļ˛įĢ™äšŸéƒŊäŊŋį”¨é–‹æ”žčĄ—圖īŧŒčŗ‡æ–™äšŸéƒŊ來č‡Ēé–‹æ”žčĄ—åœ–īŧŒäŊ įš„į­”æĄˆčˆ‡äŋŽæ­ŖäšŸæœƒåŠ åˆ°é–‹æ”žčĄ—åœ–ä¸Šéĸ。

č¨ąå¤šäēēčˆ‡æ‡‰į”¨į¨‹åŧåˇ˛įļ“æŽĄį”¨é–‹æ”žčĄ—圖äē†īŧšOrganic Maps、OsmAndīŧŒé‚„有 Facebook、InstagramīŧŒč˜‹æžœåœ°åœ–、Bing 地圖(部分)æŽĄį”¨é–‹æ”žčĄ—圖。åĻ‚æžœäŊ åœ¨é–‹æ”žčĄ—åœ–ä¸ŠčŽŠå‹•čŗ‡æ–™īŧŒäšŸæœƒåŒæ™‚åŊąéŸŋ這äē›æ‡‰į”¨ - 在äģ–們下æŦĄæ›´æ–°čŗ‡æ–™äš‹åžŒīŧ

", + "questions": { + "emailIs": "{category} įš„é›ģ子éƒĩäģļ地址是{email}", + "emailOf": "{category} įš„é›ģ子éƒĩäģļ地址是īŧŸ", + "websiteIs": "įļ˛įĢ™īŧš{website}", + "websiteOf": "{category} įš„įļ˛įĢ™įļ˛å€æ˜¯īŧŸ", + "phoneNumberIs": "æ­¤ {category} įš„é›ģ話號įĸŧį‚ē {phone}", + "phoneNumberOf": "{category} įš„é›ģ話號įĸŧ是īŧŸ" + }, + "noNameCategory": "{category} æ˛’æœ‰åį¨ą", + "nameInlineQuestion": "這個 {category} įš„名į¨ąæ˜¯ $$$", + "about": "į›¸į•ļ厚易įˇ¨čŧ¯īŧŒč€Œä¸”čƒŊį‚ēé–‹æ”žčĄ—åœ–æ–°åĸžį‰šåŽšä¸ģ題", + "pickLanguage": "選擇čĒžč¨€īŧš ", + "add": { + "layerNotEnabled": "åœ–åą¤ {layer} į›Žå‰į„Ąæŗ•äŊŋį”¨īŧŒčĢ‹å…ˆå•Ÿį”¨é€™åœ–åą¤å†åŠ æ–°įš„į¯€éģž", + "openLayerControl": "é–‹å•Ÿåœ–åą¤æŽ§åˆļæĄ†", + "confirmButton": "在此新åĸž {category}。
大åŽļéƒŊ可äģĨįœ‹åˆ°æ‚¨æ–°åĸžįš„內厚
", + "confirmIntro": "

在這čŖĄæ–°åĸž {title} īŧŸ

äŊ åœ¨é€™čŖĄæ–°åĸžįš„į¯€éģžæ‰€æœ‰äēēéƒŊįœ‹åž—到。čĢ‹åĒ有在įĸē厚有į‰Šäģļ存在įš„情åŊĸ下才新åĸžä¸ŠåŽģīŧŒč¨ąå¤šæ‡‰į”¨į¨‹åŧéƒŊäŊŋį”¨é€™äģŊčŗ‡æ–™ã€‚", + "stillLoading": "į›Žå‰äģåœ¨čŧ‰å…Ĩčŗ‡æ–™īŧŒčĢ‹į¨åžŒå†äž†æ–°åĸžį¯€éģžã€‚", + "zoomInFurther": "攞大䞆新åĸžæ–°įš„į¯€éģžã€‚", + "pleaseLogin": "čĢ‹å…ˆį™ģå…Ĩ䞆新åĸžį¯€éģž", + "intro": "您éģžæ“Šč™•į›Žå‰æœĒæœ‰åˇ˛įŸĨįš„čŗ‡æ–™ã€‚
", + "title": "新åĸžæ–°įš„į¯€éģžīŧŸ", + "addNew": "在這čŖĄæ–°åĸžæ–°įš„ {category}" + }, + "osmLinkTooltip": "åœ¨é–‹æ”žčĄ—åœ–æ­ˇå˛å’Œæ›´å¤šįˇ¨čŧ¯é¸é …下éĸ來æĒĸčĻ–這į‰Šäģļ", + "number": "號įĸŧ", + "skippedQuestions": "有äē›å•éĄŒåˇ˛įļ“čˇŗ過äē†", + "oneSkippedQuestion": "čˇŗéŽä¸€å€‹å•éĄŒ", + "skip": "čˇŗéŽé€™å•éĄŒ", + "cancel": "取æļˆ", + "save": "å„˛å­˜", + "returnToTheMap": "回到地圖", + "search": { + "error": "有į‹€æŗį™ŧį”Ÿäē†â€Ļ", + "nothing": "æ˛’æœ‰æ‰žåˆ°â€Ļ", + "searching": "搜尋中â€Ļ", + "search": "搜尋地éģž" + }, + "loginToStart": "į™ģå…Ĩ䚋垌䞆回į­”é€™å•éĄŒ", + "welcomeBack": "äŊ åˇ˛įļ“į™ģå…Ĩäē†īŧŒæ­ĄčŋŽå›žäž†īŧ", + "loginWithOpenStreetMap": "į”¨é–‹æ”žčĄ—圖å¸ŗ號į™ģå…Ĩ" }, "backgroundMap": "čƒŒæ™¯åœ°åœ–", "aboutMapcomplete": "

關æ–ŧ MapComplete

äŊŋį”¨ MapComplete äŊ å¯äģĨ藉į”ąå–Žä¸€ä¸ģéĄŒčąå¯Œé–‹æ”žčĄ—åœ–įš„圖čŗ‡ã€‚回į­”åšžå€‹å•éĄŒīŧŒį„ļ垌嚞分鐘䚋內äŊ įš„č˛ĸįģįĢ‹åˆģå°ąå‚ŗ遍全įƒīŧä¸ģ題įļ­č­ˇč€…åŽšč­°ä¸ģ題įš„å…ƒį´ ã€å•éĄŒčˆ‡čĒžč¨€ã€‚

į™ŧįžæ›´å¤š

MapComplete į¸Ŋ是提䞛學įŋ’æ›´å¤šé–‹æ”žčĄ—åœ–ä¸‹ä¸€æ­Ĩįš„įŸĨč­˜ã€‚

  • į•ļäŊ å…§åĩŒįļ˛įĢ™īŧŒįļ˛é å…§åĩŒæœƒé€Ŗįĩåˆ°å…¨čžĸåš•įš„ MapComplete
  • 全čžĸåš•įš„į‰ˆæœŦ提䞛關æ–ŧé–‹æ”žčĄ—åœ–įš„čŗ‡č¨Š
  • 不į™ģå…ĨæĒĸčĻ–成果īŧŒäŊ†æ˜¯čĻįˇ¨čŧ¯å‰‡éœ€į™ģå…Ĩ OSM。
  • åĻ‚æžœäŊ æ˛’有į™ģå…ĨīŧŒäŊ æœƒčĸĢčĻæą‚å…ˆį™ģå…Ĩ
  • į•ļäŊ å›žį­”å–Žä¸€å•éĄŒæ™‚īŧŒäŊ å¯äģĨ在地圖新åĸžæ–°įš„į¯€éģž
  • 過äē†ä¸€é™Ŗ子īŧŒå¯Ļ際įš„ OSM-標įą¤æœƒéĄ¯į¤ēīŧŒäš‹åžŒæœƒé€Ŗįĩåˆ° wiki


äŊ æœ‰æŗ¨æ„åˆ°å•éĄŒå—ŽīŧŸäŊ æƒŗčĢ‹æą‚功čƒŊ嗎īŧŸæƒŗčĻåšĢåŋ™įŋģč­¯å—ŽīŧŸäž†åˆ°åŽŸå§‹įĸŧæˆ–æ˜¯å•éĄŒčŋŊčš¤å™¨ã€‚

æƒŗčĻįœ‹åˆ°äŊ įš„進åēĻ嗎īŧŸåˆ°OsmChačŋŊ蚤įˇ¨čŧ¯æ•¸ã€‚

", diff --git a/package-lock.json b/package-lock.json index fc0315a4a..11c576967 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,6 +46,7 @@ "parcel": "^1.2.4", "prompt-sync": "^4.2.0", "tailwindcss": "^2.2.15", + "togpx": "^0.5.4", "tslint": "^6.1.3", "wikibase-sdk": "^7.14.0", "wikidata-sdk": "^7.14.0" @@ -62,6 +63,7 @@ "sharp": "^0.28.3", "ts-node": "^9.0.0", "ts-node-dev": "^1.0.0-pre.63", + "ts2json-schema": "^1.4.0", "tslint-no-circular-imports": "^0.7.0", "typescript": "^3.9.7", "write-file": "^1.0.0" @@ -2940,6 +2942,12 @@ "@types/sizzle": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -3237,6 +3245,15 @@ "node": ">= 8" } }, + "node_modules/app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -3740,6 +3757,23 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, + "node_modules/bops": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/bops/-/bops-0.0.6.tgz", + "integrity": "sha1-CC0dVfoB5g29wuvC26N/ZZVUzzo=", + "dependencies": { + "base64-js": "0.0.2", + "to-utf8": "0.0.1" + } + }, + "node_modules/bops/node_modules/base64-js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", + "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4223,6 +4257,61 @@ "node": ">= 10" } }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -6598,6 +6687,15 @@ "rbush": "^2.0.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-closest": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/get-closest/-/get-closest-0.0.4.tgz", @@ -8362,6 +8460,15 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "dependencies": { + "jsonify": "~0.0.0" + } + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -8389,6 +8496,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/jsonparse": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", @@ -8521,6 +8637,14 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/jxon": { + "version": "2.0.0-beta.5", + "resolved": "https://registry.npmjs.org/jxon/-/jxon-2.0.0-beta.5.tgz", + "integrity": "sha1-O2qUEE+YAe5oL9BWZF/1Rz2bND4=", + "dependencies": { + "xmldom": "^0.1.21" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -14041,6 +14165,15 @@ "request": "^2.34" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -15823,6 +15956,36 @@ "node": ">=8.0" } }, + "node_modules/to-utf8": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", + "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=" + }, + "node_modules/togpx": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/togpx/-/togpx-0.5.4.tgz", + "integrity": "sha1-sz27BUHfBL1rpPULhtqVNCS7d3M=", + "dependencies": { + "concat-stream": "~1.0.1", + "jxon": "~2.0.0-beta.5", + "optimist": "~0.3.5", + "xmldom": "~0.1.17" + }, + "bin": { + "togpx": "togpx" + } + }, + "node_modules/togpx/node_modules/concat-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.0.1.tgz", + "integrity": "sha1-AYsYvBx9BzotyCqkhEI0GixN158=", + "engines": [ + "node >= 0.8.0" + ], + "dependencies": { + "bops": "0.0.6" + } + }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -15928,6 +16091,64 @@ "node": ">=0.10.0" } }, + "node_modules/ts-json-schema-generator": { + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-0.95.0.tgz", + "integrity": "sha512-qyArLCOmy0UnnGeCewpZgaGglPMmawAhsuYDRDa1BeZiyE+M/I2dH+dSMtFj8kVbWSEayfVmQIF9UBINBfeKSg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "commander": "^8.0.0", + "fast-json-stable-stringify": "^2.1.0", + "glob": "^7.1.7", + "json-stable-stringify": "^1.0.1", + "json5": "^2.2.0", + "typescript": "~4.3.4" + }, + "bin": { + "ts-json-schema-generator": "bin/ts-json-schema-generator" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ts-json-schema-generator/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ts-json-schema-generator/node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-json-schema-generator/node_modules/typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/ts-node": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", @@ -16000,6 +16221,33 @@ "node": ">=10" } }, + "node_modules/ts2json-schema": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts2json-schema/-/ts2json-schema-1.4.0.tgz", + "integrity": "sha512-UvKUBPU+GgQiPum5erEFBzfNN3fCFnl7FB0eWknbiDzJyaUFgOaWUb+9QHZpjPYbFvq0eVOl6s7Y9zVWDWnS0w==", + "dev": true, + "dependencies": { + "app-root-path": "^3.0.0", + "commander": "^8.0.0", + "ts-json-schema-generator": "^0.95.0", + "typescript-json-schema": "^0.50.1" + }, + "bin": { + "ts2json-schema": "bin/ts2json-schema.bin.js" + }, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ts2json-schema/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "node_modules/tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", @@ -16756,6 +17004,43 @@ "node": ">=4.2.0" } }, + "node_modules/typescript-json-schema": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.50.1.tgz", + "integrity": "sha512-GCof/SDoiTDl0qzPonNEV4CHyCsZEIIf+mZtlrjoD8vURCcEzEfa2deRuxYid8Znp/e27eDR7Cjg8jgGrimBCA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@types/node": "^14.14.33", + "glob": "^7.1.6", + "json-stable-stringify": "^1.0.1", + "ts-node": "^9.1.1", + "typescript": "~4.2.3", + "yargs": "^16.2.0" + }, + "bin": { + "typescript-json-schema": "bin/typescript-json-schema" + } + }, + "node_modules/typescript-json-schema/node_modules/@types/node": { + "version": "14.17.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", + "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==", + "dev": true + }, + "node_modules/typescript-json-schema/node_modules/typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/uglify-js": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", @@ -17452,6 +17737,15 @@ "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -17466,6 +17760,77 @@ "node": ">= 6" } }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -20064,6 +20429,12 @@ "@types/sizzle": "*" } }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -20309,6 +20680,12 @@ "picomatch": "^2.0.4" } }, + "app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "dev": true + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -20708,6 +21085,22 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, + "bops": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/bops/-/bops-0.0.6.tgz", + "integrity": "sha1-CC0dVfoB5g29wuvC26N/ZZVUzzo=", + "requires": { + "base64-js": "0.0.2", + "to-utf8": "0.0.1" + }, + "dependencies": { + "base64-js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", + "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=" + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -21108,6 +21501,51 @@ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -22998,6 +23436,12 @@ "rbush": "^2.0.0" } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-closest": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/get-closest/-/get-closest-0.0.4.tgz", @@ -24302,6 +24746,15 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -24324,6 +24777,12 @@ "universalify": "^2.0.0" } }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, "jsonparse": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", @@ -24436,6 +24895,14 @@ "safe-buffer": "^5.0.1" } }, + "jxon": { + "version": "2.0.0-beta.5", + "resolved": "https://registry.npmjs.org/jxon/-/jxon-2.0.0-beta.5.tgz", + "integrity": "sha1-O2qUEE+YAe5oL9BWZF/1Rz2bND4=", + "requires": { + "xmldom": "^0.1.21" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -29089,6 +29556,12 @@ "tough-cookie": "^2.3.3" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -30477,6 +30950,32 @@ "is-number": "^7.0.0" } }, + "to-utf8": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", + "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=" + }, + "togpx": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/togpx/-/togpx-0.5.4.tgz", + "integrity": "sha1-sz27BUHfBL1rpPULhtqVNCS7d3M=", + "requires": { + "concat-stream": "~1.0.1", + "jxon": "~2.0.0-beta.5", + "optimist": "~0.3.5", + "xmldom": "~0.1.17" + }, + "dependencies": { + "concat-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.0.1.tgz", + "integrity": "sha1-AYsYvBx9BzotyCqkhEI0GixN158=", + "requires": { + "bops": "0.0.6" + } + } + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -30553,6 +31052,44 @@ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, + "ts-json-schema-generator": { + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-0.95.0.tgz", + "integrity": "sha512-qyArLCOmy0UnnGeCewpZgaGglPMmawAhsuYDRDa1BeZiyE+M/I2dH+dSMtFj8kVbWSEayfVmQIF9UBINBfeKSg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "commander": "^8.0.0", + "fast-json-stable-stringify": "^2.1.0", + "glob": "^7.1.7", + "json-stable-stringify": "^1.0.1", + "json5": "^2.2.0", + "typescript": "~4.3.4" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + } + } + }, "ts-node": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", @@ -30593,6 +31130,26 @@ } } }, + "ts2json-schema": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts2json-schema/-/ts2json-schema-1.4.0.tgz", + "integrity": "sha512-UvKUBPU+GgQiPum5erEFBzfNN3fCFnl7FB0eWknbiDzJyaUFgOaWUb+9QHZpjPYbFvq0eVOl6s7Y9zVWDWnS0w==", + "dev": true, + "requires": { + "app-root-path": "^3.0.0", + "commander": "^8.0.0", + "ts-json-schema-generator": "^0.95.0", + "typescript-json-schema": "^0.50.1" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + } + } + }, "tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", @@ -31239,6 +31796,35 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==" }, + "typescript-json-schema": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.50.1.tgz", + "integrity": "sha512-GCof/SDoiTDl0qzPonNEV4CHyCsZEIIf+mZtlrjoD8vURCcEzEfa2deRuxYid8Znp/e27eDR7Cjg8jgGrimBCA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@types/node": "^14.14.33", + "glob": "^7.1.6", + "json-stable-stringify": "^1.0.1", + "ts-node": "^9.1.1", + "typescript": "~4.2.3", + "yargs": "^16.2.0" + }, + "dependencies": { + "@types/node": { + "version": "14.17.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", + "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==", + "dev": true + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true + } + } + }, "uglify-js": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", @@ -31795,6 +32381,12 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -31806,6 +32398,61 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 21a1a7e8e..eae06c77e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "start": "npm run start:prepare && npm-run-all --parallel start:parallel:*", "strt": "npm run start:prepare && npm run start:parallel:parcel", "start:prepare": "ts-node scripts/generateLayerOverview.ts --no-fail && npm run increase-memory", - "start:parallel:parcel": "node --max_old_space_size=8000 $(which parcel) serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.jpg assets/themes/*/*.png vendor/* vendor/*/*", + "start:parallel:parcel": "node --max_old_space_size=8000 $(which parcel) serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/layers/*/*.css assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.css assets/themes/*/*.jpg assets/themes/*/*.png vendor/* vendor/*/*", "start:parallel:tailwindcli": "tailwindcss -i index.css -o css/index-tailwind-output.css --watch", "generate:css": "tailwindcss -i index.css -o css/index-tailwind-output.css", "test": "ts-node test/TestAll.ts", @@ -35,12 +35,13 @@ "generate:contributor-list": "git log --pretty='%aN' | sort | uniq -c | sort -hr | sed 's/ *\\([0-9]*\\) \\(.*\\)$/{\"contributor\":\"\\2\", \"commits\":\\1}/' | tr '\\n' ',' | sed 's/^/{\"contributors\":[/' | sed 's/,$/]}/' | jq > assets/contributors.json", "validate:layeroverview": "ts-node scripts/generateLayerOverview.ts --report", "validate:licenses": "ts-node scripts/generateLicenseInfo.ts --report", + "generate:schemas": "ts2json-schema -p Models/ThemeConfig/Json/ -o Docs/Schemas/ -t tsconfig.json -R . -m \".*ConfigJson\" && ts-node scripts/fixSchemas.ts ", "optimize-images": "cd assets/generated/ && find -name '*.png' -exec optipng '{}' \\; && echo 'PNGs are optimized'", "reset:layeroverview": "echo {\\\"layers\\\":[], \\\"themes\\\":[]} > ./assets/generated/known_layers_and_themes.json", - "generate": "mkdir -p ./assets/generated && npm run reset:layeroverview && npm run generate:images && npm run generate:translations && npm run generate:licenses && npm run generate:layeroverview", + "generate": "mkdir -p ./assets/generated && npm run reset:layeroverview && npm run generate:images && npm run generate:charging-stations && npm run generate:translations && npm run generate:licenses && npm run validate:layeroverview", "build": "rm -rf dist/ && npm run generate && parcel build --public-url ./ *.html assets/** assets/**/** assets/**/**/** vendor/* vendor/*/*", "generate:charging-stations": "cd ./assets/layers/charging_station && ts-node csvToJson.ts && cd -", - "prepare-deploy": "npm run generate && npm run test && npm run generate:editor-layer-index && npm run generate:charging-stations && npm run generate:layeroverview && npm run generate:layouts && npm run build && rm -rf .cache", + "prepare-deploy": "npm run generate && npm run test && npm run generate:editor-layer-index && npm run generate:layouts && npm run build && rm -rf .cache", "deploy:staging": "npm run prepare-deploy && rm -rf ~/git/pietervdvn.github.io/Staging/* && cp -r dist/* ~/git/pietervdvn.github.io/Staging/ && cd ~/git/pietervdvn.github.io/ && git add * && git commit -m 'New MapComplete Version' && git push && cd - && npm run clean", "deploy:pietervdvn": "cd ~/git/pietervdvn.github.io/ && git pull && cd - && npm run prepare-deploy && rm -rf ~/git/pietervdvn.github.io/MapComplete/* && cp -r dist/* ~/git/pietervdvn.github.io/MapComplete/ && cd ~/git/pietervdvn.github.io/ && git add * && git commit -m 'New MapComplete Version' && git push && cd - && npm run clean", "deploy:production": "cd ~/git/mapcomplete.github.io/ && git pull && cd - && rm -rf ./assets/generated && npm run prepare-deploy && npm run optimize-images && rm -rf ~/git/mapcomplete.github.io/* && cp -r dist/* ~/git/mapcomplete.github.io/ && cd ~/git/mapcomplete.github.io/ && echo \"mapcomplete.osm.be\" > CNAME && git add * && git commit -m 'New MapComplete Version' && git push && cd - && npm run clean && npm run gittag", @@ -93,6 +94,7 @@ "parcel": "^1.2.4", "prompt-sync": "^4.2.0", "tailwindcss": "^2.2.15", + "togpx": "^0.5.4", "tslint": "^6.1.3", "wikibase-sdk": "^7.14.0", "wikidata-sdk": "^7.14.0" @@ -109,6 +111,7 @@ "sharp": "^0.28.3", "ts-node": "^9.0.0", "ts-node-dev": "^1.0.0-pre.63", + "ts2json-schema": "^1.4.0", "tslint-no-circular-imports": "^0.7.0", "typescript": "^3.9.7", "write-file": "^1.0.0" diff --git a/preferences.ts b/preferences.ts index c96912b5d..bef8b6d5d 100644 --- a/preferences.ts +++ b/preferences.ts @@ -3,7 +3,6 @@ import Combine from "./UI/Base/Combine"; import {Button} from "./UI/Base/Button"; import {TextField} from "./UI/Input/TextField"; import {FixedUiElement} from "./UI/Base/FixedUiElement"; -import {UIEventSource} from "./Logic/UIEventSource"; import {Utils} from "./Utils"; import {SubtleButton} from "./UI/Base/SubtleButton"; import LZString from "lz-string"; @@ -28,24 +27,27 @@ function salvageThemes(preferences: any) { const knownThemeNames = new Set(); const correctThemeNames = [] for (const key in preferences) { - try{ - if (!(typeof key === "string")) { - continue; - } - const prefix = "mapcomplete-installed-theme-"; - // mapcomplete-installed-theme-arbres_llefia-combined-11 - //mapcomplete-installed-theme-1roadAlllanes-combined-length - if (!key.startsWith(prefix)) { - continue; - } - const theme = key.substring(prefix.length, key.indexOf("-combined-")) + try { + if (!(typeof key === "string")) { + continue; + } + const prefix = "mapcomplete-installed-theme-"; + // mapcomplete-installed-theme-arbres_llefia-combined-11 + //mapcomplete-installed-theme-1roadAlllanes-combined-length + if (!key.startsWith(prefix)) { + continue; + } + const theme = key.substring(prefix.length, key.indexOf("-combined-")) - if (key.endsWith("-length")) { - correctThemeNames.push(theme) - } else { - knownThemeNames.add(theme); + if (key.endsWith("-length")) { + correctThemeNames.push(theme) + } else { + knownThemeNames.add(theme); + } + } catch (e) { + console.error(e) } - }catch(e){console.error(e)}} + } for (const correctThemeName of correctThemeNames) { knownThemeNames.delete(correctThemeName); @@ -74,12 +76,12 @@ function salvageThemes(preferences: any) { try { jsonObject = JSON.parse(atob(combined)); } catch (e) { - try{ - - // We try to decode with lz-string - jsonObject = JSON.parse(Utils.UnMinify(LZString.decompressFromBase64(combined))) as LayoutConfigJson; - }catch(e0){ - console.log("Could not salvage theme. Initial parsing failed due to:", e,"\nWith LZ failed due ", e0) + try { + + // We try to decode with lz-string + jsonObject = JSON.parse(Utils.UnMinify(LZString.decompressFromBase64(combined))) as LayoutConfigJson; + } catch (e0) { + console.log("Could not salvage theme. Initial parsing failed due to:", e, "\nWith LZ failed due ", e0) } } diff --git a/scripts/ScriptUtils.ts b/scripts/ScriptUtils.ts index 5469b5645..9ed725d96 100644 --- a/scripts/ScriptUtils.ts +++ b/scripts/ScriptUtils.ts @@ -53,7 +53,7 @@ export default class ScriptUtils { try { headers = headers ?? {} headers.accept = "application/json" - console.log("ScriptUtils.DownloadJson(", url.substring(0,40), url.length > 40 ? "...":"" ,")") + console.log("ScriptUtils.DownloadJson(", url.substring(0, 40), url.length > 40 ? "..." : "", ")") const urlObj = new URL(url) https.get({ host: urlObj.host, diff --git a/scripts/fixSchemas.ts b/scripts/fixSchemas.ts new file mode 100644 index 000000000..7899ae095 --- /dev/null +++ b/scripts/fixSchemas.ts @@ -0,0 +1,28 @@ +import ScriptUtils from "./ScriptUtils"; +import {readFileSync, writeFileSync} from "fs"; + + +function main() { + + const allSchemas = ScriptUtils.readDirRecSync("./Docs/Schemas").filter(pth => pth.endsWith("JSC.ts")) + for (const path of allSchemas) { + const dir = path.substring(0, path.lastIndexOf("/")) + const name = path.substring(path.lastIndexOf("/"), path.length - "JSC.ts".length) + let content = readFileSync(path, "UTF-8") + content = content.substring("export default ".length) + let parsed = JSON.parse(content) + parsed["additionalProperties"] = false + + for (const key in parsed.definitions) { + const def = parsed.definitions[key] + console.log("Patching ", key) + if (def.type === "object") { + def["additionalProperties"] = false + } + } + + writeFileSync(dir + "/" + name + ".schema.json", JSON.stringify(parsed, null, " "), "UTF8") + } +} + +main() diff --git a/scripts/fixTheme.ts b/scripts/fixTheme.ts index cf66d45d1..fa98e8b48 100644 --- a/scripts/fixTheme.ts +++ b/scripts/fixTheme.ts @@ -2,15 +2,14 @@ * This script attempt to automatically fix some basic issues when a theme from the custom generator is loaded */ import {Utils} from "../Utils" -Utils.runningFromConsole = true; import {readFileSync, writeFileSync} from "fs"; import SmallLicense from "../Models/smallLicense"; -import AllKnownLayers from "../Customizations/AllKnownLayers"; import ScriptUtils from "./ScriptUtils"; import AllImageProviders from "../Logic/ImageProviders/AllImageProviders"; import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson"; import LayerConfig from "../Models/ThemeConfig/LayerConfig"; +Utils.runningFromConsole = true; ScriptUtils.fixUtils() diff --git a/scripts/generateCache.ts b/scripts/generateCache.ts index 9bf879023..5731a9ac4 100644 --- a/scripts/generateCache.ts +++ b/scripts/generateCache.ts @@ -86,9 +86,9 @@ async function downloadRaw(targetdir: string, r: TileRange, theme: LayoutConfig, } const runningSeconds = (new Date().getTime() - startTime) / 1000 const resting = failed + (r.total - downloaded) - const perTile= (runningSeconds / (downloaded - skipped)) - const estimated =Math.floor(resting * perTile) - console.log("total: ", downloaded, "/", r.total, "failed: ", failed, "skipped: ", skipped, "running time: ",Utils.toHumanTime(runningSeconds)+"s", "estimated left: ", Utils.toHumanTime(estimated), "("+Math.floor(perTile)+"s/tile)") + const perTile = (runningSeconds / (downloaded - skipped)) + const estimated = Math.floor(resting * perTile) + console.log("total: ", downloaded, "/", r.total, "failed: ", failed, "skipped: ", skipped, "running time: ", Utils.toHumanTime(runningSeconds) + "s", "estimated left: ", Utils.toHumanTime(estimated), "(" + Math.floor(perTile) + "s/tile)") const boundsArr = Tiles.tile_bounds(r.zoomlevel, x, y) const bounds = { @@ -106,13 +106,13 @@ async function downloadRaw(targetdir: string, r: TileRange, theme: LayoutConfig, if ((json.remark ?? "").startsWith("runtime error")) { console.error("Got a runtime error: ", json.remark) failed++; - }else if (json.elements.length === 0) { + } else if (json.elements.length === 0) { console.log("Got an empty response! Writing anyway") } - - console.log("Got the response - writing to ", filename) - writeFileSync(filename, JSON.stringify(json, null, " ")); + + console.log("Got the response - writing to ", filename) + writeFileSync(filename, JSON.stringify(json, null, " ")); } catch (err) { console.log(url) console.log("Could not download - probably hit the rate limit; waiting a bit. (" + err + ")") @@ -180,7 +180,7 @@ function sliceToTiles(allFeatures: FeatureSource, theme: LayoutConfig, relations function handleLayer(source: FeatureSourceForLayer) { const layer = source.layer.layerDef; const targetZoomLevel = layer.source.geojsonZoomLevel ?? 0 - + const layerId = layer.id if (layer.source.isOsmCacheLayer !== true) { return; @@ -245,11 +245,11 @@ function sliceToTiles(allFeatures: FeatureSource, theme: LayoutConfig, relations writeFileSync(path, JSON.stringify(perX)) // And, if needed, to create a points-only layer - if(pointsOnlyLayers.indexOf(layer.id) >= 0){ + if (pointsOnlyLayers.indexOf(layer.id) >= 0) { const features = source.features.data.map(f => f.feature) const points = features.map(feature => GeoOperations.centerpoint(feature)) console.log("Writing points overview for ", layerId) - const targetPath = targetdir+"_"+layerId+"_points.geojson" + const targetPath = targetdir + "_" + layerId + "_points.geojson" // This is the geojson file containing all features for this tile writeFileSync(targetPath, JSON.stringify({ type: "FeatureCollection", @@ -270,7 +270,6 @@ function sliceToTiles(allFeatures: FeatureSource, theme: LayoutConfig, relations } - async function main(args: string[]) { if (args.length == 0) { @@ -284,12 +283,12 @@ async function main(args: string[]) { const lon0 = Number(args[4]) const lat1 = Number(args[5]) const lon1 = Number(args[6]) - + let generatePointLayersFor = [] - if(args[7] == "--generate-point-overview"){ + if (args[7] == "--generate-point-overview") { generatePointLayersFor = args[8].split(",") } - + const tileRange = Tiles.TileRangeBetween(zoomlevel, lat0, lon0, lat1, lon1) diff --git a/scripts/generateDocs.ts b/scripts/generateDocs.ts index 9d7951d0f..7061896be 100644 --- a/scripts/generateDocs.ts +++ b/scripts/generateDocs.ts @@ -1,6 +1,4 @@ import {Utils} from "../Utils"; - -Utils.runningFromConsole = true; import SpecialVisualizations from "../UI/SpecialVisualizations"; import SimpleMetaTagger from "../Logic/SimpleMetaTagger"; import Combine from "../UI/Base/Combine"; @@ -9,16 +7,19 @@ import ValidatedTextField from "../UI/Input/ValidatedTextField"; import BaseUIElement from "../UI/BaseUIElement"; import Translations from "../UI/i18n/Translations"; import {writeFileSync} from "fs"; -import State from "../State"; import {QueryParameters} from "../Logic/Web/QueryParameters"; import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; import Minimap from "../UI/Base/Minimap"; import FeatureSwitchState from "../Logic/State/FeatureSwitchState"; +import AllKnownLayers from "../Customizations/AllKnownLayers"; +import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; + +Utils.runningFromConsole = true; function WriteFile(filename, html: string | BaseUIElement, autogenSource: string[]): void { writeFileSync(filename, new Combine([Translations.W(html), - "Generated from " + autogenSource.join(", ") + "\n\nThis document is autogenerated from " + autogenSource.join(", ") ]).AsMarkdown()); } @@ -26,7 +27,7 @@ WriteFile("./Docs/SpecialRenderings.md", SpecialVisualizations.HelpMessage(), [" WriteFile("./Docs/CalculatedTags.md", new Combine([SimpleMetaTagger.HelpText(), ExtraFunction.HelpText()]).SetClass("flex-col"), ["SimpleMetaTagger", "ExtraFunction"]) WriteFile("./Docs/SpecialInputElements.md", ValidatedTextField.HelpText(), ["ValidatedTextField.ts"]); - +WriteFile("./Docs/BuiltinLayers.md", AllKnownLayouts.GenLayerOverviewText(), ["AllKnownLayers.ts"]) Minimap.createMiniMap = _ => { console.log("Not creating a minimap, it is disabled"); return undefined diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts index da1a984b4..fb4161601 100644 --- a/scripts/generateLayerOverview.ts +++ b/scripts/generateLayerOverview.ts @@ -47,6 +47,11 @@ class LayerOverviewUtils { if (layerJson["overpassTags"] !== undefined) { errorCount.push("Layer " + layerJson.id + "still uses the old 'overpassTags'-format. Please use \"source\": {\"osmTags\": }' instead of \"overpassTags\": (note: this isn't your fault, the custom theme generator still spits out the old format)") } + const forbiddenTopLevel = ["icon","wayHandling","roamingRenderings","roamingRendering","label","width","color","colour","iconOverlays"] + for (const forbiddenKey of forbiddenTopLevel) { + if(layerJson[forbiddenKey] !== undefined) + errorCount.push("Layer "+layerJson.id+" still has a forbidden key "+forbiddenKey) + } try { const layer = new LayerConfig(layerJson, "test", true) const images = Array.from(layer.ExtractImages()) @@ -183,7 +188,7 @@ class LayerOverviewUtils { allTranslations .filter(t => t.tr.translations[neededLanguage] === undefined && t.tr.translations["*"] === undefined) .forEach(missing => { - themeErrorCount.push("The theme " + theme.id + " should be translation-complete for " + neededLanguage + ", but it lacks a translation for " + missing.context) + themeErrorCount.push("The theme " + theme.id + " should be translation-complete for " + neededLanguage + ", but it lacks a translation for " + missing.context+".\n\tThe full translation is "+missing.tr.translations) }) } @@ -191,7 +196,7 @@ class LayerOverviewUtils { } themeConfigs.push(theme) } catch (e) { - themeErrorCount.push("Could not parse theme " + themeFile["id"] + "due to", e) + themeErrorCount.push("Could not parse theme " + themeFile["id"] + " due to", e) } } diff --git a/scripts/generateLayouts.ts b/scripts/generateLayouts.ts index 3b747a4a0..5335a7a39 100644 --- a/scripts/generateLayouts.ts +++ b/scripts/generateLayouts.ts @@ -1,6 +1,4 @@ import {Utils} from "../Utils"; -// We HAVE to mark this while importing -Utils.runningFromConsole = true; import {existsSync, mkdirSync, readFileSync, writeFile, writeFileSync} from "fs"; import Locale from "../UI/i18n/Locale"; import Translations from "../UI/i18n/Translations"; @@ -9,6 +7,8 @@ import Constants from "../Models/Constants"; import * as all_known_layouts from "../assets/generated/known_layers_and_themes.json" import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson"; import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; +// We HAVE to mark this while importing +Utils.runningFromConsole = true; const sharp = require('sharp'); diff --git a/scripts/generateLicenseInfo.ts b/scripts/generateLicenseInfo.ts index f9e6d485f..e6c47b922 100644 --- a/scripts/generateLicenseInfo.ts +++ b/scripts/generateLicenseInfo.ts @@ -76,7 +76,7 @@ knownLicenses.set("streetcomplete", { authors: ["Tobias Zwick (westnordost)"], path: undefined, license: "CC0", - sources: ["https://github.com/streetcomplete/StreetComplete/tree/master/res/graphics","https://f-droid.org/packages/de.westnordost.streetcomplete/"] + sources: ["https://github.com/streetcomplete/StreetComplete/tree/master/res/graphics", "https://f-droid.org/packages/de.westnordost.streetcomplete/"] }) @@ -162,6 +162,17 @@ function cleanLicenseInfo(allPaths: string[], allLicenseInfos: SmallLicense[]) { } perDirectory.forEach((licenses, dir) => { + + + for (let i = licenses.length - 1; i >= 0; i--) { + const license = licenses[i]; + const path = dir + "/" + license.path + if (!existsSync(path)) { + console.log("Found license for now missing file: ", path, " - removing this license") + licenses.splice(i, 1) + } + } + licenses.sort((a, b) => a.path < b.path ? -1 : 1) writeFileSync(dir + "/license_info.json", JSON.stringify(licenses, null, 2)) }) @@ -187,6 +198,26 @@ function queryMissingLicenses(missingLicenses: string[]) { console.log("You're through!") } + +/** + * Creates the humongous license_info in the generated assets, containing all licenses with a path relative to the root + * @param licensePaths + */ +function createFullLicenseOverview(licensePaths) { + + const allLicenses: SmallLicense[] = [] + for (const licensePath of licensePaths) { + const licenses = JSON.parse(readFileSync(licensePath, "UTF-8")) + for (const license of licenses) { + const dir = licensePath.substring(0, licensePath.length - "license_info.json".length) + license.path = dir + license.path + allLicenses.push(license) + } + } + + writeFileSync("./assets/generated/license_info.json", JSON.stringify(allLicenses, null, " ")) +} + console.log("Checking and compiling license info") const contents = ScriptUtils.readDirRecSync("./assets") .filter(entry => entry.indexOf("./assets/generated") != 0) @@ -197,7 +228,6 @@ if (!existsSync("./assets/generated")) { mkdirSync("./assets/generated") } -writeFileSync("./assets/generated/license_info.json", JSON.stringify(licenseInfos, null, " ")) const artwork = contents.filter(pth => pth.match(/(.svg|.png|.jpg)$/i) != null) const missingLicenses = missingLicenseInfos(licenseInfos, artwork) @@ -221,13 +251,10 @@ if (missingLicenses.length > 0) { const msg = `There are ${missingLicenses.length} licenses missing and ${invalidLicenses.length} invalid licenses.` console.log(missingLicenses.concat(invalidLicenses).join("\n")) console.error(msg) - if (process.argv.indexOf("--report") >= 0) { - console.log("Writing report!") - writeFileSync("missing_licenses.txt", missingLicenses.concat(invalidLicenses).join("\n")) - } if (process.argv.indexOf("--no-fail") < 0) { throw msg } } cleanLicenseInfo(licensePaths, licenseInfos) +createFullLicenseOverview(licensePaths) \ No newline at end of file diff --git a/scripts/generateTaginfoProjectFiles.ts b/scripts/generateTaginfoProjectFiles.ts index 7345e8918..58166a11c 100644 --- a/scripts/generateTaginfoProjectFiles.ts +++ b/scripts/generateTaginfoProjectFiles.ts @@ -1,5 +1,4 @@ import {Utils} from "../Utils"; -Utils.runningFromConsole = true; import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; import Locale from "../UI/i18n/Locale"; import {Translation} from "../UI/i18n/Translation"; @@ -7,6 +6,8 @@ import {readFileSync, writeFileSync} from "fs"; import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"; import LayerConfig from "../Models/ThemeConfig/LayerConfig"; +Utils.runningFromConsole = true; + /** * Generates all the files in "Docs/TagInfo". These are picked up by the taginfo project, showing a link to the mapcomplete theme if the key is used diff --git a/scripts/generateTranslations.ts b/scripts/generateTranslations.ts index 760fbbd4e..41d4f0ebe 100644 --- a/scripts/generateTranslations.ts +++ b/scripts/generateTranslations.ts @@ -31,8 +31,8 @@ class TranslationPart { if (!translations.hasOwnProperty(translationsKey)) { continue; } - if(translationsKey == "then"){ - throw "Suspicious translation at "+context + if (translationsKey == "then") { + throw "Suspicious translation at " + context } const v = translations[translationsKey] if (typeof (v) != "string") { @@ -245,7 +245,7 @@ function generateTranslationsObjectFrom(objects: { path: string, parsed: { id: s let json = tr.toJson(lang) try { - json = JSON.stringify(JSON.parse(json), null, " "); + json = JSON.stringify(JSON.parse(json), null, " "); } catch (e) { console.error(e) } @@ -360,7 +360,7 @@ function mergeLayerTranslations() { const layerFiles = ScriptUtils.getLayerFiles(); for (const layerFile of layerFiles) { mergeLayerTranslation(layerFile.parsed, layerFile.path, loadTranslationFilesFrom("layers")) - writeFileSync(layerFile.path, JSON.stringify(layerFile.parsed, null, " ")) + writeFileSync(layerFile.path, JSON.stringify(layerFile.parsed, null, " ")) } } diff --git a/scripts/lint.ts b/scripts/lint.ts index e883fa3ae..2d0498971 100644 --- a/scripts/lint.ts +++ b/scripts/lint.ts @@ -1,8 +1,5 @@ - import ScriptUtils from "./ScriptUtils"; import {writeFileSync} from "fs"; -import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson"; -import LineRenderingConfigJson from "../Models/ThemeConfig/Json/LineRenderingConfigJson"; import LegacyJsonConvert from "../Models/ThemeConfig/LegacyJsonConvert"; /* @@ -12,12 +9,12 @@ import LegacyJsonConvert from "../Models/ThemeConfig/LegacyJsonConvert"; const layerFiles = ScriptUtils.getLayerFiles(); for (const layerFile of layerFiles) { - LegacyJsonConvert. fixLayerConfig(layerFile.parsed) - writeFileSync(layerFile.path, JSON.stringify(layerFile.parsed, null, " ")) + LegacyJsonConvert.fixLayerConfig(layerFile.parsed) + writeFileSync(layerFile.path, JSON.stringify(layerFile.parsed, null, " ")) } const themeFiles = ScriptUtils.getThemeFiles() for (const themeFile of themeFiles) { - LegacyJsonConvert.fixThemeConfig(themeFile.parsed) + LegacyJsonConvert.fixThemeConfig(themeFile.parsed) writeFileSync(themeFile.path, JSON.stringify(themeFile.parsed, null, " ")) } diff --git a/tailwind.config.js b/tailwind.config.js index fe744d0b2..5c38cadf2 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -21,9 +21,9 @@ module.exports = { } }, plugins: [ - plugin(function ({ addVariant, e }) { - addVariant('landscape', ({ modifySelectors, separator }) => { - modifySelectors(({ className }) => { + plugin(function ({addVariant, e}) { + addVariant('landscape', ({modifySelectors, separator}) => { + modifySelectors(({className}) => { return `.${e(`landscape${separator}${className}`)}:landscape` }) }) diff --git a/test.ts b/test.ts index 7bc8c81d8..7141bb366 100644 --- a/test.ts +++ b/test.ts @@ -7,12 +7,136 @@ import AvailableBaseLayers from "./Logic/Actors/AvailableBaseLayers"; import BaseLayer from "./Models/BaseLayer"; import {UIEventSource} from "./Logic/UIEventSource"; import AvailableBaseLayersImplementation from "./Logic/Actors/AvailableBaseLayersImplementation"; + MinimapImplementation.initialize() AvailableBaseLayers.implement(new AvailableBaseLayersImplementation()) const confirmationMap = Minimap.createMiniMap({ background: new UIEventSource(AvailableBaseLayers.osmCarto) }) -const features = [{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":1728823483},"geometry":{"type":"LineString","coordinates":[[3.216693,51.2147409],[3.2166930000000225,51.214740500000055]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":1728823481},"geometry":{"type":"LineString","coordinates":[[3.2167247,51.2146969],[3.21671060000004,51.2147159000002]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":1728823481},"geometry":{"type":"LineString","coordinates":[[3.2167247,51.2146969],[3.2167241999999976,51.214696799999714]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":1728823549},"geometry":{"type":"LineString","coordinates":[[3.2168871,51.2147399],[3.2168876999999547,51.21474009999989]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978289383},"geometry":{"type":"LineString","coordinates":[[3.2169973,51.2147676],[3.2169969000000034,51.21476780000005]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978289388},"geometry":{"type":"LineString","coordinates":[[3.2169829,51.2147884],[3.2169673999999895,51.21481170000002]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978289388},"geometry":{"type":"LineString","coordinates":[[3.2169829,51.2147884],[3.216949899999979,51.214808000000225]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978289388},"geometry":{"type":"LineString","coordinates":[[3.2169829,51.2147884],[3.2169306,51.21480400000028]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978289388},"geometry":{"type":"LineString","coordinates":[[3.2169829,51.2147884],[3.2169465999999756,51.214779199999825]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978288381},"geometry":{"type":"LineString","coordinates":[[3.2168856,51.2147638],[3.216885599999961,51.214763799999986]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978289386},"geometry":{"type":"LineString","coordinates":[[3.2168815,51.2147718],[3.216881100000038,51.21477160000009]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":4978289384},"geometry":{"type":"LineString","coordinates":[[3.2168674,51.2147683],[3.216867399999983,51.214768400000224]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":1728823514},"geometry":{"type":"LineString","coordinates":[[3.2168551,51.2147863],[3.2168551000000436,51.21478629999984]]}},"freshness":"2021-11-02T20:06:53.088Z"},{"feature":{"type":"Feature","properties":{"move":"yes","osm-id":1728823483},"geometry":{"type":"LineString","coordinates":[[3.216693,51.2147409],[3.2166930000000225,51.214740500000055]]}},"freshness":"2021-11-02T20:06:53.088Z"}] +const features = [{ + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 1728823483}, + "geometry": { + "type": "LineString", + "coordinates": [[3.216693, 51.2147409], [3.2166930000000225, 51.214740500000055]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 1728823481}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2167247, 51.2146969], [3.21671060000004, 51.2147159000002]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 1728823481}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2167247, 51.2146969], [3.2167241999999976, 51.214696799999714]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 1728823549}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2168871, 51.2147399], [3.2168876999999547, 51.21474009999989]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978289383}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2169973, 51.2147676], [3.2169969000000034, 51.21476780000005]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978289388}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2169829, 51.2147884], [3.2169673999999895, 51.21481170000002]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978289388}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2169829, 51.2147884], [3.216949899999979, 51.214808000000225]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978289388}, + "geometry": {"type": "LineString", "coordinates": [[3.2169829, 51.2147884], [3.2169306, 51.21480400000028]]} + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978289388}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2169829, 51.2147884], [3.2169465999999756, 51.214779199999825]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978288381}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2168856, 51.2147638], [3.216885599999961, 51.214763799999986]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978289386}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2168815, 51.2147718], [3.216881100000038, 51.21477160000009]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 4978289384}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2168674, 51.2147683], [3.216867399999983, 51.214768400000224]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 1728823514}, + "geometry": { + "type": "LineString", + "coordinates": [[3.2168551, 51.2147863], [3.2168551000000436, 51.21478629999984]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}, { + "feature": { + "type": "Feature", + "properties": {"move": "yes", "osm-id": 1728823483}, + "geometry": { + "type": "LineString", + "coordinates": [[3.216693, 51.2147409], [3.2166930000000225, 51.214740500000055]] + } + }, "freshness": "2021-11-02T20:06:53.088Z" +}] const changePreview = new StaticFeatureSource(features.map(f => f.feature), false) console.log("ChangePreview", changePreview.features.data) new ShowDataLayer({ @@ -22,5 +146,5 @@ new ShowDataLayer({ features: changePreview, layerToShow: AllKnownLayers.sharedLayers.get("conflation") }) - + confirmationMap.SetStyle("height: 20rem").SetClass("w-full").AttachTo("maindiv") \ No newline at end of file diff --git a/test/Actors.spec.ts b/test/Actors.spec.ts index b53cfd5c7..38c2a7c17 100644 --- a/test/Actors.spec.ts +++ b/test/Actors.spec.ts @@ -1,10 +1,8 @@ import T from "./TestHelper"; -import State from "../State"; import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; import SelectedElementTagsUpdater from "../Logic/Actors/SelectedElementTagsUpdater"; import UserRelatedState from "../Logic/State/UserRelatedState"; import {Utils} from "../Utils"; -import ScriptUtils from "../scripts/ScriptUtils"; import SelectedFeatureHandler from "../Logic/Actors/SelectedFeatureHandler"; import {UIEventSource} from "../Logic/UIEventSource"; import {ElementStorage} from "../Logic/ElementStorage"; @@ -113,14 +111,14 @@ export default class ActorsSpec extends T { lon: 0, zoom: 0 }) - - + + loc.addCallback(_ => { T.equals("node/5568693115", selected.data.properties.id) T.equals(14, loc.data.zoom) - T.equals( 51.2179199, loc.data.lat) + T.equals(51.2179199, loc.data.lat) }) - + new SelectedFeatureHandler(hash, { selectedElement: selected, allElements: new ElementStorage(), @@ -128,9 +126,7 @@ export default class ActorsSpec extends T { locationControl: loc, layoutToUse: undefined }) - - - + }] diff --git a/test/GeoOperations.spec.ts b/test/GeoOperations.spec.ts index 56e07acaf..a615efb0c 100644 --- a/test/GeoOperations.spec.ts +++ b/test/GeoOperations.spec.ts @@ -1,8 +1,8 @@ import {Utils} from "../Utils"; import * as Assert from "assert"; +import {equal} from "assert"; import T from "./TestHelper"; import {GeoOperations} from "../Logic/GeoOperations"; -import {equal} from "assert"; import {BBox} from "../Logic/BBox"; Utils.runningFromConsole = true; diff --git a/test/ImageProvider.spec.ts b/test/ImageProvider.spec.ts index 898f05c7c..e00311986 100644 --- a/test/ImageProvider.spec.ts +++ b/test/ImageProvider.spec.ts @@ -4,23 +4,24 @@ import {UIEventSource} from "../Logic/UIEventSource"; import {Utils} from "../Utils"; export default class ImageProviderSpec extends T { - + constructor() { super("ImageProvider", [ ["Search images", () => { - + let i = 0 + function expects(url, tags, providerName = undefined) { - tags.id = "test/"+i + tags.id = "test/" + i i++ AllImageProviders.LoadImagesFor(new UIEventSource(tags)).addCallbackD(images => { console.log("ImageProvider test", tags.id, "for", tags) const img = images[0] - if(img === undefined){ + if (img === undefined) { throw "No image found" } T.equals(url, img.url, tags.id) - if(providerName){ + if (providerName) { T.equals(img.provider.constructor.name, providerName) } console.log("OK") @@ -30,51 +31,53 @@ export default class ImageProviderSpec extends T { const muntpoort_expected = "https://commons.wikimedia.org/wiki/Special:FilePath/File%3ABr%C3%BCgge-Muntpoort_6-29510-58192.jpg?width=500&height=400" expects( muntpoort_expected, - { "wikimedia_commons":"File:BrÃŧgge-Muntpoort_6-29510-58192.jpg" - } , "WikimediaImageProvider") - + { + "wikimedia_commons": "File:BrÃŧgge-Muntpoort_6-29510-58192.jpg" + }, "WikimediaImageProvider") expects(muntpoort_expected, - { "wikimedia_commons":"https://upload.wikimedia.org/wikipedia/commons/c/cd/Br%C3%BCgge-Muntpoort_6-29510-58192.jpg" - } , "WikimediaImageProvider") - - expects(muntpoort_expected , { - "image":"https://upload.wikimedia.org/wikipedia/commons/c/cd/Br%C3%BCgge-Muntpoort_6-29510-58192.jpg" - } , "WikimediaImageProvider") + { + "wikimedia_commons": "https://upload.wikimedia.org/wikipedia/commons/c/cd/Br%C3%BCgge-Muntpoort_6-29510-58192.jpg" + }, "WikimediaImageProvider") - - expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3ABelgium-5955_-_Simon_Stevin_(13746657193).jpg?width=500&height=400" , { - "image":"File:Belgium-5955_-_Simon_Stevin_(13746657193).jpg" - } , "WikimediaImageProvider") - - expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3ABelgium-5955_-_Simon_Stevin_(13746657193).jpg?width=500&height=400" , { - "wikimedia_commons":"File:Belgium-5955_-_Simon_Stevin_(13746657193).jpg" - } , "WikimediaImageProvider") - - - - - expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3ABrugge_Leeuwstraat_zonder_nummer_Leeuwbrug_-_119334_-_onroerenderfgoed.jpg?width=500&height=400",{ - image:"File:Brugge_Leeuwstraat_zonder_nummer_Leeuwbrug_-_119334_-_onroerenderfgoed.jpg" + expects(muntpoort_expected, { + "image": "https://upload.wikimedia.org/wikipedia/commons/c/cd/Br%C3%BCgge-Muntpoort_6-29510-58192.jpg" }, "WikimediaImageProvider") - expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3APapageno_Jef_Claerhout.jpg?width=500&height=400",{ - "wikimedia_commons": "File:Papageno_Jef_Claerhout.jpg" + + expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3ABelgium-5955_-_Simon_Stevin_(13746657193).jpg?width=500&height=400", { + "image": "File:Belgium-5955_-_Simon_Stevin_(13746657193).jpg" + }, "WikimediaImageProvider") + + expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3ABelgium-5955_-_Simon_Stevin_(13746657193).jpg?width=500&height=400", { + "wikimedia_commons": "File:Belgium-5955_-_Simon_Stevin_(13746657193).jpg" + }, "WikimediaImageProvider") + + + expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3ABrugge_Leeuwstraat_zonder_nummer_Leeuwbrug_-_119334_-_onroerenderfgoed.jpg?width=500&height=400", { + image: "File:Brugge_Leeuwstraat_zonder_nummer_Leeuwbrug_-_119334_-_onroerenderfgoed.jpg" + }, "WikimediaImageProvider") + + expects("https://commons.wikimedia.org/wiki/Special:FilePath/File%3APapageno_Jef_Claerhout.jpg?width=500&height=400", { + "wikimedia_commons": "File:Papageno_Jef_Claerhout.jpg" }, "WikimediaImageProvider") Utils.injectJsonDownloadForTests( - "https://graph.mapillary.com/196804715753265?fields=thumb_1024_url&&access_token=MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85" , - {"thumb_1024_url":"https://scontent-bru2-1.xx.fbcdn.net/m1/v/t6/An8HQ3DrfU76tWMC602spvM_e_rqOHyiUcYUTetXM7K52DDBEY5J4FWg4WKQqVUlMsWJn4nLXk0pxlBLx31146FqZ2Kg65z7lJUfR6wpW6WPSR5_y7RKdv4YEuzPjwIN0lagBnQONV3UjmXnEGpMouU?stp=s1024x768&ccb=10-5&oh=d460b401c505714ee1cb8bd6baf8ae5d&oe=61731FC3&_nc_sid=122ab1","id":"196804715753265"} + "https://graph.mapillary.com/196804715753265?fields=thumb_1024_url&&access_token=MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85", + { + "thumb_1024_url": "https://scontent-bru2-1.xx.fbcdn.net/m1/v/t6/An8HQ3DrfU76tWMC602spvM_e_rqOHyiUcYUTetXM7K52DDBEY5J4FWg4WKQqVUlMsWJn4nLXk0pxlBLx31146FqZ2Kg65z7lJUfR6wpW6WPSR5_y7RKdv4YEuzPjwIN0lagBnQONV3UjmXnEGpMouU?stp=s1024x768&ccb=10-5&oh=d460b401c505714ee1cb8bd6baf8ae5d&oe=61731FC3&_nc_sid=122ab1", + "id": "196804715753265" + } ) expects("https://scontent-bru2-1.xx.fbcdn.net/m1/v/t6/An8HQ3DrfU76tWMC602spvM_e_rqOHyiUcYUTetXM7K52DDBEY5J4FWg4WKQqVUlMsWJn4nLXk0pxlBLx31146FqZ2Kg65z7lJUfR6wpW6WPSR5_y7RKdv4YEuzPjwIN0lagBnQONV3UjmXnEGpMouU?stp=s1024x768&ccb=10-5&oh=d460b401c505714ee1cb8bd6baf8ae5d&oe=61731FC3&_nc_sid=122ab1", { - "mapillary":"https://www.mapillary.com/app/?pKey=196804715753265" + "mapillary": "https://www.mapillary.com/app/?pKey=196804715753265" }) - - + + }] ]); } - + } \ No newline at end of file diff --git a/test/OsmConnection.spec.ts b/test/OsmConnection.spec.ts index 9d7b114f5..3bd69ac9b 100644 --- a/test/OsmConnection.spec.ts +++ b/test/OsmConnection.spec.ts @@ -2,7 +2,6 @@ import T from "./TestHelper"; import UserDetails, {OsmConnection} from "../Logic/Osm/OsmConnection"; import {UIEventSource} from "../Logic/UIEventSource"; import ScriptUtils from "../scripts/ScriptUtils"; -import {AllKnownLayouts} from "../Customizations/AllKnownLayouts"; import {ElementStorage} from "../Logic/ElementStorage"; import {Changes} from "../Logic/Osm/Changes"; diff --git a/test/OsmObject.spec.ts b/test/OsmObject.spec.ts index e26dae4d6..9cf60e354 100644 --- a/test/OsmObject.spec.ts +++ b/test/OsmObject.spec.ts @@ -1,26 +1,13 @@ import T from "./TestHelper"; import {OsmObject} from "../Logic/Osm/OsmObject"; -import ScriptUtils from "../scripts/ScriptUtils"; -import {UIEventSource} from "../Logic/UIEventSource"; export default class OsmObjectSpec extends T { - private static async runTest(){ - const ways = await OsmObject.DownloadReferencingWays("node/1124134958") - if(ways === undefined){ - throw "Did not get the ways" - } - if (ways.length !== 4) { - throw "Expected 4 ways but got "+ways.length - } - } - - constructor() { super("osmobject", [ [ "Download referencing ways", () => { - OsmObjectSpec.runTest().then(_ => console.log("Referencing ways test is done (async)")) + OsmObjectSpec.runTest().then(_ => console.log("Referencing ways test is done (async)")) } ] @@ -28,4 +15,14 @@ export default class OsmObjectSpec extends T { ]); } + + private static async runTest() { + const ways = await OsmObject.DownloadReferencingWays("node/1124134958") + if (ways === undefined) { + throw "Did not get the ways" + } + if (ways.length !== 4) { + throw "Expected 4 ways but got " + ways.length + } + } } \ No newline at end of file diff --git a/test/RelationSplitHandler.spec.ts b/test/RelationSplitHandler.spec.ts index 0d13e7dc5..76c605a78 100644 --- a/test/RelationSplitHandler.spec.ts +++ b/test/RelationSplitHandler.spec.ts @@ -266,13 +266,285 @@ export default class RelationSplitHandlerSpec extends T { } ) Utils.injectJsonDownloadForTests( - "https://www.openstreetmap.org/api/0.6/relation/4374576" , - {"version":"0.6","generator":"CGImap 0.8.5 (1266692 spike-06.openstreetmap.org)","copyright":"OpenStreetMap and contributors","attribution":"http://www.openstreetmap.org/copyright","license":"http://opendatacommons.org/licenses/odbl/1-0/","elements":[{"type":"relation","id":4374576,"timestamp":"2014-12-23T21:42:27Z","version":2,"changeset":27660623,"user":"escada","uid":436365,"members":[{"type":"way","ref":318616190,"role":"from"},{"type":"node","ref":1407529979,"role":"via"},{"type":"way","ref":143298912,"role":"to"}],"tags":{"restriction":"no_right_turn","type":"restriction"}}]} + "https://www.openstreetmap.org/api/0.6/relation/4374576", + { + "version": "0.6", + "generator": "CGImap 0.8.5 (1266692 spike-06.openstreetmap.org)", + "copyright": "OpenStreetMap and contributors", + "attribution": "http://www.openstreetmap.org/copyright", + "license": "http://opendatacommons.org/licenses/odbl/1-0/", + "elements": [{ + "type": "relation", + "id": 4374576, + "timestamp": "2014-12-23T21:42:27Z", + "version": 2, + "changeset": 27660623, + "user": "escada", + "uid": 436365, + "members": [{"type": "way", "ref": 318616190, "role": "from"}, { + "type": "node", + "ref": 1407529979, + "role": "via" + }, {"type": "way", "ref": 143298912, "role": "to"}], + "tags": {"restriction": "no_right_turn", "type": "restriction"} + }] + } ) Utils.injectJsonDownloadForTests( - "https://www.openstreetmap.org/api/0.6/way/143298912/full" , - {"version":"0.6","generator":"CGImap 0.8.5 (4046166 spike-07.openstreetmap.org)","copyright":"OpenStreetMap and contributors","attribution":"http://www.openstreetmap.org/copyright","license":"http://opendatacommons.org/licenses/odbl/1-0/","elements":[{"type":"node","id":26343912,"lat":51.2146847,"lon":3.2397007,"timestamp":"2015-04-11T10:40:56Z","version":5,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":26343913,"lat":51.2161912,"lon":3.2386907,"timestamp":"2015-04-11T10:40:56Z","version":6,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":26343914,"lat":51.2193456,"lon":3.2360696,"timestamp":"2015-04-11T10:40:56Z","version":5,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":26343915,"lat":51.2202816,"lon":3.2352429,"timestamp":"2015-04-11T10:40:56Z","version":5,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":875668688,"lat":51.2131868,"lon":3.2406009,"timestamp":"2015-04-11T10:40:56Z","version":4,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":1109632153,"lat":51.2207068,"lon":3.234882,"timestamp":"2015-04-11T10:40:55Z","version":3,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":1109632154,"lat":51.220784,"lon":3.2348394,"timestamp":"2021-05-30T08:01:17Z","version":4,"changeset":105557550,"user":"albertino","uid":499281},{"type":"node","id":1109632177,"lat":51.2205082,"lon":3.2350441,"timestamp":"2015-04-11T10:40:55Z","version":3,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":1407529961,"lat":51.2168476,"lon":3.2381772,"timestamp":"2015-04-11T10:40:55Z","version":2,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":1407529969,"lat":51.2155155,"lon":3.23917,"timestamp":"2011-08-21T20:08:27Z","version":1,"changeset":9088257,"user":"toeklk","uid":219908},{"type":"node","id":1407529979,"lat":51.212694,"lon":3.2409595,"timestamp":"2015-04-11T10:40:55Z","version":6,"changeset":30139621,"user":"M!dgard","uid":763799,"tags":{"highway":"traffic_signals"}},{"type":"node","id":1634435395,"lat":51.2129189,"lon":3.2408257,"timestamp":"2012-02-15T19:37:51Z","version":1,"changeset":10695640,"user":"Eimai","uid":6072},{"type":"node","id":1634435396,"lat":51.2132508,"lon":3.2405417,"timestamp":"2012-02-15T19:37:51Z","version":1,"changeset":10695640,"user":"Eimai","uid":6072},{"type":"node","id":1634435397,"lat":51.2133918,"lon":3.2404416,"timestamp":"2015-04-11T10:40:55Z","version":2,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":1974988033,"lat":51.2127459,"lon":3.240928,"timestamp":"2012-10-20T12:24:13Z","version":1,"changeset":13566903,"user":"skyman81","uid":955688},{"type":"node","id":3250129361,"lat":51.2127906,"lon":3.2409016,"timestamp":"2018-12-19T00:00:33Z","version":2,"changeset":65596519,"user":"beardhatcode","uid":5439560,"tags":{"crossing":"traffic_signals","highway":"crossing"}},{"type":"node","id":3250129363,"lat":51.2149189,"lon":3.2395571,"timestamp":"2015-04-11T10:40:56Z","version":2,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":3450326133,"lat":51.2139571,"lon":3.2401205,"timestamp":"2015-04-11T10:40:26Z","version":1,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":3450326135,"lat":51.2181385,"lon":3.2370893,"timestamp":"2015-04-11T10:40:26Z","version":1,"changeset":30139621,"user":"M!dgard","uid":763799},{"type":"node","id":4794847239,"lat":51.2191224,"lon":3.2362584,"timestamp":"2019-08-27T23:07:05Z","version":2,"changeset":73816461,"user":"Pieter Vander Vennet","uid":3818858},{"type":"node","id":8493044168,"lat":51.2130348,"lon":3.2407284,"timestamp":"2021-03-06T21:52:51Z","version":1,"changeset":100555232,"user":"kaart_fietser","uid":11022240,"tags":{"highway":"traffic_signals","traffic_signals":"traffic_lights"}},{"type":"node","id":8792687918,"lat":51.2207505,"lon":3.2348579,"timestamp":"2021-06-02T18:27:15Z","version":1,"changeset":105735092,"user":"albertino","uid":499281},{"type":"way","id":143298912,"timestamp":"2021-06-02T18:27:15Z","version":15,"changeset":105735092,"user":"albertino","uid":499281,"nodes":[1407529979,1974988033,3250129361,1634435395,8493044168,875668688,1634435396,1634435397,3450326133,26343912,3250129363,1407529969,26343913,1407529961,3450326135,4794847239,26343914,26343915,1109632177,1109632153,8792687918,1109632154],"tags":{"cycleway:right":"track","highway":"primary","lanes":"2","lit":"yes","maxspeed":"70","name":"Buiten Kruisvest","oneway":"yes","ref":"R30","surface":"asphalt","wikipedia":"nl:Buiten Kruisvest"}}]} + "https://www.openstreetmap.org/api/0.6/way/143298912/full", + { + "version": "0.6", + "generator": "CGImap 0.8.5 (4046166 spike-07.openstreetmap.org)", + "copyright": "OpenStreetMap and contributors", + "attribution": "http://www.openstreetmap.org/copyright", + "license": "http://opendatacommons.org/licenses/odbl/1-0/", + "elements": [{ + "type": "node", + "id": 26343912, + "lat": 51.2146847, + "lon": 3.2397007, + "timestamp": "2015-04-11T10:40:56Z", + "version": 5, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 26343913, + "lat": 51.2161912, + "lon": 3.2386907, + "timestamp": "2015-04-11T10:40:56Z", + "version": 6, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 26343914, + "lat": 51.2193456, + "lon": 3.2360696, + "timestamp": "2015-04-11T10:40:56Z", + "version": 5, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 26343915, + "lat": 51.2202816, + "lon": 3.2352429, + "timestamp": "2015-04-11T10:40:56Z", + "version": 5, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 875668688, + "lat": 51.2131868, + "lon": 3.2406009, + "timestamp": "2015-04-11T10:40:56Z", + "version": 4, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 1109632153, + "lat": 51.2207068, + "lon": 3.234882, + "timestamp": "2015-04-11T10:40:55Z", + "version": 3, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 1109632154, + "lat": 51.220784, + "lon": 3.2348394, + "timestamp": "2021-05-30T08:01:17Z", + "version": 4, + "changeset": 105557550, + "user": "albertino", + "uid": 499281 + }, { + "type": "node", + "id": 1109632177, + "lat": 51.2205082, + "lon": 3.2350441, + "timestamp": "2015-04-11T10:40:55Z", + "version": 3, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 1407529961, + "lat": 51.2168476, + "lon": 3.2381772, + "timestamp": "2015-04-11T10:40:55Z", + "version": 2, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 1407529969, + "lat": 51.2155155, + "lon": 3.23917, + "timestamp": "2011-08-21T20:08:27Z", + "version": 1, + "changeset": 9088257, + "user": "toeklk", + "uid": 219908 + }, { + "type": "node", + "id": 1407529979, + "lat": 51.212694, + "lon": 3.2409595, + "timestamp": "2015-04-11T10:40:55Z", + "version": 6, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799, + "tags": {"highway": "traffic_signals"} + }, { + "type": "node", + "id": 1634435395, + "lat": 51.2129189, + "lon": 3.2408257, + "timestamp": "2012-02-15T19:37:51Z", + "version": 1, + "changeset": 10695640, + "user": "Eimai", + "uid": 6072 + }, { + "type": "node", + "id": 1634435396, + "lat": 51.2132508, + "lon": 3.2405417, + "timestamp": "2012-02-15T19:37:51Z", + "version": 1, + "changeset": 10695640, + "user": "Eimai", + "uid": 6072 + }, { + "type": "node", + "id": 1634435397, + "lat": 51.2133918, + "lon": 3.2404416, + "timestamp": "2015-04-11T10:40:55Z", + "version": 2, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 1974988033, + "lat": 51.2127459, + "lon": 3.240928, + "timestamp": "2012-10-20T12:24:13Z", + "version": 1, + "changeset": 13566903, + "user": "skyman81", + "uid": 955688 + }, { + "type": "node", + "id": 3250129361, + "lat": 51.2127906, + "lon": 3.2409016, + "timestamp": "2018-12-19T00:00:33Z", + "version": 2, + "changeset": 65596519, + "user": "beardhatcode", + "uid": 5439560, + "tags": {"crossing": "traffic_signals", "highway": "crossing"} + }, { + "type": "node", + "id": 3250129363, + "lat": 51.2149189, + "lon": 3.2395571, + "timestamp": "2015-04-11T10:40:56Z", + "version": 2, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 3450326133, + "lat": 51.2139571, + "lon": 3.2401205, + "timestamp": "2015-04-11T10:40:26Z", + "version": 1, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 3450326135, + "lat": 51.2181385, + "lon": 3.2370893, + "timestamp": "2015-04-11T10:40:26Z", + "version": 1, + "changeset": 30139621, + "user": "M!dgard", + "uid": 763799 + }, { + "type": "node", + "id": 4794847239, + "lat": 51.2191224, + "lon": 3.2362584, + "timestamp": "2019-08-27T23:07:05Z", + "version": 2, + "changeset": 73816461, + "user": "Pieter Vander Vennet", + "uid": 3818858 + }, { + "type": "node", + "id": 8493044168, + "lat": 51.2130348, + "lon": 3.2407284, + "timestamp": "2021-03-06T21:52:51Z", + "version": 1, + "changeset": 100555232, + "user": "kaart_fietser", + "uid": 11022240, + "tags": {"highway": "traffic_signals", "traffic_signals": "traffic_lights"} + }, { + "type": "node", + "id": 8792687918, + "lat": 51.2207505, + "lon": 3.2348579, + "timestamp": "2021-06-02T18:27:15Z", + "version": 1, + "changeset": 105735092, + "user": "albertino", + "uid": 499281 + }, { + "type": "way", + "id": 143298912, + "timestamp": "2021-06-02T18:27:15Z", + "version": 15, + "changeset": 105735092, + "user": "albertino", + "uid": 499281, + "nodes": [1407529979, 1974988033, 3250129361, 1634435395, 8493044168, 875668688, 1634435396, 1634435397, 3450326133, 26343912, 3250129363, 1407529969, 26343913, 1407529961, 3450326135, 4794847239, 26343914, 26343915, 1109632177, 1109632153, 8792687918, 1109632154], + "tags": { + "cycleway:right": "track", + "highway": "primary", + "lanes": "2", + "lit": "yes", + "maxspeed": "70", + "name": "Buiten Kruisvest", + "oneway": "yes", + "ref": "R30", + "surface": "asphalt", + "wikipedia": "nl:Buiten Kruisvest" + } + }] + } ) @@ -394,7 +666,7 @@ export default class RelationSplitHandlerSpec extends T { allWaysNodesInOrder: withSplit }, "no-theme") const changeDescription = await splitter.CreateChangeDescriptions(new Changes()) - const allIds = changeDescription[0].changes["members"].map(m => m.type+"/"+ m.ref+"-->"+m.role).join(",") + const allIds = changeDescription[0].changes["members"].map(m => m.type + "/" + m.ref + "-->" + m.role).join(",") const expected = "way/318616190-->from,node/1407529979-->via,way/-1-->to" T.equals(expected, allIds) diff --git a/test/ReplaceGeometry.spec.ts b/test/ReplaceGeometry.spec.ts index 40c3e53bb..4919914cc 100644 --- a/test/ReplaceGeometry.spec.ts +++ b/test/ReplaceGeometry.spec.ts @@ -1,5 +1,4 @@ import T from "./TestHelper"; -import FullNodeDatabaseSource from "../Logic/FeatureSource/TiledFeatureSource/FullNodeDatabaseSource"; import {Utils} from "../Utils"; export default class ReplaceGeometrySpec extends T { @@ -177,8 +176,6 @@ export default class ReplaceGeometrySpec extends T { const rawData = await Utils.downloadJsonCached(url, 1000) - - }] ]); } diff --git a/test/SplitAction.spec.ts b/test/SplitAction.spec.ts index d251c9b21..c476207a4 100644 --- a/test/SplitAction.spec.ts +++ b/test/SplitAction.spec.ts @@ -7,6 +7,290 @@ import {Utils} from "../Utils"; export default class SplitActionSpec extends T { + constructor() { + super("splitaction", [ + ["split 295132739", + () => SplitActionSpec.split().then(_ => console.log("OK"))], + ["split 295132739 on already existing node", + () => SplitActionSpec.splitWithPointReuse().then(_ => console.log("OK"))], + ["split 61435323 on already existing node", + () => SplitActionSpec.SplitHoutkaai().then(_ => console.log("OK"))], + ["Split test line", + async () => { + + Utils.injectJsonDownloadForTests( + "https://www.openstreetmap.org/api/0.6/way/941079939/full", + { + "version": "0.6", + "generator": "CGImap 0.8.5 (957273 spike-08.openstreetmap.org)", + "copyright": "OpenStreetMap and contributors", + "attribution": "http://www.openstreetmap.org/copyright", + "license": "http://opendatacommons.org/licenses/odbl/1-0/", + "elements": [{ + "type": "node", + "id": 6490126559, + "lat": 51.2332219, + "lon": 3.1429387, + "timestamp": "2021-05-09T19:04:53Z", + "version": 2, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"highway": "street_lamp", "power": "pole", "support": "pole"} + }, { + "type": "node", + "id": 8715440363, + "lat": 51.2324011, + "lon": 3.1367377, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"fixme": "continue"} + }, { + "type": "node", + "id": 8715440364, + "lat": 51.232455, + "lon": 3.1368759, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440365, + "lat": 51.2325883, + "lon": 3.1373986, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440366, + "lat": 51.232688, + "lon": 3.1379837, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440367, + "lat": 51.2327354, + "lon": 3.1385649, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440368, + "lat": 51.2327042, + "lon": 3.1392187, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"highway": "street_lamp", "power": "pole", "support": "pole"} + }, { + "type": "node", + "id": 8715440369, + "lat": 51.2323902, + "lon": 3.139353, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440370, + "lat": 51.2321027, + "lon": 3.139601, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"highway": "street_lamp", "power": "pole", "ref": "242", "support": "pole"} + }, { + "type": "node", + "id": 8715440371, + "lat": 51.2322614, + "lon": 3.1401564, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440372, + "lat": 51.232378, + "lon": 3.1407909, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440373, + "lat": 51.2325532, + "lon": 3.1413659, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440374, + "lat": 51.2327611, + "lon": 3.1418877, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "node", + "id": 8715440375, + "lat": 51.2330037, + "lon": 3.142418, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "tags": {"power": "pole"} + }, { + "type": "way", + "id": 941079939, + "timestamp": "2021-05-09T19:04:53Z", + "version": 1, + "changeset": 104407928, + "user": "M!dgard", + "uid": 763799, + "nodes": [6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370, 8715440369, 8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363], + "tags": {"power": "minor_line"} + }] + } + ) + + Utils.injectJsonDownloadForTests( + "https://www.openstreetmap.org/api/0.6/way/941079939/relations", + { + "version": "0.6", + "generator": "CGImap 0.8.5 (2419440 spike-07.openstreetmap.org)", + "copyright": "OpenStreetMap and contributors", + "attribution": "http://www.openstreetmap.org/copyright", + "license": "http://opendatacommons.org/licenses/odbl/1-0/", + "elements": [] + } + ) + + // Split points are lon,lat + const splitPointAroundP3: [number, number] = [3.1392198801040645, 51.232701022376745] + const splitAction = new SplitAction("way/941079939", [splitPointAroundP3], {theme: "test"}) + const changes = await splitAction.Perform(new Changes()) + console.log(changes) + // 8715440368 is the expected point of the split + + /* Nodes are + 6490126559 (part of ways 941079941 and 941079940) + 8715440375 + 8715440374 + 8715440373 + 8715440372 + 8715440371 + 8715440370 + 8715440369 + 8715440368 <--- split here + 8715440367 + 8715440366 + 8715440365 + 8715440364 + 8715440363 + */ + + const nodeList0 = [6490126559, + 8715440375, + 8715440374, + 8715440373, + 8715440372, + 8715440371, + 8715440370, + 8715440369, + 8715440368] + + const nodeList1 = [ + 8715440368, + 8715440367, + 8715440366, + 8715440365, + 8715440364, + 8715440363 + ] + + T.listIdentical(nodeList0, changes[0].changes["nodes"]) + T.listIdentical(nodeList1, changes[1].changes["nodes"]) + } + ], + ["Split minor powerline halfway", async () => { + + + const splitPointHalfway: [number, number] = [3.1392842531204224, 51.23255322710106] + const splitAction = new SplitAction("way/941079939", [splitPointHalfway], {theme: "test"}, 1) + const changes = await splitAction.Perform(new Changes()) + + const nodeList0 = [6490126559, + 8715440375, + 8715440374, + 8715440373, + 8715440372, + 8715440371, + 8715440370, + 8715440369, + -1] + + const nodeList1 = [ + -1, + 8715440368, + 8715440367, + 8715440366, + 8715440365, + 8715440364, + 8715440363 + ] + // THe first change is the creation of the new node + T.equals("node", changes[0].type) + T.equals(-1, changes[0].id) + + T.listIdentical(nodeList0, changes[1].changes["nodes"]) + T.listIdentical(nodeList1, changes[2].changes["nodes"]) + + } + ] + ]); + } + private static async split(): Promise { Utils.injectJsonDownloadForTests( @@ -214,7 +498,6 @@ export default class SplitActionSpec extends T { equal(changeDescription[2].changes["coordinates"][0][1], splitPoint[1]) } - private static async SplitHoutkaai(): Promise { Utils.injectJsonDownloadForTests( @@ -1824,288 +2107,4 @@ export default class SplitActionSpec extends T { equal(nodes0[nodes0.length - 1], nodes1[0]) equal(1507524610, nodes1[0]) } - - constructor() { - super("splitaction", [ - ["split 295132739", - () => SplitActionSpec.split().then(_ => console.log("OK"))], - ["split 295132739 on already existing node", - () => SplitActionSpec.splitWithPointReuse().then(_ => console.log("OK"))], - ["split 61435323 on already existing node", - () => SplitActionSpec.SplitHoutkaai().then(_ => console.log("OK"))], - ["Split test line", - async () => { - - Utils.injectJsonDownloadForTests( - "https://www.openstreetmap.org/api/0.6/way/941079939/full", - { - "version": "0.6", - "generator": "CGImap 0.8.5 (957273 spike-08.openstreetmap.org)", - "copyright": "OpenStreetMap and contributors", - "attribution": "http://www.openstreetmap.org/copyright", - "license": "http://opendatacommons.org/licenses/odbl/1-0/", - "elements": [{ - "type": "node", - "id": 6490126559, - "lat": 51.2332219, - "lon": 3.1429387, - "timestamp": "2021-05-09T19:04:53Z", - "version": 2, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"highway": "street_lamp", "power": "pole", "support": "pole"} - }, { - "type": "node", - "id": 8715440363, - "lat": 51.2324011, - "lon": 3.1367377, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"fixme": "continue"} - }, { - "type": "node", - "id": 8715440364, - "lat": 51.232455, - "lon": 3.1368759, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440365, - "lat": 51.2325883, - "lon": 3.1373986, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440366, - "lat": 51.232688, - "lon": 3.1379837, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440367, - "lat": 51.2327354, - "lon": 3.1385649, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440368, - "lat": 51.2327042, - "lon": 3.1392187, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"highway": "street_lamp", "power": "pole", "support": "pole"} - }, { - "type": "node", - "id": 8715440369, - "lat": 51.2323902, - "lon": 3.139353, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440370, - "lat": 51.2321027, - "lon": 3.139601, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"highway": "street_lamp", "power": "pole", "ref": "242", "support": "pole"} - }, { - "type": "node", - "id": 8715440371, - "lat": 51.2322614, - "lon": 3.1401564, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440372, - "lat": 51.232378, - "lon": 3.1407909, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440373, - "lat": 51.2325532, - "lon": 3.1413659, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440374, - "lat": 51.2327611, - "lon": 3.1418877, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "node", - "id": 8715440375, - "lat": 51.2330037, - "lon": 3.142418, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "tags": {"power": "pole"} - }, { - "type": "way", - "id": 941079939, - "timestamp": "2021-05-09T19:04:53Z", - "version": 1, - "changeset": 104407928, - "user": "M!dgard", - "uid": 763799, - "nodes": [6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370, 8715440369, 8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363], - "tags": {"power": "minor_line"} - }] - } - ) - - Utils.injectJsonDownloadForTests( - "https://www.openstreetmap.org/api/0.6/way/941079939/relations", - { - "version": "0.6", - "generator": "CGImap 0.8.5 (2419440 spike-07.openstreetmap.org)", - "copyright": "OpenStreetMap and contributors", - "attribution": "http://www.openstreetmap.org/copyright", - "license": "http://opendatacommons.org/licenses/odbl/1-0/", - "elements": [] - } - ) - - // Split points are lon,lat - const splitPointAroundP3: [number, number] = [3.1392198801040645, 51.232701022376745] - const splitAction = new SplitAction("way/941079939", [splitPointAroundP3], {theme: "test"}) - const changes = await splitAction.Perform(new Changes()) - console.log(changes) - // 8715440368 is the expected point of the split - - /* Nodes are - 6490126559 (part of ways 941079941 and 941079940) - 8715440375 - 8715440374 - 8715440373 - 8715440372 - 8715440371 - 8715440370 - 8715440369 - 8715440368 <--- split here - 8715440367 - 8715440366 - 8715440365 - 8715440364 - 8715440363 - */ - - const nodeList0 = [6490126559, - 8715440375, - 8715440374, - 8715440373, - 8715440372, - 8715440371, - 8715440370, - 8715440369, - 8715440368] - - const nodeList1 = [ - 8715440368, - 8715440367, - 8715440366, - 8715440365, - 8715440364, - 8715440363 - ] - - T.listIdentical(nodeList0, changes[0].changes["nodes"]) - T.listIdentical(nodeList1, changes[1].changes["nodes"]) - } - ], - ["Split minor powerline halfway", async () => { - - - const splitPointHalfway: [number, number] = [3.1392842531204224, 51.23255322710106] - const splitAction = new SplitAction("way/941079939", [splitPointHalfway], {theme: "test"}, 1) - const changes = await splitAction.Perform(new Changes()) - - const nodeList0 = [6490126559, - 8715440375, - 8715440374, - 8715440373, - 8715440372, - 8715440371, - 8715440370, - 8715440369, - -1] - - const nodeList1 = [ - -1, - 8715440368, - 8715440367, - 8715440366, - 8715440365, - 8715440364, - 8715440363 - ] - // THe first change is the creation of the new node - T.equals("node", changes[0].type) - T.equals(-1, changes[0].id) - - T.listIdentical(nodeList0, changes[1].changes["nodes"]) - T.listIdentical(nodeList1, changes[2].changes["nodes"]) - - } - ] - ]); - } } \ No newline at end of file diff --git a/test/Tag.spec.ts b/test/Tag.spec.ts index 790d641b5..0180a1512 100644 --- a/test/Tag.spec.ts +++ b/test/Tag.spec.ts @@ -9,7 +9,6 @@ import {Tag} from "../Logic/Tags/Tag"; import {And} from "../Logic/Tags/And"; import {TagUtils} from "../Logic/Tags/TagUtils"; import TagRenderingConfig from "../Models/ThemeConfig/TagRenderingConfig"; -import {RegexTag} from "../Logic/Tags/RegexTag"; Utils.runningFromConsole = true; diff --git a/test/TestAll.ts b/test/TestAll.ts index c6f64d62e..e6dc4f9e7 100644 --- a/test/TestAll.ts +++ b/test/TestAll.ts @@ -38,7 +38,7 @@ Utils.externalDownloadFunction = async (url) => { console.error("Fetching ", url, "blocked in tests, use Utils.injectJsonDownloadForTests") const data = await ScriptUtils.DownloadJSON(url) console.log("\n\n ----------- \nBLOCKED DATA\n Utils.injectJsonDownloadForTests(\n" + - " ", JSON.stringify(url),", \n", + " ", JSON.stringify(url), ", \n", " ", JSON.stringify(data), "\n )\n------------------\n\n") throw "Detected internet access for URL " + url + ", please inject it with Utils.injectJsonDownloadForTests" } @@ -55,7 +55,7 @@ if (args.length > 0) { } if (testsToRun.length == 0) { - throw "No tests found. Try one of "+allTests.map(t => t.name).join(", ") + throw "No tests found. Try one of " + allTests.map(t => t.name).join(", ") } for (let i = 0; i < testsToRun.length; i++) { diff --git a/test/TestHelper.ts b/test/TestHelper.ts index ab7139160..3e31130f2 100644 --- a/test/TestHelper.ts +++ b/test/TestHelper.ts @@ -8,28 +8,6 @@ export default class T { this._tests = tests; } - /** - * RUns the test, returns the error messages. - * Returns an empty list if successful - * @constructor - */ - public Run(): ({ testsuite: string, name: string, msg: string } []) { - const failures: { testsuite: string, name: string, msg: string } [] = [] - for (const [name, test] of this._tests) { - try { - test(); - } catch (e) { - console.log("ERROR: ", e, e.stack) - failures.push({testsuite: this.name, name: name, msg: "" + e}); - } - } - if (failures.length == 0) { - return undefined - } else { - return failures - } - } - static assertContains(needle: string, actual: string) { if (actual.indexOf(needle) < 0) { throw `The substring ${needle} was not found` @@ -57,10 +35,10 @@ export default class T { } static listIdentical(expected: T[], actual: T[]): void { - if(expected === undefined){ + if (expected === undefined) { throw "ListIdentical failed: expected list is undefined" } - if(actual === undefined){ + if (actual === undefined) { throw "ListIdentical failed: actual list is undefined" } if (expected.length !== actual.length) { @@ -68,8 +46,30 @@ export default class T { } for (let i = 0; i < expected.length; i++) { if (expected[i] !== actual[i]) { - throw `ListIdentical failed at index ${i}: expected ${expected[i]} but got ${actual[i]}` + throw `ListIdentical failed at index ${i}: expected ${expected[i]} but got ${actual[i]}` } } } + + /** + * RUns the test, returns the error messages. + * Returns an empty list if successful + * @constructor + */ + public Run(): ({ testsuite: string, name: string, msg: string } []) { + const failures: { testsuite: string, name: string, msg: string } [] = [] + for (const [name, test] of this._tests) { + try { + test(); + } catch (e) { + console.log("ERROR: ", e, e.stack) + failures.push({testsuite: this.name, name: name, msg: "" + e}); + } + } + if (failures.length == 0) { + return undefined + } else { + return failures + } + } } diff --git a/test/TileFreshnessCalculator.spec.ts b/test/TileFreshnessCalculator.spec.ts index 6305b9a5d..7f5540d15 100644 --- a/test/TileFreshnessCalculator.spec.ts +++ b/test/TileFreshnessCalculator.spec.ts @@ -19,9 +19,9 @@ export default class TileFreshnessCalculatorSpec extends T { equal(42, calc.freshnessFor(20, 266406 * 2, 175534 * 2 + 1).getTime()) equal(undefined, calc.freshnessFor(19, 266406, 175535)) equal(undefined, calc.freshnessFor(18, 266406 / 2, 175534 / 2)) - calc.addTileLoad(Tiles.tile_index(19, 266406, 175534+1), date) - calc.addTileLoad(Tiles.tile_index(19, 266406+1, 175534), date) - calc.addTileLoad(Tiles.tile_index(19, 266406+1, 175534+1), date) + calc.addTileLoad(Tiles.tile_index(19, 266406, 175534 + 1), date) + calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534), date) + calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534 + 1), date) equal(42, calc.freshnessFor(18, 266406 / 2, 175534 / 2).getTime()) } ] diff --git a/test/Utils.spec.ts b/test/Utils.spec.ts index fd630257d..4a592bf3c 100644 --- a/test/Utils.spec.ts +++ b/test/Utils.spec.ts @@ -43,7 +43,7 @@ export default class UtilsSpec extends T { ["Sort object keys", () => { const o = { x: 'x', - abc: {'x':'x','a':'a'}, + abc: {'x': 'x', 'a': 'a'}, def: 'def' } equal('{"x":"x","abc":{"x":"x","a":"a"},"def":"def"}', JSON.stringify(o)) diff --git a/test/Wikidata.spec.test.ts b/test/Wikidata.spec.test.ts index f2a7bb25a..cf636ffc2 100644 --- a/test/Wikidata.spec.test.ts +++ b/test/Wikidata.spec.test.ts @@ -1,17 +1,7266 @@ import Wikidata from "../Logic/Web/Wikidata"; -import * as assert from "assert"; import {equal} from "assert"; import T from "./TestHelper"; import {Utils} from "../Utils"; export default class WikidataSpecTest extends T { + private static Q140 = { + "entities": { + "Q140": { + "pageid": 275, + "ns": 0, + "title": "Q140", + "lastrevid": 1503881580, + "modified": "2021-09-26T19:53:55Z", + "type": "item", + "id": "Q140", + "labels": { + "fr": {"language": "fr", "value": "lion"}, + "it": {"language": "it", "value": "leone"}, + "nb": {"language": "nb", "value": "l\u00f8ve"}, + "ru": {"language": "ru", "value": "\u043b\u0435\u0432"}, + "de": {"language": "de", "value": "L\u00f6we"}, + "es": {"language": "es", "value": "le\u00f3n"}, + "nn": {"language": "nn", "value": "l\u00f8ve"}, + "da": {"language": "da", "value": "l\u00f8ve"}, + "af": {"language": "af", "value": "leeu"}, + "ar": {"language": "ar", "value": "\u0623\u0633\u062f"}, + "bg": {"language": "bg", "value": "\u043b\u044a\u0432"}, + "bn": {"language": "bn", "value": "\u09b8\u09bf\u0982\u09b9"}, + "br": {"language": "br", "value": "leon"}, + "bs": {"language": "bs", "value": "lav"}, + "ca": {"language": "ca", "value": "lle\u00f3"}, + "cs": {"language": "cs", "value": "lev"}, + "el": {"language": "el", "value": "\u03bb\u03b9\u03bf\u03bd\u03c4\u03ac\u03c1\u03b9"}, + "fi": {"language": "fi", "value": "leijona"}, + "ga": {"language": "ga", "value": "leon"}, + "gl": {"language": "gl", "value": "Le\u00f3n"}, + "gu": {"language": "gu", "value": "\u0ab8\u0abf\u0a82\u0ab9"}, + "he": {"language": "he", "value": "\u05d0\u05e8\u05d9\u05d4"}, + "hi": {"language": "hi", "value": "\u0938\u093f\u0902\u0939"}, + "hu": {"language": "hu", "value": "oroszl\u00e1n"}, + "id": {"language": "id", "value": "Singa"}, + "ja": {"language": "ja", "value": "\u30e9\u30a4\u30aa\u30f3"}, + "ko": {"language": "ko", "value": "\uc0ac\uc790"}, + "mk": {"language": "mk", "value": "\u043b\u0430\u0432"}, + "ml": {"language": "ml", "value": "\u0d38\u0d3f\u0d02\u0d39\u0d02"}, + "mr": {"language": "mr", "value": "\u0938\u093f\u0902\u0939"}, + "my": {"language": "my", "value": "\u1001\u103c\u1004\u103a\u1039\u101e\u1031\u1037"}, + "ne": {"language": "ne", "value": "\u0938\u093f\u0902\u0939"}, + "nl": {"language": "nl", "value": "leeuw"}, + "pl": {"language": "pl", "value": "lew afryka\u0144ski"}, + "pt": {"language": "pt", "value": "le\u00e3o"}, + "pt-br": {"language": "pt-br", "value": "le\u00e3o"}, + "scn": {"language": "scn", "value": "liuni"}, + "sq": {"language": "sq", "value": "Luani"}, + "sr": {"language": "sr", "value": "\u043b\u0430\u0432"}, + "sw": {"language": "sw", "value": "simba"}, + "ta": {"language": "ta", "value": "\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0bae\u0bcd"}, + "te": {"language": "te", "value": "\u0c38\u0c3f\u0c02\u0c39\u0c02"}, + "th": {"language": "th", "value": "\u0e2a\u0e34\u0e07\u0e42\u0e15"}, + "tr": {"language": "tr", "value": "aslan"}, + "uk": {"language": "uk", "value": "\u043b\u0435\u0432"}, + "vi": {"language": "vi", "value": "s\u01b0 t\u1eed"}, + "zh": {"language": "zh", "value": "\u7345\u5b50"}, + "sco": {"language": "sco", "value": "lion"}, + "zh-hant": {"language": "zh-hant", "value": "\u7345\u5b50"}, + "fa": {"language": "fa", "value": "\u0634\u06cc\u0631"}, + "zh-hans": {"language": "zh-hans", "value": "\u72ee\u5b50"}, + "ee": {"language": "ee", "value": "Dzata"}, + "ilo": {"language": "ilo", "value": "leon"}, + "ksh": {"language": "ksh", "value": "L\u00f6hv"}, + "zh-hk": {"language": "zh-hk", "value": "\u7345\u5b50"}, + "as": {"language": "as", "value": "\u09b8\u09bf\u0982\u09b9"}, + "zh-cn": {"language": "zh-cn", "value": "\u72ee\u5b50"}, + "zh-mo": {"language": "zh-mo", "value": "\u7345\u5b50"}, + "zh-my": {"language": "zh-my", "value": "\u72ee\u5b50"}, + "zh-sg": {"language": "zh-sg", "value": "\u72ee\u5b50"}, + "zh-tw": {"language": "zh-tw", "value": "\u7345\u5b50"}, + "ast": {"language": "ast", "value": "lle\u00f3n"}, + "sat": {"language": "sat", "value": "\u1c61\u1c5f\u1c74\u1c5f\u1c60\u1c69\u1c5e"}, + "bho": {"language": "bho", "value": "\u0938\u093f\u0902\u0939"}, + "en": {"language": "en", "value": "lion"}, + "ks": {"language": "ks", "value": "\u067e\u0627\u062f\u064e\u0631 \u0633\u0655\u06c1\u06c1"}, + "be-tarask": {"language": "be-tarask", "value": "\u043b\u0435\u045e"}, + "nan": {"language": "nan", "value": "Sai"}, + "la": {"language": "la", "value": "leo"}, + "en-ca": {"language": "en-ca", "value": "Lion"}, + "en-gb": {"language": "en-gb", "value": "lion"}, + "ab": {"language": "ab", "value": "\u0410\u043b\u044b\u043c"}, + "am": {"language": "am", "value": "\u12a0\u1295\u1260\u1233"}, + "an": {"language": "an", "value": "Panthera leo"}, + "ang": {"language": "ang", "value": "L\u0113o"}, + "arc": {"language": "arc", "value": "\u0710\u072a\u071d\u0710"}, + "arz": {"language": "arz", "value": "\u0633\u0628\u0639"}, + "av": {"language": "av", "value": "\u0413\u044a\u0430\u043b\u0431\u0430\u0446\u04c0"}, + "az": {"language": "az", "value": "\u015eir"}, + "ba": {"language": "ba", "value": "\u0410\u0440\u044b\u04ab\u043b\u0430\u043d"}, + "be": {"language": "be", "value": "\u043b\u0435\u045e"}, + "bo": {"language": "bo", "value": "\u0f66\u0f7a\u0f44\u0f0b\u0f42\u0f7a\u0f0d"}, + "bpy": {"language": "bpy", "value": "\u09a8\u0982\u09b8\u09be"}, + "bxr": {"language": "bxr", "value": "\u0410\u0440\u0441\u0430\u043b\u0430\u043d"}, + "ce": {"language": "ce", "value": "\u041b\u043e\u043c"}, + "chr": {"language": "chr", "value": "\u13e2\u13d3\u13e5 \u13a4\u13cd\u13c6\u13b4\u13c2"}, + "chy": {"language": "chy", "value": "P\u00e9hpe'\u00e9nan\u00f3se'hame"}, + "ckb": {"language": "ckb", "value": "\u0634\u06ce\u0631"}, + "co": {"language": "co", "value": "Lionu"}, + "csb": {"language": "csb", "value": "Lew"}, + "cu": {"language": "cu", "value": "\u041b\u044c\u0432\u044a"}, + "cv": {"language": "cv", "value": "\u0410\u0440\u0103\u0441\u043b\u0430\u043d"}, + "cy": {"language": "cy", "value": "Llew"}, + "dsb": {"language": "dsb", "value": "law"}, + "eo": {"language": "eo", "value": "leono"}, + "et": {"language": "et", "value": "l\u00f5vi"}, + "eu": {"language": "eu", "value": "lehoi"}, + "fo": {"language": "fo", "value": "leyvur"}, + "frr": {"language": "frr", "value": "l\u00f6\u00f6w"}, + "gag": {"language": "gag", "value": "aslan"}, + "gd": {"language": "gd", "value": "le\u00f2mhann"}, + "gn": {"language": "gn", "value": "Le\u00f5"}, + "got": {"language": "got", "value": "\ud800\udf3b\ud800\udf39\ud800\udf45\ud800\udf30/Liwa"}, + "ha": {"language": "ha", "value": "Zaki"}, + "hak": {"language": "hak", "value": "S\u1e73\u0302-\u00e9"}, + "haw": {"language": "haw", "value": "Liona"}, + "hif": {"language": "hif", "value": "Ser"}, + "hr": {"language": "hr", "value": "lav"}, + "hsb": {"language": "hsb", "value": "law"}, + "ht": {"language": "ht", "value": "Lyon"}, + "hy": {"language": "hy", "value": "\u0561\u057c\u0575\u0578\u0582\u056e"}, + "ia": {"language": "ia", "value": "Panthera leo"}, + "ig": {"language": "ig", "value": "Od\u00fam"}, + "io": {"language": "io", "value": "leono"}, + "is": {"language": "is", "value": "lj\u00f3n"}, + "jbo": {"language": "jbo", "value": "cinfo"}, + "jv": {"language": "jv", "value": "Singa"}, + "ka": {"language": "ka", "value": "\u10da\u10dd\u10db\u10d8"}, + "kab": {"language": "kab", "value": "Izem"}, + "kbd": {"language": "kbd", "value": "\u0425\u044c\u044d\u0449"}, + "kg": {"language": "kg", "value": "Nkosi"}, + "kk": {"language": "kk", "value": "\u0410\u0440\u044b\u0441\u0442\u0430\u043d"}, + "kn": {"language": "kn", "value": "\u0cb8\u0cbf\u0c82\u0cb9"}, + "ku": {"language": "ku", "value": "\u015e\u00ear"}, + "lb": {"language": "lb", "value": "L\u00e9iw"}, + "lbe": {"language": "lbe", "value": "\u0410\u0441\u043b\u0430\u043d"}, + "lez": {"language": "lez", "value": "\u0410\u0441\u043b\u0430\u043d"}, + "li": {"language": "li", "value": "Liew"}, + "lij": {"language": "lij", "value": "Lion"}, + "ln": {"language": "ln", "value": "Nk\u0254\u0301si"}, + "lt": {"language": "lt", "value": "li\u016btas"}, + "ltg": {"language": "ltg", "value": "\u013bovs"}, + "lv": {"language": "lv", "value": "lauva"}, + "mdf": {"language": "mdf", "value": "\u041e\u0440\u043a\u0441\u043e\u0444\u0442\u0430"}, + "mhr": {"language": "mhr", "value": "\u0410\u0440\u044b\u0441\u043b\u0430\u043d"}, + "mn": {"language": "mn", "value": "\u0410\u0440\u0441\u043b\u0430\u043d"}, + "mrj": {"language": "mrj", "value": "\u0410\u0440\u044b\u0441\u043b\u0430\u043d"}, + "ms": {"language": "ms", "value": "Singa"}, + "mt": {"language": "mt", "value": "iljun"}, + "nah": {"language": "nah", "value": "Cu\u0101miztli"}, + "nrm": {"language": "nrm", "value": "lion"}, + "su": {"language": "su", "value": "Singa"}, + "de-ch": {"language": "de-ch", "value": "L\u00f6we"}, + "ky": {"language": "ky", "value": "\u0410\u0440\u0441\u0442\u0430\u043d"}, + "lmo": {"language": "lmo", "value": "Panthera leo"}, + "ceb": {"language": "ceb", "value": "Panthera leo"}, + "diq": {"language": "diq", "value": "\u015e\u00ear"}, + "new": {"language": "new", "value": "\u0938\u093f\u0902\u0939"}, + "nds": {"language": "nds", "value": "L\u00f6\u00f6w"}, + "ak": {"language": "ak", "value": "Gyata"}, + "cdo": {"language": "cdo", "value": "S\u0103i"}, + "ady": {"language": "ady", "value": "\u0410\u0441\u043b\u044a\u0430\u043d"}, + "azb": {"language": "azb", "value": "\u0622\u0633\u0644\u0627\u0646"}, + "lfn": {"language": "lfn", "value": "Leon"}, + "kbp": {"language": "kbp", "value": "T\u0254\u0254y\u028b\u028b"}, + "gsw": {"language": "gsw", "value": "L\u00f6we"}, + "din": {"language": "din", "value": "K\u00f6r"}, + "inh": {"language": "inh", "value": "\u041b\u043e\u043c"}, + "bm": {"language": "bm", "value": "Waraba"}, + "hyw": {"language": "hyw", "value": "\u0531\u057c\u056b\u0582\u056e"}, + "nds-nl": {"language": "nds-nl", "value": "leeuw"}, + "kw": {"language": "kw", "value": "Lew"}, + "ext": {"language": "ext", "value": "Le\u00f3n"}, + "bcl": {"language": "bcl", "value": "Leon"}, + "mg": {"language": "mg", "value": "Liona"}, + "lld": {"language": "lld", "value": "Lion"}, + "lzh": {"language": "lzh", "value": "\u7345"}, + "ary": {"language": "ary", "value": "\u0633\u0628\u0639"}, + "sv": {"language": "sv", "value": "lejon"}, + "nso": {"language": "nso", "value": "Tau"}, + "nv": { + "language": "nv", + "value": "N\u00e1shd\u00f3\u00edtsoh bitsiij\u012f\u02bc dadit\u0142\u02bcoo\u00edg\u00ed\u00ed" + }, + "oc": {"language": "oc", "value": "panthera leo"}, + "or": {"language": "or", "value": "\u0b38\u0b3f\u0b02\u0b39"}, + "os": {"language": "os", "value": "\u0426\u043e\u043c\u0430\u0445\u044a"}, + "pa": {"language": "pa", "value": "\u0a38\u0a3c\u0a47\u0a30"}, + "pam": {"language": "pam", "value": "Leon"}, + "pcd": {"language": "pcd", "value": "Lion"}, + "pms": {"language": "pms", "value": "Lion"}, + "pnb": {"language": "pnb", "value": "\u0628\u0628\u0631 \u0634\u06cc\u0631"}, + "ps": {"language": "ps", "value": "\u0632\u0645\u0631\u06cc"}, + "qu": {"language": "qu", "value": "Liyun"}, + "rn": {"language": "rn", "value": "Intare"}, + "ro": {"language": "ro", "value": "Leul"}, + "sl": {"language": "sl", "value": "lev"}, + "sn": {"language": "sn", "value": "Shumba"}, + "so": {"language": "so", "value": "Libaax"}, + "ss": {"language": "ss", "value": "Libubesi"}, + "st": {"language": "st", "value": "Tau"}, + "stq": {"language": "stq", "value": "Leeuwe"}, + "sr-ec": {"language": "sr-ec", "value": "\u043b\u0430\u0432"}, + "sr-el": {"language": "sr-el", "value": "lav"}, + "rm": {"language": "rm", "value": "Liun"}, + "sm": {"language": "sm", "value": "Leona"}, + "tcy": {"language": "tcy", "value": "\u0cb8\u0cbf\u0cae\u0ccd\u0cae"}, + "szl": {"language": "szl", "value": "Lew"}, + "rue": {"language": "rue", "value": "\u041b\u0435\u0432"}, + "rw": {"language": "rw", "value": "Intare"}, + "sah": {"language": "sah", "value": "\u0425\u0430\u0445\u0430\u0439"}, + "sh": {"language": "sh", "value": "Lav"}, + "sk": {"language": "sk", "value": "lev p\u00fa\u0161\u0165ov\u00fd"}, + "tg": {"language": "tg", "value": "\u0428\u0435\u0440"}, + "ti": {"language": "ti", "value": "\u12a3\u1295\u1260\u1233"}, + "tl": {"language": "tl", "value": "Leon"}, + "tum": {"language": "tum", "value": "Nkhalamu"}, + "udm": {"language": "udm", "value": "\u0410\u0440\u044b\u0441\u043b\u0430\u043d"}, + "ug": {"language": "ug", "value": "\u0634\u0649\u0631"}, + "ur": {"language": "ur", "value": "\u0628\u0628\u0631"}, + "vec": {"language": "vec", "value": "Leon"}, + "vep": {"language": "vep", "value": "lev"}, + "vls": {"language": "vls", "value": "l\u00eaeuw"}, + "war": {"language": "war", "value": "leon"}, + "wo": {"language": "wo", "value": "gaynde"}, + "xal": {"language": "xal", "value": "\u0410\u0440\u0441\u043b\u04a3"}, + "xmf": {"language": "xmf", "value": "\u10dc\u10ef\u10d8\u10da\u10dd"}, + "yi": {"language": "yi", "value": "\u05dc\u05d9\u05d9\u05d1"}, + "yo": {"language": "yo", "value": "K\u00ecn\u00ec\u00fan"}, + "yue": {"language": "yue", "value": "\u7345\u5b50"}, + "zu": {"language": "zu", "value": "ibhubesi"}, + "tk": {"language": "tk", "value": "\u00ddolbars"}, + "tt": {"language": "tt", "value": "\u0430\u0440\u044b\u0441\u043b\u0430\u043d"}, + "uz": {"language": "uz", "value": "Arslon"}, + "se": {"language": "se", "value": "Ledjon"}, + "si": {"language": "si", "value": "\u0dc3\u0dd2\u0d82\u0dc4\u0dba\u0dcf"}, + "sgs": {"language": "sgs", "value": "Li\u016bts"}, + "vro": {"language": "vro", "value": "L\u00f5vi"}, + "xh": {"language": "xh", "value": "Ingonyama"}, + "sa": {"language": "sa", "value": "\u0938\u093f\u0902\u0939\u0903 \u092a\u0936\u0941\u0903"}, + "za": {"language": "za", "value": "Saeceij"}, + "sd": {"language": "sd", "value": "\u0628\u0628\u0631 \u0634\u064a\u0646\u0647\u0646"}, + "wuu": {"language": "wuu", "value": "\u72ee"}, + "shn": {"language": "shn", "value": "\u101e\u1062\u1004\u103a\u1087\u101e\u102e\u1088"}, + "alt": {"language": "alt", "value": "\u0410\u0440\u0441\u043b\u0430\u043d"}, + "avk": {"language": "avk", "value": "Krapol (Panthera leo)"}, + "dag": {"language": "dag", "value": "Gbu\u0263inli"}, + "shi": {"language": "shi", "value": "Agrzam"}, + "mni": {"language": "mni", "value": "\uabc5\uabe3\uabe1\uabc1\uabe5"} + }, + "descriptions": { + "fr": {"language": "fr", "value": "esp\u00e8ce de mammif\u00e8res carnivores"}, + "it": {"language": "it", "value": "mammifero carnivoro della famiglia dei Felidi"}, + "nb": {"language": "nb", "value": "kattedyr"}, + "ru": { + "language": "ru", + "value": "\u0432\u0438\u0434 \u0445\u0438\u0449\u043d\u044b\u0445 \u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0445" + }, + "de": {"language": "de", "value": "Art der Gattung Eigentliche Gro\u00dfkatzen (Panthera)"}, + "es": {"language": "es", "value": "mam\u00edfero carn\u00edvoro de la familia de los f\u00e9lidos"}, + "en": {"language": "en", "value": "species of big cat"}, + "ko": { + "language": "ko", + "value": "\uace0\uc591\uc774\uacfc\uc5d0 \uc18d\ud558\ub294 \uc721\uc2dd\ub3d9\ubb3c" + }, + "ca": {"language": "ca", "value": "mam\u00edfer carn\u00edvor de la fam\u00edlia dels f\u00e8lids"}, + "fi": {"language": "fi", "value": "suuri kissael\u00e4in"}, + "pt-br": { + "language": "pt-br", + "value": "esp\u00e9cie de mam\u00edfero carn\u00edvoro do g\u00eanero Panthera e da fam\u00edlia Felidae" + }, + "ta": {"language": "ta", "value": "\u0bb5\u0bbf\u0bb2\u0b99\u0bcd\u0b95\u0bc1"}, + "nl": {"language": "nl", "value": "groot roofdier uit de familie der katachtigen"}, + "he": { + "language": "he", + "value": "\u05de\u05d9\u05df \u05d1\u05e1\u05d5\u05d2 \u05e4\u05e0\u05ea\u05e8, \u05d8\u05d5\u05e8\u05e3 \u05d2\u05d3\u05d5\u05dc \u05d1\u05de\u05e9\u05e4\u05d7\u05ea \u05d4\u05d7\u05ea\u05d5\u05dc\u05d9\u05d9\u05dd" + }, + "pt": {"language": "pt", "value": "esp\u00e9cie de felino"}, + "sco": {"language": "sco", "value": "species o big cat"}, + "zh-hans": {"language": "zh-hans", "value": "\u5927\u578b\u732b\u79d1\u52a8\u7269"}, + "uk": { + "language": "uk", + "value": "\u0432\u0438\u0434 \u043a\u043b\u0430\u0441\u0443 \u0441\u0441\u0430\u0432\u0446\u0456\u0432, \u0440\u044f\u0434\u0443 \u0445\u0438\u0436\u0438\u0445, \u0440\u043e\u0434\u0438\u043d\u0438 \u043a\u043e\u0442\u044f\u0447\u0438\u0445" + }, + "hu": { + "language": "hu", + "value": "macskaf\u00e9l\u00e9k csal\u00e1dj\u00e1ba tartoz\u00f3 eml\u0151sfaj" + }, + "bn": { + "language": "bn", + "value": "\u099c\u0999\u09cd\u0997\u09b2\u09c7\u09b0 \u09b0\u09be\u099c\u09be" + }, + "hi": {"language": "hi", "value": "\u091c\u0902\u0917\u0932 \u0915\u093e \u0930\u093e\u091c\u093e"}, + "ilo": {"language": "ilo", "value": "sebbangan ti dakkel a pusa"}, + "ksh": { + "language": "ksh", + "value": "et jr\u00fch\u00dfde Kazedier op der \u00c4hd, der K\u00fcnning vun de Diehre" + }, + "fa": { + "language": "fa", + "value": "\u06af\u0631\u0628\u0647\u200c \u0628\u0632\u0631\u06af \u0628\u0648\u0645\u06cc \u0622\u0641\u0631\u06cc\u0642\u0627 \u0648 \u0622\u0633\u06cc\u0627" + }, + "gl": { + "language": "gl", + "value": "\u00e9 un mam\u00edfero carn\u00edvoro da familia dos f\u00e9lidos e unha das 4 especies do x\u00e9nero Panthera" + }, + "sq": {"language": "sq", "value": "mace e madhe e familjes Felidae"}, + "el": { + "language": "el", + "value": "\u03b5\u03af\u03b4\u03bf\u03c2 \u03c3\u03b1\u03c1\u03ba\u03bf\u03c6\u03ac\u03b3\u03bf \u03b8\u03b7\u03bb\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc" + }, + "scn": {"language": "scn", "value": "specia di mamm\u00ecfiru"}, + "bg": { + "language": "bg", + "value": "\u0432\u0438\u0434 \u0431\u043e\u0437\u0430\u0439\u043d\u0438\u043a" + }, + "ne": { + "language": "ne", + "value": "\u0920\u0942\u0932\u094b \u092c\u093f\u0930\u093e\u0932\u094b\u0915\u094b \u092a\u094d\u0930\u091c\u093e\u0924\u093f" + }, + "pl": {"language": "pl", "value": "gatunek ssaka z rodziny kotowatych"}, + "af": { + "language": "af", + "value": "Soogdier en roofdier van die familie Felidae, een van die \"groot katte\"" + }, + "mk": { + "language": "mk", + "value": "\u0432\u0438\u0434 \u0433\u043e\u043b\u0435\u043c\u0430 \u043c\u0430\u0447\u043a\u0430" + }, + "nn": {"language": "nn", "value": "kattedyr"}, + "zh-hant": {"language": "zh-hant", "value": "\u5927\u578b\u8c93\u79d1\u52d5\u7269"}, + "zh": { + "language": "zh", + "value": "\u4ea7\u81ea\u975e\u6d32\u548c\u4e9a\u6d32\u7684\u5927\u578b\u732b\u79d1\u52a8\u7269" + }, + "zh-cn": {"language": "zh-cn", "value": "\u5927\u578b\u732b\u79d1\u52a8\u7269"}, + "zh-hk": {"language": "zh-hk", "value": "\u5927\u578b\u8c93\u79d1\u52d5\u7269"}, + "zh-mo": {"language": "zh-mo", "value": "\u5927\u578b\u8c93\u79d1\u52d5\u7269"}, + "zh-my": {"language": "zh-my", "value": "\u5927\u578b\u732b\u79d1\u52a8\u7269"}, + "zh-sg": {"language": "zh-sg", "value": "\u5927\u578b\u732b\u79d1\u52a8\u7269"}, + "zh-tw": {"language": "zh-tw", "value": "\u5927\u578b\u8c93\u79d1\u52d5\u7269"}, + "sw": {"language": "sw", "value": "mnyama mla nyama kama paka mkubwa"}, + "th": { + "language": "th", + "value": "\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e31\u0e15\u0e27\u0e4c\u0e1b\u0e48\u0e32\u0e0a\u0e19\u0e34\u0e14\u0e2b\u0e19\u0e36\u0e48\u0e07 \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\u0e02\u0e2d\u0e07\u0e41\u0e21\u0e27\u0e43\u0e2b\u0e0d\u0e48" + }, + "ar": { + "language": "ar", + "value": "\u062d\u064a\u0648\u0627\u0646 \u0645\u0646 \u0627\u0644\u062b\u062f\u064a\u064a\u0627\u062a \u0645\u0646 \u0641\u0635\u064a\u0644\u0629 \u0627\u0644\u0633\u0646\u0648\u0631\u064a\u0627\u062a \u0648\u0623\u062d\u062f \u0627\u0644\u0633\u0646\u0648\u0631\u064a\u0627\u062a \u0627\u0644\u0623\u0631\u0628\u0639\u0629 \u0627\u0644\u0643\u0628\u064a\u0631\u0629 \u0627\u0644\u0645\u0646\u062a\u0645\u064a\u0629 \u0644\u062c\u0646\u0633 \u0627\u0644\u0646\u0645\u0631" + }, + "ml": { + "language": "ml", + "value": "\u0d38\u0d38\u0d4d\u0d24\u0d28\u0d3f\u0d15\u0d33\u0d3f\u0d32\u0d46 \u0d2b\u0d46\u0d32\u0d3f\u0d21\u0d47 \u0d15\u0d41\u0d1f\u0d41\u0d02\u0d2c\u0d24\u0d4d\u0d24\u0d3f\u0d32\u0d46 \u0d2a\u0d3e\u0d28\u0d4d\u0d24\u0d31 \u0d1c\u0d28\u0d41\u0d38\u0d4d\u0d38\u0d3f\u0d7d \u0d09\u0d7e\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f \u0d12\u0d30\u0d41 \u0d35\u0d28\u0d4d\u0d2f\u0d1c\u0d40\u0d35\u0d3f\u0d2f\u0d3e\u0d23\u0d4d \u0d38\u0d3f\u0d02\u0d39\u0d02" + }, + "cs": {"language": "cs", "value": "ko\u010dkovit\u00e1 \u0161elma"}, + "gu": { + "language": "gu", + "value": "\u0aac\u0abf\u0ab2\u0abe\u0aa1\u0ac0 \u0ab5\u0a82\u0ab6\u0aa8\u0ac1\u0a82 \u0ab8\u0ab8\u0acd\u0aa4\u0aa8 \u0aaa\u0acd\u0ab0\u0abe\u0aa3\u0ac0" + }, + "mr": { + "language": "mr", + "value": "\u092e\u093e\u0902\u091c\u0930\u093e\u091a\u0940 \u092e\u094b\u0920\u0940 \u091c\u093e\u0924" + }, + "sr": { + "language": "sr", + "value": "\u0432\u0435\u043b\u0438\u043a\u0438 \u0441\u0438\u0441\u0430\u0440 \u0438\u0437 \u043f\u043e\u0440\u043e\u0434\u0438\u0446\u0435 \u043c\u0430\u0447\u0430\u043a\u0430" + }, + "ast": {"language": "ast", "value": "especie de mam\u00edferu carn\u00edvoru"}, + "te": { + "language": "te", + "value": "\u0c2a\u0c46\u0c26\u0c4d\u0c26 \u0c2a\u0c3f\u0c32\u0c4d\u0c32\u0c3f \u0c1c\u0c24\u0c3f" + }, + "bho": { + "language": "bho", + "value": "\u092c\u093f\u0932\u093e\u0930\u092c\u0902\u0938 \u0915\u0947 \u092c\u0921\u093c\u0939\u0928 \u091c\u093e\u0928\u0935\u0930" + }, + "da": {"language": "da", "value": "en af de fem store katte i sl\u00e6gten Panthera"}, + "vi": {"language": "vi", "value": "M\u1ed9t lo\u00e0i m\u00e8o l\u1edbn thu\u1ed9c chi Panthera"}, + "ja": {"language": "ja", "value": "\u98df\u8089\u76ee\u30cd\u30b3\u79d1\u306e\u52d5\u7269"}, + "ga": {"language": "ga", "value": "speiceas cat"}, + "bs": {"language": "bs", "value": "vrsta velike ma\u010dke"}, + "tr": {"language": "tr", "value": "Afrika ve Asya'ya \u00f6zg\u00fc b\u00fcy\u00fck bir kedi"}, + "as": { + "language": "as", + "value": "\u09b8\u09cd\u09a4\u09a8\u09cd\u09af\u09aa\u09be\u09af\u09bc\u09c0 \u09aa\u09cd\u09f0\u09be\u09a3\u09c0" + }, + "my": { + "language": "my", + "value": "\u1014\u102d\u102f\u1037\u1010\u102d\u102f\u1000\u103a\u101e\u1010\u1039\u1010\u101d\u102b \u1019\u103b\u102d\u102f\u1038\u1005\u102d\u1010\u103a (\u1000\u103c\u1031\u102c\u1004\u103a\u1019\u103b\u102d\u102f\u1038\u101b\u1004\u103a\u1038\u101d\u1004\u103a)" + }, + "id": {"language": "id", "value": "spesies hewan keluarga jenis kucing"}, + "ks": { + "language": "ks", + "value": "\u0628\u062c \u0628\u0631\u0627\u0631\u0646 \u06be\u0646\u062f \u06a9\u0633\u0645 \u06cc\u0633 \u0627\u0634\u06cc\u0627 \u062a\u06c1 \u0627\u0641\u0631\u06cc\u06a9\u0627 \u0645\u0646\u0632 \u0645\u0644\u0627\u0646 \u0686\u06be\u06c1" + }, + "br": {"language": "br", "value": "bronneg kigdebrer"}, + "sat": { + "language": "sat", + "value": "\u1c75\u1c64\u1c68 \u1c68\u1c6e\u1c71 \u1c68\u1c5f\u1c61\u1c5f" + }, + "mni": { + "language": "mni", + "value": "\uabc2\uabdd\uabc2\uabdb\uabc0\uabe4 \uabc1\uabe5\uabcd\uabe4\uabe1 \uabc6\uabe5\uabd5 \uabc1\uabe5 \uabd1\uabc6\uabe7\uabd5\uabc1\uabe4\uabe1\uabd2\uabe4 \uabc3\uabc5\uabe8\uabe1\uabd7 \uabd1\uabc3" + }, + "ro": {"language": "ro", "value": "mamifer carnivor"} + }, + "aliases": { + "es": [{"language": "es", "value": "Panthera leo"}, {"language": "es", "value": "leon"}], + "en": [{"language": "en", "value": "Asiatic Lion"}, { + "language": "en", + "value": "Panthera leo" + }, {"language": "en", "value": "African lion"}, { + "language": "en", + "value": "the lion" + }, {"language": "en", "value": "\ud83e\udd81"}], + "pt-br": [{"language": "pt-br", "value": "Panthera leo"}], + "fr": [{"language": "fr", "value": "lionne"}, {"language": "fr", "value": "lionceau"}], + "zh": [{"language": "zh", "value": "\u9b03\u6bdb"}, { + "language": "zh", + "value": "\u72ee\u5b50" + }, {"language": "zh", "value": "\u7345"}, { + "language": "zh", + "value": "\u525b\u679c\u7345" + }, {"language": "zh", "value": "\u975e\u6d32\u72ee"}], + "de": [{"language": "de", "value": "Panthera leo"}], + "ca": [{"language": "ca", "value": "Panthera leo"}], + "sco": [{"language": "sco", "value": "Panthera leo"}], + "hu": [{"language": "hu", "value": "P. leo"}, {"language": "hu", "value": "Panthera leo"}], + "ilo": [{"language": "ilo", "value": "Panthera leo"}, {"language": "ilo", "value": "Felis leo"}], + "ksh": [{"language": "ksh", "value": "L\u00f6hw"}, { + "language": "ksh", + "value": "L\u00f6hf" + }, {"language": "ksh", "value": "L\u00f6v"}], + "gl": [{"language": "gl", "value": "Panthera leo"}], + "ja": [{"language": "ja", "value": "\u767e\u7363\u306e\u738b"}, { + "language": "ja", + "value": "\u7345\u5b50" + }, {"language": "ja", "value": "\u30b7\u30b7"}], + "sq": [{"language": "sq", "value": "Mbreti i Kafsh\u00ebve"}], + "el": [{"language": "el", "value": "\u03c0\u03b1\u03bd\u03b8\u03ae\u03c1"}], + "pl": [{"language": "pl", "value": "Panthera leo"}, {"language": "pl", "value": "lew"}], + "zh-hk": [{"language": "zh-hk", "value": "\u7345"}], + "af": [{"language": "af", "value": "Panthera leo"}], + "mk": [{"language": "mk", "value": "Panthera leo"}], + "ar": [{"language": "ar", "value": "\u0644\u064a\u062b"}], + "zh-hant": [{"language": "zh-hant", "value": "\u7345"}], + "zh-cn": [{"language": "zh-cn", "value": "\u72ee"}], + "zh-hans": [{"language": "zh-hans", "value": "\u72ee"}], + "zh-mo": [{"language": "zh-mo", "value": "\u7345"}], + "zh-my": [{"language": "zh-my", "value": "\u72ee"}], + "zh-sg": [{"language": "zh-sg", "value": "\u72ee"}], + "zh-tw": [{"language": "zh-tw", "value": "\u7345"}], + "gu": [{"language": "gu", "value": "\u0ab5\u0aa8\u0ab0\u0abe\u0a9c"}, { + "language": "gu", + "value": "\u0ab8\u0abe\u0ab5\u0a9c" + }, {"language": "gu", "value": "\u0a95\u0ac7\u0ab8\u0ab0\u0ac0"}], + "ast": [{"language": "ast", "value": "Panthera leo"}, { + "language": "ast", + "value": "lle\u00f3n africanu" + }], + "hi": [{ + "language": "hi", + "value": "\u092a\u0947\u0902\u0925\u0947\u0930\u093e \u0932\u093f\u092f\u094b" + }], + "te": [{ + "language": "te", + "value": "\u0c2a\u0c3e\u0c02\u0c25\u0c47\u0c30\u0c3e \u0c32\u0c3f\u0c2f\u0c4b" + }], + "nl": [{"language": "nl", "value": "Panthera leo"}], + "bho": [{ + "language": "bho", + "value": "\u092a\u0948\u0928\u094d\u0925\u0947\u0930\u093e \u0932\u093f\u092f\u094b" + }, { + "language": "bho", + "value": "\u092a\u0948\u0902\u0925\u0947\u0930\u093e \u0932\u093f\u092f\u094b" + }], + "ru": [{ + "language": "ru", + "value": "\u0430\u0437\u0438\u0430\u0442\u0441\u043a\u0438\u0439 \u043b\u0435\u0432" + }, { + "language": "ru", + "value": "\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043e\u0448\u043a\u0430" + }, { + "language": "ru", + "value": "\u0446\u0430\u0440\u044c \u0437\u0432\u0435\u0440\u0435\u0439" + }, { + "language": "ru", + "value": "\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u043b\u0435\u0432" + }], + "ga": [{"language": "ga", "value": "Panthera leo"}], + "bg": [{"language": "bg", "value": "Panthera leo"}, { + "language": "bg", + "value": "\u043b\u044a\u0432\u0438\u0446\u0430" + }], + "sat": [{"language": "sat", "value": "\u1c60\u1c69\u1c5e"}], + "nan": [{"language": "nan", "value": "Panthera leo"}], + "la": [{"language": "la", "value": "Panthera leo"}], + "nds-nl": [{"language": "nds-nl", "value": "leywe"}] + }, + "claims": { + "P225": [{ + "mainsnak": { + "snaktype": "value", + "property": "P225", + "hash": "e2be083a19a0c5e1a3f8341be88c5ec0e347580f", + "datavalue": {"value": "Panthera leo", "type": "string"}, + "datatype": "string" + }, + "type": "statement", + "qualifiers": { + "P405": [{ + "snaktype": "value", + "property": "P405", + "hash": "a817d3670bc2f9a3586b6377a65d54fff72ef888", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 1043, "id": "Q1043"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P574": [{ + "snaktype": "value", + "property": "P574", + "hash": "506af9838b7d37b45786395b95170263f1951a31", + "datavalue": { + "value": { + "time": "+1758-01-01T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 9, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }], + "P31": [{ + "snaktype": "value", + "property": "P31", + "hash": "60a983bb1006c765614eb370c3854e64ec50599f", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 14594740, + "id": "Q14594740" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P405", "P574", "P31"], + "id": "q140$8CCA0B07-C81F-4456-ABAA-A7348C86C9B4", + "rank": "normal", + "references": [{ + "hash": "89e96b63b05055cc80c950cf5fea109c7d453658", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "c26dbcef1202a7d198982ed24f6ea69b704f95fe", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 82575, "id": "Q82575"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P577": [{ + "snaktype": "value", + "property": "P577", + "hash": "539fa499b6ea982e64006270bb26f52a57a8e32b", + "datavalue": { + "value": { + "time": "+1996-06-13T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "96dfb8481e184edb40553947f8fe08ce080f1553", + "datavalue": { + "value": { + "time": "+2013-09-19T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P577", "P813"] + }, { + "hash": "f2fcc71ba228fd0db2b328c938e601507006fa46", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "603c636b2210e4a74b7d40c9e969b7e503bbe252", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1538807, + "id": "Q1538807" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "6892402e621d2b47092e15284d64cdbb395e71f7", + "datavalue": { + "value": { + "time": "+2015-09-19T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P105": [{ + "mainsnak": { + "snaktype": "value", + "property": "P105", + "hash": "aebf3611b23ed90c7c0fc80f6cd1cb7be110ea59", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 7432, "id": "Q7432"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "id": "q140$CD2903E5-743A-4B4F-AE9E-9C0C83426B11", + "rank": "normal", + "references": [{ + "hash": "89e96b63b05055cc80c950cf5fea109c7d453658", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "c26dbcef1202a7d198982ed24f6ea69b704f95fe", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 82575, "id": "Q82575"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P577": [{ + "snaktype": "value", + "property": "P577", + "hash": "539fa499b6ea982e64006270bb26f52a57a8e32b", + "datavalue": { + "value": { + "time": "+1996-06-13T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "96dfb8481e184edb40553947f8fe08ce080f1553", + "datavalue": { + "value": { + "time": "+2013-09-19T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P577", "P813"] + }, { + "hash": "f2fcc71ba228fd0db2b328c938e601507006fa46", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "603c636b2210e4a74b7d40c9e969b7e503bbe252", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1538807, + "id": "Q1538807" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "6892402e621d2b47092e15284d64cdbb395e71f7", + "datavalue": { + "value": { + "time": "+2015-09-19T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P171": [{ + "mainsnak": { + "snaktype": "value", + "property": "P171", + "hash": "cbf0d3943e6cbac8afbec1ff11525c84ee04e442", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 127960, "id": "Q127960"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "id": "q140$C1CA40D8-39C3-4DB4-B763-207A22796D85", + "rank": "normal", + "references": [{ + "hash": "89e96b63b05055cc80c950cf5fea109c7d453658", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "c26dbcef1202a7d198982ed24f6ea69b704f95fe", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 82575, "id": "Q82575"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P577": [{ + "snaktype": "value", + "property": "P577", + "hash": "539fa499b6ea982e64006270bb26f52a57a8e32b", + "datavalue": { + "value": { + "time": "+1996-06-13T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "96dfb8481e184edb40553947f8fe08ce080f1553", + "datavalue": { + "value": { + "time": "+2013-09-19T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P577", "P813"] + }, { + "hash": "f2fcc71ba228fd0db2b328c938e601507006fa46", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "603c636b2210e4a74b7d40c9e969b7e503bbe252", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1538807, + "id": "Q1538807" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "6892402e621d2b47092e15284d64cdbb395e71f7", + "datavalue": { + "value": { + "time": "+2015-09-19T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P1403": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1403", + "hash": "baa11a4c668601014a48e2998ab76aa1ea7a5b99", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 15294488, "id": "Q15294488"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "Q140$816d2b99-4aa5-5eb9-784b-34e2704d2927", "rank": "normal" + }], + "P141": [{ + "mainsnak": { + "snaktype": "value", + "property": "P141", + "hash": "80026ea5b2066a2538fee5c0897b459bb6770689", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 278113, "id": "Q278113"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "id": "q140$B12A2FD5-692F-4D9A-8FC7-144AA45A16F8", + "rank": "normal", + "references": [{ + "hash": "355df53bb7c6d100219cd2a331afd51719337d88", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "eb153b77c6029ffa1ca09f9128b8e47fe58fce5a", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 56011232, + "id": "Q56011232" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P627": [{ + "snaktype": "value", + "property": "P627", + "hash": "3642ac96e05180279c47a035c129d3af38d85027", + "datavalue": {"value": "15951", "type": "string"}, + "datatype": "string" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "76bc602d4f902d015c358223e7c0917bd65095e0", + "datavalue": { + "value": { + "time": "+2018-08-10T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P627", "P813"] + }] + }], + "P181": [{ + "mainsnak": { + "snaktype": "value", + "property": "P181", + "hash": "8467347aac1f01e518c1b94d5bb68c65f9efe84a", + "datavalue": {"value": "Lion distribution.png", "type": "string"}, + "datatype": "commonsMedia" + }, "type": "statement", "id": "q140$12F383DD-D831-4AE9-A0ED-98C27A8C5BA7", "rank": "normal" + }], + "P830": [{ + "mainsnak": { + "snaktype": "value", + "property": "P830", + "hash": "8cafbfe99d80fcfabbd236d4cc01d33cc8a8b41d", + "datavalue": {"value": "328672", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$486d7ab8-4af8-b6e1-85bb-e0749b02c2d9", + "rank": "normal", + "references": [{ + "hash": "7e71b7ede7931e7e2ee9ce54e832816fe948b402", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "6e81987ab11fb1740bd862639411d0700be3b22c", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 82486, "id": "Q82486"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "7c1a33cf9a0bf6cdd57b66f089065ba44b6a8953", + "datavalue": { + "value": { + "time": "+2014-10-30T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P815": [{ + "mainsnak": { + "snaktype": "value", + "property": "P815", + "hash": "27f6bd8fb4504eb79b92e6b63679b83af07d5fed", + "datavalue": {"value": "183803", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$71177A4F-4308-463D-B370-8B354EC2D2C3", + "rank": "normal", + "references": [{ + "hash": "ff0dd9eabf88b0dcefa74b223d065dd644e42050", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "c26dbcef1202a7d198982ed24f6ea69b704f95fe", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 82575, "id": "Q82575"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "6b8fcfa6afb3911fecec93ae1dff2b6b6cde5659", + "datavalue": { + "value": { + "time": "+2013-12-07T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P685": [{ + "mainsnak": { + "snaktype": "value", + "property": "P685", + "hash": "c863e255c042b2b9b6a788ebd6e24f38a46dfa88", + "datavalue": {"value": "9689", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$A9F4ABE4-D079-4868-BC18-F685479BB244", + "rank": "normal", + "references": [{ + "hash": "5667273d9f2899620fec2016bb2afd29aa7080ce", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "1851bc60ddfbcf6f76bd45aa7124fc0d5857a379", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 13711410, + "id": "Q13711410" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "6b8fcfa6afb3911fecec93ae1dff2b6b6cde5659", + "datavalue": { + "value": { + "time": "+2013-12-07T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P959": [{ + "mainsnak": { + "snaktype": "value", + "property": "P959", + "hash": "55cab2a9d2af860a89a8d0e2eaefedb64202a3d8", + "datavalue": {"value": "14000228", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$A967D17D-485D-434F-BBF2-E6226E63BA42", + "rank": "normal", + "references": [{ + "hash": "3e398e6df20323ce88e644e5a1e4ec0bc77a5f41", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "603c636b2210e4a74b7d40c9e969b7e503bbe252", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1538807, + "id": "Q1538807" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "d2bace4e146678a5e5f761e9a441b53b95dc2e87", + "datavalue": { + "value": { + "time": "+2014-01-10T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P842": [{ + "mainsnak": { + "snaktype": "value", + "property": "P842", + "hash": "991987fc3fa4d1cfd3a601dcfc9dd1f802255de7", + "datavalue": {"value": "49734", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$3FF45860-DBC3-4629-AAF8-F2899B6C6876", + "rank": "normal", + "references": [{ + "hash": "1111bfc1dc63ee739fb9dd3f5534346c7fd478f0", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "00fe2206a3342fa25c0cfe1d08783c49a1986f12", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 796451, + "id": "Q796451" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "14c5b75e8d3f4c43cb5b570380dd98e421bb9751", + "datavalue": { + "value": { + "time": "+2014-01-30T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P227": [{ + "mainsnak": { + "snaktype": "value", + "property": "P227", + "hash": "3343c5fd594f8f0264332d87ce95e76ffeaebffd", + "datavalue": {"value": "4140572-9", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$0059e08d-4308-8401-58e8-2cb683c03837", "rank": "normal" + }], + "P349": [{ + "mainsnak": { + "snaktype": "value", + "property": "P349", + "hash": "08812c4ef85f397bf00b015d1baf3b00d81cb9bf", + "datavalue": {"value": "00616831", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$B7933772-D27D-49D4-B1BB-AA36ADCA81B0", "rank": "normal" + }], + "P1014": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1014", + "hash": "3d27204feb184f21c042777dc9674150cb07ee92", + "datavalue": {"value": "300310388", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$8e3c9dc3-442e-2e61-8617-f4a41b5be668", "rank": "normal" + }], + "P646": [{ + "mainsnak": { + "snaktype": "value", + "property": "P646", + "hash": "0c053bce57fe07b05c300a09b322d9f89236884b", + "datavalue": {"value": "/m/096mb", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$D94D8A4F-3414-4BE0-82C1-306BD136C017", + "rank": "normal", + "references": [{ + "hash": "2b00cb481cddcac7623114367489b5c194901c4a", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "a94b740202b097dd33355e0e6c00e54b9395e5e0", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 15241312, + "id": "Q15241312" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P577": [{ + "snaktype": "value", + "property": "P577", + "hash": "fde79ecb015112d2f29229ccc1ec514ed3e71fa2", + "datavalue": { + "value": { + "time": "+2013-10-28T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P577"] + }] + }], + "P1036": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1036", + "hash": "02435ba66ab8e5fb26652ae1a84695be24b3e22a", + "datavalue": {"value": "599.757", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$e75ed89a-408d-9bc1-8d99-41663921debd", "rank": "normal" + }], + "P1245": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1245", + "hash": "f3da4ca7d35fc3e02a9ea1662688d8f6c4658df0", + "datavalue": {"value": "5961", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$010e79a0-475e-fcf4-a554-375b64943783", "rank": "normal" + }], + "P910": [{ + "mainsnak": { + "snaktype": "value", + "property": "P910", + "hash": "056367b51cd51edd6c2840134fde01cf40469172", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 6987175, "id": "Q6987175"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "Q140$BC4DE2D4-BF45-49AF-A9A6-C0A976F60825", "rank": "normal" + }], + "P373": [{ + "mainsnak": { + "snaktype": "value", + "property": "P373", + "hash": "76c006bc5e2975bcda2e7d60ddcbaaa8c84f69e5", + "datavalue": {"value": "Panthera leo", "type": "string"}, + "datatype": "string" + }, "type": "statement", "id": "q140$939BA4B2-28D3-4C74-B143-A0EA6F423B43", "rank": "normal" + }], + "P846": [{ + "mainsnak": { + "snaktype": "value", + "property": "P846", + "hash": "d0428680cd2b36efde61dc69ccc5a8ff7a735cb5", + "datavalue": {"value": "5219404", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$4CE8E6D4-E9A1-46F1-8EEF-B469E8485F9E", + "rank": "normal", + "references": [{ + "hash": "5b8345ffc93a361b71f5d201a97f587e5e57efe5", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "dbb8dd1efbe0158a5227213bd628eeac27a1da65", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1531570, + "id": "Q1531570" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "3eb17b10ce02d44f47540a6fbdbb3cbb7e77d5f5", + "datavalue": { + "value": { + "time": "+2015-05-15T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P487": [{ + "mainsnak": { + "snaktype": "value", + "property": "P487", + "hash": "5f93415dd33bfde6a546fdd65e5a7013e012c336", + "datavalue": {"value": "\ud83e\udd81", "type": "string"}, + "datatype": "string" + }, "type": "statement", "id": "Q140$da5262fc-4ac5-390b-b424-4f296b2d711d", "rank": "normal" + }], + "P2040": [{ + "mainsnak": { + "snaktype": "value", + "property": "P2040", + "hash": "5b13a3fa0fde6ba09d8e417738c05268bd065e32", + "datavalue": {"value": "6353", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$E97A1A2E-D146-4C62-AE92-5AF5F7E146EF", + "rank": "normal", + "references": [{ + "hash": "348b5187938d682071c94e22f1b30659af715dc7", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "213dc0d84ed983cbb28466ebb0c45bf8b0730ea2", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 20962955, + "id": "Q20962955" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "3d2c713dec9143721ae196af88fee0fde5ae20f2", + "datavalue": { + "value": { + "time": "+2015-09-10T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P935": [{ + "mainsnak": { + "snaktype": "value", + "property": "P935", + "hash": "c3518a9944958337bcce384587f3abc3de6ddf34", + "datavalue": {"value": "Panthera leo", "type": "string"}, + "datatype": "string" + }, "type": "statement", "id": "Q140$F7AAEE1F-4D18-4538-99F0-1A2B5AD7269F", "rank": "normal" + }], + "P1417": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1417", + "hash": "492d3483075b6915990940a4392f5ec035cbe05e", + "datavalue": {"value": "animal/lion", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$FE89C38F-6C79-4F06-8C15-81DCAC8D745F", "rank": "normal" + }], + "P244": [{ + "mainsnak": { + "snaktype": "value", + "property": "P244", + "hash": "2e41780263804dd45d7deaf7955a2d1d221f6096", + "datavalue": {"value": "sh85077276", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$634d86d1-45b1-920d-e9ef-78d5f4023288", + "rank": "normal", + "references": [{ + "hash": "88d810dd1ff791aeb0b5779876b0c9f19acb59b6", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "c120f07504c77593a9d734f50361ea829f601960", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 620946, + "id": "Q620946" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "0980c2f2b51e6b2d4c1dd9a77b9fb95dc282bc79", + "datavalue": { + "value": { + "time": "+2016-06-01T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P1843": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "3b1cfb68cc46255ceba7ff7893ac1cabbb4ddd92", + "datavalue": {"value": {"text": "Lion", "language": "en"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "qualifiers": { + "P7018": [{ + "snaktype": "value", + "property": "P7018", + "hash": "40a60b39201df345ffbf5aa724269d5fd61ae028", + "datavalue": { + "value": {"entity-type": "sense", "id": "L17815-S1"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-sense" + }] + }, + "qualifiers-order": ["P7018"], + "id": "Q140$6E257597-55C7-4AF3-B3D6-0F2204FAD35C", + "rank": "normal", + "references": [{ + "hash": "eada84c58a38325085267509899037535799e978", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 32059, "id": "Q32059"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "3e51c3c32949f8a45f2c3331f55ea6ae68ecf3fe", + "datavalue": { + "value": { + "time": "+2016-10-21T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }, { + "hash": "cdc389b112247cb50b855fb86e98b7a7892e96f0", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "e17975e5c866df46673c91b2287a82cf23d14f5a", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 27310853, + "id": "Q27310853" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P304": [{ + "snaktype": "value", + "property": "P304", + "hash": "ff7ad3502ff7a4a9b0feeb4248a7bed9767a1ec6", + "datavalue": {"value": "166", "type": "string"}, + "datatype": "string" + }] + }, + "snaks-order": ["P248", "P304"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "38a9c57a5c62a707adc86decd2bd00be89eab6f3", + "datavalue": {"value": {"text": "Leeu", "language": "af"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$5E731B05-20D6-491B-97E7-94D90CBB70F0", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "a4455f1ef49d7d17896563760a420031c41d65c1", + "datavalue": {"value": {"text": "Gyata", "language": "ak"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$721B4D81-D948-4002-A13E-0B2567626FD6", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "b955c9239d6ced23c0db577e20219b0417a2dd9b", + "datavalue": {"value": {"text": "Ley\u00f3n", "language": "an"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$E2B52F3D-B12D-48B5-86EA-6A4DCBC091D3", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "e18a8ecb17321c203fcf8f402e82558ce0599b39", + "datavalue": {"value": {"text": "Li\u00f3n", "language": "an"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$339ADC90-41C6-4CDB-B6C3-DA9F952FCC15", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "297bf417fff1510d19b27c08fa9f34e2653b9510", + "datavalue": { + "value": {"text": "\u0623\u064e\u0633\u064e\u062f\u064c", "language": "ar"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$F1849268-0E70-4EC0-A630-EC0D2DCBB298", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "5577ef6920a3ade2365d878740d1d097fcdae399", + "datavalue": {"value": {"text": "L\u00e9we", "language": "bar"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$BDD65B40-7ECB-4725-B33F-417A83AF5102", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "de8fa35eca4e61dfb8fe2df360e734fb1cd37092", + "datavalue": {"value": {"text": "L\u00f6we", "language": "bar"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$486EE5F1-9AB5-4789-98AC-E435D81E784F", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "246c27f44da8bedd2e3313de393fe648b2b40ea9", + "datavalue": { + "value": {"text": "\u041b\u0435\u045e (Lew)", "language": "be"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$47AA6BD4-0B09-4B20-9092-0AEAD8056157", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "64c42db53ef288871161f0a656808f06daae817d", + "datavalue": { + "value": {"text": "\u041b\u044a\u0432 (L\u0103v)", "language": "bg"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$ADF0B08A-9626-4821-8118-0A875CBE5FB9", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "6041e2730af3095f4f0cbf331382e22b596d2305", + "datavalue": { + "value": {"text": "\u09b8\u09bf\u0982\u09b9", "language": "bn"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$8DF5BDCD-B470-46C3-A44A-7375B8A5DCDE", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "8499f437dc8678b0c4b740b40cab41031fce874d", + "datavalue": {"value": {"text": "Lle\u00f3", "language": "ca"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$F55C3E63-DB2C-4F6D-B10B-4C1BB70C06A0", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "b973abb618a6f17b8a9547b852e5817b5c4da00b", + "datavalue": { + "value": {"text": "\u041b\u043e\u044c\u043c", "language": "ce"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$F32B0BFA-3B85-4A26-A888-78FD8F09F943", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "62f53c7229efad1620a5cce4dc5a535d88c4989f", + "datavalue": {"value": {"text": "Lev", "language": "cs"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$1630DAB7-C4D0-4268-A598-8BBB9480221E", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "0df7e23666c947b42aea5572a9f5a987229718d3", + "datavalue": {"value": {"text": "Llew", "language": "cy"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$F33991E8-A532-47F5-B135-A13761DB2E95", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "14942ad0830a0eb7b06704234eea637f99b53a24", + "datavalue": {"value": {"text": "L\u00f8ve", "language": "da"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$478F0603-640A-44BE-9453-700FDD32100F", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "8af089542ef6207b918f656bcf9a96e745970915", + "datavalue": {"value": {"text": "L\u00f6we", "language": "de"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "qualifiers": { + "P7018": [{ + "snaktype": "value", + "property": "P7018", + "hash": "2da239e18a0208847a72fbeab011c8c2fb3b4d99", + "datavalue": { + "value": {"entity-type": "sense", "id": "L41680-S1"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-sense" + }] + }, + "qualifiers-order": ["P7018"], + "id": "Q140$11F5F498-3688-4F4B-B2FA-7121BE5AA701", + "rank": "normal", + "references": [{ + "hash": "cdc389b112247cb50b855fb86e98b7a7892e96f0", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "e17975e5c866df46673c91b2287a82cf23d14f5a", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 27310853, + "id": "Q27310853" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P304": [{ + "snaktype": "value", + "property": "P304", + "hash": "ff7ad3502ff7a4a9b0feeb4248a7bed9767a1ec6", + "datavalue": {"value": "166", "type": "string"}, + "datatype": "string" + }] + }, + "snaks-order": ["P248", "P304"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "c0c8b50001810c1ec643b88479df82ea85c819a2", + "datavalue": {"value": {"text": "Dzata", "language": "ee"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$8F6EC307-A293-4AFC-8154-E3FF187C0D7D", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "57a3384eeb13d1bcffeb3cf0efd0f3e3f511b35d", + "datavalue": { + "value": { + "text": "\u039b\u03b9\u03bf\u03bd\u03c4\u03ac\u03c1\u03b9 (Liond\u00e1ri)", + "language": "el" + }, "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$560B3341-3E06-4D09-8869-FC47C841D14C", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "ee7109a46f8259ae6f52791cfe599b7c4c272831", + "datavalue": {"value": {"text": "Leono", "language": "eo"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$67F2B7A6-1C81-407A-AA61-A1BFF148EC69", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "3b8f4f61c3a18792bfaff5d332f03c80932dce05", + "datavalue": {"value": {"text": "Le\u00f3n", "language": "es"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$DB29EAF7-4405-4030-8056-ED17089B3805", + "rank": "normal", + "references": [{ + "hash": "d3a8e536300044db1d823eae6891b2c7baa49f66", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 32059, "id": "Q32059"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "620d2e76d21bb1d326fc360db5bece2070115240", + "datavalue": { + "value": { + "time": "+2016-10-19T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "41fffb83f35736829d60f782bdce68463f0ab47c", + "datavalue": {"value": {"text": "L\u00f5vi", "language": "et"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$19B76CC4-AA11-443B-BC76-DB2D0DA5B9CB", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "b96549e5ae538fb7e0b48089508333b31aec8fe7", + "datavalue": {"value": {"text": "Lehoi", "language": "eu"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$88F712C1-4EEF-4E42-8C61-84E55CF2DCE0", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "b343c833d8de3dfd5c8b31336afd137380ab42dc", + "datavalue": { + "value": {"text": "\u0634\u06cc\u0631 (\u0160ayr)", "language": "fa"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$B72DB989-EF39-42F5-8FA8-5FC669079DB7", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "51aaf9a4a7c5e77ba931a5280d1fec984c91963b", + "datavalue": {"value": {"text": "Leijona", "language": "fi"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$6861CDE9-707D-43AD-B352-3BCD7B9D4267", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "038249fb112acc26895af45fab412395f999ae11", + "datavalue": {"value": {"text": "Leyva", "language": "fo"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$A044100A-C49F-4AA6-8861-F0300F28126E", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "92ec25b64605d026b07b0cda6e623fbbf2f3dfb4", + "datavalue": {"value": {"text": "Lion", "language": "fr"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$122623FD-3915-49E9-8890-0B6883317507", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "59be091f7839e7a6061c6d1690ed77f3b21b9ff4", + "datavalue": { + "value": {"text": "L\u00f6\u00f6w", "language": "frr"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$76B87E52-A02C-4E99-A4B3-D6105B642521", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "126b0f2c5ed11124233dfefff8bd132a1fe1218a", + "datavalue": { + "value": {"text": "Le\u00f3n-leoa", "language": "gl"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$A4864784-EED3-4898-83FE-A2FCC0C3982E", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "49e0d3858de566edce1a28b0e96f42b2d0df718f", + "datavalue": { + "value": {"text": "\u0ab8\u0abf\u0a82\u0ab9", "language": "gu"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$4EE122CE-7671-480E-86A4-4A4DDABC04BA", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "dff0c422f7403c50d28dd51ca2989d03108b7584", + "datavalue": {"value": {"text": "Liona", "language": "haw"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$FBB6AC65-A224-4C29-8024-079C0687E9FB", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "c174addd56c0f42f6ec3e87c72fb9651e4923a00", + "datavalue": { + "value": {"text": "\u05d0\u05e8\u05d9\u05d4", "language": "he"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$B72D9BDB-A2CC-471D-AF20-8F7FB677D533", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "c38a63a06b569fc8fee3e98c4cf8d5501990811e", + "datavalue": { + "value": {"text": "si\u1e45ha)", "language": "hi"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$9AA9171C-E912-41F2-AB26-643AA538E644", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "94f073519a5b64c48398c73a5f0f135a4f0f4306", + "datavalue": { + "value": {"text": "\u0936\u0947\u0930", "language": "hi"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$0714B97B-03E0-4ACC-80A0-6A17874DDBA8", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "1fbda5b1494db298c698fc28ed0fe68b1c137b2e", + "datavalue": { + "value": {"text": "\u0938\u093f\u0902\u0939", "language": "hi"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$3CE22F68-038C-4A94-9A1F-96B82760DEB9", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "fac41ebd8d1da777acd93720267c7a70016156e4", + "datavalue": {"value": {"text": "Lav", "language": "hr"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$C5351C11-E287-4D3B-A9B2-56716F0E69E5", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "71e0bda709fb17d58f4bd8e12fff7f937a61673c", + "datavalue": { + "value": {"text": "Oroszl\u00e1n", "language": "hu"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$AD06E7D2-3B1F-4D14-B2E9-DD2513BE8B4B", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "05e86680d70a2c0adf9a6e6eb51bbdf8c6ae44bc", + "datavalue": { + "value": {"text": "\u0531\u057c\u0575\u0578\u0582\u056e", "language": "hy"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$3E02B802-8F7B-4C48-A3F9-FBBFDB0D8DB3", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "979f25bee6af37e19471530c6344a0d22a0d594c", + "datavalue": {"value": {"text": "Lj\u00f3n", "language": "is"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$59788C31-A354-4229-AD89-361CB6076EF7", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "789e5f5a7ec6003076bc7fd2996faf8ca8468719", + "datavalue": {"value": {"text": "Leone", "language": "it"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$4901AE59-7749-43D1-BC65-DEEC0DFEB72F", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "4a5bdf9bb40f1cab9a92b7dba1d1d74a8440c7ed", + "datavalue": { + "value": {"text": "\u30e9\u30a4\u30aa\u30f3 (Raion)", "language": "ja"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$4CF2E0D9-5CF3-46A3-A197-938E94270CE2", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "ebba3893211c78dad7ae74a51448e8c7f6e73309", + "datavalue": { + "value": {"text": "\uc0ac\uc790 (saja)", "language": "ko"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$64B6CECD-5FFE-4612-819F-CAB2E726B228", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "ed1fe1812cee80102262dd3b7e170759fbeab86a", + "datavalue": { + "value": {"text": "\u0410\u0440\u0441\u0442\u0430\u043d", "language": "ky"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$3D9597D3-E35F-4EFF-9CAF-E013B45F283F", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "a0868f5f83bb886a408aa9b25b95dbfc59bde4dc", + "datavalue": {"value": {"text": "Leo", "language": "la"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$4D650414-6AFE-430F-892F-B7774AC7AF70", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "054af77b10151632045612df9b96313dfcc3550c", + "datavalue": {"value": {"text": "Liew", "language": "li"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$D5B466A8-AEFB-4083-BF3E-194C5CE45CD3", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "9193a46891a365ee1b0a17dd6e2591babc642811", + "datavalue": {"value": {"text": "Nkosi", "language": "ln"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$55F213DF-5AAB-4490-83CB-B9E5D2B894CD", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "c5952ec6b650f1c66f37194eb88c2889560740b2", + "datavalue": { + "value": {"text": "Li\u016btas", "language": "lt"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$8551F80C-A244-4351-A98A-8A9F37A736A2", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "e3541d0807682631f8fff2d224b2cb1b3d2a4c11", + "datavalue": {"value": {"text": "Lauva", "language": "lv"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$488A2D59-533A-4C02-8AC3-01241FE63D94", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "22e20da399aff10787267691b5211b6fc0bddf38", + "datavalue": { + "value": {"text": "\u041b\u0430\u0432 (lav)", "language": "mk"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$9E2377E9-1D37-4BBC-A409-1C40CDD99A86", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "fe4c9bc3b3cce21a779f72fae808f8ed213d226b", + "datavalue": { + "value": { + "text": "\u0d38\u0d3f\u0d02\u0d39\u0d02 (simham)", + "language": "ml" + }, "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$8BEA9E08-4687-434A-9FB4-4B23B2C40838", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "85aa09066722caf2181681a24575ad89ca76210e", + "datavalue": { + "value": {"text": "si\u1e45ha)", "language": "mr"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$46B51EF5-7ADB-4637-B744-89AD1E3B5D19", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "441f3832d6e3c4439c6986075096c7021a0939dd", + "datavalue": { + "value": {"text": "\u0936\u0947\u0930 (\u015a\u0113ra)", "language": "mr"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$12BBC825-32E3-4026-A5E5-0330DEB21D79", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "89b35a359c3891dce190d778e9ae0a9634cfd71f", + "datavalue": { + "value": {"text": "\u0938\u093f\u0902\u0939 (singh", "language": "mr"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$006148E2-658F-4C74-9C3E-26488B7AEB8D", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "5723b45deee51dfe5a2555f2db17bad14acb298a", + "datavalue": {"value": {"text": "Iljun", "language": "mt"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$13D221F5-9763-4550-9CC3-9A697286B785", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "d1ce3ab04f25af38248152eb8caa286b63366c2a", + "datavalue": {"value": {"text": "Leeuw", "language": "nl"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$65E80D17-6F20-4BAE-A2B4-DD934C0BE153", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "12f3384cc32e65dfb501e2fee19ccf709f9df757", + "datavalue": {"value": {"text": "L\u00f8ve", "language": "nn"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$78E95514-1969-4DA3-97CD-0DBADF1223E7", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "a3fedaf780a0d004ba318881f6adbe173750d09e", + "datavalue": {"value": {"text": "L\u00f8ve", "language": "nb"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$809DE1EA-861E-4813-BED7-D9C465341CB3", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "695d2ef10540ba13cf8b3541daa1d39fd720eea0", + "datavalue": { + "value": { + "text": "N\u00e1shd\u00f3\u00edtsoh bitsiij\u012f\u02bc dadit\u0142\u02bcoo\u00edg\u00ed\u00ed", + "language": "nv" + }, "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$E9EDAF16-6650-40ED-B888-C524BD00DF40", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "3c143e8a8cebf92d76d3ae2d7e3bb3f87e963fb4", + "datavalue": { + "value": { + "text": "\u0a2c\u0a71\u0a2c\u0a30 \u0a38\u0a3c\u0a47\u0a30", + "language": "pa" + }, "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$13AE1DAB-4B29-49A5-9893-C0014C61D21E", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "195e48d11222aec830fb1d5c2de898c9528abc57", + "datavalue": { + "value": {"text": "lew afryka\u0144ski", "language": "pl"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$6966C1C3-9DD6-48BC-B511-B0827642E41D", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "8bd3ae632e7731ae9e72c50744383006ec6eb73e", + "datavalue": {"value": {"text": "Le\u00e3o", "language": "pt"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$BD454649-347E-4AE5-81B8-360C16C7CDA7", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "79d3336733b7bf4b7dadffd6d6ebabdb892074d1", + "datavalue": {"value": {"text": "Leu", "language": "ro"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$7323EF68-7AA0-4D38-82D8-0A94E61A26F0", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "376b852a92b6472e969ae7b995c4aacea23955eb", + "datavalue": { + "value": {"text": "\u041b\u0435\u0432 (Lev)", "language": "ru"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$A7C413B9-0916-4534-941D-C24BA0334816", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "aa323e0bea79d79900227699b3d42d689a772ca1", + "datavalue": {"value": {"text": "Lioni", "language": "sc"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$2EF83D2C-0DB9-4D3C-8FDD-86237E566260", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "a290fe08983742eac8b5bc479022564fb6b2ce81", + "datavalue": {"value": {"text": "Lev", "language": "sl"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$B276673A-08C1-47E2-99A9-D0861321E157", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "d3b070ff1452d47f87c109a9e0bfa52e61b24a4e", + "datavalue": {"value": {"text": "Libubesi", "language": "ss"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$86BFAB38-1DB8-4903-A17D-A6B8E81819CC", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "3adea59d97f3caf9bb6b1c3d7ae6365f7f656dca", + "datavalue": {"value": {"text": "Tau", "language": "st"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$2FA8893D-2401-42E9-8DC3-288CC1DEDB0C", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "0e73b32fe31a107a95de83706a12f2db419c6909", + "datavalue": {"value": {"text": "Lejon", "language": "sv"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$1A8E006E-CC7B-4066-9DE7-9B82D096779E", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "34550af2fdc48f77cf66cabc5c59d1acf1d8afd0", + "datavalue": {"value": {"text": "Simba", "language": "sw"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$B02CA616-44CF-4AA6-9734-2C05810131EB", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "701f87cf9926c9af2c41434ff130dcb234a6cd95", + "datavalue": { + "value": { + "text": "\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0bae\u0bcd", + "language": "ta" + }, "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$DA87A994-A002-45AD-A71F-99FB72F8B92F", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "856fd4809c90e3c34c6876e4410661dc04f5da8d", + "datavalue": { + "value": {"text": "\u0e2a\u0e34\u0e07\u0e42\u0e15", "language": "th"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$BDA8E989-3537-4662-8CC3-33534705A7F1", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "f8598a8369426da0c86bf8bab356a927487eae66", + "datavalue": {"value": {"text": "Aslan", "language": "tr"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$AAE5F227-C0DB-4DF3-B1F4-517699BBDDF1", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "f3c8320bd46913aee164999ab7f68388c1bd9920", + "datavalue": { + "value": {"text": "\u041b\u0435\u0432 (Lev)", "language": "uk"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$494C3503-6016-4539-83AF-6344173C2DCB", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "6cc2d534293320533e15dc713f1d2c07b3811b6a", + "datavalue": {"value": {"text": "Leon", "language": "vec"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$E6F1DA81-9F36-4CC8-B57E-95E3BDC2F5D0", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "32553481e45abf6f5e6292baea486e978c36f8fe", + "datavalue": { + "value": {"text": "S\u01b0 t\u1eed", "language": "vi"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$11D7996C-0492-41CC-AEE7-3C136172DFC7", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "69077fc29f9251d1de124cd3f3c45cd6f0bb6b65", + "datavalue": { + "value": {"text": "\u05dc\u05d9\u05d9\u05d1", "language": "yi"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$969FEF9A-C1C7-41FE-8181-07F6D87B0346", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "e3aaa8cde18be4ea6b4af6ca62b83e7dc23d76e1", + "datavalue": { + "value": {"text": "\u72ee\u5b50 (sh\u012bzi)", "language": "zh"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$3BC22F6C-F460-4354-9BA2-28CEDA9FF170", + "rank": "normal", + "references": [{ + "hash": "2e0c13df5b13edc9b3db9d8129e466c0894710ac", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "2b1e96d67dc01973d72472f712fd98ce87c6f0d7", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 13679, "id": "Q13679"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "98f5efae94b2bb9f8ffee6c677ee71f836743ef6", + "datavalue": { + "value": {"text": "Lion d'Afrique", "language": "fr"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$62D09BBF-718A-4139-AF50-DA4185ED67F2", + "rank": "normal", + "references": [{ + "hash": "362e3c5d6de1d193ef97205ba38834ba075191fc", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 32059, "id": "Q32059"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "c7813bad20c2553e26e45c37e3502ce7252312df", + "datavalue": { + "value": { + "time": "+2016-10-20T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "c584bdbd3cdc1215292a4971b920c684d103ea06", + "datavalue": { + "value": {"text": "African Lion", "language": "en"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, + "type": "statement", + "id": "Q140$C871BB58-C689-4DBA-A088-DAC205377979", + "rank": "normal", + "references": [{ + "hash": "eada84c58a38325085267509899037535799e978", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 32059, "id": "Q32059"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "3e51c3c32949f8a45f2c3331f55ea6ae68ecf3fe", + "datavalue": { + "value": { + "time": "+2016-10-21T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "1d03eace9366816c6fda340c0390caac2f3cea8e", + "datavalue": {"value": {"text": "L\u00e9iw", "language": "lb"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, "type": "statement", "id": "Q140$c65c7614-4d6e-3a87-9771-4f8c13618249", "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "925c7abced1e89fa7e8000dc9dc78627cdac9769", + "datavalue": { + "value": {"text": "Lle\u00f3n", "language": "ast"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, "type": "statement", "id": "Q140$1024eadb-45dd-7d9a-15f6-8602946ba661", "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "0bda7868c3f498ba6fde78d46d0fbcf286e42dd8", + "datavalue": { + "value": {"text": "\u0644\u064e\u064a\u0652\u062b\u064c", "language": "ar"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, "type": "statement", "id": "Q140$c226ff70-48dd-7b4d-00ff-7a683fe510aa", "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "28de99c4aa35cc049cf8c9dd18af1791944137d9", + "datavalue": { + "value": {"text": "\u10da\u10dd\u10db\u10d8", "language": "ka"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, "type": "statement", "id": "Q140$8fe60d1a-465a-9614-cbe4-595e22429b0c", "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "4550db0f44e21c5eadeaa5a1d8fc614c9eb05f52", + "datavalue": {"value": {"text": "leon", "language": "ga"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, "type": "statement", "id": "Q140$4950cb9c-4f1e-ce27-0d8c-ba3f18096044", "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1843", + "hash": "9d268eb76ed921352c205b3f890d1f9428f638f3", + "datavalue": {"value": {"text": "Singa", "language": "ms"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }, "type": "statement", "id": "Q140$67401360-49dd-b13c-8269-e703b30c9a53", "rank": "normal" + }], + "P627": [{ + "mainsnak": { + "snaktype": "value", + "property": "P627", + "hash": "3642ac96e05180279c47a035c129d3af38d85027", + "datavalue": {"value": "15951", "type": "string"}, + "datatype": "string" + }, + "type": "statement", + "id": "Q140$6BE03095-BC68-4CE5-BB99-9F3E33A6F31D", + "rank": "normal", + "references": [{ + "hash": "182efbdb9110d036ca433f3b49bd3a1ae312858b", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 32059, "id": "Q32059"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "8c1c5174f4811115ea8a0def725fdc074c2ef036", + "datavalue": { + "value": { + "time": "+2016-07-10T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P2833": [{ + "mainsnak": { + "snaktype": "value", + "property": "P2833", + "hash": "519877b77b20416af2401e5c0645954c6700d6fd", + "datavalue": {"value": "panthera-leo", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$C0A723AE-ED2E-4FDC-827F-496E4CF29A52", "rank": "normal" + }], + "P3063": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3063", + "hash": "81cdb0273eaf0a0126b62e2ff43b8e09505eea54", + "datavalue": { + "value": { + "amount": "+108", + "unit": "http://www.wikidata.org/entity/Q573", + "upperBound": "+116", + "lowerBound": "+100" + }, "type": "quantity" + }, + "datatype": "quantity" + }, + "type": "statement", + "id": "Q140$878ff87d-40d0-bb2b-c83d-4cef682c2687", + "rank": "normal", + "references": [{ + "hash": "7d748004a43983fabae420123742fda0e9b52840", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "f618501ace3a6524b053661d067b775547f96f58", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 26706243, + "id": "Q26706243" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P478": [{ + "snaktype": "value", + "property": "P478", + "hash": "ca3c5e6054c169ee3d0dfaf660f3eecd77942070", + "datavalue": {"value": "4", "type": "string"}, + "datatype": "string" + }], + "P304": [{ + "snaktype": "value", + "property": "P304", + "hash": "dd1977567f22f4cf510adfaadf5e3574813b3521", + "datavalue": {"value": "46", "type": "string"}, + "datatype": "string" + }] + }, + "snaks-order": ["P248", "P478", "P304"] + }] + }], + "P3031": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3031", + "hash": "e6271e8d12b20c9735d2bbd80eed58581059bf3a", + "datavalue": {"value": "PNTHLE", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$65AD2857-AB65-4CC0-9AB9-9D6C924784FE", "rank": "normal" + }], + "P3151": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3151", + "hash": "e85e5599d303d9a6bb360f3133fb69a76d98d0e2", + "datavalue": {"value": "41964", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$15D7A4EB-F0A3-4C61-8D2B-E557D7BF5CF7", "rank": "normal" + }], + "P3186": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3186", + "hash": "85ec7843064210afdfef6ec565a47f229c6d15e5", + "datavalue": {"value": "644245", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$6903E136-2DB2-42C9-98CB-82F61208FDAD", + "rank": "normal", + "references": [{ + "hash": "5790a745e549ea7e4e6d7ca467148b544529ba96", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "c897ca3efd1604ef7b80a14ac0d2b8d6849c0856", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 26936509, + "id": "Q26936509" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "555ca5385c445e4fd4762281d4873682eff2ce30", + "datavalue": { + "value": { + "time": "+2016-09-24T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }, { + "hash": "3edd37192f877cad0ff97acc3db56ef2cc83945b", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "4f7c4fd187630ba8cbb174c2756113983df4ce82", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 45029859, + "id": "Q45029859" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "56b6aa0388c9a2711946589902bc195718bb0675", + "datavalue": { + "value": { + "time": "+2017-12-26T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }, { + "hash": "1318ed8ea451b84fe98461305665d8688603bab3", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "0fbeeecce08896108ed797d8ec22c7c10a6015e2", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 45029998, + "id": "Q45029998" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "4bac1c0d2ffc45d91b51fc0881eb6bcc7916e854", + "datavalue": { + "value": { + "time": "+2018-01-02T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }, { + "hash": "6f761664a6f331d95bbaa1434447d82afd597a93", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "6c09d1d89e83bd0dfa6c94e01d24a9a47489d83e", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 58035056, + "id": "Q58035056" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "03182012ca72fcd757b8a1fe05ba927cbe9ef374", + "datavalue": { + "value": { + "time": "+2018-11-02T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P3485": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3485", + "hash": "df4e58fc2a196833ab3e33483099e2481e61ba9e", + "datavalue": {"value": {"amount": "+112", "unit": "1"}, "type": "quantity"}, + "datatype": "quantity" + }, + "type": "statement", + "id": "Q140$4B70AA09-AE2F-4F4C-9BAF-09890CDA11B8", + "rank": "normal", + "references": [{ + "hash": "fa278ebfc458360e5aed63d5058cca83c46134f1", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "e4f6d9441d0600513c4533c672b5ab472dc73694", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 328, "id": "Q328"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }], + "P3827": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3827", + "hash": "6bb26d581721d7330c407259d46ab5e25cc4a6b1", + "datavalue": {"value": "lions", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$CCDE6F7D-B4EA-4875-A4D6-5649ACFA8E2F", "rank": "normal" + }], + "P268": [{ + "mainsnak": { + "snaktype": "value", + "property": "P268", + "hash": "a20cdf81e39cd47f4da30073671792380029924c", + "datavalue": {"value": "11932251d", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$000FDB77-C70C-4464-9F00-605787964BBA", + "rank": "normal", + "references": [{ + "hash": "d4bd87b862b12d99d26e86472d44f26858dee639", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "f30cbd35620c4ea6d0633aaf0210a8916130469b", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 8447, "id": "Q8447"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }], + "P3417": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3417", + "hash": "e3b5d21350aef37f27ad8b24142d6b83d9eec0a6", + "datavalue": {"value": "Lions", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$1f96d096-4e4b-06de-740f-7b7215e5ae3f", "rank": "normal" + }], + "P4024": [{ + "mainsnak": { + "snaktype": "value", + "property": "P4024", + "hash": "a698e7dcd6f9b0b00ee8e02846c668db83064833", + "datavalue": {"value": "Panthera_leo", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$F5DC21E8-BF52-4A0D-9A15-63B89297BD70", + "rank": "normal", + "references": [{ + "hash": "d4bd87b862b12d99d26e86472d44f26858dee639", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "f30cbd35620c4ea6d0633aaf0210a8916130469b", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 8447, "id": "Q8447"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }], + "P1225": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1225", + "hash": "9af40267f10f15926877e9a3f78faeab7b0dda82", + "datavalue": {"value": "10665610", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$268074ED-3CD7-46C9-A8FF-8C3679C45547", "rank": "normal" + }], + "P4728": [{ + "mainsnak": { + "snaktype": "value", + "property": "P4728", + "hash": "37eafa980604019b327b1a3552313fb7ae256697", + "datavalue": {"value": "105514", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$50C24ECC-C42C-4A58-8F34-6AF0AC6C4EFE", + "rank": "normal", + "references": [{ + "hash": "d4bd87b862b12d99d26e86472d44f26858dee639", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "f30cbd35620c4ea6d0633aaf0210a8916130469b", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 8447, "id": "Q8447"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }], + "P3219": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3219", + "hash": "dedb8825588940caff5a34d04a0e69af296f05dd", + "datavalue": {"value": "lion", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$2A5A2CA3-AB6E-4F68-927F-042D1BD22915", "rank": "normal" + }], + "P1343": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "5b0ef3d5413cd39d887fbe70d2d3b3f4a94ea9d8", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 1138524, "id": "Q1138524"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "f7bf629d348040dd1a59dc5a3199edb50279e8f5", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 19997008, + "id": "Q19997008" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$DFE4D4B0-0D84-41F2-B448-4A81AC982927", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "6bc15c6f82feca4f3b173c90209a416f99464cac", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 4086271, "id": "Q4086271"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "69ace59e966574e4ffb454d26940a58fb45ed7de", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 25295952, + "id": "Q25295952" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$b82b0461-4ff0-10ac-9825-d4b95fc7a85a", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "ecb04d74140f2ee856c06658b03ec90a21c2edf2", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 1970746, "id": "Q1970746"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "169607f1510535f3e1c5e7debce48d1903510f74", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 30202801, + "id": "Q30202801" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$bd49e319-477f-0cd2-a404-642156321081", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "88389772f86dcd7d415ddd029f601412e5cc894a", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 602358, "id": "Q602358"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "67f2e59eb3f6480bdbaa3954055dfbf8fd045bc4", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 24451091, + "id": "Q24451091" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$906ae22e-4c63-d325-c91e-dc3ee6b7504d", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "42346dfe9209b7359c1f5db829a368b38d407797", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 19180675, "id": "Q19180675"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "195bd04166c04364a657fcd18abd1a082dad3cb0", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 24758519, + "id": "Q24758519" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$92e7eeb1-4a72-9abf-4260-a96abc32bc42", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "7d6f86cef085693a10b0e0663a0960f58d0e15e2", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 4173137, "id": "Q4173137"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "75e5bdfbbf8498b195840749ef3a9bd309b796f7", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 25054587, + "id": "Q25054587" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$6c9c319a-4e71-540e-8866-a6017f0e6bae", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "75dd89e79770a3e631dbba27144940f8f1bc1773", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 1768721, "id": "Q1768721"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "a1b448ff5f8818a2254835e0816a03a785bac665", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 96599885, + "id": "Q96599885" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$A0FD93F4-A401-47A1-BC8E-F0D35A8E8BAD", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "4cfd4eb1fe49d401455df557a7d9b1154f22a725", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 3181656, "id": "Q3181656"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P1932": [{ + "snaktype": "value", + "property": "P1932", + "hash": "a3f6e8ce10c4527693415dbc99b5ea285b2f411c", + "datavalue": {"value": "Lion, The", "type": "string"}, + "datatype": "string" + }] + }, + "qualifiers-order": ["P1932"], + "id": "Q140$100f480e-4ad9-b340-8251-4e875d00315d", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "d5011798f92464584d8ccfc5f19f18f3659668bb", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 106727050, "id": "Q106727050"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P1810": [{ + "snaktype": "value", + "property": "P1810", + "hash": "7d78547303d5e9e014a7c8cef6072faee91088ce", + "datavalue": {"value": "Lions", "type": "string"}, + "datatype": "string" + }], + "P585": [{ + "snaktype": "value", + "property": "P585", + "hash": "ffb837135313cad3b2545c4b9ce5ee416deda3e2", + "datavalue": { + "value": { + "time": "+2021-05-07T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "qualifiers-order": ["P1810", "P585"], + "id": "Q140$A4D208BD-6A69-4561-B402-2E17AAE6E028", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P1343", + "hash": "d12a9ecb0df8fce076df898533fea0339e5881bd", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 10886720, "id": "Q10886720"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P805": [{ + "snaktype": "value", + "property": "P805", + "hash": "52ddab8de77b01303d508a1de615ca13060ec188", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 107513600, + "id": "Q107513600" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P805"], + "id": "Q140$07daf548-4c8d-fa7c-16f4-4c7062f7e48a", + "rank": "normal" + }], + "P4733": [{ + "mainsnak": { + "snaktype": "value", + "property": "P4733", + "hash": "fc789f67f6d4d9b5879a8631eefe61f51a60f979", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 3177438, "id": "Q3177438"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "id": "Q140$3773ba15-4723-261a-f9a8-544496938efa", + "rank": "normal", + "references": [{ + "hash": "649ae5511d5389d870d19e83543fa435de796536", + "snaks": { + "P143": [{ + "snaktype": "value", + "property": "P143", + "hash": "9931bb1a17358e94590f8fa0b9550de881616d97", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 784031, + "id": "Q784031" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P143"] + }] + }], + "P5019": [{ + "mainsnak": { + "snaktype": "value", + "property": "P5019", + "hash": "44aac3d8a2bd240b4bc81741a0980dc48781181b", + "datavalue": {"value": "l\u00f6we", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$2be40b22-49f1-c9e7-1812-8e3fd69d662d", "rank": "normal" + }], + "P2924": [{ + "mainsnak": { + "snaktype": "value", + "property": "P2924", + "hash": "710d75c07e28936461d03b20b2fc7455599301a1", + "datavalue": {"value": "2135124", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$6326B120-CE04-4F02-94CA-D7BBC2589A39", "rank": "normal" + }], + "P5055": [{ + "mainsnak": { + "snaktype": "value", + "property": "P5055", + "hash": "c5264fc372b7e66566d54d73f86c8ab8c43fb033", + "datavalue": {"value": "10196306", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$F8D43B92-CC3A-4967-A28F-C3E6308946F6", + "rank": "normal", + "references": [{ + "hash": "7131076724beb97fed351cb7e7f6ac6d61dd05b9", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "1e3ad3cb9e0170e28b7c7c335fba55cafa6ef789", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 51885189, + "id": "Q51885189" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "2b1446fcfcd471ab6d36521b4ad2ac183ff8bc0d", + "datavalue": { + "value": { + "time": "+2018-06-07T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P5221": [{ + "mainsnak": { + "snaktype": "value", + "property": "P5221", + "hash": "623ca9614dd0d8b8720bf35b4d57be91dcef5fe6", + "datavalue": {"value": "123566", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$472fe544-402d-2574-6b2e-98c5b01bb294", "rank": "normal" + }], + "P5698": [{ + "mainsnak": { + "snaktype": "value", + "property": "P5698", + "hash": "e966694183143d709403fae7baabb5fdf98d219a", + "datavalue": {"value": "70719", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$EF3F712D-B0E5-4151-81E4-67804D6241E6", "rank": "normal" + }], + "P5397": [{ + "mainsnak": { + "snaktype": "value", + "property": "P5397", + "hash": "49a827bc1853a3b5612b437dd61eb5c28dc0bab0", + "datavalue": {"value": "12799", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$DE37BF10-A59D-48F1-926A-7303EDEEDDD0", "rank": "normal" + }], + "P6033": [{ + "mainsnak": { + "snaktype": "value", + "property": "P6033", + "hash": "766727ded3adbbfec0bed77affc89ea4e5214d65", + "datavalue": {"value": "panthera-leo", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$A27BADCC-0F72-45A5-814B-BDE62BD7A1B4", "rank": "normal" + }], + "P18": [{ + "mainsnak": { + "snaktype": "value", + "property": "P18", + "hash": "d3ceb5bb683335c91781e4d52906d2fb1cc0c35d", + "datavalue": {"value": "Lion waiting in Namibia.jpg", "type": "string"}, + "datatype": "commonsMedia" + }, + "type": "statement", + "qualifiers": { + "P21": [{ + "snaktype": "value", + "property": "P21", + "hash": "0576a008261e5b2544d1ff3328c94bd529379536", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 44148, "id": "Q44148"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P2096": [{ + "snaktype": "value", + "property": "P2096", + "hash": "6923fafa02794ae7d0773e565de7dd49a2694b38", + "datavalue": { + "value": {"text": "Lle\u00f3", "language": "ca"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, { + "snaktype": "value", + "property": "P2096", + "hash": "563784f05211416fda8662a0773f52165ccf6c2a", + "datavalue": { + "value": {"text": "Machu de lle\u00f3n en Namibia", "language": "ast"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, { + "snaktype": "value", + "property": "P2096", + "hash": "52722803d98964d77b79d3ed62bd24b4f25e6993", + "datavalue": { + "value": {"text": "\u043b\u044a\u0432", "language": "bg"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }] + }, + "qualifiers-order": ["P21", "P2096"], + "id": "q140$5903FDF3-DBBD-4527-A738-450EAEAA45CB", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P18", + "hash": "6907d4c168377a18d6a5eb390ab32a7da42d8218", + "datavalue": {"value": "Okonjima Lioness.jpg", "type": "string"}, + "datatype": "commonsMedia" + }, + "type": "statement", + "qualifiers": { + "P21": [{ + "snaktype": "value", + "property": "P21", + "hash": "a274865baccd3ff04c28d5ffdcc12e0079f5a201", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 43445, "id": "Q43445"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P2096": [{ + "snaktype": "value", + "property": "P2096", + "hash": "a9d1363e8fc83ba822c45a81de59fe5b8eb434cf", + "datavalue": { + "value": { + "text": "\u043b\u044a\u0432\u0438\u0446\u0430", + "language": "bg" + }, "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, { + "snaktype": "value", + "property": "P2096", + "hash": "b36ab7371664b7b62ee7be65db4e248074a5330c", + "datavalue": { + "value": {"text": "Lleona n'Okonjima Lodge, Namibia", "language": "ast"}, + "type": "monolingualtext" + }, + "datatype": "monolingualtext" + }, { + "snaktype": "value", + "property": "P2096", + "hash": "31c78a574eabc0426d7984aa4988752e35b71f0c", + "datavalue": {"value": {"text": "lwica", "language": "pl"}, "type": "monolingualtext"}, + "datatype": "monolingualtext" + }] + }, + "qualifiers-order": ["P21", "P2096"], + "id": "Q140$4da15225-f7dc-4942-a685-0669e5d3af14", + "rank": "normal" + }], + "P6573": [{ + "mainsnak": { + "snaktype": "value", + "property": "P6573", + "hash": "c27b457b12eeecb053d60af6ecf9b0baa133bef5", + "datavalue": {"value": "L\u00f6we", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$45B1C3EB-E335-4245-A193-8C48B4953E51", "rank": "normal" + }], + "P443": [{ + "mainsnak": { + "snaktype": "value", + "property": "P443", + "hash": "8a9afb9293804f976c415060900bf9afbc2cfdff", + "datavalue": {"value": "LL-Q188 (deu)-Sebastian Wallroth-L\u00f6we.wav", "type": "string"}, + "datatype": "commonsMedia" + }, + "type": "statement", + "qualifiers": { + "P407": [{ + "snaktype": "value", + "property": "P407", + "hash": "46bfd327b830f66f7061ea92d1be430c135fa91f", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 188, "id": "Q188"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P407"], + "id": "Q140$5EC64299-429F-45E8-B18F-19325401189C", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P443", + "hash": "7d058dfd1e8a41f026974faec3dc0588e29c6854", + "datavalue": {"value": "LL-Q150 (fra)-Ash Crow-lion.wav", "type": "string"}, + "datatype": "commonsMedia" + }, + "type": "statement", + "qualifiers": { + "P407": [{ + "snaktype": "value", + "property": "P407", + "hash": "d197d0a5efa4b4c23a302a829dd3ef43684fe002", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 150, "id": "Q150"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P407"], + "id": "Q140$A4575261-6577-4EF6-A0C9-DA5FA523D1C2", + "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P443", + "hash": "79b9f51c9b4eec305813d5bb697b403d798cf1c5", + "datavalue": { + "value": "LL-Q33965 (sat)-Joy sagar Murmu-\u1c60\u1c69\u1c5e.wav", + "type": "string" + }, + "datatype": "commonsMedia" + }, + "type": "statement", + "qualifiers": { + "P407": [{ + "snaktype": "value", + "property": "P407", + "hash": "58ae6998321952889f733126c11c582eeef20e72", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 33965, "id": "Q33965"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P407"], + "id": "Q140$7eedc8fa-4d1c-7ee9-3c67-0c89ef464d9f", + "rank": "normal", + "references": [{ + "hash": "d0b5c88b6f49dda9160c706291a9b8645825d99c", + "snaks": { + "P854": [{ + "snaktype": "value", + "property": "P854", + "hash": "38c1012cea9eb73cf1bd11eba0c2f745d2463340", + "datavalue": {"value": "https://lingualibre.org/wiki/Q403065", "type": "string"}, + "datatype": "url" + }] + }, + "snaks-order": ["P854"] + }] + }], + "P1296": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1296", + "hash": "c1f872d4cd22219a7315c0198a83c1918ded97ee", + "datavalue": {"value": "0120024", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$6C51384B-2EBF-4E6B-9201-A44F0A145C04", "rank": "normal" + }], + "P486": [{ + "mainsnak": { + "snaktype": "value", + "property": "P486", + "hash": "b7003b0fb28287301200b6b3871a5437d877913b", + "datavalue": {"value": "D008045", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$B2F98DD2-B679-43DD-B731-FA33FB1EE4B9", "rank": "normal" + }], + "P989": [{ + "mainsnak": { + "snaktype": "value", + "property": "P989", + "hash": "132884b2a696a8b56c8b1460e126f745e2fa6d01", + "datavalue": {"value": "Ru-Lion (intro).ogg", "type": "string"}, + "datatype": "commonsMedia" + }, + "type": "statement", + "qualifiers": { + "P407": [{ + "snaktype": "value", + "property": "P407", + "hash": "d291ddb7cd77c94a7bd709a8395934147e0864fc", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 7737, "id": "Q7737"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P407"], + "id": "Q140$857D8831-673B-427E-A182-6A9FFA980424", + "rank": "normal" + }], + "P51": [{ + "mainsnak": { + "snaktype": "value", + "property": "P51", + "hash": "73b0e8c8458ebc27374fd08d8ef5241f2f28e3e9", + "datavalue": {"value": "Lion raring-sound1TamilNadu178.ogg", "type": "string"}, + "datatype": "commonsMedia" + }, "type": "statement", "id": "Q140$1c254aff-48b1-d3c5-930c-b360ce6fe043", "rank": "normal" + }], + "P4212": [{ + "mainsnak": { + "snaktype": "value", + "property": "P4212", + "hash": "e006ce3295d617a4818dc758c28f444446538019", + "datavalue": {"value": "pcrt5TAeZsO7W4", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$AD6CD534-1FD2-4AC7-9CF8-9D2B4C46927C", "rank": "normal" + }], + "P2067": [{ + "mainsnak": { + "snaktype": "value", + "property": "P2067", + "hash": "97a863433c30b47a6175abb95941d185397ea14a", + "datavalue": { + "value": {"amount": "+1.65", "unit": "http://www.wikidata.org/entity/Q11570"}, + "type": "quantity" + }, + "datatype": "quantity" + }, + "type": "statement", + "qualifiers": { + "P642": [{ + "snaktype": "value", + "property": "P642", + "hash": "f5e24bc6ec443d6cb3678e4561bc298090b54f60", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 4128476, "id": "Q4128476"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P642"], + "id": "Q140$198da244-7e66-4258-9434-537e9ce0ffab", + "rank": "normal", + "references": [{ + "hash": "94a79329d5eac70f7ddb005e0d1dc78c53e77797", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "4a7fef7ea264a7c71765ce60e3d42f4c043c9646", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 45106562, + "id": "Q45106562" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P2067", + "hash": "ba9933059ce368e3afde1e96d78b1217172c954e", + "datavalue": { + "value": {"amount": "+188", "unit": "http://www.wikidata.org/entity/Q11570"}, + "type": "quantity" + }, + "datatype": "quantity" + }, + "type": "statement", + "qualifiers": { + "P642": [{ + "snaktype": "value", + "property": "P642", + "hash": "b388540fc86300a506b3a753ec58dec445525ffa", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 78101716, + "id": "Q78101716" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P21": [{ + "snaktype": "value", + "property": "P21", + "hash": "0576a008261e5b2544d1ff3328c94bd529379536", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 44148, "id": "Q44148"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P642", "P21"], + "id": "Q140$a3092626-4295-efb8-bbb6-eed913d02fc7", + "rank": "normal", + "references": [{ + "hash": "94a79329d5eac70f7ddb005e0d1dc78c53e77797", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "4a7fef7ea264a7c71765ce60e3d42f4c043c9646", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 45106562, + "id": "Q45106562" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }, { + "mainsnak": { + "snaktype": "value", + "property": "P2067", + "hash": "6951281811b2a8a3a78044e2003d6c162d5ba1a3", + "datavalue": { + "value": {"amount": "+126", "unit": "http://www.wikidata.org/entity/Q11570"}, + "type": "quantity" + }, + "datatype": "quantity" + }, + "type": "statement", + "qualifiers": { + "P642": [{ + "snaktype": "value", + "property": "P642", + "hash": "b388540fc86300a506b3a753ec58dec445525ffa", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 78101716, + "id": "Q78101716" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P21": [{ + "snaktype": "value", + "property": "P21", + "hash": "a274865baccd3ff04c28d5ffdcc12e0079f5a201", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 43445, "id": "Q43445"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P642", "P21"], + "id": "Q140$20d80fe2-4796-23d1-42c2-c103546aa874", + "rank": "normal", + "references": [{ + "hash": "94a79329d5eac70f7ddb005e0d1dc78c53e77797", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "4a7fef7ea264a7c71765ce60e3d42f4c043c9646", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 45106562, + "id": "Q45106562" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }], + "P7725": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7725", + "hash": "e9338e052dfaa9267c2357bec2e167ca625af667", + "datavalue": { + "value": { + "amount": "+2.5", + "unit": "1", + "upperBound": "+4.0", + "lowerBound": "+1.0" + }, "type": "quantity" + }, + "datatype": "quantity" + }, + "type": "statement", + "id": "Q140$f1f04a23-0d34-484a-9419-78d12958170c", + "rank": "normal", + "references": [{ + "hash": "94a79329d5eac70f7ddb005e0d1dc78c53e77797", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "4a7fef7ea264a7c71765ce60e3d42f4c043c9646", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 45106562, + "id": "Q45106562" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }], + "P4214": [{ + "mainsnak": { + "snaktype": "value", + "property": "P4214", + "hash": "5a112dbdaed17b1ee3fe7a63b1f978e5fd41008a", + "datavalue": { + "value": {"amount": "+27", "unit": "http://www.wikidata.org/entity/Q577"}, + "type": "quantity" + }, + "datatype": "quantity" + }, + "type": "statement", + "id": "Q140$ec1ccab2-f506-4c81-9179-4625bbbbbe27", + "rank": "normal", + "references": [{ + "hash": "a8ccf5105b0e2623ae145dd8a9b927c9bd957ddf", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "5b45c23ddb076fe9c5accfe4a4bbd1c24c4c87cb", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 83566668, + "id": "Q83566668" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }], + "P7862": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7862", + "hash": "6e74ddb544498b93407179cc9a7f9b8610762ff5", + "datavalue": { + "value": {"amount": "+8", "unit": "http://www.wikidata.org/entity/Q5151"}, + "type": "quantity" + }, + "datatype": "quantity" + }, + "type": "statement", + "id": "Q140$17b64a1e-4a13-9e2a-f8a2-a9317890aa53", + "rank": "normal", + "references": [{ + "hash": "94a79329d5eac70f7ddb005e0d1dc78c53e77797", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "4a7fef7ea264a7c71765ce60e3d42f4c043c9646", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 45106562, + "id": "Q45106562" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }], + "P7818": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7818", + "hash": "5c7bac858cf66d079e6c13c88f3f001eb446cdce", + "datavalue": {"value": "Lion", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$C2D3546E-C42A-404A-A288-580F9C705E12", "rank": "normal" + }], + "P7829": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7829", + "hash": "17fbb02db65a7e80691f58be750382d61148406e", + "datavalue": {"value": "Lion", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$74998F51-E783-40CB-A56A-3189647AB3D4", "rank": "normal" + }], + "P7827": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7827", + "hash": "f85db9fe2c187554aefc51e5529d75e0c5af4767", + "datavalue": {"value": "Le\u00f3n", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$5DA64E1B-F1F1-4254-8629-985DFE8672A2", "rank": "normal" + }], + "P7822": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7822", + "hash": "3cd23fddc416227c2ba85d91aa03dc80a8e95836", + "datavalue": {"value": "Leone", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$DF657EF2-67A8-4272-871D-E95B3719A8B6", "rank": "normal" + }], + "P6105": [{ + "mainsnak": { + "snaktype": "value", + "property": "P6105", + "hash": "8bbda0afe53fc428d3a0d9528c97d2145ee41dce", + "datavalue": {"value": "79432", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$2AE92335-1BC6-4B92-BAF3-9AB41608E638", "rank": "normal" + }], + "P6864": [{ + "mainsnak": { + "snaktype": "value", + "property": "P6864", + "hash": "6f87ce0800057dbe88f27748b3077938973eb5c8", + "datavalue": {"value": "85426", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$9089C4B9-59A8-45A6-821B-05C1BB4C107C", "rank": "normal" + }], + "P2347": [{ + "mainsnak": { + "snaktype": "value", + "property": "P2347", + "hash": "41e41b306cdd5e55007ac02da022d9f4ce230b03", + "datavalue": {"value": "7345", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$3CEB44D7-6C0B-4E66-87ED-37D723A1CCC8", + "rank": "normal", + "references": [{ + "hash": "f9bf1a1f034ddd51bd9928ac535e0f57d748e2cf", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "7133f11674741f52cadaae6029068fad9cbb52e3", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 89345680, + "id": "Q89345680" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }], + "P7033": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7033", + "hash": "e31b2e07ae0ce3d3a087d3c818c7bf29c7b04b72", + "datavalue": {"value": "scot/9244", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$F8148EB5-7934-4491-9B40-3378B7D292A6", "rank": "normal" + }], + "P8408": [{ + "mainsnak": { + "snaktype": "value", + "property": "P8408", + "hash": "51c04ed4f03488e8f428256ee41eb20eabe3ff38", + "datavalue": {"value": "Lion", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "id": "Q140$2855E519-BCD1-4AB3-B3E9-BB53C5CB2E22", + "rank": "normal", + "references": [{ + "hash": "9a681f9dd95c90224547c404e11295f4f7dcf54e", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "9d5780dddffa8746637a9929a936ab6b0f601e24", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 64139102, + "id": "Q64139102" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "622a5a27fa5b25e7e7984974e9db494cf8460990", + "datavalue": { + "value": { + "time": "+2020-07-09T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P813"] + }] + }], + "P8519": [{ + "mainsnak": { + "snaktype": "value", + "property": "P8519", + "hash": "ad8031a668b5310633a04a9223714b3482d388b2", + "datavalue": {"value": "64570", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$ba4fa085-0e54-4226-a46b-770f7d5a995f", "rank": "normal" + }], + "P279": [{ + "mainsnak": { + "snaktype": "value", + "property": "P279", + "hash": "761c3439637add8f8fe3a351d6231333693835f6", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 6667323, "id": "Q6667323"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "Q140$cb41b7d3-46f0-e6d9-ced6-c2803e0c06b7", "rank": "normal" + }], + "P2670": [{ + "mainsnak": { + "snaktype": "value", + "property": "P2670", + "hash": "6563f1e596253f1574515891267de01c5c1e688e", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 17611534, "id": "Q17611534"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "Q140$24984be4-4813-b6ad-ec83-1a37b7332c8a", "rank": "normal" + }, { + "mainsnak": { + "snaktype": "value", + "property": "P2670", + "hash": "684855138cc32d11b487d0178c194f10c63f5f86", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 98520146, "id": "Q98520146"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "Q140$56e8c9b3-4892-e95d-f7c5-02b10ffe77e8", "rank": "normal" + }], + "P31": [{ + "mainsnak": { + "snaktype": "value", + "property": "P31", + "hash": "06629d890d7ab0ff85c403d8aadf57ce9809c01f", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 16521, "id": "Q16521"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "q140$8EE98E5B-4A9C-4BF5-B456-FB77E8EE4E69", "rank": "normal" + }], + "P2581": [{ + "mainsnak": { + "snaktype": "value", + "property": "P2581", + "hash": "beca27cf7dd079eb27b7690e13a446d98448ae91", + "datavalue": {"value": "00049156n", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$90562c9a-4e9c-082d-d577-e0869524d9a1", "rank": "normal" + }], + "P7506": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7506", + "hash": "0562f57f9a54c65a2d45711f6dd5dd53ce37f6f8", + "datavalue": {"value": "1107856", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$00d453bf-4786-bde9-63f4-2db9f3610e88", "rank": "normal" + }], + "P5184": [{ + "mainsnak": { + "snaktype": "value", + "property": "P5184", + "hash": "201d8de9b05ae85fe4f917c7e54c4a0218517888", + "datavalue": {"value": "b11s0701a", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$a2b832c9-4c5c-e402-e10d-cf2b08d35a56", "rank": "normal" + }], + "P6900": [{ + "mainsnak": { + "snaktype": "value", + "property": "P6900", + "hash": "f7218c6984cd57078497a62ad595b089bdd97c49", + "datavalue": {"value": "\u30e9\u30a4\u30aa\u30f3", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$d15d143d-4826-4860-9aa3-6a350d6bc36f", "rank": "normal" + }], + "P3553": [{ + "mainsnak": { + "snaktype": "value", + "property": "P3553", + "hash": "c82c6e1156e098d5ef396248c412371b90e0dc56", + "datavalue": {"value": "19563862", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$5edb95fa-4647-2e9a-9dbf-b68e1326eb79", "rank": "normal" + }], + "P5337": [{ + "mainsnak": { + "snaktype": "value", + "property": "P5337", + "hash": "793cfa52df3c5a6747c0cb5db959db944b04dbed", + "datavalue": { + "value": "CAAqIQgKIhtDQkFTRGdvSUwyMHZNRGsyYldJU0FtcGhLQUFQAQ", + "type": "string" + }, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$6137dbc1-4c6a-af60-00ee-2a32c63bfdfa", "rank": "normal" + }], + "P6200": [{ + "mainsnak": { + "snaktype": "value", + "property": "P6200", + "hash": "0ce08dd38017230d41f530f6e97baf484f607235", + "datavalue": {"value": "ce2gz91pyv2t", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$01ed0f16-4a4a-213d-e457-0d4d5d670d49", "rank": "normal" + }], + "P4527": [{ + "mainsnak": { + "snaktype": "value", + "property": "P4527", + "hash": "b07d29aa5112080a9294a7421e46ed0b73ac96c7", + "datavalue": {"value": "430792", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "qualifiers": { + "P1810": [{ + "snaktype": "value", + "property": "P1810", + "hash": "7d78547303d5e9e014a7c8cef6072faee91088ce", + "datavalue": {"value": "Lions", "type": "string"}, + "datatype": "string" + }] + }, + "qualifiers-order": ["P1810"], + "id": "Q140$C37C600C-4929-4203-A06E-8D797BA9B22A", + "rank": "normal" + }], + "P8989": [{ + "mainsnak": { + "snaktype": "value", + "property": "P8989", + "hash": "37087c42c921d83773f62d77e7360dc44504c122", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 104595349, "id": "Q104595349"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "Q140$1ece61f5-c008-4750-8b67-e15337f28e86", "rank": "normal" + }], + "P1552": [{ + "mainsnak": { + "snaktype": "value", + "property": "P1552", + "hash": "1aa7db66bfad11e427c40ec79f3295de877967f1", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 120446, "id": "Q120446"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, "type": "statement", "id": "Q140$0bd4b0d9-49ff-b5b4-5c10-9500bc0ce19d", "rank": "normal" + }], + "P9198": [{ + "mainsnak": { + "snaktype": "value", + "property": "P9198", + "hash": "d3ab4ab9d788dc348d16e13fc77164ea71cef2ae", + "datavalue": {"value": "352", "type": "string"}, + "datatype": "external-id" + }, "type": "statement", "id": "Q140$C5D80C89-2862-490F-AA85-C260F32BE30B", "rank": "normal" + }], + "P9566": [{ + "mainsnak": { + "snaktype": "value", + "property": "P9566", + "hash": "053e0b7c15c8e5a61a71077c4cffa73b9d03005b", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 3255068, "id": "Q3255068"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "id": "Q140$C7DAEA4E-B613-48A6-BFCD-88B551D1EF7A", + "rank": "normal", + "references": [{ + "hash": "0eedf63ac49c9b21aa7ff0a5e70b71aa6069a8ed", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "abfcfc68aa085f872d633958be83cba2ab96ce4a", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1637051, + "id": "Q1637051" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }, { + "hash": "6db51e3163554f674ff270c93a2871c8d859a49e", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "abfcfc68aa085f872d633958be83cba2ab96ce4a", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1637051, + "id": "Q1637051" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P577": [{ + "snaktype": "value", + "property": "P577", + "hash": "ccd6ea06a2c9c0f54f5b1f45991a659225b5f4ef", + "datavalue": { + "value": { + "time": "+2013-01-01T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 9, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P577"] + }] + }], + "P508": [{ + "mainsnak": { + "snaktype": "value", + "property": "P508", + "hash": "e87c854abf600fb5de7b9b677d94a06e18851333", + "datavalue": {"value": "34922", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "qualifiers": { + "P1810": [{ + "snaktype": "value", + "property": "P1810", + "hash": "137692b9bcc178e7b7d232631cb607d45e2f543d", + "datavalue": {"value": "Leoni", "type": "string"}, + "datatype": "string" + }], + "P4970": [{ + "snaktype": "value", + "property": "P4970", + "hash": "271ec192bf14b9eb639120c60d5961ab8692444d", + "datavalue": {"value": "Panthera leo", "type": "string"}, + "datatype": "string" + }] + }, + "qualifiers-order": ["P1810", "P4970"], + "id": "Q140$52702f98-7843-4e0e-b646-76629e04e555", + "rank": "normal" + }], + "P950": [{ + "mainsnak": { + "snaktype": "value", + "property": "P950", + "hash": "f447323110fd744383394f91c2dfba2fc3187242", + "datavalue": {"value": "XX530613", "type": "string"}, + "datatype": "external-id" + }, + "type": "statement", + "qualifiers": { + "P1810": [{ + "snaktype": "value", + "property": "P1810", + "hash": "e2b2bda5457e0d5f7859e5c54996e1884062dfd1", + "datavalue": {"value": "Leones", "type": "string"}, + "datatype": "string" + }] + }, + "qualifiers-order": ["P1810"], + "id": "Q140$773f47cf-3133-4892-80eb-9d4dc5e97582", + "rank": "normal", + "references": [{ + "hash": "184729506e049d06de85686ede30c92b3e52451d", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "3b090a7bae73c288393b2c8b9846cc7ed9a58f91", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 16583225, + "id": "Q16583225" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }], + "P854": [{ + "snaktype": "value", + "property": "P854", + "hash": "b16c3ffac23bb97abe5d0c4d6ccffe4d010ab71a", + "datavalue": { + "value": "https://thes.bncf.firenze.sbn.it/termine.php?id=34922", + "type": "string" + }, + "datatype": "url" + }], + "P813": [{ + "snaktype": "value", + "property": "P813", + "hash": "7721e97431215c374db84a9df785dc964a16bd17", + "datavalue": { + "value": { + "time": "+2021-06-15T00:00:00Z", + "timezone": 0, + "before": 0, + "after": 0, + "precision": 11, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, "type": "time" + }, + "datatype": "time" + }] + }, + "snaks-order": ["P248", "P854", "P813"] + }] + }], + "P7603": [{ + "mainsnak": { + "snaktype": "value", + "property": "P7603", + "hash": "c86436e278d690f057cfecc86babf982948015f3", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 2851528, "id": "Q2851528"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }, + "type": "statement", + "qualifiers": { + "P17": [{ + "snaktype": "value", + "property": "P17", + "hash": "18fb076bdc1c07e578546d1670ba193b768531ac", + "datavalue": { + "value": {"entity-type": "item", "numeric-id": 668, "id": "Q668"}, + "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "qualifiers-order": ["P17"], + "id": "Q140$64262d09-4a19-3945-8a09-c2195b7614a7", + "rank": "normal" + }], + "P6800": [{ + "mainsnak": { + "snaktype": "value", + "property": "P6800", + "hash": "1da99908e2ffdf6de901a1b8a2dbab0c62886565", + "datavalue": {"value": "http://www.ensembl.org/Panthera_leo", "type": "string"}, + "datatype": "url" + }, + "type": "statement", + "id": "Q140$87DC0D37-FC9E-4FFE-B92D-1A3A7C019A1D", + "rank": "normal", + "references": [{ + "hash": "53eb51e25c6356d2d4673dc249ea837dd14feca0", + "snaks": { + "P248": [{ + "snaktype": "value", + "property": "P248", + "hash": "4ec639fccc9ddb8e079f7d27ca43220e3c512c20", + "datavalue": { + "value": { + "entity-type": "item", + "numeric-id": 1344256, + "id": "Q1344256" + }, "type": "wikibase-entityid" + }, + "datatype": "wikibase-item" + }] + }, + "snaks-order": ["P248"] + }] + }] + }, + "sitelinks": { + "abwiki": { + "site": "abwiki", + "title": "\u0410\u043b\u044b\u043c", + "badges": [], + "url": "https://ab.wikipedia.org/wiki/%D0%90%D0%BB%D1%8B%D0%BC" + }, + "adywiki": { + "site": "adywiki", + "title": "\u0410\u0441\u043b\u044a\u0430\u043d", + "badges": [], + "url": "https://ady.wikipedia.org/wiki/%D0%90%D1%81%D0%BB%D1%8A%D0%B0%D0%BD" + }, + "afwiki": { + "site": "afwiki", + "title": "Leeu", + "badges": ["Q17437796"], + "url": "https://af.wikipedia.org/wiki/Leeu" + }, + "alswiki": { + "site": "alswiki", + "title": "L\u00f6we", + "badges": [], + "url": "https://als.wikipedia.org/wiki/L%C3%B6we" + }, + "altwiki": { + "site": "altwiki", + "title": "\u0410\u0440\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://alt.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%BB%D0%B0%D0%BD" + }, + "amwiki": { + "site": "amwiki", + "title": "\u12a0\u1295\u1260\u1233", + "badges": [], + "url": "https://am.wikipedia.org/wiki/%E1%8A%A0%E1%8A%95%E1%89%A0%E1%88%B3" + }, + "angwiki": { + "site": "angwiki", + "title": "L\u0113o", + "badges": [], + "url": "https://ang.wikipedia.org/wiki/L%C4%93o" + }, + "anwiki": { + "site": "anwiki", + "title": "Panthera leo", + "badges": [], + "url": "https://an.wikipedia.org/wiki/Panthera_leo" + }, + "arcwiki": { + "site": "arcwiki", + "title": "\u0710\u072a\u071d\u0710", + "badges": [], + "url": "https://arc.wikipedia.org/wiki/%DC%90%DC%AA%DC%9D%DC%90" + }, + "arwiki": { + "site": "arwiki", + "title": "\u0623\u0633\u062f", + "badges": ["Q17437796"], + "url": "https://ar.wikipedia.org/wiki/%D8%A3%D8%B3%D8%AF" + }, + "arywiki": { + "site": "arywiki", + "title": "\u0633\u0628\u0639", + "badges": [], + "url": "https://ary.wikipedia.org/wiki/%D8%B3%D8%A8%D8%B9" + }, + "arzwiki": { + "site": "arzwiki", + "title": "\u0633\u0628\u0639", + "badges": [], + "url": "https://arz.wikipedia.org/wiki/%D8%B3%D8%A8%D8%B9" + }, + "astwiki": { + "site": "astwiki", + "title": "Panthera leo", + "badges": [], + "url": "https://ast.wikipedia.org/wiki/Panthera_leo" + }, + "aswiki": { + "site": "aswiki", + "title": "\u09b8\u09bf\u0982\u09b9", + "badges": [], + "url": "https://as.wikipedia.org/wiki/%E0%A6%B8%E0%A6%BF%E0%A6%82%E0%A6%B9" + }, + "avkwiki": { + "site": "avkwiki", + "title": "Krapol (Panthera leo)", + "badges": [], + "url": "https://avk.wikipedia.org/wiki/Krapol_(Panthera_leo)" + }, + "avwiki": { + "site": "avwiki", + "title": "\u0413\u044a\u0430\u043b\u0431\u0430\u0446\u04c0", + "badges": [], + "url": "https://av.wikipedia.org/wiki/%D0%93%D1%8A%D0%B0%D0%BB%D0%B1%D0%B0%D1%86%D3%80" + }, + "azbwiki": { + "site": "azbwiki", + "title": "\u0622\u0633\u0644\u0627\u0646", + "badges": [], + "url": "https://azb.wikipedia.org/wiki/%D8%A2%D8%B3%D9%84%D8%A7%D9%86" + }, + "azwiki": { + "site": "azwiki", + "title": "\u015eir", + "badges": [], + "url": "https://az.wikipedia.org/wiki/%C5%9Eir" + }, + "bat_smgwiki": { + "site": "bat_smgwiki", + "title": "Li\u016bts", + "badges": [], + "url": "https://bat-smg.wikipedia.org/wiki/Li%C5%ABts" + }, + "bawiki": { + "site": "bawiki", + "title": "\u0410\u0440\u044b\u04ab\u043b\u0430\u043d", + "badges": [], + "url": "https://ba.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D2%AB%D0%BB%D0%B0%D0%BD" + }, + "bclwiki": { + "site": "bclwiki", + "title": "Leon", + "badges": [], + "url": "https://bcl.wikipedia.org/wiki/Leon" + }, + "be_x_oldwiki": { + "site": "be_x_oldwiki", + "title": "\u041b\u0435\u045e", + "badges": [], + "url": "https://be-tarask.wikipedia.org/wiki/%D0%9B%D0%B5%D1%9E" + }, + "bewiki": { + "site": "bewiki", + "title": "\u041b\u0435\u045e", + "badges": [], + "url": "https://be.wikipedia.org/wiki/%D0%9B%D0%B5%D1%9E" + }, + "bgwiki": { + "site": "bgwiki", + "title": "\u041b\u044a\u0432", + "badges": [], + "url": "https://bg.wikipedia.org/wiki/%D0%9B%D1%8A%D0%B2" + }, + "bhwiki": { + "site": "bhwiki", + "title": "\u0938\u093f\u0902\u0939", + "badges": [], + "url": "https://bh.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9" + }, + "bmwiki": { + "site": "bmwiki", + "title": "Waraba", + "badges": [], + "url": "https://bm.wikipedia.org/wiki/Waraba" + }, + "bnwiki": { + "site": "bnwiki", + "title": "\u09b8\u09bf\u0982\u09b9", + "badges": [], + "url": "https://bn.wikipedia.org/wiki/%E0%A6%B8%E0%A6%BF%E0%A6%82%E0%A6%B9" + }, + "bowiki": { + "site": "bowiki", + "title": "\u0f66\u0f7a\u0f44\u0f0b\u0f42\u0f7a\u0f0d", + "badges": [], + "url": "https://bo.wikipedia.org/wiki/%E0%BD%A6%E0%BD%BA%E0%BD%84%E0%BC%8B%E0%BD%82%E0%BD%BA%E0%BC%8D" + }, + "bpywiki": { + "site": "bpywiki", + "title": "\u09a8\u0982\u09b8\u09be", + "badges": [], + "url": "https://bpy.wikipedia.org/wiki/%E0%A6%A8%E0%A6%82%E0%A6%B8%E0%A6%BE" + }, + "brwiki": { + "site": "brwiki", + "title": "Leon (loen)", + "badges": [], + "url": "https://br.wikipedia.org/wiki/Leon_(loen)" + }, + "bswiki": { + "site": "bswiki", + "title": "Lav", + "badges": [], + "url": "https://bs.wikipedia.org/wiki/Lav" + }, + "bswikiquote": { + "site": "bswikiquote", + "title": "Lav", + "badges": [], + "url": "https://bs.wikiquote.org/wiki/Lav" + }, + "bxrwiki": { + "site": "bxrwiki", + "title": "\u0410\u0440\u0441\u0430\u043b\u0430\u043d", + "badges": [], + "url": "https://bxr.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%B0%D0%BB%D0%B0%D0%BD" + }, + "cawiki": { + "site": "cawiki", + "title": "Lle\u00f3", + "badges": ["Q17437796"], + "url": "https://ca.wikipedia.org/wiki/Lle%C3%B3" + }, + "cawikiquote": { + "site": "cawikiquote", + "title": "Lle\u00f3", + "badges": [], + "url": "https://ca.wikiquote.org/wiki/Lle%C3%B3" + }, + "cdowiki": { + "site": "cdowiki", + "title": "S\u0103i (m\u00e0-ku\u014f d\u00f4ng-\u016dk)", + "badges": [], + "url": "https://cdo.wikipedia.org/wiki/S%C4%83i_(m%C3%A0-ku%C5%8F_d%C3%B4ng-%C5%ADk)" + }, + "cebwiki": { + "site": "cebwiki", + "title": "Panthera leo", + "badges": [], + "url": "https://ceb.wikipedia.org/wiki/Panthera_leo" + }, + "cewiki": { + "site": "cewiki", + "title": "\u041b\u043e\u043c", + "badges": [], + "url": "https://ce.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BC" + }, + "chrwiki": { + "site": "chrwiki", + "title": "\u13e2\u13d3\u13e5 \u13a4\u13c3\u13d5\u13be", + "badges": [], + "url": "https://chr.wikipedia.org/wiki/%E1%8F%A2%E1%8F%93%E1%8F%A5_%E1%8E%A4%E1%8F%83%E1%8F%95%E1%8E%BE" + }, + "chywiki": { + "site": "chywiki", + "title": "P\u00e9hpe'\u00e9nan\u00f3se'hame", + "badges": [], + "url": "https://chy.wikipedia.org/wiki/P%C3%A9hpe%27%C3%A9nan%C3%B3se%27hame" + }, + "ckbwiki": { + "site": "ckbwiki", + "title": "\u0634\u06ce\u0631", + "badges": [], + "url": "https://ckb.wikipedia.org/wiki/%D8%B4%DB%8E%D8%B1" + }, + "commonswiki": { + "site": "commonswiki", + "title": "Panthera leo", + "badges": [], + "url": "https://commons.wikimedia.org/wiki/Panthera_leo" + }, + "cowiki": { + "site": "cowiki", + "title": "Lionu", + "badges": [], + "url": "https://co.wikipedia.org/wiki/Lionu" + }, + "csbwiki": { + "site": "csbwiki", + "title": "Lew", + "badges": [], + "url": "https://csb.wikipedia.org/wiki/Lew" + }, + "cswiki": { + "site": "cswiki", + "title": "Lev", + "badges": [], + "url": "https://cs.wikipedia.org/wiki/Lev" + }, + "cswikiquote": { + "site": "cswikiquote", + "title": "Lev", + "badges": [], + "url": "https://cs.wikiquote.org/wiki/Lev" + }, + "cuwiki": { + "site": "cuwiki", + "title": "\u041b\u044c\u0432\u044a", + "badges": [], + "url": "https://cu.wikipedia.org/wiki/%D0%9B%D1%8C%D0%B2%D1%8A" + }, + "cvwiki": { + "site": "cvwiki", + "title": "\u0410\u0440\u0103\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://cv.wikipedia.org/wiki/%D0%90%D1%80%C4%83%D1%81%D0%BB%D0%B0%D0%BD" + }, + "cywiki": { + "site": "cywiki", + "title": "Llew", + "badges": [], + "url": "https://cy.wikipedia.org/wiki/Llew" + }, + "dagwiki": { + "site": "dagwiki", + "title": "Gbu\u0263inli", + "badges": [], + "url": "https://dag.wikipedia.org/wiki/Gbu%C9%A3inli" + }, + "dawiki": { + "site": "dawiki", + "title": "L\u00f8ve", + "badges": ["Q17559452"], + "url": "https://da.wikipedia.org/wiki/L%C3%B8ve" + }, + "dewiki": { + "site": "dewiki", + "title": "L\u00f6we", + "badges": ["Q17437796"], + "url": "https://de.wikipedia.org/wiki/L%C3%B6we" + }, + "dewikiquote": { + "site": "dewikiquote", + "title": "L\u00f6we", + "badges": [], + "url": "https://de.wikiquote.org/wiki/L%C3%B6we" + }, + "dinwiki": { + "site": "dinwiki", + "title": "K\u00f6r", + "badges": [], + "url": "https://din.wikipedia.org/wiki/K%C3%B6r" + }, + "diqwiki": { + "site": "diqwiki", + "title": "\u015e\u00ear", + "badges": [], + "url": "https://diq.wikipedia.org/wiki/%C5%9E%C3%AAr" + }, + "dsbwiki": { + "site": "dsbwiki", + "title": "Law", + "badges": [], + "url": "https://dsb.wikipedia.org/wiki/Law" + }, + "eewiki": { + "site": "eewiki", + "title": "Dzata", + "badges": [], + "url": "https://ee.wikipedia.org/wiki/Dzata" + }, + "elwiki": { + "site": "elwiki", + "title": "\u039b\u03b9\u03bf\u03bd\u03c4\u03ac\u03c1\u03b9", + "badges": [], + "url": "https://el.wikipedia.org/wiki/%CE%9B%CE%B9%CE%BF%CE%BD%CF%84%CE%AC%CF%81%CE%B9" + }, + "enwiki": { + "site": "enwiki", + "title": "Lion", + "badges": ["Q17437796"], + "url": "https://en.wikipedia.org/wiki/Lion" + }, + "enwikiquote": { + "site": "enwikiquote", + "title": "Lions", + "badges": [], + "url": "https://en.wikiquote.org/wiki/Lions" + }, + "eowiki": { + "site": "eowiki", + "title": "Leono", + "badges": [], + "url": "https://eo.wikipedia.org/wiki/Leono" + }, + "eowikiquote": { + "site": "eowikiquote", + "title": "Leono", + "badges": [], + "url": "https://eo.wikiquote.org/wiki/Leono" + }, + "eswiki": { + "site": "eswiki", + "title": "Panthera leo", + "badges": ["Q17437796"], + "url": "https://es.wikipedia.org/wiki/Panthera_leo" + }, + "eswikiquote": { + "site": "eswikiquote", + "title": "Le\u00f3n", + "badges": [], + "url": "https://es.wikiquote.org/wiki/Le%C3%B3n" + }, + "etwiki": { + "site": "etwiki", + "title": "L\u00f5vi", + "badges": [], + "url": "https://et.wikipedia.org/wiki/L%C3%B5vi" + }, + "etwikiquote": { + "site": "etwikiquote", + "title": "L\u00f5vi", + "badges": [], + "url": "https://et.wikiquote.org/wiki/L%C3%B5vi" + }, + "euwiki": { + "site": "euwiki", + "title": "Lehoi", + "badges": [], + "url": "https://eu.wikipedia.org/wiki/Lehoi" + }, + "extwiki": { + "site": "extwiki", + "title": "Li\u00f3n (animal)", + "badges": [], + "url": "https://ext.wikipedia.org/wiki/Li%C3%B3n_(animal)" + }, + "fawiki": { + "site": "fawiki", + "title": "\u0634\u06cc\u0631 (\u06af\u0631\u0628\u0647\u200c\u0633\u0627\u0646)", + "badges": ["Q17437796"], + "url": "https://fa.wikipedia.org/wiki/%D8%B4%DB%8C%D8%B1_(%DA%AF%D8%B1%D8%A8%D9%87%E2%80%8C%D8%B3%D8%A7%D9%86)" + }, + "fawikiquote": { + "site": "fawikiquote", + "title": "\u0634\u06cc\u0631", + "badges": [], + "url": "https://fa.wikiquote.org/wiki/%D8%B4%DB%8C%D8%B1" + }, + "fiu_vrowiki": { + "site": "fiu_vrowiki", + "title": "L\u00f5vi", + "badges": [], + "url": "https://fiu-vro.wikipedia.org/wiki/L%C3%B5vi" + }, + "fiwiki": { + "site": "fiwiki", + "title": "Leijona", + "badges": ["Q17437796"], + "url": "https://fi.wikipedia.org/wiki/Leijona" + }, + "fowiki": { + "site": "fowiki", + "title": "Leyva", + "badges": [], + "url": "https://fo.wikipedia.org/wiki/Leyva" + }, + "frrwiki": { + "site": "frrwiki", + "title": "L\u00f6\u00f6w", + "badges": [], + "url": "https://frr.wikipedia.org/wiki/L%C3%B6%C3%B6w" + }, + "frwiki": { + "site": "frwiki", + "title": "Lion", + "badges": ["Q17437796"], + "url": "https://fr.wikipedia.org/wiki/Lion" + }, + "frwikiquote": { + "site": "frwikiquote", + "title": "Lion", + "badges": [], + "url": "https://fr.wikiquote.org/wiki/Lion" + }, + "gagwiki": { + "site": "gagwiki", + "title": "Aslan", + "badges": [], + "url": "https://gag.wikipedia.org/wiki/Aslan" + }, + "gawiki": { + "site": "gawiki", + "title": "Leon", + "badges": [], + "url": "https://ga.wikipedia.org/wiki/Leon" + }, + "gdwiki": { + "site": "gdwiki", + "title": "Le\u00f2mhann", + "badges": [], + "url": "https://gd.wikipedia.org/wiki/Le%C3%B2mhann" + }, + "glwiki": { + "site": "glwiki", + "title": "Le\u00f3n", + "badges": [], + "url": "https://gl.wikipedia.org/wiki/Le%C3%B3n" + }, + "gnwiki": { + "site": "gnwiki", + "title": "Le\u00f5", + "badges": [], + "url": "https://gn.wikipedia.org/wiki/Le%C3%B5" + }, + "gotwiki": { + "site": "gotwiki", + "title": "\ud800\udf3b\ud800\udf39\ud800\udf45\ud800\udf30", + "badges": [], + "url": "https://got.wikipedia.org/wiki/%F0%90%8C%BB%F0%90%8C%B9%F0%90%8D%85%F0%90%8C%B0" + }, + "guwiki": { + "site": "guwiki", + "title": "\u0a8f\u0ab6\u0abf\u0aaf\u0abe\u0a87 \u0ab8\u0abf\u0a82\u0ab9", + "badges": [], + "url": "https://gu.wikipedia.org/wiki/%E0%AA%8F%E0%AA%B6%E0%AA%BF%E0%AA%AF%E0%AA%BE%E0%AA%87_%E0%AA%B8%E0%AA%BF%E0%AA%82%E0%AA%B9" + }, + "hakwiki": { + "site": "hakwiki", + "title": "S\u1e73\u0302-\u00e9", + "badges": [], + "url": "https://hak.wikipedia.org/wiki/S%E1%B9%B3%CC%82-%C3%A9" + }, + "hawiki": { + "site": "hawiki", + "title": "Zaki", + "badges": [], + "url": "https://ha.wikipedia.org/wiki/Zaki" + }, + "hawwiki": { + "site": "hawwiki", + "title": "Liona", + "badges": [], + "url": "https://haw.wikipedia.org/wiki/Liona" + }, + "hewiki": { + "site": "hewiki", + "title": "\u05d0\u05e8\u05d9\u05d4", + "badges": [], + "url": "https://he.wikipedia.org/wiki/%D7%90%D7%A8%D7%99%D7%94" + }, + "hewikiquote": { + "site": "hewikiquote", + "title": "\u05d0\u05e8\u05d9\u05d4", + "badges": [], + "url": "https://he.wikiquote.org/wiki/%D7%90%D7%A8%D7%99%D7%94" + }, + "hifwiki": { + "site": "hifwiki", + "title": "Ser", + "badges": [], + "url": "https://hif.wikipedia.org/wiki/Ser" + }, + "hiwiki": { + "site": "hiwiki", + "title": "\u0938\u093f\u0902\u0939 (\u092a\u0936\u0941)", + "badges": [], + "url": "https://hi.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9_(%E0%A4%AA%E0%A4%B6%E0%A5%81)" + }, + "hrwiki": { + "site": "hrwiki", + "title": "Lav", + "badges": [], + "url": "https://hr.wikipedia.org/wiki/Lav" + }, + "hrwikiquote": { + "site": "hrwikiquote", + "title": "Lav", + "badges": [], + "url": "https://hr.wikiquote.org/wiki/Lav" + }, + "hsbwiki": { + "site": "hsbwiki", + "title": "Law", + "badges": [], + "url": "https://hsb.wikipedia.org/wiki/Law" + }, + "htwiki": { + "site": "htwiki", + "title": "Lyon", + "badges": [], + "url": "https://ht.wikipedia.org/wiki/Lyon" + }, + "huwiki": { + "site": "huwiki", + "title": "Oroszl\u00e1n", + "badges": [], + "url": "https://hu.wikipedia.org/wiki/Oroszl%C3%A1n" + }, + "hywiki": { + "site": "hywiki", + "title": "\u0531\u057c\u0575\u0578\u0582\u056e", + "badges": [], + "url": "https://hy.wikipedia.org/wiki/%D4%B1%D5%BC%D5%B5%D5%B8%D6%82%D5%AE" + }, + "hywikiquote": { + "site": "hywikiquote", + "title": "\u0531\u057c\u0575\u0578\u0582\u056e", + "badges": [], + "url": "https://hy.wikiquote.org/wiki/%D4%B1%D5%BC%D5%B5%D5%B8%D6%82%D5%AE" + }, + "hywwiki": { + "site": "hywwiki", + "title": "\u0531\u057c\u056b\u0582\u056e", + "badges": [], + "url": "https://hyw.wikipedia.org/wiki/%D4%B1%D5%BC%D5%AB%D6%82%D5%AE" + }, + "iawiki": { + "site": "iawiki", + "title": "Leon", + "badges": [], + "url": "https://ia.wikipedia.org/wiki/Leon" + }, + "idwiki": { + "site": "idwiki", + "title": "Singa", + "badges": [], + "url": "https://id.wikipedia.org/wiki/Singa" + }, + "igwiki": { + "site": "igwiki", + "title": "Od\u00fam", + "badges": [], + "url": "https://ig.wikipedia.org/wiki/Od%C3%BAm" + }, + "ilowiki": { + "site": "ilowiki", + "title": "Leon", + "badges": [], + "url": "https://ilo.wikipedia.org/wiki/Leon" + }, + "inhwiki": { + "site": "inhwiki", + "title": "\u041b\u043e\u043c", + "badges": [], + "url": "https://inh.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BC" + }, + "iowiki": { + "site": "iowiki", + "title": "Leono (mamifero)", + "badges": [], + "url": "https://io.wikipedia.org/wiki/Leono_(mamifero)" + }, + "iswiki": { + "site": "iswiki", + "title": "Lj\u00f3n", + "badges": [], + "url": "https://is.wikipedia.org/wiki/Lj%C3%B3n" + }, + "itwiki": { + "site": "itwiki", + "title": "Panthera leo", + "badges": [], + "url": "https://it.wikipedia.org/wiki/Panthera_leo" + }, + "itwikiquote": { + "site": "itwikiquote", + "title": "Leone", + "badges": [], + "url": "https://it.wikiquote.org/wiki/Leone" + }, + "jawiki": { + "site": "jawiki", + "title": "\u30e9\u30a4\u30aa\u30f3", + "badges": [], + "url": "https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%82%AA%E3%83%B3" + }, + "jawikiquote": { + "site": "jawikiquote", + "title": "\u7345\u5b50", + "badges": [], + "url": "https://ja.wikiquote.org/wiki/%E7%8D%85%E5%AD%90" + }, + "jbowiki": { + "site": "jbowiki", + "title": "cinfo", + "badges": [], + "url": "https://jbo.wikipedia.org/wiki/cinfo" + }, + "jvwiki": { + "site": "jvwiki", + "title": "Singa", + "badges": [], + "url": "https://jv.wikipedia.org/wiki/Singa" + }, + "kabwiki": { + "site": "kabwiki", + "title": "Izem", + "badges": [], + "url": "https://kab.wikipedia.org/wiki/Izem" + }, + "kawiki": { + "site": "kawiki", + "title": "\u10da\u10dd\u10db\u10d8", + "badges": [], + "url": "https://ka.wikipedia.org/wiki/%E1%83%9A%E1%83%9D%E1%83%9B%E1%83%98" + }, + "kbdwiki": { + "site": "kbdwiki", + "title": "\u0425\u044c\u044d\u0449", + "badges": [], + "url": "https://kbd.wikipedia.org/wiki/%D0%A5%D1%8C%D1%8D%D1%89" + }, + "kbpwiki": { + "site": "kbpwiki", + "title": "T\u0254\u0254y\u028b\u028b", + "badges": [], + "url": "https://kbp.wikipedia.org/wiki/T%C9%94%C9%94y%CA%8B%CA%8B" + }, + "kgwiki": { + "site": "kgwiki", + "title": "Nkosi", + "badges": [], + "url": "https://kg.wikipedia.org/wiki/Nkosi" + }, + "kkwiki": { + "site": "kkwiki", + "title": "\u0410\u0440\u044b\u0441\u0442\u0430\u043d", + "badges": [], + "url": "https://kk.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D1%82%D0%B0%D0%BD" + }, + "knwiki": { + "site": "knwiki", + "title": "\u0cb8\u0cbf\u0c82\u0cb9", + "badges": [], + "url": "https://kn.wikipedia.org/wiki/%E0%B2%B8%E0%B2%BF%E0%B2%82%E0%B2%B9" + }, + "kowiki": { + "site": "kowiki", + "title": "\uc0ac\uc790", + "badges": [], + "url": "https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9E%90" + }, + "kowikiquote": { + "site": "kowikiquote", + "title": "\uc0ac\uc790", + "badges": [], + "url": "https://ko.wikiquote.org/wiki/%EC%82%AC%EC%9E%90" + }, + "kswiki": { + "site": "kswiki", + "title": "\u067e\u0627\u062f\u064e\u0631 \u0633\u0655\u06c1\u06c1", + "badges": [], + "url": "https://ks.wikipedia.org/wiki/%D9%BE%D8%A7%D8%AF%D9%8E%D8%B1_%D8%B3%D9%95%DB%81%DB%81" + }, + "kuwiki": { + "site": "kuwiki", + "title": "\u015e\u00ear", + "badges": [], + "url": "https://ku.wikipedia.org/wiki/%C5%9E%C3%AAr" + }, + "kwwiki": { + "site": "kwwiki", + "title": "Lew", + "badges": [], + "url": "https://kw.wikipedia.org/wiki/Lew" + }, + "kywiki": { + "site": "kywiki", + "title": "\u0410\u0440\u0441\u0442\u0430\u043d", + "badges": [], + "url": "https://ky.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D1%82%D0%B0%D0%BD" + }, + "lawiki": { + "site": "lawiki", + "title": "Leo", + "badges": [], + "url": "https://la.wikipedia.org/wiki/Leo" + }, + "lawikiquote": { + "site": "lawikiquote", + "title": "Leo", + "badges": [], + "url": "https://la.wikiquote.org/wiki/Leo" + }, + "lbewiki": { + "site": "lbewiki", + "title": "\u0410\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://lbe.wikipedia.org/wiki/%D0%90%D1%81%D0%BB%D0%B0%D0%BD" + }, + "lbwiki": { + "site": "lbwiki", + "title": "L\u00e9iw", + "badges": [], + "url": "https://lb.wikipedia.org/wiki/L%C3%A9iw" + }, + "lezwiki": { + "site": "lezwiki", + "title": "\u0410\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://lez.wikipedia.org/wiki/%D0%90%D1%81%D0%BB%D0%B0%D0%BD" + }, + "lfnwiki": { + "site": "lfnwiki", + "title": "Leon", + "badges": [], + "url": "https://lfn.wikipedia.org/wiki/Leon" + }, + "lijwiki": { + "site": "lijwiki", + "title": "Lion (bestia)", + "badges": [], + "url": "https://lij.wikipedia.org/wiki/Lion_(bestia)" + }, + "liwiki": { + "site": "liwiki", + "title": "Liew", + "badges": ["Q17437796"], + "url": "https://li.wikipedia.org/wiki/Liew" + }, + "lldwiki": { + "site": "lldwiki", + "title": "Lion", + "badges": [], + "url": "https://lld.wikipedia.org/wiki/Lion" + }, + "lmowiki": { + "site": "lmowiki", + "title": "Panthera leo", + "badges": [], + "url": "https://lmo.wikipedia.org/wiki/Panthera_leo" + }, + "lnwiki": { + "site": "lnwiki", + "title": "Nk\u0254\u0301si", + "badges": [], + "url": "https://ln.wikipedia.org/wiki/Nk%C9%94%CC%81si" + }, + "ltgwiki": { + "site": "ltgwiki", + "title": "\u013bovs", + "badges": [], + "url": "https://ltg.wikipedia.org/wiki/%C4%BBovs" + }, + "ltwiki": { + "site": "ltwiki", + "title": "Li\u016btas", + "badges": [], + "url": "https://lt.wikipedia.org/wiki/Li%C5%ABtas" + }, + "ltwikiquote": { + "site": "ltwikiquote", + "title": "Li\u016btas", + "badges": [], + "url": "https://lt.wikiquote.org/wiki/Li%C5%ABtas" + }, + "lvwiki": { + "site": "lvwiki", + "title": "Lauva", + "badges": ["Q17437796"], + "url": "https://lv.wikipedia.org/wiki/Lauva" + }, + "mdfwiki": { + "site": "mdfwiki", + "title": "\u041e\u0440\u043a\u0441\u043e\u0444\u0442\u0430", + "badges": ["Q17437796"], + "url": "https://mdf.wikipedia.org/wiki/%D0%9E%D1%80%D0%BA%D1%81%D0%BE%D1%84%D1%82%D0%B0" + }, + "mgwiki": { + "site": "mgwiki", + "title": "Liona", + "badges": [], + "url": "https://mg.wikipedia.org/wiki/Liona" + }, + "mhrwiki": { + "site": "mhrwiki", + "title": "\u0410\u0440\u044b\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://mhr.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD" + }, + "mkwiki": { + "site": "mkwiki", + "title": "\u041b\u0430\u0432", + "badges": [], + "url": "https://mk.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2" + }, + "mlwiki": { + "site": "mlwiki", + "title": "\u0d38\u0d3f\u0d02\u0d39\u0d02", + "badges": [], + "url": "https://ml.wikipedia.org/wiki/%E0%B4%B8%E0%B4%BF%E0%B4%82%E0%B4%B9%E0%B4%82" + }, + "mniwiki": { + "site": "mniwiki", + "title": "\uabc5\uabe3\uabe1\uabc1\uabe5", + "badges": [], + "url": "https://mni.wikipedia.org/wiki/%EA%AF%85%EA%AF%A3%EA%AF%A1%EA%AF%81%EA%AF%A5" + }, + "mnwiki": { + "site": "mnwiki", + "title": "\u0410\u0440\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://mn.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%BB%D0%B0%D0%BD" + }, + "mrjwiki": { + "site": "mrjwiki", + "title": "\u0410\u0440\u044b\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://mrj.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD" + }, + "mrwiki": { + "site": "mrwiki", + "title": "\u0938\u093f\u0902\u0939", + "badges": [], + "url": "https://mr.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9" + }, + "mswiki": { + "site": "mswiki", + "title": "Singa", + "badges": ["Q17437796"], + "url": "https://ms.wikipedia.org/wiki/Singa" + }, + "mtwiki": { + "site": "mtwiki", + "title": "Iljun", + "badges": [], + "url": "https://mt.wikipedia.org/wiki/Iljun" + }, + "mywiki": { + "site": "mywiki", + "title": "\u1001\u103c\u1004\u103a\u1039\u101e\u1031\u1037", + "badges": [], + "url": "https://my.wikipedia.org/wiki/%E1%80%81%E1%80%BC%E1%80%84%E1%80%BA%E1%80%B9%E1%80%9E%E1%80%B1%E1%80%B7" + }, + "newiki": { + "site": "newiki", + "title": "\u0938\u093f\u0902\u0939", + "badges": [], + "url": "https://ne.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9" + }, + "newwiki": { + "site": "newwiki", + "title": "\u0938\u093f\u0902\u0939", + "badges": [], + "url": "https://new.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9" + }, + "nlwiki": { + "site": "nlwiki", + "title": "Leeuw (dier)", + "badges": [], + "url": "https://nl.wikipedia.org/wiki/Leeuw_(dier)" + }, + "nnwiki": { + "site": "nnwiki", + "title": "L\u00f8ve", + "badges": [], + "url": "https://nn.wikipedia.org/wiki/L%C3%B8ve" + }, + "nowiki": { + "site": "nowiki", + "title": "L\u00f8ve", + "badges": [], + "url": "https://no.wikipedia.org/wiki/L%C3%B8ve" + }, + "nrmwiki": { + "site": "nrmwiki", + "title": "Lion", + "badges": [], + "url": "https://nrm.wikipedia.org/wiki/Lion" + }, + "nsowiki": { + "site": "nsowiki", + "title": "Tau", + "badges": [], + "url": "https://nso.wikipedia.org/wiki/Tau" + }, + "nvwiki": { + "site": "nvwiki", + "title": "N\u00e1shd\u00f3\u00edtsoh bitsiij\u012f\u02bc dadit\u0142\u02bcoo\u00edg\u00ed\u00ed", + "badges": [], + "url": "https://nv.wikipedia.org/wiki/N%C3%A1shd%C3%B3%C3%ADtsoh_bitsiij%C4%AF%CA%BC_dadit%C5%82%CA%BCoo%C3%ADg%C3%AD%C3%AD" + }, + "ocwiki": { + "site": "ocwiki", + "title": "Panthera leo", + "badges": [], + "url": "https://oc.wikipedia.org/wiki/Panthera_leo" + }, + "orwiki": { + "site": "orwiki", + "title": "\u0b38\u0b3f\u0b02\u0b39", + "badges": [], + "url": "https://or.wikipedia.org/wiki/%E0%AC%B8%E0%AC%BF%E0%AC%82%E0%AC%B9" + }, + "oswiki": { + "site": "oswiki", + "title": "\u0426\u043e\u043c\u0430\u0445\u044a", + "badges": [], + "url": "https://os.wikipedia.org/wiki/%D0%A6%D0%BE%D0%BC%D0%B0%D1%85%D1%8A" + }, + "pamwiki": { + "site": "pamwiki", + "title": "Leon (animal)", + "badges": ["Q17437796"], + "url": "https://pam.wikipedia.org/wiki/Leon_(animal)" + }, + "pawiki": { + "site": "pawiki", + "title": "\u0a2c\u0a71\u0a2c\u0a30 \u0a38\u0a3c\u0a47\u0a30", + "badges": [], + "url": "https://pa.wikipedia.org/wiki/%E0%A8%AC%E0%A9%B1%E0%A8%AC%E0%A8%B0_%E0%A8%B8%E0%A8%BC%E0%A9%87%E0%A8%B0" + }, + "pcdwiki": { + "site": "pcdwiki", + "title": "Lion", + "badges": [], + "url": "https://pcd.wikipedia.org/wiki/Lion" + }, + "plwiki": { + "site": "plwiki", + "title": "Lew afryka\u0144ski", + "badges": ["Q17437796"], + "url": "https://pl.wikipedia.org/wiki/Lew_afryka%C5%84ski" + }, + "plwikiquote": { + "site": "plwikiquote", + "title": "Lew", + "badges": [], + "url": "https://pl.wikiquote.org/wiki/Lew" + }, + "pmswiki": { + "site": "pmswiki", + "title": "Lion", + "badges": [], + "url": "https://pms.wikipedia.org/wiki/Lion" + }, + "pnbwiki": { + "site": "pnbwiki", + "title": "\u0628\u0628\u0631 \u0634\u06cc\u0631", + "badges": [], + "url": "https://pnb.wikipedia.org/wiki/%D8%A8%D8%A8%D8%B1_%D8%B4%DB%8C%D8%B1" + }, + "pswiki": { + "site": "pswiki", + "title": "\u0632\u0645\u0631\u06cc", + "badges": [], + "url": "https://ps.wikipedia.org/wiki/%D8%B2%D9%85%D8%B1%DB%8C" + }, + "ptwiki": { + "site": "ptwiki", + "title": "Le\u00e3o", + "badges": [], + "url": "https://pt.wikipedia.org/wiki/Le%C3%A3o" + }, + "ptwikiquote": { + "site": "ptwikiquote", + "title": "Le\u00e3o", + "badges": [], + "url": "https://pt.wikiquote.org/wiki/Le%C3%A3o" + }, + "quwiki": { + "site": "quwiki", + "title": "Liyun", + "badges": [], + "url": "https://qu.wikipedia.org/wiki/Liyun" + }, + "rmwiki": { + "site": "rmwiki", + "title": "Liun", + "badges": [], + "url": "https://rm.wikipedia.org/wiki/Liun" + }, + "rnwiki": { + "site": "rnwiki", + "title": "Intare", + "badges": [], + "url": "https://rn.wikipedia.org/wiki/Intare" + }, + "rowiki": { + "site": "rowiki", + "title": "Leu", + "badges": [], + "url": "https://ro.wikipedia.org/wiki/Leu" + }, + "ruewiki": { + "site": "ruewiki", + "title": "\u041b\u0435\u0432", + "badges": [], + "url": "https://rue.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B2" + }, + "ruwiki": { + "site": "ruwiki", + "title": "\u041b\u0435\u0432", + "badges": ["Q17437798"], + "url": "https://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B2" + }, + "ruwikinews": { + "site": "ruwikinews", + "title": "\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f:\u041b\u044c\u0432\u044b", + "badges": [], + "url": "https://ru.wikinews.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9B%D1%8C%D0%B2%D1%8B" + }, + "rwwiki": { + "site": "rwwiki", + "title": "Intare", + "badges": [], + "url": "https://rw.wikipedia.org/wiki/Intare" + }, + "sahwiki": { + "site": "sahwiki", + "title": "\u0425\u0430\u0445\u0430\u0439", + "badges": [], + "url": "https://sah.wikipedia.org/wiki/%D0%A5%D0%B0%D1%85%D0%B0%D0%B9" + }, + "satwiki": { + "site": "satwiki", + "title": "\u1c61\u1c5f\u1c74\u1c5f\u1c60\u1c69\u1c5e", + "badges": [], + "url": "https://sat.wikipedia.org/wiki/%E1%B1%A1%E1%B1%9F%E1%B1%B4%E1%B1%9F%E1%B1%A0%E1%B1%A9%E1%B1%9E" + }, + "sawiki": { + "site": "sawiki", + "title": "\u0938\u093f\u0902\u0939\u0903 \u092a\u0936\u0941\u0903", + "badges": [], + "url": "https://sa.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9%E0%A4%83_%E0%A4%AA%E0%A4%B6%E0%A5%81%E0%A4%83" + }, + "scnwiki": { + "site": "scnwiki", + "title": "Panthera leo", + "badges": [], + "url": "https://scn.wikipedia.org/wiki/Panthera_leo" + }, + "scowiki": { + "site": "scowiki", + "title": "Lion", + "badges": ["Q17437796"], + "url": "https://sco.wikipedia.org/wiki/Lion" + }, + "sdwiki": { + "site": "sdwiki", + "title": "\u0628\u0628\u0631 \u0634\u064a\u0646\u0647\u0646", + "badges": [], + "url": "https://sd.wikipedia.org/wiki/%D8%A8%D8%A8%D8%B1_%D8%B4%D9%8A%D9%86%D9%87%D9%86" + }, + "sewiki": { + "site": "sewiki", + "title": "Ledjon", + "badges": [], + "url": "https://se.wikipedia.org/wiki/Ledjon" + }, + "shiwiki": { + "site": "shiwiki", + "title": "Agrzam", + "badges": [], + "url": "https://shi.wikipedia.org/wiki/Agrzam" + }, + "shnwiki": { + "site": "shnwiki", + "title": "\u101e\u1062\u1004\u103a\u1087\u101e\u102e\u1088", + "badges": [], + "url": "https://shn.wikipedia.org/wiki/%E1%80%9E%E1%81%A2%E1%80%84%E1%80%BA%E1%82%87%E1%80%9E%E1%80%AE%E1%82%88" + }, + "shwiki": { + "site": "shwiki", + "title": "Lav", + "badges": [], + "url": "https://sh.wikipedia.org/wiki/Lav" + }, + "simplewiki": { + "site": "simplewiki", + "title": "Lion", + "badges": [], + "url": "https://simple.wikipedia.org/wiki/Lion" + }, + "siwiki": { + "site": "siwiki", + "title": "\u0dc3\u0dd2\u0d82\u0dc4\u0dba\u0dcf", + "badges": [], + "url": "https://si.wikipedia.org/wiki/%E0%B7%83%E0%B7%92%E0%B6%82%E0%B7%84%E0%B6%BA%E0%B7%8F" + }, + "skwiki": { + "site": "skwiki", + "title": "Lev p\u00fa\u0161\u0165ov\u00fd", + "badges": [], + "url": "https://sk.wikipedia.org/wiki/Lev_p%C3%BA%C5%A1%C5%A5ov%C3%BD" + }, + "skwikiquote": { + "site": "skwikiquote", + "title": "Lev", + "badges": [], + "url": "https://sk.wikiquote.org/wiki/Lev" + }, + "slwiki": { + "site": "slwiki", + "title": "Lev", + "badges": [], + "url": "https://sl.wikipedia.org/wiki/Lev" + }, + "smwiki": { + "site": "smwiki", + "title": "Leona", + "badges": [], + "url": "https://sm.wikipedia.org/wiki/Leona" + }, + "snwiki": { + "site": "snwiki", + "title": "Shumba", + "badges": [], + "url": "https://sn.wikipedia.org/wiki/Shumba" + }, + "sowiki": { + "site": "sowiki", + "title": "Libaax", + "badges": [], + "url": "https://so.wikipedia.org/wiki/Libaax" + }, + "specieswiki": { + "site": "specieswiki", + "title": "Panthera leo", + "badges": [], + "url": "https://species.wikimedia.org/wiki/Panthera_leo" + }, + "sqwiki": { + "site": "sqwiki", + "title": "Luani", + "badges": [], + "url": "https://sq.wikipedia.org/wiki/Luani" + }, + "srwiki": { + "site": "srwiki", + "title": "\u041b\u0430\u0432", + "badges": [], + "url": "https://sr.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2" + }, + "sswiki": { + "site": "sswiki", + "title": "Libhubesi", + "badges": [], + "url": "https://ss.wikipedia.org/wiki/Libhubesi" + }, + "stqwiki": { + "site": "stqwiki", + "title": "Leeuwe", + "badges": [], + "url": "https://stq.wikipedia.org/wiki/Leeuwe" + }, + "stwiki": { + "site": "stwiki", + "title": "Tau", + "badges": [], + "url": "https://st.wikipedia.org/wiki/Tau" + }, + "suwiki": { + "site": "suwiki", + "title": "Singa", + "badges": [], + "url": "https://su.wikipedia.org/wiki/Singa" + }, + "svwiki": { + "site": "svwiki", + "title": "Lejon", + "badges": [], + "url": "https://sv.wikipedia.org/wiki/Lejon" + }, + "swwiki": { + "site": "swwiki", + "title": "Simba", + "badges": [], + "url": "https://sw.wikipedia.org/wiki/Simba" + }, + "szlwiki": { + "site": "szlwiki", + "title": "Lew", + "badges": [], + "url": "https://szl.wikipedia.org/wiki/Lew" + }, + "tawiki": { + "site": "tawiki", + "title": "\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0bae\u0bcd", + "badges": [], + "url": "https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%BF%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%8D" + }, + "tcywiki": { + "site": "tcywiki", + "title": "\u0cb8\u0cbf\u0c82\u0cb9", + "badges": [], + "url": "https://tcy.wikipedia.org/wiki/%E0%B2%B8%E0%B2%BF%E0%B2%82%E0%B2%B9" + }, + "tewiki": { + "site": "tewiki", + "title": "\u0c38\u0c3f\u0c02\u0c39\u0c02", + "badges": [], + "url": "https://te.wikipedia.org/wiki/%E0%B0%B8%E0%B0%BF%E0%B0%82%E0%B0%B9%E0%B0%82" + }, + "tgwiki": { + "site": "tgwiki", + "title": "\u0428\u0435\u0440", + "badges": [], + "url": "https://tg.wikipedia.org/wiki/%D0%A8%D0%B5%D1%80" + }, + "thwiki": { + "site": "thwiki", + "title": "\u0e2a\u0e34\u0e07\u0e42\u0e15", + "badges": [], + "url": "https://th.wikipedia.org/wiki/%E0%B8%AA%E0%B8%B4%E0%B8%87%E0%B9%82%E0%B8%95" + }, + "tiwiki": { + "site": "tiwiki", + "title": "\u12a3\u1295\u1260\u1233", + "badges": [], + "url": "https://ti.wikipedia.org/wiki/%E1%8A%A3%E1%8A%95%E1%89%A0%E1%88%B3" + }, + "tkwiki": { + "site": "tkwiki", + "title": "\u00ddolbars", + "badges": [], + "url": "https://tk.wikipedia.org/wiki/%C3%9Dolbars" + }, + "tlwiki": { + "site": "tlwiki", + "title": "Leon", + "badges": [], + "url": "https://tl.wikipedia.org/wiki/Leon" + }, + "trwiki": { + "site": "trwiki", + "title": "Aslan", + "badges": [], + "url": "https://tr.wikipedia.org/wiki/Aslan" + }, + "ttwiki": { + "site": "ttwiki", + "title": "\u0410\u0440\u044b\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://tt.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD" + }, + "tumwiki": { + "site": "tumwiki", + "title": "Nkhalamu", + "badges": [], + "url": "https://tum.wikipedia.org/wiki/Nkhalamu" + }, + "udmwiki": { + "site": "udmwiki", + "title": "\u0410\u0440\u044b\u0441\u043b\u0430\u043d", + "badges": [], + "url": "https://udm.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD" + }, + "ugwiki": { + "site": "ugwiki", + "title": "\u0634\u0649\u0631", + "badges": [], + "url": "https://ug.wikipedia.org/wiki/%D8%B4%D9%89%D8%B1" + }, + "ukwiki": { + "site": "ukwiki", + "title": "\u041b\u0435\u0432", + "badges": [], + "url": "https://uk.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B2" + }, + "ukwikiquote": { + "site": "ukwikiquote", + "title": "\u041b\u0435\u0432", + "badges": [], + "url": "https://uk.wikiquote.org/wiki/%D0%9B%D0%B5%D0%B2" + }, + "urwiki": { + "site": "urwiki", + "title": "\u0628\u0628\u0631 \u0634\u06cc\u0631", + "badges": ["Q17437796"], + "url": "https://ur.wikipedia.org/wiki/%D8%A8%D8%A8%D8%B1_%D8%B4%DB%8C%D8%B1" + }, + "uzwiki": { + "site": "uzwiki", + "title": "Arslon", + "badges": [], + "url": "https://uz.wikipedia.org/wiki/Arslon" + }, + "vecwiki": { + "site": "vecwiki", + "title": "Leon", + "badges": [], + "url": "https://vec.wikipedia.org/wiki/Leon" + }, + "vepwiki": { + "site": "vepwiki", + "title": "Lev", + "badges": [], + "url": "https://vep.wikipedia.org/wiki/Lev" + }, + "viwiki": { + "site": "viwiki", + "title": "S\u01b0 t\u1eed", + "badges": [], + "url": "https://vi.wikipedia.org/wiki/S%C6%B0_t%E1%BB%AD" + }, + "vlswiki": { + "site": "vlswiki", + "title": "L\u00eaeuw (b\u00eaeste)", + "badges": [], + "url": "https://vls.wikipedia.org/wiki/L%C3%AAeuw_(b%C3%AAeste)" + }, + "warwiki": { + "site": "warwiki", + "title": "Leon", + "badges": [], + "url": "https://war.wikipedia.org/wiki/Leon" + }, + "wowiki": { + "site": "wowiki", + "title": "Gaynde", + "badges": [], + "url": "https://wo.wikipedia.org/wiki/Gaynde" + }, + "wuuwiki": { + "site": "wuuwiki", + "title": "\u72ee", + "badges": [], + "url": "https://wuu.wikipedia.org/wiki/%E7%8B%AE" + }, + "xalwiki": { + "site": "xalwiki", + "title": "\u0410\u0440\u0441\u043b\u04a3", + "badges": [], + "url": "https://xal.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%BB%D2%A3" + }, + "xhwiki": { + "site": "xhwiki", + "title": "Ingonyama", + "badges": [], + "url": "https://xh.wikipedia.org/wiki/Ingonyama" + }, + "xmfwiki": { + "site": "xmfwiki", + "title": "\u10dc\u10ef\u10d8\u10da\u10dd", + "badges": [], + "url": "https://xmf.wikipedia.org/wiki/%E1%83%9C%E1%83%AF%E1%83%98%E1%83%9A%E1%83%9D" + }, + "yiwiki": { + "site": "yiwiki", + "title": "\u05dc\u05d9\u05d9\u05d1", + "badges": [], + "url": "https://yi.wikipedia.org/wiki/%D7%9C%D7%99%D7%99%D7%91" + }, + "yowiki": { + "site": "yowiki", + "title": "K\u00ecn\u00ec\u00fan", + "badges": [], + "url": "https://yo.wikipedia.org/wiki/K%C3%ACn%C3%AC%C3%BAn" + }, + "zawiki": { + "site": "zawiki", + "title": "Saeceij", + "badges": [], + "url": "https://za.wikipedia.org/wiki/Saeceij" + }, + "zh_min_nanwiki": { + "site": "zh_min_nanwiki", + "title": "Sai", + "badges": [], + "url": "https://zh-min-nan.wikipedia.org/wiki/Sai" + }, + "zh_yuewiki": { + "site": "zh_yuewiki", + "title": "\u7345\u5b50", + "badges": ["Q17437796"], + "url": "https://zh-yue.wikipedia.org/wiki/%E7%8D%85%E5%AD%90" + }, + "zhwiki": { + "site": "zhwiki", + "title": "\u72ee", + "badges": [], + "url": "https://zh.wikipedia.org/wiki/%E7%8B%AE" + }, + "zuwiki": { + "site": "zuwiki", + "title": "Ibhubesi", + "badges": [], + "url": "https://zu.wikipedia.org/wiki/Ibhubesi" + } + } + } + } + } + constructor() { super("Wikidata", [ ["Download Lion", async () => { Utils.injectJsonDownloadForTests( - "https://www.wikidata.org/wiki/Special:EntityData/Q140.json" , + "https://www.wikidata.org/wiki/Special:EntityData/Q140.json", WikidataSpecTest.Q140 ) @@ -1884,7 +9133,7 @@ export default class WikidataSpecTest extends T { }], ["Extract key from a lexeme", () => { Utils.injectJsonDownloadForTests( - "https://www.wikidata.org/wiki/Special:EntityData/L614072.json" , + "https://www.wikidata.org/wiki/Special:EntityData/L614072.json", { "entities": { "L614072": { @@ -1920,7 +9169,7 @@ export default class WikidataSpecTest extends T { const key = Wikidata.ExtractKey("https://www.wikidata.org/wiki/Lexeme:L614072") T.equals("L614072", key) - + }], ["Download a lexeme", async () => { @@ -1928,10 +9177,7 @@ export default class WikidataSpecTest extends T { T.isTrue(response !== undefined, "Response is undefined") }] - + ]); } - - - private static Q140 = {"entities":{"Q140":{"pageid":275,"ns":0,"title":"Q140","lastrevid":1503881580,"modified":"2021-09-26T19:53:55Z","type":"item","id":"Q140","labels":{"fr":{"language":"fr","value":"lion"},"it":{"language":"it","value":"leone"},"nb":{"language":"nb","value":"l\u00f8ve"},"ru":{"language":"ru","value":"\u043b\u0435\u0432"},"de":{"language":"de","value":"L\u00f6we"},"es":{"language":"es","value":"le\u00f3n"},"nn":{"language":"nn","value":"l\u00f8ve"},"da":{"language":"da","value":"l\u00f8ve"},"af":{"language":"af","value":"leeu"},"ar":{"language":"ar","value":"\u0623\u0633\u062f"},"bg":{"language":"bg","value":"\u043b\u044a\u0432"},"bn":{"language":"bn","value":"\u09b8\u09bf\u0982\u09b9"},"br":{"language":"br","value":"leon"},"bs":{"language":"bs","value":"lav"},"ca":{"language":"ca","value":"lle\u00f3"},"cs":{"language":"cs","value":"lev"},"el":{"language":"el","value":"\u03bb\u03b9\u03bf\u03bd\u03c4\u03ac\u03c1\u03b9"},"fi":{"language":"fi","value":"leijona"},"ga":{"language":"ga","value":"leon"},"gl":{"language":"gl","value":"Le\u00f3n"},"gu":{"language":"gu","value":"\u0ab8\u0abf\u0a82\u0ab9"},"he":{"language":"he","value":"\u05d0\u05e8\u05d9\u05d4"},"hi":{"language":"hi","value":"\u0938\u093f\u0902\u0939"},"hu":{"language":"hu","value":"oroszl\u00e1n"},"id":{"language":"id","value":"Singa"},"ja":{"language":"ja","value":"\u30e9\u30a4\u30aa\u30f3"},"ko":{"language":"ko","value":"\uc0ac\uc790"},"mk":{"language":"mk","value":"\u043b\u0430\u0432"},"ml":{"language":"ml","value":"\u0d38\u0d3f\u0d02\u0d39\u0d02"},"mr":{"language":"mr","value":"\u0938\u093f\u0902\u0939"},"my":{"language":"my","value":"\u1001\u103c\u1004\u103a\u1039\u101e\u1031\u1037"},"ne":{"language":"ne","value":"\u0938\u093f\u0902\u0939"},"nl":{"language":"nl","value":"leeuw"},"pl":{"language":"pl","value":"lew afryka\u0144ski"},"pt":{"language":"pt","value":"le\u00e3o"},"pt-br":{"language":"pt-br","value":"le\u00e3o"},"scn":{"language":"scn","value":"liuni"},"sq":{"language":"sq","value":"Luani"},"sr":{"language":"sr","value":"\u043b\u0430\u0432"},"sw":{"language":"sw","value":"simba"},"ta":{"language":"ta","value":"\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0bae\u0bcd"},"te":{"language":"te","value":"\u0c38\u0c3f\u0c02\u0c39\u0c02"},"th":{"language":"th","value":"\u0e2a\u0e34\u0e07\u0e42\u0e15"},"tr":{"language":"tr","value":"aslan"},"uk":{"language":"uk","value":"\u043b\u0435\u0432"},"vi":{"language":"vi","value":"s\u01b0 t\u1eed"},"zh":{"language":"zh","value":"\u7345\u5b50"},"sco":{"language":"sco","value":"lion"},"zh-hant":{"language":"zh-hant","value":"\u7345\u5b50"},"fa":{"language":"fa","value":"\u0634\u06cc\u0631"},"zh-hans":{"language":"zh-hans","value":"\u72ee\u5b50"},"ee":{"language":"ee","value":"Dzata"},"ilo":{"language":"ilo","value":"leon"},"ksh":{"language":"ksh","value":"L\u00f6hv"},"zh-hk":{"language":"zh-hk","value":"\u7345\u5b50"},"as":{"language":"as","value":"\u09b8\u09bf\u0982\u09b9"},"zh-cn":{"language":"zh-cn","value":"\u72ee\u5b50"},"zh-mo":{"language":"zh-mo","value":"\u7345\u5b50"},"zh-my":{"language":"zh-my","value":"\u72ee\u5b50"},"zh-sg":{"language":"zh-sg","value":"\u72ee\u5b50"},"zh-tw":{"language":"zh-tw","value":"\u7345\u5b50"},"ast":{"language":"ast","value":"lle\u00f3n"},"sat":{"language":"sat","value":"\u1c61\u1c5f\u1c74\u1c5f\u1c60\u1c69\u1c5e"},"bho":{"language":"bho","value":"\u0938\u093f\u0902\u0939"},"en":{"language":"en","value":"lion"},"ks":{"language":"ks","value":"\u067e\u0627\u062f\u064e\u0631 \u0633\u0655\u06c1\u06c1"},"be-tarask":{"language":"be-tarask","value":"\u043b\u0435\u045e"},"nan":{"language":"nan","value":"Sai"},"la":{"language":"la","value":"leo"},"en-ca":{"language":"en-ca","value":"Lion"},"en-gb":{"language":"en-gb","value":"lion"},"ab":{"language":"ab","value":"\u0410\u043b\u044b\u043c"},"am":{"language":"am","value":"\u12a0\u1295\u1260\u1233"},"an":{"language":"an","value":"Panthera leo"},"ang":{"language":"ang","value":"L\u0113o"},"arc":{"language":"arc","value":"\u0710\u072a\u071d\u0710"},"arz":{"language":"arz","value":"\u0633\u0628\u0639"},"av":{"language":"av","value":"\u0413\u044a\u0430\u043b\u0431\u0430\u0446\u04c0"},"az":{"language":"az","value":"\u015eir"},"ba":{"language":"ba","value":"\u0410\u0440\u044b\u04ab\u043b\u0430\u043d"},"be":{"language":"be","value":"\u043b\u0435\u045e"},"bo":{"language":"bo","value":"\u0f66\u0f7a\u0f44\u0f0b\u0f42\u0f7a\u0f0d"},"bpy":{"language":"bpy","value":"\u09a8\u0982\u09b8\u09be"},"bxr":{"language":"bxr","value":"\u0410\u0440\u0441\u0430\u043b\u0430\u043d"},"ce":{"language":"ce","value":"\u041b\u043e\u043c"},"chr":{"language":"chr","value":"\u13e2\u13d3\u13e5 \u13a4\u13cd\u13c6\u13b4\u13c2"},"chy":{"language":"chy","value":"P\u00e9hpe'\u00e9nan\u00f3se'hame"},"ckb":{"language":"ckb","value":"\u0634\u06ce\u0631"},"co":{"language":"co","value":"Lionu"},"csb":{"language":"csb","value":"Lew"},"cu":{"language":"cu","value":"\u041b\u044c\u0432\u044a"},"cv":{"language":"cv","value":"\u0410\u0440\u0103\u0441\u043b\u0430\u043d"},"cy":{"language":"cy","value":"Llew"},"dsb":{"language":"dsb","value":"law"},"eo":{"language":"eo","value":"leono"},"et":{"language":"et","value":"l\u00f5vi"},"eu":{"language":"eu","value":"lehoi"},"fo":{"language":"fo","value":"leyvur"},"frr":{"language":"frr","value":"l\u00f6\u00f6w"},"gag":{"language":"gag","value":"aslan"},"gd":{"language":"gd","value":"le\u00f2mhann"},"gn":{"language":"gn","value":"Le\u00f5"},"got":{"language":"got","value":"\ud800\udf3b\ud800\udf39\ud800\udf45\ud800\udf30/Liwa"},"ha":{"language":"ha","value":"Zaki"},"hak":{"language":"hak","value":"S\u1e73\u0302-\u00e9"},"haw":{"language":"haw","value":"Liona"},"hif":{"language":"hif","value":"Ser"},"hr":{"language":"hr","value":"lav"},"hsb":{"language":"hsb","value":"law"},"ht":{"language":"ht","value":"Lyon"},"hy":{"language":"hy","value":"\u0561\u057c\u0575\u0578\u0582\u056e"},"ia":{"language":"ia","value":"Panthera leo"},"ig":{"language":"ig","value":"Od\u00fam"},"io":{"language":"io","value":"leono"},"is":{"language":"is","value":"lj\u00f3n"},"jbo":{"language":"jbo","value":"cinfo"},"jv":{"language":"jv","value":"Singa"},"ka":{"language":"ka","value":"\u10da\u10dd\u10db\u10d8"},"kab":{"language":"kab","value":"Izem"},"kbd":{"language":"kbd","value":"\u0425\u044c\u044d\u0449"},"kg":{"language":"kg","value":"Nkosi"},"kk":{"language":"kk","value":"\u0410\u0440\u044b\u0441\u0442\u0430\u043d"},"kn":{"language":"kn","value":"\u0cb8\u0cbf\u0c82\u0cb9"},"ku":{"language":"ku","value":"\u015e\u00ear"},"lb":{"language":"lb","value":"L\u00e9iw"},"lbe":{"language":"lbe","value":"\u0410\u0441\u043b\u0430\u043d"},"lez":{"language":"lez","value":"\u0410\u0441\u043b\u0430\u043d"},"li":{"language":"li","value":"Liew"},"lij":{"language":"lij","value":"Lion"},"ln":{"language":"ln","value":"Nk\u0254\u0301si"},"lt":{"language":"lt","value":"li\u016btas"},"ltg":{"language":"ltg","value":"\u013bovs"},"lv":{"language":"lv","value":"lauva"},"mdf":{"language":"mdf","value":"\u041e\u0440\u043a\u0441\u043e\u0444\u0442\u0430"},"mhr":{"language":"mhr","value":"\u0410\u0440\u044b\u0441\u043b\u0430\u043d"},"mn":{"language":"mn","value":"\u0410\u0440\u0441\u043b\u0430\u043d"},"mrj":{"language":"mrj","value":"\u0410\u0440\u044b\u0441\u043b\u0430\u043d"},"ms":{"language":"ms","value":"Singa"},"mt":{"language":"mt","value":"iljun"},"nah":{"language":"nah","value":"Cu\u0101miztli"},"nrm":{"language":"nrm","value":"lion"},"su":{"language":"su","value":"Singa"},"de-ch":{"language":"de-ch","value":"L\u00f6we"},"ky":{"language":"ky","value":"\u0410\u0440\u0441\u0442\u0430\u043d"},"lmo":{"language":"lmo","value":"Panthera leo"},"ceb":{"language":"ceb","value":"Panthera leo"},"diq":{"language":"diq","value":"\u015e\u00ear"},"new":{"language":"new","value":"\u0938\u093f\u0902\u0939"},"nds":{"language":"nds","value":"L\u00f6\u00f6w"},"ak":{"language":"ak","value":"Gyata"},"cdo":{"language":"cdo","value":"S\u0103i"},"ady":{"language":"ady","value":"\u0410\u0441\u043b\u044a\u0430\u043d"},"azb":{"language":"azb","value":"\u0622\u0633\u0644\u0627\u0646"},"lfn":{"language":"lfn","value":"Leon"},"kbp":{"language":"kbp","value":"T\u0254\u0254y\u028b\u028b"},"gsw":{"language":"gsw","value":"L\u00f6we"},"din":{"language":"din","value":"K\u00f6r"},"inh":{"language":"inh","value":"\u041b\u043e\u043c"},"bm":{"language":"bm","value":"Waraba"},"hyw":{"language":"hyw","value":"\u0531\u057c\u056b\u0582\u056e"},"nds-nl":{"language":"nds-nl","value":"leeuw"},"kw":{"language":"kw","value":"Lew"},"ext":{"language":"ext","value":"Le\u00f3n"},"bcl":{"language":"bcl","value":"Leon"},"mg":{"language":"mg","value":"Liona"},"lld":{"language":"lld","value":"Lion"},"lzh":{"language":"lzh","value":"\u7345"},"ary":{"language":"ary","value":"\u0633\u0628\u0639"},"sv":{"language":"sv","value":"lejon"},"nso":{"language":"nso","value":"Tau"},"nv":{"language":"nv","value":"N\u00e1shd\u00f3\u00edtsoh bitsiij\u012f\u02bc dadit\u0142\u02bcoo\u00edg\u00ed\u00ed"},"oc":{"language":"oc","value":"panthera leo"},"or":{"language":"or","value":"\u0b38\u0b3f\u0b02\u0b39"},"os":{"language":"os","value":"\u0426\u043e\u043c\u0430\u0445\u044a"},"pa":{"language":"pa","value":"\u0a38\u0a3c\u0a47\u0a30"},"pam":{"language":"pam","value":"Leon"},"pcd":{"language":"pcd","value":"Lion"},"pms":{"language":"pms","value":"Lion"},"pnb":{"language":"pnb","value":"\u0628\u0628\u0631 \u0634\u06cc\u0631"},"ps":{"language":"ps","value":"\u0632\u0645\u0631\u06cc"},"qu":{"language":"qu","value":"Liyun"},"rn":{"language":"rn","value":"Intare"},"ro":{"language":"ro","value":"Leul"},"sl":{"language":"sl","value":"lev"},"sn":{"language":"sn","value":"Shumba"},"so":{"language":"so","value":"Libaax"},"ss":{"language":"ss","value":"Libubesi"},"st":{"language":"st","value":"Tau"},"stq":{"language":"stq","value":"Leeuwe"},"sr-ec":{"language":"sr-ec","value":"\u043b\u0430\u0432"},"sr-el":{"language":"sr-el","value":"lav"},"rm":{"language":"rm","value":"Liun"},"sm":{"language":"sm","value":"Leona"},"tcy":{"language":"tcy","value":"\u0cb8\u0cbf\u0cae\u0ccd\u0cae"},"szl":{"language":"szl","value":"Lew"},"rue":{"language":"rue","value":"\u041b\u0435\u0432"},"rw":{"language":"rw","value":"Intare"},"sah":{"language":"sah","value":"\u0425\u0430\u0445\u0430\u0439"},"sh":{"language":"sh","value":"Lav"},"sk":{"language":"sk","value":"lev p\u00fa\u0161\u0165ov\u00fd"},"tg":{"language":"tg","value":"\u0428\u0435\u0440"},"ti":{"language":"ti","value":"\u12a3\u1295\u1260\u1233"},"tl":{"language":"tl","value":"Leon"},"tum":{"language":"tum","value":"Nkhalamu"},"udm":{"language":"udm","value":"\u0410\u0440\u044b\u0441\u043b\u0430\u043d"},"ug":{"language":"ug","value":"\u0634\u0649\u0631"},"ur":{"language":"ur","value":"\u0628\u0628\u0631"},"vec":{"language":"vec","value":"Leon"},"vep":{"language":"vep","value":"lev"},"vls":{"language":"vls","value":"l\u00eaeuw"},"war":{"language":"war","value":"leon"},"wo":{"language":"wo","value":"gaynde"},"xal":{"language":"xal","value":"\u0410\u0440\u0441\u043b\u04a3"},"xmf":{"language":"xmf","value":"\u10dc\u10ef\u10d8\u10da\u10dd"},"yi":{"language":"yi","value":"\u05dc\u05d9\u05d9\u05d1"},"yo":{"language":"yo","value":"K\u00ecn\u00ec\u00fan"},"yue":{"language":"yue","value":"\u7345\u5b50"},"zu":{"language":"zu","value":"ibhubesi"},"tk":{"language":"tk","value":"\u00ddolbars"},"tt":{"language":"tt","value":"\u0430\u0440\u044b\u0441\u043b\u0430\u043d"},"uz":{"language":"uz","value":"Arslon"},"se":{"language":"se","value":"Ledjon"},"si":{"language":"si","value":"\u0dc3\u0dd2\u0d82\u0dc4\u0dba\u0dcf"},"sgs":{"language":"sgs","value":"Li\u016bts"},"vro":{"language":"vro","value":"L\u00f5vi"},"xh":{"language":"xh","value":"Ingonyama"},"sa":{"language":"sa","value":"\u0938\u093f\u0902\u0939\u0903 \u092a\u0936\u0941\u0903"},"za":{"language":"za","value":"Saeceij"},"sd":{"language":"sd","value":"\u0628\u0628\u0631 \u0634\u064a\u0646\u0647\u0646"},"wuu":{"language":"wuu","value":"\u72ee"},"shn":{"language":"shn","value":"\u101e\u1062\u1004\u103a\u1087\u101e\u102e\u1088"},"alt":{"language":"alt","value":"\u0410\u0440\u0441\u043b\u0430\u043d"},"avk":{"language":"avk","value":"Krapol (Panthera leo)"},"dag":{"language":"dag","value":"Gbu\u0263inli"},"shi":{"language":"shi","value":"Agrzam"},"mni":{"language":"mni","value":"\uabc5\uabe3\uabe1\uabc1\uabe5"}},"descriptions":{"fr":{"language":"fr","value":"esp\u00e8ce de mammif\u00e8res carnivores"},"it":{"language":"it","value":"mammifero carnivoro della famiglia dei Felidi"},"nb":{"language":"nb","value":"kattedyr"},"ru":{"language":"ru","value":"\u0432\u0438\u0434 \u0445\u0438\u0449\u043d\u044b\u0445 \u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0445"},"de":{"language":"de","value":"Art der Gattung Eigentliche Gro\u00dfkatzen (Panthera)"},"es":{"language":"es","value":"mam\u00edfero carn\u00edvoro de la familia de los f\u00e9lidos"},"en":{"language":"en","value":"species of big cat"},"ko":{"language":"ko","value":"\uace0\uc591\uc774\uacfc\uc5d0 \uc18d\ud558\ub294 \uc721\uc2dd\ub3d9\ubb3c"},"ca":{"language":"ca","value":"mam\u00edfer carn\u00edvor de la fam\u00edlia dels f\u00e8lids"},"fi":{"language":"fi","value":"suuri kissael\u00e4in"},"pt-br":{"language":"pt-br","value":"esp\u00e9cie de mam\u00edfero carn\u00edvoro do g\u00eanero Panthera e da fam\u00edlia Felidae"},"ta":{"language":"ta","value":"\u0bb5\u0bbf\u0bb2\u0b99\u0bcd\u0b95\u0bc1"},"nl":{"language":"nl","value":"groot roofdier uit de familie der katachtigen"},"he":{"language":"he","value":"\u05de\u05d9\u05df \u05d1\u05e1\u05d5\u05d2 \u05e4\u05e0\u05ea\u05e8, \u05d8\u05d5\u05e8\u05e3 \u05d2\u05d3\u05d5\u05dc \u05d1\u05de\u05e9\u05e4\u05d7\u05ea \u05d4\u05d7\u05ea\u05d5\u05dc\u05d9\u05d9\u05dd"},"pt":{"language":"pt","value":"esp\u00e9cie de felino"},"sco":{"language":"sco","value":"species o big cat"},"zh-hans":{"language":"zh-hans","value":"\u5927\u578b\u732b\u79d1\u52a8\u7269"},"uk":{"language":"uk","value":"\u0432\u0438\u0434 \u043a\u043b\u0430\u0441\u0443 \u0441\u0441\u0430\u0432\u0446\u0456\u0432, \u0440\u044f\u0434\u0443 \u0445\u0438\u0436\u0438\u0445, \u0440\u043e\u0434\u0438\u043d\u0438 \u043a\u043e\u0442\u044f\u0447\u0438\u0445"},"hu":{"language":"hu","value":"macskaf\u00e9l\u00e9k csal\u00e1dj\u00e1ba tartoz\u00f3 eml\u0151sfaj"},"bn":{"language":"bn","value":"\u099c\u0999\u09cd\u0997\u09b2\u09c7\u09b0 \u09b0\u09be\u099c\u09be"},"hi":{"language":"hi","value":"\u091c\u0902\u0917\u0932 \u0915\u093e \u0930\u093e\u091c\u093e"},"ilo":{"language":"ilo","value":"sebbangan ti dakkel a pusa"},"ksh":{"language":"ksh","value":"et jr\u00fch\u00dfde Kazedier op der \u00c4hd, der K\u00fcnning vun de Diehre"},"fa":{"language":"fa","value":"\u06af\u0631\u0628\u0647\u200c \u0628\u0632\u0631\u06af \u0628\u0648\u0645\u06cc \u0622\u0641\u0631\u06cc\u0642\u0627 \u0648 \u0622\u0633\u06cc\u0627"},"gl":{"language":"gl","value":"\u00e9 un mam\u00edfero carn\u00edvoro da familia dos f\u00e9lidos e unha das 4 especies do x\u00e9nero Panthera"},"sq":{"language":"sq","value":"mace e madhe e familjes Felidae"},"el":{"language":"el","value":"\u03b5\u03af\u03b4\u03bf\u03c2 \u03c3\u03b1\u03c1\u03ba\u03bf\u03c6\u03ac\u03b3\u03bf \u03b8\u03b7\u03bb\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc"},"scn":{"language":"scn","value":"specia di mamm\u00ecfiru"},"bg":{"language":"bg","value":"\u0432\u0438\u0434 \u0431\u043e\u0437\u0430\u0439\u043d\u0438\u043a"},"ne":{"language":"ne","value":"\u0920\u0942\u0932\u094b \u092c\u093f\u0930\u093e\u0932\u094b\u0915\u094b \u092a\u094d\u0930\u091c\u093e\u0924\u093f"},"pl":{"language":"pl","value":"gatunek ssaka z rodziny kotowatych"},"af":{"language":"af","value":"Soogdier en roofdier van die familie Felidae, een van die \"groot katte\""},"mk":{"language":"mk","value":"\u0432\u0438\u0434 \u0433\u043e\u043b\u0435\u043c\u0430 \u043c\u0430\u0447\u043a\u0430"},"nn":{"language":"nn","value":"kattedyr"},"zh-hant":{"language":"zh-hant","value":"\u5927\u578b\u8c93\u79d1\u52d5\u7269"},"zh":{"language":"zh","value":"\u4ea7\u81ea\u975e\u6d32\u548c\u4e9a\u6d32\u7684\u5927\u578b\u732b\u79d1\u52a8\u7269"},"zh-cn":{"language":"zh-cn","value":"\u5927\u578b\u732b\u79d1\u52a8\u7269"},"zh-hk":{"language":"zh-hk","value":"\u5927\u578b\u8c93\u79d1\u52d5\u7269"},"zh-mo":{"language":"zh-mo","value":"\u5927\u578b\u8c93\u79d1\u52d5\u7269"},"zh-my":{"language":"zh-my","value":"\u5927\u578b\u732b\u79d1\u52a8\u7269"},"zh-sg":{"language":"zh-sg","value":"\u5927\u578b\u732b\u79d1\u52a8\u7269"},"zh-tw":{"language":"zh-tw","value":"\u5927\u578b\u8c93\u79d1\u52d5\u7269"},"sw":{"language":"sw","value":"mnyama mla nyama kama paka mkubwa"},"th":{"language":"th","value":"\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e31\u0e15\u0e27\u0e4c\u0e1b\u0e48\u0e32\u0e0a\u0e19\u0e34\u0e14\u0e2b\u0e19\u0e36\u0e48\u0e07 \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\u0e02\u0e2d\u0e07\u0e41\u0e21\u0e27\u0e43\u0e2b\u0e0d\u0e48"},"ar":{"language":"ar","value":"\u062d\u064a\u0648\u0627\u0646 \u0645\u0646 \u0627\u0644\u062b\u062f\u064a\u064a\u0627\u062a \u0645\u0646 \u0641\u0635\u064a\u0644\u0629 \u0627\u0644\u0633\u0646\u0648\u0631\u064a\u0627\u062a \u0648\u0623\u062d\u062f \u0627\u0644\u0633\u0646\u0648\u0631\u064a\u0627\u062a \u0627\u0644\u0623\u0631\u0628\u0639\u0629 \u0627\u0644\u0643\u0628\u064a\u0631\u0629 \u0627\u0644\u0645\u0646\u062a\u0645\u064a\u0629 \u0644\u062c\u0646\u0633 \u0627\u0644\u0646\u0645\u0631"},"ml":{"language":"ml","value":"\u0d38\u0d38\u0d4d\u0d24\u0d28\u0d3f\u0d15\u0d33\u0d3f\u0d32\u0d46 \u0d2b\u0d46\u0d32\u0d3f\u0d21\u0d47 \u0d15\u0d41\u0d1f\u0d41\u0d02\u0d2c\u0d24\u0d4d\u0d24\u0d3f\u0d32\u0d46 \u0d2a\u0d3e\u0d28\u0d4d\u0d24\u0d31 \u0d1c\u0d28\u0d41\u0d38\u0d4d\u0d38\u0d3f\u0d7d \u0d09\u0d7e\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f \u0d12\u0d30\u0d41 \u0d35\u0d28\u0d4d\u0d2f\u0d1c\u0d40\u0d35\u0d3f\u0d2f\u0d3e\u0d23\u0d4d \u0d38\u0d3f\u0d02\u0d39\u0d02"},"cs":{"language":"cs","value":"ko\u010dkovit\u00e1 \u0161elma"},"gu":{"language":"gu","value":"\u0aac\u0abf\u0ab2\u0abe\u0aa1\u0ac0 \u0ab5\u0a82\u0ab6\u0aa8\u0ac1\u0a82 \u0ab8\u0ab8\u0acd\u0aa4\u0aa8 \u0aaa\u0acd\u0ab0\u0abe\u0aa3\u0ac0"},"mr":{"language":"mr","value":"\u092e\u093e\u0902\u091c\u0930\u093e\u091a\u0940 \u092e\u094b\u0920\u0940 \u091c\u093e\u0924"},"sr":{"language":"sr","value":"\u0432\u0435\u043b\u0438\u043a\u0438 \u0441\u0438\u0441\u0430\u0440 \u0438\u0437 \u043f\u043e\u0440\u043e\u0434\u0438\u0446\u0435 \u043c\u0430\u0447\u0430\u043a\u0430"},"ast":{"language":"ast","value":"especie de mam\u00edferu carn\u00edvoru"},"te":{"language":"te","value":"\u0c2a\u0c46\u0c26\u0c4d\u0c26 \u0c2a\u0c3f\u0c32\u0c4d\u0c32\u0c3f \u0c1c\u0c24\u0c3f"},"bho":{"language":"bho","value":"\u092c\u093f\u0932\u093e\u0930\u092c\u0902\u0938 \u0915\u0947 \u092c\u0921\u093c\u0939\u0928 \u091c\u093e\u0928\u0935\u0930"},"da":{"language":"da","value":"en af de fem store katte i sl\u00e6gten Panthera"},"vi":{"language":"vi","value":"M\u1ed9t lo\u00e0i m\u00e8o l\u1edbn thu\u1ed9c chi Panthera"},"ja":{"language":"ja","value":"\u98df\u8089\u76ee\u30cd\u30b3\u79d1\u306e\u52d5\u7269"},"ga":{"language":"ga","value":"speiceas cat"},"bs":{"language":"bs","value":"vrsta velike ma\u010dke"},"tr":{"language":"tr","value":"Afrika ve Asya'ya \u00f6zg\u00fc b\u00fcy\u00fck bir kedi"},"as":{"language":"as","value":"\u09b8\u09cd\u09a4\u09a8\u09cd\u09af\u09aa\u09be\u09af\u09bc\u09c0 \u09aa\u09cd\u09f0\u09be\u09a3\u09c0"},"my":{"language":"my","value":"\u1014\u102d\u102f\u1037\u1010\u102d\u102f\u1000\u103a\u101e\u1010\u1039\u1010\u101d\u102b \u1019\u103b\u102d\u102f\u1038\u1005\u102d\u1010\u103a (\u1000\u103c\u1031\u102c\u1004\u103a\u1019\u103b\u102d\u102f\u1038\u101b\u1004\u103a\u1038\u101d\u1004\u103a)"},"id":{"language":"id","value":"spesies hewan keluarga jenis kucing"},"ks":{"language":"ks","value":"\u0628\u062c \u0628\u0631\u0627\u0631\u0646 \u06be\u0646\u062f \u06a9\u0633\u0645 \u06cc\u0633 \u0627\u0634\u06cc\u0627 \u062a\u06c1 \u0627\u0641\u0631\u06cc\u06a9\u0627 \u0645\u0646\u0632 \u0645\u0644\u0627\u0646 \u0686\u06be\u06c1"},"br":{"language":"br","value":"bronneg kigdebrer"},"sat":{"language":"sat","value":"\u1c75\u1c64\u1c68 \u1c68\u1c6e\u1c71 \u1c68\u1c5f\u1c61\u1c5f"},"mni":{"language":"mni","value":"\uabc2\uabdd\uabc2\uabdb\uabc0\uabe4 \uabc1\uabe5\uabcd\uabe4\uabe1 \uabc6\uabe5\uabd5 \uabc1\uabe5 \uabd1\uabc6\uabe7\uabd5\uabc1\uabe4\uabe1\uabd2\uabe4 \uabc3\uabc5\uabe8\uabe1\uabd7 \uabd1\uabc3"},"ro":{"language":"ro","value":"mamifer carnivor"}},"aliases":{"es":[{"language":"es","value":"Panthera leo"},{"language":"es","value":"leon"}],"en":[{"language":"en","value":"Asiatic Lion"},{"language":"en","value":"Panthera leo"},{"language":"en","value":"African lion"},{"language":"en","value":"the lion"},{"language":"en","value":"\ud83e\udd81"}],"pt-br":[{"language":"pt-br","value":"Panthera leo"}],"fr":[{"language":"fr","value":"lionne"},{"language":"fr","value":"lionceau"}],"zh":[{"language":"zh","value":"\u9b03\u6bdb"},{"language":"zh","value":"\u72ee\u5b50"},{"language":"zh","value":"\u7345"},{"language":"zh","value":"\u525b\u679c\u7345"},{"language":"zh","value":"\u975e\u6d32\u72ee"}],"de":[{"language":"de","value":"Panthera leo"}],"ca":[{"language":"ca","value":"Panthera leo"}],"sco":[{"language":"sco","value":"Panthera leo"}],"hu":[{"language":"hu","value":"P. leo"},{"language":"hu","value":"Panthera leo"}],"ilo":[{"language":"ilo","value":"Panthera leo"},{"language":"ilo","value":"Felis leo"}],"ksh":[{"language":"ksh","value":"L\u00f6hw"},{"language":"ksh","value":"L\u00f6hf"},{"language":"ksh","value":"L\u00f6v"}],"gl":[{"language":"gl","value":"Panthera leo"}],"ja":[{"language":"ja","value":"\u767e\u7363\u306e\u738b"},{"language":"ja","value":"\u7345\u5b50"},{"language":"ja","value":"\u30b7\u30b7"}],"sq":[{"language":"sq","value":"Mbreti i Kafsh\u00ebve"}],"el":[{"language":"el","value":"\u03c0\u03b1\u03bd\u03b8\u03ae\u03c1"}],"pl":[{"language":"pl","value":"Panthera leo"},{"language":"pl","value":"lew"}],"zh-hk":[{"language":"zh-hk","value":"\u7345"}],"af":[{"language":"af","value":"Panthera leo"}],"mk":[{"language":"mk","value":"Panthera leo"}],"ar":[{"language":"ar","value":"\u0644\u064a\u062b"}],"zh-hant":[{"language":"zh-hant","value":"\u7345"}],"zh-cn":[{"language":"zh-cn","value":"\u72ee"}],"zh-hans":[{"language":"zh-hans","value":"\u72ee"}],"zh-mo":[{"language":"zh-mo","value":"\u7345"}],"zh-my":[{"language":"zh-my","value":"\u72ee"}],"zh-sg":[{"language":"zh-sg","value":"\u72ee"}],"zh-tw":[{"language":"zh-tw","value":"\u7345"}],"gu":[{"language":"gu","value":"\u0ab5\u0aa8\u0ab0\u0abe\u0a9c"},{"language":"gu","value":"\u0ab8\u0abe\u0ab5\u0a9c"},{"language":"gu","value":"\u0a95\u0ac7\u0ab8\u0ab0\u0ac0"}],"ast":[{"language":"ast","value":"Panthera leo"},{"language":"ast","value":"lle\u00f3n africanu"}],"hi":[{"language":"hi","value":"\u092a\u0947\u0902\u0925\u0947\u0930\u093e \u0932\u093f\u092f\u094b"}],"te":[{"language":"te","value":"\u0c2a\u0c3e\u0c02\u0c25\u0c47\u0c30\u0c3e \u0c32\u0c3f\u0c2f\u0c4b"}],"nl":[{"language":"nl","value":"Panthera leo"}],"bho":[{"language":"bho","value":"\u092a\u0948\u0928\u094d\u0925\u0947\u0930\u093e \u0932\u093f\u092f\u094b"},{"language":"bho","value":"\u092a\u0948\u0902\u0925\u0947\u0930\u093e \u0932\u093f\u092f\u094b"}],"ru":[{"language":"ru","value":"\u0430\u0437\u0438\u0430\u0442\u0441\u043a\u0438\u0439 \u043b\u0435\u0432"},{"language":"ru","value":"\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043e\u0448\u043a\u0430"},{"language":"ru","value":"\u0446\u0430\u0440\u044c \u0437\u0432\u0435\u0440\u0435\u0439"},{"language":"ru","value":"\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u043b\u0435\u0432"}],"ga":[{"language":"ga","value":"Panthera leo"}],"bg":[{"language":"bg","value":"Panthera leo"},{"language":"bg","value":"\u043b\u044a\u0432\u0438\u0446\u0430"}],"sat":[{"language":"sat","value":"\u1c60\u1c69\u1c5e"}],"nan":[{"language":"nan","value":"Panthera leo"}],"la":[{"language":"la","value":"Panthera leo"}],"nds-nl":[{"language":"nds-nl","value":"leywe"}]},"claims":{"P225":[{"mainsnak":{"snaktype":"value","property":"P225","hash":"e2be083a19a0c5e1a3f8341be88c5ec0e347580f","datavalue":{"value":"Panthera leo","type":"string"},"datatype":"string"},"type":"statement","qualifiers":{"P405":[{"snaktype":"value","property":"P405","hash":"a817d3670bc2f9a3586b6377a65d54fff72ef888","datavalue":{"value":{"entity-type":"item","numeric-id":1043,"id":"Q1043"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P574":[{"snaktype":"value","property":"P574","hash":"506af9838b7d37b45786395b95170263f1951a31","datavalue":{"value":{"time":"+1758-01-01T00:00:00Z","timezone":0,"before":0,"after":0,"precision":9,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}],"P31":[{"snaktype":"value","property":"P31","hash":"60a983bb1006c765614eb370c3854e64ec50599f","datavalue":{"value":{"entity-type":"item","numeric-id":14594740,"id":"Q14594740"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P405","P574","P31"],"id":"q140$8CCA0B07-C81F-4456-ABAA-A7348C86C9B4","rank":"normal","references":[{"hash":"89e96b63b05055cc80c950cf5fea109c7d453658","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"c26dbcef1202a7d198982ed24f6ea69b704f95fe","datavalue":{"value":{"entity-type":"item","numeric-id":82575,"id":"Q82575"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P577":[{"snaktype":"value","property":"P577","hash":"539fa499b6ea982e64006270bb26f52a57a8e32b","datavalue":{"value":{"time":"+1996-06-13T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}],"P813":[{"snaktype":"value","property":"P813","hash":"96dfb8481e184edb40553947f8fe08ce080f1553","datavalue":{"value":{"time":"+2013-09-19T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P577","P813"]},{"hash":"f2fcc71ba228fd0db2b328c938e601507006fa46","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"603c636b2210e4a74b7d40c9e969b7e503bbe252","datavalue":{"value":{"entity-type":"item","numeric-id":1538807,"id":"Q1538807"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"6892402e621d2b47092e15284d64cdbb395e71f7","datavalue":{"value":{"time":"+2015-09-19T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P105":[{"mainsnak":{"snaktype":"value","property":"P105","hash":"aebf3611b23ed90c7c0fc80f6cd1cb7be110ea59","datavalue":{"value":{"entity-type":"item","numeric-id":7432,"id":"Q7432"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"q140$CD2903E5-743A-4B4F-AE9E-9C0C83426B11","rank":"normal","references":[{"hash":"89e96b63b05055cc80c950cf5fea109c7d453658","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"c26dbcef1202a7d198982ed24f6ea69b704f95fe","datavalue":{"value":{"entity-type":"item","numeric-id":82575,"id":"Q82575"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P577":[{"snaktype":"value","property":"P577","hash":"539fa499b6ea982e64006270bb26f52a57a8e32b","datavalue":{"value":{"time":"+1996-06-13T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}],"P813":[{"snaktype":"value","property":"P813","hash":"96dfb8481e184edb40553947f8fe08ce080f1553","datavalue":{"value":{"time":"+2013-09-19T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P577","P813"]},{"hash":"f2fcc71ba228fd0db2b328c938e601507006fa46","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"603c636b2210e4a74b7d40c9e969b7e503bbe252","datavalue":{"value":{"entity-type":"item","numeric-id":1538807,"id":"Q1538807"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"6892402e621d2b47092e15284d64cdbb395e71f7","datavalue":{"value":{"time":"+2015-09-19T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P171":[{"mainsnak":{"snaktype":"value","property":"P171","hash":"cbf0d3943e6cbac8afbec1ff11525c84ee04e442","datavalue":{"value":{"entity-type":"item","numeric-id":127960,"id":"Q127960"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"q140$C1CA40D8-39C3-4DB4-B763-207A22796D85","rank":"normal","references":[{"hash":"89e96b63b05055cc80c950cf5fea109c7d453658","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"c26dbcef1202a7d198982ed24f6ea69b704f95fe","datavalue":{"value":{"entity-type":"item","numeric-id":82575,"id":"Q82575"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P577":[{"snaktype":"value","property":"P577","hash":"539fa499b6ea982e64006270bb26f52a57a8e32b","datavalue":{"value":{"time":"+1996-06-13T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}],"P813":[{"snaktype":"value","property":"P813","hash":"96dfb8481e184edb40553947f8fe08ce080f1553","datavalue":{"value":{"time":"+2013-09-19T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P577","P813"]},{"hash":"f2fcc71ba228fd0db2b328c938e601507006fa46","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"603c636b2210e4a74b7d40c9e969b7e503bbe252","datavalue":{"value":{"entity-type":"item","numeric-id":1538807,"id":"Q1538807"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"6892402e621d2b47092e15284d64cdbb395e71f7","datavalue":{"value":{"time":"+2015-09-19T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P1403":[{"mainsnak":{"snaktype":"value","property":"P1403","hash":"baa11a4c668601014a48e2998ab76aa1ea7a5b99","datavalue":{"value":{"entity-type":"item","numeric-id":15294488,"id":"Q15294488"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$816d2b99-4aa5-5eb9-784b-34e2704d2927","rank":"normal"}],"P141":[{"mainsnak":{"snaktype":"value","property":"P141","hash":"80026ea5b2066a2538fee5c0897b459bb6770689","datavalue":{"value":{"entity-type":"item","numeric-id":278113,"id":"Q278113"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"q140$B12A2FD5-692F-4D9A-8FC7-144AA45A16F8","rank":"normal","references":[{"hash":"355df53bb7c6d100219cd2a331afd51719337d88","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"eb153b77c6029ffa1ca09f9128b8e47fe58fce5a","datavalue":{"value":{"entity-type":"item","numeric-id":56011232,"id":"Q56011232"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P627":[{"snaktype":"value","property":"P627","hash":"3642ac96e05180279c47a035c129d3af38d85027","datavalue":{"value":"15951","type":"string"},"datatype":"string"}],"P813":[{"snaktype":"value","property":"P813","hash":"76bc602d4f902d015c358223e7c0917bd65095e0","datavalue":{"value":{"time":"+2018-08-10T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P627","P813"]}]}],"P181":[{"mainsnak":{"snaktype":"value","property":"P181","hash":"8467347aac1f01e518c1b94d5bb68c65f9efe84a","datavalue":{"value":"Lion distribution.png","type":"string"},"datatype":"commonsMedia"},"type":"statement","id":"q140$12F383DD-D831-4AE9-A0ED-98C27A8C5BA7","rank":"normal"}],"P830":[{"mainsnak":{"snaktype":"value","property":"P830","hash":"8cafbfe99d80fcfabbd236d4cc01d33cc8a8b41d","datavalue":{"value":"328672","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$486d7ab8-4af8-b6e1-85bb-e0749b02c2d9","rank":"normal","references":[{"hash":"7e71b7ede7931e7e2ee9ce54e832816fe948b402","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"6e81987ab11fb1740bd862639411d0700be3b22c","datavalue":{"value":{"entity-type":"item","numeric-id":82486,"id":"Q82486"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"7c1a33cf9a0bf6cdd57b66f089065ba44b6a8953","datavalue":{"value":{"time":"+2014-10-30T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P815":[{"mainsnak":{"snaktype":"value","property":"P815","hash":"27f6bd8fb4504eb79b92e6b63679b83af07d5fed","datavalue":{"value":"183803","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$71177A4F-4308-463D-B370-8B354EC2D2C3","rank":"normal","references":[{"hash":"ff0dd9eabf88b0dcefa74b223d065dd644e42050","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"c26dbcef1202a7d198982ed24f6ea69b704f95fe","datavalue":{"value":{"entity-type":"item","numeric-id":82575,"id":"Q82575"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"6b8fcfa6afb3911fecec93ae1dff2b6b6cde5659","datavalue":{"value":{"time":"+2013-12-07T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P685":[{"mainsnak":{"snaktype":"value","property":"P685","hash":"c863e255c042b2b9b6a788ebd6e24f38a46dfa88","datavalue":{"value":"9689","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$A9F4ABE4-D079-4868-BC18-F685479BB244","rank":"normal","references":[{"hash":"5667273d9f2899620fec2016bb2afd29aa7080ce","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"1851bc60ddfbcf6f76bd45aa7124fc0d5857a379","datavalue":{"value":{"entity-type":"item","numeric-id":13711410,"id":"Q13711410"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"6b8fcfa6afb3911fecec93ae1dff2b6b6cde5659","datavalue":{"value":{"time":"+2013-12-07T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P959":[{"mainsnak":{"snaktype":"value","property":"P959","hash":"55cab2a9d2af860a89a8d0e2eaefedb64202a3d8","datavalue":{"value":"14000228","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$A967D17D-485D-434F-BBF2-E6226E63BA42","rank":"normal","references":[{"hash":"3e398e6df20323ce88e644e5a1e4ec0bc77a5f41","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"603c636b2210e4a74b7d40c9e969b7e503bbe252","datavalue":{"value":{"entity-type":"item","numeric-id":1538807,"id":"Q1538807"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"d2bace4e146678a5e5f761e9a441b53b95dc2e87","datavalue":{"value":{"time":"+2014-01-10T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P842":[{"mainsnak":{"snaktype":"value","property":"P842","hash":"991987fc3fa4d1cfd3a601dcfc9dd1f802255de7","datavalue":{"value":"49734","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$3FF45860-DBC3-4629-AAF8-F2899B6C6876","rank":"normal","references":[{"hash":"1111bfc1dc63ee739fb9dd3f5534346c7fd478f0","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"00fe2206a3342fa25c0cfe1d08783c49a1986f12","datavalue":{"value":{"entity-type":"item","numeric-id":796451,"id":"Q796451"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"14c5b75e8d3f4c43cb5b570380dd98e421bb9751","datavalue":{"value":{"time":"+2014-01-30T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P227":[{"mainsnak":{"snaktype":"value","property":"P227","hash":"3343c5fd594f8f0264332d87ce95e76ffeaebffd","datavalue":{"value":"4140572-9","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$0059e08d-4308-8401-58e8-2cb683c03837","rank":"normal"}],"P349":[{"mainsnak":{"snaktype":"value","property":"P349","hash":"08812c4ef85f397bf00b015d1baf3b00d81cb9bf","datavalue":{"value":"00616831","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$B7933772-D27D-49D4-B1BB-AA36ADCA81B0","rank":"normal"}],"P1014":[{"mainsnak":{"snaktype":"value","property":"P1014","hash":"3d27204feb184f21c042777dc9674150cb07ee92","datavalue":{"value":"300310388","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$8e3c9dc3-442e-2e61-8617-f4a41b5be668","rank":"normal"}],"P646":[{"mainsnak":{"snaktype":"value","property":"P646","hash":"0c053bce57fe07b05c300a09b322d9f89236884b","datavalue":{"value":"/m/096mb","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$D94D8A4F-3414-4BE0-82C1-306BD136C017","rank":"normal","references":[{"hash":"2b00cb481cddcac7623114367489b5c194901c4a","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"a94b740202b097dd33355e0e6c00e54b9395e5e0","datavalue":{"value":{"entity-type":"item","numeric-id":15241312,"id":"Q15241312"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P577":[{"snaktype":"value","property":"P577","hash":"fde79ecb015112d2f29229ccc1ec514ed3e71fa2","datavalue":{"value":{"time":"+2013-10-28T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P577"]}]}],"P1036":[{"mainsnak":{"snaktype":"value","property":"P1036","hash":"02435ba66ab8e5fb26652ae1a84695be24b3e22a","datavalue":{"value":"599.757","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$e75ed89a-408d-9bc1-8d99-41663921debd","rank":"normal"}],"P1245":[{"mainsnak":{"snaktype":"value","property":"P1245","hash":"f3da4ca7d35fc3e02a9ea1662688d8f6c4658df0","datavalue":{"value":"5961","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$010e79a0-475e-fcf4-a554-375b64943783","rank":"normal"}],"P910":[{"mainsnak":{"snaktype":"value","property":"P910","hash":"056367b51cd51edd6c2840134fde01cf40469172","datavalue":{"value":{"entity-type":"item","numeric-id":6987175,"id":"Q6987175"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$BC4DE2D4-BF45-49AF-A9A6-C0A976F60825","rank":"normal"}],"P373":[{"mainsnak":{"snaktype":"value","property":"P373","hash":"76c006bc5e2975bcda2e7d60ddcbaaa8c84f69e5","datavalue":{"value":"Panthera leo","type":"string"},"datatype":"string"},"type":"statement","id":"q140$939BA4B2-28D3-4C74-B143-A0EA6F423B43","rank":"normal"}],"P846":[{"mainsnak":{"snaktype":"value","property":"P846","hash":"d0428680cd2b36efde61dc69ccc5a8ff7a735cb5","datavalue":{"value":"5219404","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$4CE8E6D4-E9A1-46F1-8EEF-B469E8485F9E","rank":"normal","references":[{"hash":"5b8345ffc93a361b71f5d201a97f587e5e57efe5","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"dbb8dd1efbe0158a5227213bd628eeac27a1da65","datavalue":{"value":{"entity-type":"item","numeric-id":1531570,"id":"Q1531570"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"3eb17b10ce02d44f47540a6fbdbb3cbb7e77d5f5","datavalue":{"value":{"time":"+2015-05-15T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P487":[{"mainsnak":{"snaktype":"value","property":"P487","hash":"5f93415dd33bfde6a546fdd65e5a7013e012c336","datavalue":{"value":"\ud83e\udd81","type":"string"},"datatype":"string"},"type":"statement","id":"Q140$da5262fc-4ac5-390b-b424-4f296b2d711d","rank":"normal"}],"P2040":[{"mainsnak":{"snaktype":"value","property":"P2040","hash":"5b13a3fa0fde6ba09d8e417738c05268bd065e32","datavalue":{"value":"6353","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$E97A1A2E-D146-4C62-AE92-5AF5F7E146EF","rank":"normal","references":[{"hash":"348b5187938d682071c94e22f1b30659af715dc7","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"213dc0d84ed983cbb28466ebb0c45bf8b0730ea2","datavalue":{"value":{"entity-type":"item","numeric-id":20962955,"id":"Q20962955"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"3d2c713dec9143721ae196af88fee0fde5ae20f2","datavalue":{"value":{"time":"+2015-09-10T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P935":[{"mainsnak":{"snaktype":"value","property":"P935","hash":"c3518a9944958337bcce384587f3abc3de6ddf34","datavalue":{"value":"Panthera leo","type":"string"},"datatype":"string"},"type":"statement","id":"Q140$F7AAEE1F-4D18-4538-99F0-1A2B5AD7269F","rank":"normal"}],"P1417":[{"mainsnak":{"snaktype":"value","property":"P1417","hash":"492d3483075b6915990940a4392f5ec035cbe05e","datavalue":{"value":"animal/lion","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$FE89C38F-6C79-4F06-8C15-81DCAC8D745F","rank":"normal"}],"P244":[{"mainsnak":{"snaktype":"value","property":"P244","hash":"2e41780263804dd45d7deaf7955a2d1d221f6096","datavalue":{"value":"sh85077276","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$634d86d1-45b1-920d-e9ef-78d5f4023288","rank":"normal","references":[{"hash":"88d810dd1ff791aeb0b5779876b0c9f19acb59b6","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"c120f07504c77593a9d734f50361ea829f601960","datavalue":{"value":{"entity-type":"item","numeric-id":620946,"id":"Q620946"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"0980c2f2b51e6b2d4c1dd9a77b9fb95dc282bc79","datavalue":{"value":{"time":"+2016-06-01T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P1843":[{"mainsnak":{"snaktype":"value","property":"P1843","hash":"3b1cfb68cc46255ceba7ff7893ac1cabbb4ddd92","datavalue":{"value":{"text":"Lion","language":"en"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","qualifiers":{"P7018":[{"snaktype":"value","property":"P7018","hash":"40a60b39201df345ffbf5aa724269d5fd61ae028","datavalue":{"value":{"entity-type":"sense","id":"L17815-S1"},"type":"wikibase-entityid"},"datatype":"wikibase-sense"}]},"qualifiers-order":["P7018"],"id":"Q140$6E257597-55C7-4AF3-B3D6-0F2204FAD35C","rank":"normal","references":[{"hash":"eada84c58a38325085267509899037535799e978","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a","datavalue":{"value":{"entity-type":"item","numeric-id":32059,"id":"Q32059"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"3e51c3c32949f8a45f2c3331f55ea6ae68ecf3fe","datavalue":{"value":{"time":"+2016-10-21T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]},{"hash":"cdc389b112247cb50b855fb86e98b7a7892e96f0","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"e17975e5c866df46673c91b2287a82cf23d14f5a","datavalue":{"value":{"entity-type":"item","numeric-id":27310853,"id":"Q27310853"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P304":[{"snaktype":"value","property":"P304","hash":"ff7ad3502ff7a4a9b0feeb4248a7bed9767a1ec6","datavalue":{"value":"166","type":"string"},"datatype":"string"}]},"snaks-order":["P248","P304"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"38a9c57a5c62a707adc86decd2bd00be89eab6f3","datavalue":{"value":{"text":"Leeu","language":"af"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$5E731B05-20D6-491B-97E7-94D90CBB70F0","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"a4455f1ef49d7d17896563760a420031c41d65c1","datavalue":{"value":{"text":"Gyata","language":"ak"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$721B4D81-D948-4002-A13E-0B2567626FD6","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"b955c9239d6ced23c0db577e20219b0417a2dd9b","datavalue":{"value":{"text":"Ley\u00f3n","language":"an"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$E2B52F3D-B12D-48B5-86EA-6A4DCBC091D3","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"e18a8ecb17321c203fcf8f402e82558ce0599b39","datavalue":{"value":{"text":"Li\u00f3n","language":"an"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$339ADC90-41C6-4CDB-B6C3-DA9F952FCC15","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"297bf417fff1510d19b27c08fa9f34e2653b9510","datavalue":{"value":{"text":"\u0623\u064e\u0633\u064e\u062f\u064c","language":"ar"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$F1849268-0E70-4EC0-A630-EC0D2DCBB298","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"5577ef6920a3ade2365d878740d1d097fcdae399","datavalue":{"value":{"text":"L\u00e9we","language":"bar"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$BDD65B40-7ECB-4725-B33F-417A83AF5102","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"de8fa35eca4e61dfb8fe2df360e734fb1cd37092","datavalue":{"value":{"text":"L\u00f6we","language":"bar"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$486EE5F1-9AB5-4789-98AC-E435D81E784F","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"246c27f44da8bedd2e3313de393fe648b2b40ea9","datavalue":{"value":{"text":"\u041b\u0435\u045e (Lew)","language":"be"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$47AA6BD4-0B09-4B20-9092-0AEAD8056157","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"64c42db53ef288871161f0a656808f06daae817d","datavalue":{"value":{"text":"\u041b\u044a\u0432 (L\u0103v)","language":"bg"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$ADF0B08A-9626-4821-8118-0A875CBE5FB9","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"6041e2730af3095f4f0cbf331382e22b596d2305","datavalue":{"value":{"text":"\u09b8\u09bf\u0982\u09b9","language":"bn"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$8DF5BDCD-B470-46C3-A44A-7375B8A5DCDE","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"8499f437dc8678b0c4b740b40cab41031fce874d","datavalue":{"value":{"text":"Lle\u00f3","language":"ca"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$F55C3E63-DB2C-4F6D-B10B-4C1BB70C06A0","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"b973abb618a6f17b8a9547b852e5817b5c4da00b","datavalue":{"value":{"text":"\u041b\u043e\u044c\u043c","language":"ce"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$F32B0BFA-3B85-4A26-A888-78FD8F09F943","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"62f53c7229efad1620a5cce4dc5a535d88c4989f","datavalue":{"value":{"text":"Lev","language":"cs"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$1630DAB7-C4D0-4268-A598-8BBB9480221E","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"0df7e23666c947b42aea5572a9f5a987229718d3","datavalue":{"value":{"text":"Llew","language":"cy"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$F33991E8-A532-47F5-B135-A13761DB2E95","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"14942ad0830a0eb7b06704234eea637f99b53a24","datavalue":{"value":{"text":"L\u00f8ve","language":"da"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$478F0603-640A-44BE-9453-700FDD32100F","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"8af089542ef6207b918f656bcf9a96e745970915","datavalue":{"value":{"text":"L\u00f6we","language":"de"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","qualifiers":{"P7018":[{"snaktype":"value","property":"P7018","hash":"2da239e18a0208847a72fbeab011c8c2fb3b4d99","datavalue":{"value":{"entity-type":"sense","id":"L41680-S1"},"type":"wikibase-entityid"},"datatype":"wikibase-sense"}]},"qualifiers-order":["P7018"],"id":"Q140$11F5F498-3688-4F4B-B2FA-7121BE5AA701","rank":"normal","references":[{"hash":"cdc389b112247cb50b855fb86e98b7a7892e96f0","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"e17975e5c866df46673c91b2287a82cf23d14f5a","datavalue":{"value":{"entity-type":"item","numeric-id":27310853,"id":"Q27310853"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P304":[{"snaktype":"value","property":"P304","hash":"ff7ad3502ff7a4a9b0feeb4248a7bed9767a1ec6","datavalue":{"value":"166","type":"string"},"datatype":"string"}]},"snaks-order":["P248","P304"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"c0c8b50001810c1ec643b88479df82ea85c819a2","datavalue":{"value":{"text":"Dzata","language":"ee"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$8F6EC307-A293-4AFC-8154-E3FF187C0D7D","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"57a3384eeb13d1bcffeb3cf0efd0f3e3f511b35d","datavalue":{"value":{"text":"\u039b\u03b9\u03bf\u03bd\u03c4\u03ac\u03c1\u03b9 (Liond\u00e1ri)","language":"el"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$560B3341-3E06-4D09-8869-FC47C841D14C","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"ee7109a46f8259ae6f52791cfe599b7c4c272831","datavalue":{"value":{"text":"Leono","language":"eo"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$67F2B7A6-1C81-407A-AA61-A1BFF148EC69","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"3b8f4f61c3a18792bfaff5d332f03c80932dce05","datavalue":{"value":{"text":"Le\u00f3n","language":"es"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$DB29EAF7-4405-4030-8056-ED17089B3805","rank":"normal","references":[{"hash":"d3a8e536300044db1d823eae6891b2c7baa49f66","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a","datavalue":{"value":{"entity-type":"item","numeric-id":32059,"id":"Q32059"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"620d2e76d21bb1d326fc360db5bece2070115240","datavalue":{"value":{"time":"+2016-10-19T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"41fffb83f35736829d60f782bdce68463f0ab47c","datavalue":{"value":{"text":"L\u00f5vi","language":"et"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$19B76CC4-AA11-443B-BC76-DB2D0DA5B9CB","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"b96549e5ae538fb7e0b48089508333b31aec8fe7","datavalue":{"value":{"text":"Lehoi","language":"eu"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$88F712C1-4EEF-4E42-8C61-84E55CF2DCE0","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"b343c833d8de3dfd5c8b31336afd137380ab42dc","datavalue":{"value":{"text":"\u0634\u06cc\u0631 (\u0160ayr)","language":"fa"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$B72DB989-EF39-42F5-8FA8-5FC669079DB7","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"51aaf9a4a7c5e77ba931a5280d1fec984c91963b","datavalue":{"value":{"text":"Leijona","language":"fi"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$6861CDE9-707D-43AD-B352-3BCD7B9D4267","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"038249fb112acc26895af45fab412395f999ae11","datavalue":{"value":{"text":"Leyva","language":"fo"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$A044100A-C49F-4AA6-8861-F0300F28126E","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"92ec25b64605d026b07b0cda6e623fbbf2f3dfb4","datavalue":{"value":{"text":"Lion","language":"fr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$122623FD-3915-49E9-8890-0B6883317507","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"59be091f7839e7a6061c6d1690ed77f3b21b9ff4","datavalue":{"value":{"text":"L\u00f6\u00f6w","language":"frr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$76B87E52-A02C-4E99-A4B3-D6105B642521","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"126b0f2c5ed11124233dfefff8bd132a1fe1218a","datavalue":{"value":{"text":"Le\u00f3n-leoa","language":"gl"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$A4864784-EED3-4898-83FE-A2FCC0C3982E","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"49e0d3858de566edce1a28b0e96f42b2d0df718f","datavalue":{"value":{"text":"\u0ab8\u0abf\u0a82\u0ab9","language":"gu"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$4EE122CE-7671-480E-86A4-4A4DDABC04BA","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"dff0c422f7403c50d28dd51ca2989d03108b7584","datavalue":{"value":{"text":"Liona","language":"haw"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$FBB6AC65-A224-4C29-8024-079C0687E9FB","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"c174addd56c0f42f6ec3e87c72fb9651e4923a00","datavalue":{"value":{"text":"\u05d0\u05e8\u05d9\u05d4","language":"he"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$B72D9BDB-A2CC-471D-AF20-8F7FB677D533","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"c38a63a06b569fc8fee3e98c4cf8d5501990811e","datavalue":{"value":{"text":"si\u1e45ha)","language":"hi"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$9AA9171C-E912-41F2-AB26-643AA538E644","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"94f073519a5b64c48398c73a5f0f135a4f0f4306","datavalue":{"value":{"text":"\u0936\u0947\u0930","language":"hi"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$0714B97B-03E0-4ACC-80A0-6A17874DDBA8","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"1fbda5b1494db298c698fc28ed0fe68b1c137b2e","datavalue":{"value":{"text":"\u0938\u093f\u0902\u0939","language":"hi"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$3CE22F68-038C-4A94-9A1F-96B82760DEB9","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"fac41ebd8d1da777acd93720267c7a70016156e4","datavalue":{"value":{"text":"Lav","language":"hr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$C5351C11-E287-4D3B-A9B2-56716F0E69E5","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"71e0bda709fb17d58f4bd8e12fff7f937a61673c","datavalue":{"value":{"text":"Oroszl\u00e1n","language":"hu"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$AD06E7D2-3B1F-4D14-B2E9-DD2513BE8B4B","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"05e86680d70a2c0adf9a6e6eb51bbdf8c6ae44bc","datavalue":{"value":{"text":"\u0531\u057c\u0575\u0578\u0582\u056e","language":"hy"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$3E02B802-8F7B-4C48-A3F9-FBBFDB0D8DB3","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"979f25bee6af37e19471530c6344a0d22a0d594c","datavalue":{"value":{"text":"Lj\u00f3n","language":"is"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$59788C31-A354-4229-AD89-361CB6076EF7","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"789e5f5a7ec6003076bc7fd2996faf8ca8468719","datavalue":{"value":{"text":"Leone","language":"it"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$4901AE59-7749-43D1-BC65-DEEC0DFEB72F","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"4a5bdf9bb40f1cab9a92b7dba1d1d74a8440c7ed","datavalue":{"value":{"text":"\u30e9\u30a4\u30aa\u30f3 (Raion)","language":"ja"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$4CF2E0D9-5CF3-46A3-A197-938E94270CE2","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"ebba3893211c78dad7ae74a51448e8c7f6e73309","datavalue":{"value":{"text":"\uc0ac\uc790 (saja)","language":"ko"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$64B6CECD-5FFE-4612-819F-CAB2E726B228","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"ed1fe1812cee80102262dd3b7e170759fbeab86a","datavalue":{"value":{"text":"\u0410\u0440\u0441\u0442\u0430\u043d","language":"ky"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$3D9597D3-E35F-4EFF-9CAF-E013B45F283F","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"a0868f5f83bb886a408aa9b25b95dbfc59bde4dc","datavalue":{"value":{"text":"Leo","language":"la"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$4D650414-6AFE-430F-892F-B7774AC7AF70","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"054af77b10151632045612df9b96313dfcc3550c","datavalue":{"value":{"text":"Liew","language":"li"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$D5B466A8-AEFB-4083-BF3E-194C5CE45CD3","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"9193a46891a365ee1b0a17dd6e2591babc642811","datavalue":{"value":{"text":"Nkosi","language":"ln"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$55F213DF-5AAB-4490-83CB-B9E5D2B894CD","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"c5952ec6b650f1c66f37194eb88c2889560740b2","datavalue":{"value":{"text":"Li\u016btas","language":"lt"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$8551F80C-A244-4351-A98A-8A9F37A736A2","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"e3541d0807682631f8fff2d224b2cb1b3d2a4c11","datavalue":{"value":{"text":"Lauva","language":"lv"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$488A2D59-533A-4C02-8AC3-01241FE63D94","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"22e20da399aff10787267691b5211b6fc0bddf38","datavalue":{"value":{"text":"\u041b\u0430\u0432 (lav)","language":"mk"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$9E2377E9-1D37-4BBC-A409-1C40CDD99A86","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"fe4c9bc3b3cce21a779f72fae808f8ed213d226b","datavalue":{"value":{"text":"\u0d38\u0d3f\u0d02\u0d39\u0d02 (simham)","language":"ml"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$8BEA9E08-4687-434A-9FB4-4B23B2C40838","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"85aa09066722caf2181681a24575ad89ca76210e","datavalue":{"value":{"text":"si\u1e45ha)","language":"mr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$46B51EF5-7ADB-4637-B744-89AD1E3B5D19","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"441f3832d6e3c4439c6986075096c7021a0939dd","datavalue":{"value":{"text":"\u0936\u0947\u0930 (\u015a\u0113ra)","language":"mr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$12BBC825-32E3-4026-A5E5-0330DEB21D79","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"89b35a359c3891dce190d778e9ae0a9634cfd71f","datavalue":{"value":{"text":"\u0938\u093f\u0902\u0939 (singh","language":"mr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$006148E2-658F-4C74-9C3E-26488B7AEB8D","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"5723b45deee51dfe5a2555f2db17bad14acb298a","datavalue":{"value":{"text":"Iljun","language":"mt"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$13D221F5-9763-4550-9CC3-9A697286B785","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"d1ce3ab04f25af38248152eb8caa286b63366c2a","datavalue":{"value":{"text":"Leeuw","language":"nl"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$65E80D17-6F20-4BAE-A2B4-DD934C0BE153","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"12f3384cc32e65dfb501e2fee19ccf709f9df757","datavalue":{"value":{"text":"L\u00f8ve","language":"nn"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$78E95514-1969-4DA3-97CD-0DBADF1223E7","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"a3fedaf780a0d004ba318881f6adbe173750d09e","datavalue":{"value":{"text":"L\u00f8ve","language":"nb"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$809DE1EA-861E-4813-BED7-D9C465341CB3","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"695d2ef10540ba13cf8b3541daa1d39fd720eea0","datavalue":{"value":{"text":"N\u00e1shd\u00f3\u00edtsoh bitsiij\u012f\u02bc dadit\u0142\u02bcoo\u00edg\u00ed\u00ed","language":"nv"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$E9EDAF16-6650-40ED-B888-C524BD00DF40","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"3c143e8a8cebf92d76d3ae2d7e3bb3f87e963fb4","datavalue":{"value":{"text":"\u0a2c\u0a71\u0a2c\u0a30 \u0a38\u0a3c\u0a47\u0a30","language":"pa"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$13AE1DAB-4B29-49A5-9893-C0014C61D21E","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"195e48d11222aec830fb1d5c2de898c9528abc57","datavalue":{"value":{"text":"lew afryka\u0144ski","language":"pl"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$6966C1C3-9DD6-48BC-B511-B0827642E41D","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"8bd3ae632e7731ae9e72c50744383006ec6eb73e","datavalue":{"value":{"text":"Le\u00e3o","language":"pt"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$BD454649-347E-4AE5-81B8-360C16C7CDA7","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"79d3336733b7bf4b7dadffd6d6ebabdb892074d1","datavalue":{"value":{"text":"Leu","language":"ro"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$7323EF68-7AA0-4D38-82D8-0A94E61A26F0","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"376b852a92b6472e969ae7b995c4aacea23955eb","datavalue":{"value":{"text":"\u041b\u0435\u0432 (Lev)","language":"ru"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$A7C413B9-0916-4534-941D-C24BA0334816","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"aa323e0bea79d79900227699b3d42d689a772ca1","datavalue":{"value":{"text":"Lioni","language":"sc"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$2EF83D2C-0DB9-4D3C-8FDD-86237E566260","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"a290fe08983742eac8b5bc479022564fb6b2ce81","datavalue":{"value":{"text":"Lev","language":"sl"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$B276673A-08C1-47E2-99A9-D0861321E157","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"d3b070ff1452d47f87c109a9e0bfa52e61b24a4e","datavalue":{"value":{"text":"Libubesi","language":"ss"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$86BFAB38-1DB8-4903-A17D-A6B8E81819CC","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"3adea59d97f3caf9bb6b1c3d7ae6365f7f656dca","datavalue":{"value":{"text":"Tau","language":"st"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$2FA8893D-2401-42E9-8DC3-288CC1DEDB0C","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"0e73b32fe31a107a95de83706a12f2db419c6909","datavalue":{"value":{"text":"Lejon","language":"sv"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$1A8E006E-CC7B-4066-9DE7-9B82D096779E","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"34550af2fdc48f77cf66cabc5c59d1acf1d8afd0","datavalue":{"value":{"text":"Simba","language":"sw"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$B02CA616-44CF-4AA6-9734-2C05810131EB","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"701f87cf9926c9af2c41434ff130dcb234a6cd95","datavalue":{"value":{"text":"\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0bae\u0bcd","language":"ta"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$DA87A994-A002-45AD-A71F-99FB72F8B92F","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"856fd4809c90e3c34c6876e4410661dc04f5da8d","datavalue":{"value":{"text":"\u0e2a\u0e34\u0e07\u0e42\u0e15","language":"th"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$BDA8E989-3537-4662-8CC3-33534705A7F1","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"f8598a8369426da0c86bf8bab356a927487eae66","datavalue":{"value":{"text":"Aslan","language":"tr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$AAE5F227-C0DB-4DF3-B1F4-517699BBDDF1","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"f3c8320bd46913aee164999ab7f68388c1bd9920","datavalue":{"value":{"text":"\u041b\u0435\u0432 (Lev)","language":"uk"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$494C3503-6016-4539-83AF-6344173C2DCB","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"6cc2d534293320533e15dc713f1d2c07b3811b6a","datavalue":{"value":{"text":"Leon","language":"vec"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$E6F1DA81-9F36-4CC8-B57E-95E3BDC2F5D0","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"32553481e45abf6f5e6292baea486e978c36f8fe","datavalue":{"value":{"text":"S\u01b0 t\u1eed","language":"vi"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$11D7996C-0492-41CC-AEE7-3C136172DFC7","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"69077fc29f9251d1de124cd3f3c45cd6f0bb6b65","datavalue":{"value":{"text":"\u05dc\u05d9\u05d9\u05d1","language":"yi"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$969FEF9A-C1C7-41FE-8181-07F6D87B0346","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"e3aaa8cde18be4ea6b4af6ca62b83e7dc23d76e1","datavalue":{"value":{"text":"\u72ee\u5b50 (sh\u012bzi)","language":"zh"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$3BC22F6C-F460-4354-9BA2-28CEDA9FF170","rank":"normal","references":[{"hash":"2e0c13df5b13edc9b3db9d8129e466c0894710ac","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"2b1e96d67dc01973d72472f712fd98ce87c6f0d7","datavalue":{"value":{"entity-type":"item","numeric-id":13679,"id":"Q13679"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"98f5efae94b2bb9f8ffee6c677ee71f836743ef6","datavalue":{"value":{"text":"Lion d'Afrique","language":"fr"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$62D09BBF-718A-4139-AF50-DA4185ED67F2","rank":"normal","references":[{"hash":"362e3c5d6de1d193ef97205ba38834ba075191fc","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a","datavalue":{"value":{"entity-type":"item","numeric-id":32059,"id":"Q32059"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"c7813bad20c2553e26e45c37e3502ce7252312df","datavalue":{"value":{"time":"+2016-10-20T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"c584bdbd3cdc1215292a4971b920c684d103ea06","datavalue":{"value":{"text":"African Lion","language":"en"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$C871BB58-C689-4DBA-A088-DAC205377979","rank":"normal","references":[{"hash":"eada84c58a38325085267509899037535799e978","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a","datavalue":{"value":{"entity-type":"item","numeric-id":32059,"id":"Q32059"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"3e51c3c32949f8a45f2c3331f55ea6ae68ecf3fe","datavalue":{"value":{"time":"+2016-10-21T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"1d03eace9366816c6fda340c0390caac2f3cea8e","datavalue":{"value":{"text":"L\u00e9iw","language":"lb"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$c65c7614-4d6e-3a87-9771-4f8c13618249","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"925c7abced1e89fa7e8000dc9dc78627cdac9769","datavalue":{"value":{"text":"Lle\u00f3n","language":"ast"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$1024eadb-45dd-7d9a-15f6-8602946ba661","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"0bda7868c3f498ba6fde78d46d0fbcf286e42dd8","datavalue":{"value":{"text":"\u0644\u064e\u064a\u0652\u062b\u064c","language":"ar"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$c226ff70-48dd-7b4d-00ff-7a683fe510aa","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"28de99c4aa35cc049cf8c9dd18af1791944137d9","datavalue":{"value":{"text":"\u10da\u10dd\u10db\u10d8","language":"ka"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$8fe60d1a-465a-9614-cbe4-595e22429b0c","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"4550db0f44e21c5eadeaa5a1d8fc614c9eb05f52","datavalue":{"value":{"text":"leon","language":"ga"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$4950cb9c-4f1e-ce27-0d8c-ba3f18096044","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1843","hash":"9d268eb76ed921352c205b3f890d1f9428f638f3","datavalue":{"value":{"text":"Singa","language":"ms"},"type":"monolingualtext"},"datatype":"monolingualtext"},"type":"statement","id":"Q140$67401360-49dd-b13c-8269-e703b30c9a53","rank":"normal"}],"P627":[{"mainsnak":{"snaktype":"value","property":"P627","hash":"3642ac96e05180279c47a035c129d3af38d85027","datavalue":{"value":"15951","type":"string"},"datatype":"string"},"type":"statement","id":"Q140$6BE03095-BC68-4CE5-BB99-9F3E33A6F31D","rank":"normal","references":[{"hash":"182efbdb9110d036ca433f3b49bd3a1ae312858b","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"ba14d022d7e0c8b74595e7b8aaa1bc2451dd806a","datavalue":{"value":{"entity-type":"item","numeric-id":32059,"id":"Q32059"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"8c1c5174f4811115ea8a0def725fdc074c2ef036","datavalue":{"value":{"time":"+2016-07-10T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P2833":[{"mainsnak":{"snaktype":"value","property":"P2833","hash":"519877b77b20416af2401e5c0645954c6700d6fd","datavalue":{"value":"panthera-leo","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$C0A723AE-ED2E-4FDC-827F-496E4CF29A52","rank":"normal"}],"P3063":[{"mainsnak":{"snaktype":"value","property":"P3063","hash":"81cdb0273eaf0a0126b62e2ff43b8e09505eea54","datavalue":{"value":{"amount":"+108","unit":"http://www.wikidata.org/entity/Q573","upperBound":"+116","lowerBound":"+100"},"type":"quantity"},"datatype":"quantity"},"type":"statement","id":"Q140$878ff87d-40d0-bb2b-c83d-4cef682c2687","rank":"normal","references":[{"hash":"7d748004a43983fabae420123742fda0e9b52840","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"f618501ace3a6524b053661d067b775547f96f58","datavalue":{"value":{"entity-type":"item","numeric-id":26706243,"id":"Q26706243"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P478":[{"snaktype":"value","property":"P478","hash":"ca3c5e6054c169ee3d0dfaf660f3eecd77942070","datavalue":{"value":"4","type":"string"},"datatype":"string"}],"P304":[{"snaktype":"value","property":"P304","hash":"dd1977567f22f4cf510adfaadf5e3574813b3521","datavalue":{"value":"46","type":"string"},"datatype":"string"}]},"snaks-order":["P248","P478","P304"]}]}],"P3031":[{"mainsnak":{"snaktype":"value","property":"P3031","hash":"e6271e8d12b20c9735d2bbd80eed58581059bf3a","datavalue":{"value":"PNTHLE","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$65AD2857-AB65-4CC0-9AB9-9D6C924784FE","rank":"normal"}],"P3151":[{"mainsnak":{"snaktype":"value","property":"P3151","hash":"e85e5599d303d9a6bb360f3133fb69a76d98d0e2","datavalue":{"value":"41964","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$15D7A4EB-F0A3-4C61-8D2B-E557D7BF5CF7","rank":"normal"}],"P3186":[{"mainsnak":{"snaktype":"value","property":"P3186","hash":"85ec7843064210afdfef6ec565a47f229c6d15e5","datavalue":{"value":"644245","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$6903E136-2DB2-42C9-98CB-82F61208FDAD","rank":"normal","references":[{"hash":"5790a745e549ea7e4e6d7ca467148b544529ba96","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"c897ca3efd1604ef7b80a14ac0d2b8d6849c0856","datavalue":{"value":{"entity-type":"item","numeric-id":26936509,"id":"Q26936509"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"555ca5385c445e4fd4762281d4873682eff2ce30","datavalue":{"value":{"time":"+2016-09-24T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]},{"hash":"3edd37192f877cad0ff97acc3db56ef2cc83945b","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"4f7c4fd187630ba8cbb174c2756113983df4ce82","datavalue":{"value":{"entity-type":"item","numeric-id":45029859,"id":"Q45029859"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"56b6aa0388c9a2711946589902bc195718bb0675","datavalue":{"value":{"time":"+2017-12-26T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]},{"hash":"1318ed8ea451b84fe98461305665d8688603bab3","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"0fbeeecce08896108ed797d8ec22c7c10a6015e2","datavalue":{"value":{"entity-type":"item","numeric-id":45029998,"id":"Q45029998"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"4bac1c0d2ffc45d91b51fc0881eb6bcc7916e854","datavalue":{"value":{"time":"+2018-01-02T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]},{"hash":"6f761664a6f331d95bbaa1434447d82afd597a93","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"6c09d1d89e83bd0dfa6c94e01d24a9a47489d83e","datavalue":{"value":{"entity-type":"item","numeric-id":58035056,"id":"Q58035056"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"03182012ca72fcd757b8a1fe05ba927cbe9ef374","datavalue":{"value":{"time":"+2018-11-02T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P3485":[{"mainsnak":{"snaktype":"value","property":"P3485","hash":"df4e58fc2a196833ab3e33483099e2481e61ba9e","datavalue":{"value":{"amount":"+112","unit":"1"},"type":"quantity"},"datatype":"quantity"},"type":"statement","id":"Q140$4B70AA09-AE2F-4F4C-9BAF-09890CDA11B8","rank":"normal","references":[{"hash":"fa278ebfc458360e5aed63d5058cca83c46134f1","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"e4f6d9441d0600513c4533c672b5ab472dc73694","datavalue":{"value":{"entity-type":"item","numeric-id":328,"id":"Q328"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]}],"P3827":[{"mainsnak":{"snaktype":"value","property":"P3827","hash":"6bb26d581721d7330c407259d46ab5e25cc4a6b1","datavalue":{"value":"lions","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$CCDE6F7D-B4EA-4875-A4D6-5649ACFA8E2F","rank":"normal"}],"P268":[{"mainsnak":{"snaktype":"value","property":"P268","hash":"a20cdf81e39cd47f4da30073671792380029924c","datavalue":{"value":"11932251d","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$000FDB77-C70C-4464-9F00-605787964BBA","rank":"normal","references":[{"hash":"d4bd87b862b12d99d26e86472d44f26858dee639","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"f30cbd35620c4ea6d0633aaf0210a8916130469b","datavalue":{"value":{"entity-type":"item","numeric-id":8447,"id":"Q8447"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]}],"P3417":[{"mainsnak":{"snaktype":"value","property":"P3417","hash":"e3b5d21350aef37f27ad8b24142d6b83d9eec0a6","datavalue":{"value":"Lions","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$1f96d096-4e4b-06de-740f-7b7215e5ae3f","rank":"normal"}],"P4024":[{"mainsnak":{"snaktype":"value","property":"P4024","hash":"a698e7dcd6f9b0b00ee8e02846c668db83064833","datavalue":{"value":"Panthera_leo","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$F5DC21E8-BF52-4A0D-9A15-63B89297BD70","rank":"normal","references":[{"hash":"d4bd87b862b12d99d26e86472d44f26858dee639","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"f30cbd35620c4ea6d0633aaf0210a8916130469b","datavalue":{"value":{"entity-type":"item","numeric-id":8447,"id":"Q8447"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]}],"P1225":[{"mainsnak":{"snaktype":"value","property":"P1225","hash":"9af40267f10f15926877e9a3f78faeab7b0dda82","datavalue":{"value":"10665610","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$268074ED-3CD7-46C9-A8FF-8C3679C45547","rank":"normal"}],"P4728":[{"mainsnak":{"snaktype":"value","property":"P4728","hash":"37eafa980604019b327b1a3552313fb7ae256697","datavalue":{"value":"105514","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$50C24ECC-C42C-4A58-8F34-6AF0AC6C4EFE","rank":"normal","references":[{"hash":"d4bd87b862b12d99d26e86472d44f26858dee639","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"f30cbd35620c4ea6d0633aaf0210a8916130469b","datavalue":{"value":{"entity-type":"item","numeric-id":8447,"id":"Q8447"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]}],"P3219":[{"mainsnak":{"snaktype":"value","property":"P3219","hash":"dedb8825588940caff5a34d04a0e69af296f05dd","datavalue":{"value":"lion","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$2A5A2CA3-AB6E-4F68-927F-042D1BD22915","rank":"normal"}],"P1343":[{"mainsnak":{"snaktype":"value","property":"P1343","hash":"5b0ef3d5413cd39d887fbe70d2d3b3f4a94ea9d8","datavalue":{"value":{"entity-type":"item","numeric-id":1138524,"id":"Q1138524"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"f7bf629d348040dd1a59dc5a3199edb50279e8f5","datavalue":{"value":{"entity-type":"item","numeric-id":19997008,"id":"Q19997008"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$DFE4D4B0-0D84-41F2-B448-4A81AC982927","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"6bc15c6f82feca4f3b173c90209a416f99464cac","datavalue":{"value":{"entity-type":"item","numeric-id":4086271,"id":"Q4086271"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"69ace59e966574e4ffb454d26940a58fb45ed7de","datavalue":{"value":{"entity-type":"item","numeric-id":25295952,"id":"Q25295952"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$b82b0461-4ff0-10ac-9825-d4b95fc7a85a","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"ecb04d74140f2ee856c06658b03ec90a21c2edf2","datavalue":{"value":{"entity-type":"item","numeric-id":1970746,"id":"Q1970746"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"169607f1510535f3e1c5e7debce48d1903510f74","datavalue":{"value":{"entity-type":"item","numeric-id":30202801,"id":"Q30202801"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$bd49e319-477f-0cd2-a404-642156321081","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"88389772f86dcd7d415ddd029f601412e5cc894a","datavalue":{"value":{"entity-type":"item","numeric-id":602358,"id":"Q602358"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"67f2e59eb3f6480bdbaa3954055dfbf8fd045bc4","datavalue":{"value":{"entity-type":"item","numeric-id":24451091,"id":"Q24451091"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$906ae22e-4c63-d325-c91e-dc3ee6b7504d","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"42346dfe9209b7359c1f5db829a368b38d407797","datavalue":{"value":{"entity-type":"item","numeric-id":19180675,"id":"Q19180675"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"195bd04166c04364a657fcd18abd1a082dad3cb0","datavalue":{"value":{"entity-type":"item","numeric-id":24758519,"id":"Q24758519"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$92e7eeb1-4a72-9abf-4260-a96abc32bc42","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"7d6f86cef085693a10b0e0663a0960f58d0e15e2","datavalue":{"value":{"entity-type":"item","numeric-id":4173137,"id":"Q4173137"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"75e5bdfbbf8498b195840749ef3a9bd309b796f7","datavalue":{"value":{"entity-type":"item","numeric-id":25054587,"id":"Q25054587"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$6c9c319a-4e71-540e-8866-a6017f0e6bae","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"75dd89e79770a3e631dbba27144940f8f1bc1773","datavalue":{"value":{"entity-type":"item","numeric-id":1768721,"id":"Q1768721"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"a1b448ff5f8818a2254835e0816a03a785bac665","datavalue":{"value":{"entity-type":"item","numeric-id":96599885,"id":"Q96599885"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$A0FD93F4-A401-47A1-BC8E-F0D35A8E8BAD","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"4cfd4eb1fe49d401455df557a7d9b1154f22a725","datavalue":{"value":{"entity-type":"item","numeric-id":3181656,"id":"Q3181656"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P1932":[{"snaktype":"value","property":"P1932","hash":"a3f6e8ce10c4527693415dbc99b5ea285b2f411c","datavalue":{"value":"Lion, The","type":"string"},"datatype":"string"}]},"qualifiers-order":["P1932"],"id":"Q140$100f480e-4ad9-b340-8251-4e875d00315d","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"d5011798f92464584d8ccfc5f19f18f3659668bb","datavalue":{"value":{"entity-type":"item","numeric-id":106727050,"id":"Q106727050"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P1810":[{"snaktype":"value","property":"P1810","hash":"7d78547303d5e9e014a7c8cef6072faee91088ce","datavalue":{"value":"Lions","type":"string"},"datatype":"string"}],"P585":[{"snaktype":"value","property":"P585","hash":"ffb837135313cad3b2545c4b9ce5ee416deda3e2","datavalue":{"value":{"time":"+2021-05-07T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"qualifiers-order":["P1810","P585"],"id":"Q140$A4D208BD-6A69-4561-B402-2E17AAE6E028","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P1343","hash":"d12a9ecb0df8fce076df898533fea0339e5881bd","datavalue":{"value":{"entity-type":"item","numeric-id":10886720,"id":"Q10886720"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P805":[{"snaktype":"value","property":"P805","hash":"52ddab8de77b01303d508a1de615ca13060ec188","datavalue":{"value":{"entity-type":"item","numeric-id":107513600,"id":"Q107513600"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P805"],"id":"Q140$07daf548-4c8d-fa7c-16f4-4c7062f7e48a","rank":"normal"}],"P4733":[{"mainsnak":{"snaktype":"value","property":"P4733","hash":"fc789f67f6d4d9b5879a8631eefe61f51a60f979","datavalue":{"value":{"entity-type":"item","numeric-id":3177438,"id":"Q3177438"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$3773ba15-4723-261a-f9a8-544496938efa","rank":"normal","references":[{"hash":"649ae5511d5389d870d19e83543fa435de796536","snaks":{"P143":[{"snaktype":"value","property":"P143","hash":"9931bb1a17358e94590f8fa0b9550de881616d97","datavalue":{"value":{"entity-type":"item","numeric-id":784031,"id":"Q784031"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P143"]}]}],"P5019":[{"mainsnak":{"snaktype":"value","property":"P5019","hash":"44aac3d8a2bd240b4bc81741a0980dc48781181b","datavalue":{"value":"l\u00f6we","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$2be40b22-49f1-c9e7-1812-8e3fd69d662d","rank":"normal"}],"P2924":[{"mainsnak":{"snaktype":"value","property":"P2924","hash":"710d75c07e28936461d03b20b2fc7455599301a1","datavalue":{"value":"2135124","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$6326B120-CE04-4F02-94CA-D7BBC2589A39","rank":"normal"}],"P5055":[{"mainsnak":{"snaktype":"value","property":"P5055","hash":"c5264fc372b7e66566d54d73f86c8ab8c43fb033","datavalue":{"value":"10196306","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$F8D43B92-CC3A-4967-A28F-C3E6308946F6","rank":"normal","references":[{"hash":"7131076724beb97fed351cb7e7f6ac6d61dd05b9","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"1e3ad3cb9e0170e28b7c7c335fba55cafa6ef789","datavalue":{"value":{"entity-type":"item","numeric-id":51885189,"id":"Q51885189"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"2b1446fcfcd471ab6d36521b4ad2ac183ff8bc0d","datavalue":{"value":{"time":"+2018-06-07T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P5221":[{"mainsnak":{"snaktype":"value","property":"P5221","hash":"623ca9614dd0d8b8720bf35b4d57be91dcef5fe6","datavalue":{"value":"123566","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$472fe544-402d-2574-6b2e-98c5b01bb294","rank":"normal"}],"P5698":[{"mainsnak":{"snaktype":"value","property":"P5698","hash":"e966694183143d709403fae7baabb5fdf98d219a","datavalue":{"value":"70719","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$EF3F712D-B0E5-4151-81E4-67804D6241E6","rank":"normal"}],"P5397":[{"mainsnak":{"snaktype":"value","property":"P5397","hash":"49a827bc1853a3b5612b437dd61eb5c28dc0bab0","datavalue":{"value":"12799","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$DE37BF10-A59D-48F1-926A-7303EDEEDDD0","rank":"normal"}],"P6033":[{"mainsnak":{"snaktype":"value","property":"P6033","hash":"766727ded3adbbfec0bed77affc89ea4e5214d65","datavalue":{"value":"panthera-leo","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$A27BADCC-0F72-45A5-814B-BDE62BD7A1B4","rank":"normal"}],"P18":[{"mainsnak":{"snaktype":"value","property":"P18","hash":"d3ceb5bb683335c91781e4d52906d2fb1cc0c35d","datavalue":{"value":"Lion waiting in Namibia.jpg","type":"string"},"datatype":"commonsMedia"},"type":"statement","qualifiers":{"P21":[{"snaktype":"value","property":"P21","hash":"0576a008261e5b2544d1ff3328c94bd529379536","datavalue":{"value":{"entity-type":"item","numeric-id":44148,"id":"Q44148"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P2096":[{"snaktype":"value","property":"P2096","hash":"6923fafa02794ae7d0773e565de7dd49a2694b38","datavalue":{"value":{"text":"Lle\u00f3","language":"ca"},"type":"monolingualtext"},"datatype":"monolingualtext"},{"snaktype":"value","property":"P2096","hash":"563784f05211416fda8662a0773f52165ccf6c2a","datavalue":{"value":{"text":"Machu de lle\u00f3n en Namibia","language":"ast"},"type":"monolingualtext"},"datatype":"monolingualtext"},{"snaktype":"value","property":"P2096","hash":"52722803d98964d77b79d3ed62bd24b4f25e6993","datavalue":{"value":{"text":"\u043b\u044a\u0432","language":"bg"},"type":"monolingualtext"},"datatype":"monolingualtext"}]},"qualifiers-order":["P21","P2096"],"id":"q140$5903FDF3-DBBD-4527-A738-450EAEAA45CB","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P18","hash":"6907d4c168377a18d6a5eb390ab32a7da42d8218","datavalue":{"value":"Okonjima Lioness.jpg","type":"string"},"datatype":"commonsMedia"},"type":"statement","qualifiers":{"P21":[{"snaktype":"value","property":"P21","hash":"a274865baccd3ff04c28d5ffdcc12e0079f5a201","datavalue":{"value":{"entity-type":"item","numeric-id":43445,"id":"Q43445"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P2096":[{"snaktype":"value","property":"P2096","hash":"a9d1363e8fc83ba822c45a81de59fe5b8eb434cf","datavalue":{"value":{"text":"\u043b\u044a\u0432\u0438\u0446\u0430","language":"bg"},"type":"monolingualtext"},"datatype":"monolingualtext"},{"snaktype":"value","property":"P2096","hash":"b36ab7371664b7b62ee7be65db4e248074a5330c","datavalue":{"value":{"text":"Lleona n'Okonjima Lodge, Namibia","language":"ast"},"type":"monolingualtext"},"datatype":"monolingualtext"},{"snaktype":"value","property":"P2096","hash":"31c78a574eabc0426d7984aa4988752e35b71f0c","datavalue":{"value":{"text":"lwica","language":"pl"},"type":"monolingualtext"},"datatype":"monolingualtext"}]},"qualifiers-order":["P21","P2096"],"id":"Q140$4da15225-f7dc-4942-a685-0669e5d3af14","rank":"normal"}],"P6573":[{"mainsnak":{"snaktype":"value","property":"P6573","hash":"c27b457b12eeecb053d60af6ecf9b0baa133bef5","datavalue":{"value":"L\u00f6we","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$45B1C3EB-E335-4245-A193-8C48B4953E51","rank":"normal"}],"P443":[{"mainsnak":{"snaktype":"value","property":"P443","hash":"8a9afb9293804f976c415060900bf9afbc2cfdff","datavalue":{"value":"LL-Q188 (deu)-Sebastian Wallroth-L\u00f6we.wav","type":"string"},"datatype":"commonsMedia"},"type":"statement","qualifiers":{"P407":[{"snaktype":"value","property":"P407","hash":"46bfd327b830f66f7061ea92d1be430c135fa91f","datavalue":{"value":{"entity-type":"item","numeric-id":188,"id":"Q188"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P407"],"id":"Q140$5EC64299-429F-45E8-B18F-19325401189C","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P443","hash":"7d058dfd1e8a41f026974faec3dc0588e29c6854","datavalue":{"value":"LL-Q150 (fra)-Ash Crow-lion.wav","type":"string"},"datatype":"commonsMedia"},"type":"statement","qualifiers":{"P407":[{"snaktype":"value","property":"P407","hash":"d197d0a5efa4b4c23a302a829dd3ef43684fe002","datavalue":{"value":{"entity-type":"item","numeric-id":150,"id":"Q150"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P407"],"id":"Q140$A4575261-6577-4EF6-A0C9-DA5FA523D1C2","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P443","hash":"79b9f51c9b4eec305813d5bb697b403d798cf1c5","datavalue":{"value":"LL-Q33965 (sat)-Joy sagar Murmu-\u1c60\u1c69\u1c5e.wav","type":"string"},"datatype":"commonsMedia"},"type":"statement","qualifiers":{"P407":[{"snaktype":"value","property":"P407","hash":"58ae6998321952889f733126c11c582eeef20e72","datavalue":{"value":{"entity-type":"item","numeric-id":33965,"id":"Q33965"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P407"],"id":"Q140$7eedc8fa-4d1c-7ee9-3c67-0c89ef464d9f","rank":"normal","references":[{"hash":"d0b5c88b6f49dda9160c706291a9b8645825d99c","snaks":{"P854":[{"snaktype":"value","property":"P854","hash":"38c1012cea9eb73cf1bd11eba0c2f745d2463340","datavalue":{"value":"https://lingualibre.org/wiki/Q403065","type":"string"},"datatype":"url"}]},"snaks-order":["P854"]}]}],"P1296":[{"mainsnak":{"snaktype":"value","property":"P1296","hash":"c1f872d4cd22219a7315c0198a83c1918ded97ee","datavalue":{"value":"0120024","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$6C51384B-2EBF-4E6B-9201-A44F0A145C04","rank":"normal"}],"P486":[{"mainsnak":{"snaktype":"value","property":"P486","hash":"b7003b0fb28287301200b6b3871a5437d877913b","datavalue":{"value":"D008045","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$B2F98DD2-B679-43DD-B731-FA33FB1EE4B9","rank":"normal"}],"P989":[{"mainsnak":{"snaktype":"value","property":"P989","hash":"132884b2a696a8b56c8b1460e126f745e2fa6d01","datavalue":{"value":"Ru-Lion (intro).ogg","type":"string"},"datatype":"commonsMedia"},"type":"statement","qualifiers":{"P407":[{"snaktype":"value","property":"P407","hash":"d291ddb7cd77c94a7bd709a8395934147e0864fc","datavalue":{"value":{"entity-type":"item","numeric-id":7737,"id":"Q7737"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P407"],"id":"Q140$857D8831-673B-427E-A182-6A9FFA980424","rank":"normal"}],"P51":[{"mainsnak":{"snaktype":"value","property":"P51","hash":"73b0e8c8458ebc27374fd08d8ef5241f2f28e3e9","datavalue":{"value":"Lion raring-sound1TamilNadu178.ogg","type":"string"},"datatype":"commonsMedia"},"type":"statement","id":"Q140$1c254aff-48b1-d3c5-930c-b360ce6fe043","rank":"normal"}],"P4212":[{"mainsnak":{"snaktype":"value","property":"P4212","hash":"e006ce3295d617a4818dc758c28f444446538019","datavalue":{"value":"pcrt5TAeZsO7W4","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$AD6CD534-1FD2-4AC7-9CF8-9D2B4C46927C","rank":"normal"}],"P2067":[{"mainsnak":{"snaktype":"value","property":"P2067","hash":"97a863433c30b47a6175abb95941d185397ea14a","datavalue":{"value":{"amount":"+1.65","unit":"http://www.wikidata.org/entity/Q11570"},"type":"quantity"},"datatype":"quantity"},"type":"statement","qualifiers":{"P642":[{"snaktype":"value","property":"P642","hash":"f5e24bc6ec443d6cb3678e4561bc298090b54f60","datavalue":{"value":{"entity-type":"item","numeric-id":4128476,"id":"Q4128476"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P642"],"id":"Q140$198da244-7e66-4258-9434-537e9ce0ffab","rank":"normal","references":[{"hash":"94a79329d5eac70f7ddb005e0d1dc78c53e77797","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"4a7fef7ea264a7c71765ce60e3d42f4c043c9646","datavalue":{"value":{"entity-type":"item","numeric-id":45106562,"id":"Q45106562"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]},{"mainsnak":{"snaktype":"value","property":"P2067","hash":"ba9933059ce368e3afde1e96d78b1217172c954e","datavalue":{"value":{"amount":"+188","unit":"http://www.wikidata.org/entity/Q11570"},"type":"quantity"},"datatype":"quantity"},"type":"statement","qualifiers":{"P642":[{"snaktype":"value","property":"P642","hash":"b388540fc86300a506b3a753ec58dec445525ffa","datavalue":{"value":{"entity-type":"item","numeric-id":78101716,"id":"Q78101716"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P21":[{"snaktype":"value","property":"P21","hash":"0576a008261e5b2544d1ff3328c94bd529379536","datavalue":{"value":{"entity-type":"item","numeric-id":44148,"id":"Q44148"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P642","P21"],"id":"Q140$a3092626-4295-efb8-bbb6-eed913d02fc7","rank":"normal","references":[{"hash":"94a79329d5eac70f7ddb005e0d1dc78c53e77797","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"4a7fef7ea264a7c71765ce60e3d42f4c043c9646","datavalue":{"value":{"entity-type":"item","numeric-id":45106562,"id":"Q45106562"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]},{"mainsnak":{"snaktype":"value","property":"P2067","hash":"6951281811b2a8a3a78044e2003d6c162d5ba1a3","datavalue":{"value":{"amount":"+126","unit":"http://www.wikidata.org/entity/Q11570"},"type":"quantity"},"datatype":"quantity"},"type":"statement","qualifiers":{"P642":[{"snaktype":"value","property":"P642","hash":"b388540fc86300a506b3a753ec58dec445525ffa","datavalue":{"value":{"entity-type":"item","numeric-id":78101716,"id":"Q78101716"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P21":[{"snaktype":"value","property":"P21","hash":"a274865baccd3ff04c28d5ffdcc12e0079f5a201","datavalue":{"value":{"entity-type":"item","numeric-id":43445,"id":"Q43445"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P642","P21"],"id":"Q140$20d80fe2-4796-23d1-42c2-c103546aa874","rank":"normal","references":[{"hash":"94a79329d5eac70f7ddb005e0d1dc78c53e77797","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"4a7fef7ea264a7c71765ce60e3d42f4c043c9646","datavalue":{"value":{"entity-type":"item","numeric-id":45106562,"id":"Q45106562"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]}],"P7725":[{"mainsnak":{"snaktype":"value","property":"P7725","hash":"e9338e052dfaa9267c2357bec2e167ca625af667","datavalue":{"value":{"amount":"+2.5","unit":"1","upperBound":"+4.0","lowerBound":"+1.0"},"type":"quantity"},"datatype":"quantity"},"type":"statement","id":"Q140$f1f04a23-0d34-484a-9419-78d12958170c","rank":"normal","references":[{"hash":"94a79329d5eac70f7ddb005e0d1dc78c53e77797","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"4a7fef7ea264a7c71765ce60e3d42f4c043c9646","datavalue":{"value":{"entity-type":"item","numeric-id":45106562,"id":"Q45106562"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]}],"P4214":[{"mainsnak":{"snaktype":"value","property":"P4214","hash":"5a112dbdaed17b1ee3fe7a63b1f978e5fd41008a","datavalue":{"value":{"amount":"+27","unit":"http://www.wikidata.org/entity/Q577"},"type":"quantity"},"datatype":"quantity"},"type":"statement","id":"Q140$ec1ccab2-f506-4c81-9179-4625bbbbbe27","rank":"normal","references":[{"hash":"a8ccf5105b0e2623ae145dd8a9b927c9bd957ddf","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"5b45c23ddb076fe9c5accfe4a4bbd1c24c4c87cb","datavalue":{"value":{"entity-type":"item","numeric-id":83566668,"id":"Q83566668"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]}],"P7862":[{"mainsnak":{"snaktype":"value","property":"P7862","hash":"6e74ddb544498b93407179cc9a7f9b8610762ff5","datavalue":{"value":{"amount":"+8","unit":"http://www.wikidata.org/entity/Q5151"},"type":"quantity"},"datatype":"quantity"},"type":"statement","id":"Q140$17b64a1e-4a13-9e2a-f8a2-a9317890aa53","rank":"normal","references":[{"hash":"94a79329d5eac70f7ddb005e0d1dc78c53e77797","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"4a7fef7ea264a7c71765ce60e3d42f4c043c9646","datavalue":{"value":{"entity-type":"item","numeric-id":45106562,"id":"Q45106562"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]}],"P7818":[{"mainsnak":{"snaktype":"value","property":"P7818","hash":"5c7bac858cf66d079e6c13c88f3f001eb446cdce","datavalue":{"value":"Lion","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$C2D3546E-C42A-404A-A288-580F9C705E12","rank":"normal"}],"P7829":[{"mainsnak":{"snaktype":"value","property":"P7829","hash":"17fbb02db65a7e80691f58be750382d61148406e","datavalue":{"value":"Lion","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$74998F51-E783-40CB-A56A-3189647AB3D4","rank":"normal"}],"P7827":[{"mainsnak":{"snaktype":"value","property":"P7827","hash":"f85db9fe2c187554aefc51e5529d75e0c5af4767","datavalue":{"value":"Le\u00f3n","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$5DA64E1B-F1F1-4254-8629-985DFE8672A2","rank":"normal"}],"P7822":[{"mainsnak":{"snaktype":"value","property":"P7822","hash":"3cd23fddc416227c2ba85d91aa03dc80a8e95836","datavalue":{"value":"Leone","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$DF657EF2-67A8-4272-871D-E95B3719A8B6","rank":"normal"}],"P6105":[{"mainsnak":{"snaktype":"value","property":"P6105","hash":"8bbda0afe53fc428d3a0d9528c97d2145ee41dce","datavalue":{"value":"79432","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$2AE92335-1BC6-4B92-BAF3-9AB41608E638","rank":"normal"}],"P6864":[{"mainsnak":{"snaktype":"value","property":"P6864","hash":"6f87ce0800057dbe88f27748b3077938973eb5c8","datavalue":{"value":"85426","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$9089C4B9-59A8-45A6-821B-05C1BB4C107C","rank":"normal"}],"P2347":[{"mainsnak":{"snaktype":"value","property":"P2347","hash":"41e41b306cdd5e55007ac02da022d9f4ce230b03","datavalue":{"value":"7345","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$3CEB44D7-6C0B-4E66-87ED-37D723A1CCC8","rank":"normal","references":[{"hash":"f9bf1a1f034ddd51bd9928ac535e0f57d748e2cf","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"7133f11674741f52cadaae6029068fad9cbb52e3","datavalue":{"value":{"entity-type":"item","numeric-id":89345680,"id":"Q89345680"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]}],"P7033":[{"mainsnak":{"snaktype":"value","property":"P7033","hash":"e31b2e07ae0ce3d3a087d3c818c7bf29c7b04b72","datavalue":{"value":"scot/9244","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$F8148EB5-7934-4491-9B40-3378B7D292A6","rank":"normal"}],"P8408":[{"mainsnak":{"snaktype":"value","property":"P8408","hash":"51c04ed4f03488e8f428256ee41eb20eabe3ff38","datavalue":{"value":"Lion","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$2855E519-BCD1-4AB3-B3E9-BB53C5CB2E22","rank":"normal","references":[{"hash":"9a681f9dd95c90224547c404e11295f4f7dcf54e","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"9d5780dddffa8746637a9929a936ab6b0f601e24","datavalue":{"value":{"entity-type":"item","numeric-id":64139102,"id":"Q64139102"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P813":[{"snaktype":"value","property":"P813","hash":"622a5a27fa5b25e7e7984974e9db494cf8460990","datavalue":{"value":{"time":"+2020-07-09T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P813"]}]}],"P8519":[{"mainsnak":{"snaktype":"value","property":"P8519","hash":"ad8031a668b5310633a04a9223714b3482d388b2","datavalue":{"value":"64570","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$ba4fa085-0e54-4226-a46b-770f7d5a995f","rank":"normal"}],"P279":[{"mainsnak":{"snaktype":"value","property":"P279","hash":"761c3439637add8f8fe3a351d6231333693835f6","datavalue":{"value":{"entity-type":"item","numeric-id":6667323,"id":"Q6667323"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$cb41b7d3-46f0-e6d9-ced6-c2803e0c06b7","rank":"normal"}],"P2670":[{"mainsnak":{"snaktype":"value","property":"P2670","hash":"6563f1e596253f1574515891267de01c5c1e688e","datavalue":{"value":{"entity-type":"item","numeric-id":17611534,"id":"Q17611534"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$24984be4-4813-b6ad-ec83-1a37b7332c8a","rank":"normal"},{"mainsnak":{"snaktype":"value","property":"P2670","hash":"684855138cc32d11b487d0178c194f10c63f5f86","datavalue":{"value":{"entity-type":"item","numeric-id":98520146,"id":"Q98520146"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$56e8c9b3-4892-e95d-f7c5-02b10ffe77e8","rank":"normal"}],"P31":[{"mainsnak":{"snaktype":"value","property":"P31","hash":"06629d890d7ab0ff85c403d8aadf57ce9809c01f","datavalue":{"value":{"entity-type":"item","numeric-id":16521,"id":"Q16521"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"q140$8EE98E5B-4A9C-4BF5-B456-FB77E8EE4E69","rank":"normal"}],"P2581":[{"mainsnak":{"snaktype":"value","property":"P2581","hash":"beca27cf7dd079eb27b7690e13a446d98448ae91","datavalue":{"value":"00049156n","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$90562c9a-4e9c-082d-d577-e0869524d9a1","rank":"normal"}],"P7506":[{"mainsnak":{"snaktype":"value","property":"P7506","hash":"0562f57f9a54c65a2d45711f6dd5dd53ce37f6f8","datavalue":{"value":"1107856","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$00d453bf-4786-bde9-63f4-2db9f3610e88","rank":"normal"}],"P5184":[{"mainsnak":{"snaktype":"value","property":"P5184","hash":"201d8de9b05ae85fe4f917c7e54c4a0218517888","datavalue":{"value":"b11s0701a","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$a2b832c9-4c5c-e402-e10d-cf2b08d35a56","rank":"normal"}],"P6900":[{"mainsnak":{"snaktype":"value","property":"P6900","hash":"f7218c6984cd57078497a62ad595b089bdd97c49","datavalue":{"value":"\u30e9\u30a4\u30aa\u30f3","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$d15d143d-4826-4860-9aa3-6a350d6bc36f","rank":"normal"}],"P3553":[{"mainsnak":{"snaktype":"value","property":"P3553","hash":"c82c6e1156e098d5ef396248c412371b90e0dc56","datavalue":{"value":"19563862","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$5edb95fa-4647-2e9a-9dbf-b68e1326eb79","rank":"normal"}],"P5337":[{"mainsnak":{"snaktype":"value","property":"P5337","hash":"793cfa52df3c5a6747c0cb5db959db944b04dbed","datavalue":{"value":"CAAqIQgKIhtDQkFTRGdvSUwyMHZNRGsyYldJU0FtcGhLQUFQAQ","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$6137dbc1-4c6a-af60-00ee-2a32c63bfdfa","rank":"normal"}],"P6200":[{"mainsnak":{"snaktype":"value","property":"P6200","hash":"0ce08dd38017230d41f530f6e97baf484f607235","datavalue":{"value":"ce2gz91pyv2t","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$01ed0f16-4a4a-213d-e457-0d4d5d670d49","rank":"normal"}],"P4527":[{"mainsnak":{"snaktype":"value","property":"P4527","hash":"b07d29aa5112080a9294a7421e46ed0b73ac96c7","datavalue":{"value":"430792","type":"string"},"datatype":"external-id"},"type":"statement","qualifiers":{"P1810":[{"snaktype":"value","property":"P1810","hash":"7d78547303d5e9e014a7c8cef6072faee91088ce","datavalue":{"value":"Lions","type":"string"},"datatype":"string"}]},"qualifiers-order":["P1810"],"id":"Q140$C37C600C-4929-4203-A06E-8D797BA9B22A","rank":"normal"}],"P8989":[{"mainsnak":{"snaktype":"value","property":"P8989","hash":"37087c42c921d83773f62d77e7360dc44504c122","datavalue":{"value":{"entity-type":"item","numeric-id":104595349,"id":"Q104595349"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$1ece61f5-c008-4750-8b67-e15337f28e86","rank":"normal"}],"P1552":[{"mainsnak":{"snaktype":"value","property":"P1552","hash":"1aa7db66bfad11e427c40ec79f3295de877967f1","datavalue":{"value":{"entity-type":"item","numeric-id":120446,"id":"Q120446"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$0bd4b0d9-49ff-b5b4-5c10-9500bc0ce19d","rank":"normal"}],"P9198":[{"mainsnak":{"snaktype":"value","property":"P9198","hash":"d3ab4ab9d788dc348d16e13fc77164ea71cef2ae","datavalue":{"value":"352","type":"string"},"datatype":"external-id"},"type":"statement","id":"Q140$C5D80C89-2862-490F-AA85-C260F32BE30B","rank":"normal"}],"P9566":[{"mainsnak":{"snaktype":"value","property":"P9566","hash":"053e0b7c15c8e5a61a71077c4cffa73b9d03005b","datavalue":{"value":{"entity-type":"item","numeric-id":3255068,"id":"Q3255068"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","id":"Q140$C7DAEA4E-B613-48A6-BFCD-88B551D1EF7A","rank":"normal","references":[{"hash":"0eedf63ac49c9b21aa7ff0a5e70b71aa6069a8ed","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"abfcfc68aa085f872d633958be83cba2ab96ce4a","datavalue":{"value":{"entity-type":"item","numeric-id":1637051,"id":"Q1637051"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]},{"hash":"6db51e3163554f674ff270c93a2871c8d859a49e","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"abfcfc68aa085f872d633958be83cba2ab96ce4a","datavalue":{"value":{"entity-type":"item","numeric-id":1637051,"id":"Q1637051"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P577":[{"snaktype":"value","property":"P577","hash":"ccd6ea06a2c9c0f54f5b1f45991a659225b5f4ef","datavalue":{"value":{"time":"+2013-01-01T00:00:00Z","timezone":0,"before":0,"after":0,"precision":9,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P577"]}]}],"P508":[{"mainsnak":{"snaktype":"value","property":"P508","hash":"e87c854abf600fb5de7b9b677d94a06e18851333","datavalue":{"value":"34922","type":"string"},"datatype":"external-id"},"type":"statement","qualifiers":{"P1810":[{"snaktype":"value","property":"P1810","hash":"137692b9bcc178e7b7d232631cb607d45e2f543d","datavalue":{"value":"Leoni","type":"string"},"datatype":"string"}],"P4970":[{"snaktype":"value","property":"P4970","hash":"271ec192bf14b9eb639120c60d5961ab8692444d","datavalue":{"value":"Panthera leo","type":"string"},"datatype":"string"}]},"qualifiers-order":["P1810","P4970"],"id":"Q140$52702f98-7843-4e0e-b646-76629e04e555","rank":"normal"}],"P950":[{"mainsnak":{"snaktype":"value","property":"P950","hash":"f447323110fd744383394f91c2dfba2fc3187242","datavalue":{"value":"XX530613","type":"string"},"datatype":"external-id"},"type":"statement","qualifiers":{"P1810":[{"snaktype":"value","property":"P1810","hash":"e2b2bda5457e0d5f7859e5c54996e1884062dfd1","datavalue":{"value":"Leones","type":"string"},"datatype":"string"}]},"qualifiers-order":["P1810"],"id":"Q140$773f47cf-3133-4892-80eb-9d4dc5e97582","rank":"normal","references":[{"hash":"184729506e049d06de85686ede30c92b3e52451d","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"3b090a7bae73c288393b2c8b9846cc7ed9a58f91","datavalue":{"value":{"entity-type":"item","numeric-id":16583225,"id":"Q16583225"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}],"P854":[{"snaktype":"value","property":"P854","hash":"b16c3ffac23bb97abe5d0c4d6ccffe4d010ab71a","datavalue":{"value":"https://thes.bncf.firenze.sbn.it/termine.php?id=34922","type":"string"},"datatype":"url"}],"P813":[{"snaktype":"value","property":"P813","hash":"7721e97431215c374db84a9df785dc964a16bd17","datavalue":{"value":{"time":"+2021-06-15T00:00:00Z","timezone":0,"before":0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"},"type":"time"},"datatype":"time"}]},"snaks-order":["P248","P854","P813"]}]}],"P7603":[{"mainsnak":{"snaktype":"value","property":"P7603","hash":"c86436e278d690f057cfecc86babf982948015f3","datavalue":{"value":{"entity-type":"item","numeric-id":2851528,"id":"Q2851528"},"type":"wikibase-entityid"},"datatype":"wikibase-item"},"type":"statement","qualifiers":{"P17":[{"snaktype":"value","property":"P17","hash":"18fb076bdc1c07e578546d1670ba193b768531ac","datavalue":{"value":{"entity-type":"item","numeric-id":668,"id":"Q668"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"qualifiers-order":["P17"],"id":"Q140$64262d09-4a19-3945-8a09-c2195b7614a7","rank":"normal"}],"P6800":[{"mainsnak":{"snaktype":"value","property":"P6800","hash":"1da99908e2ffdf6de901a1b8a2dbab0c62886565","datavalue":{"value":"http://www.ensembl.org/Panthera_leo","type":"string"},"datatype":"url"},"type":"statement","id":"Q140$87DC0D37-FC9E-4FFE-B92D-1A3A7C019A1D","rank":"normal","references":[{"hash":"53eb51e25c6356d2d4673dc249ea837dd14feca0","snaks":{"P248":[{"snaktype":"value","property":"P248","hash":"4ec639fccc9ddb8e079f7d27ca43220e3c512c20","datavalue":{"value":{"entity-type":"item","numeric-id":1344256,"id":"Q1344256"},"type":"wikibase-entityid"},"datatype":"wikibase-item"}]},"snaks-order":["P248"]}]}]},"sitelinks":{"abwiki":{"site":"abwiki","title":"\u0410\u043b\u044b\u043c","badges":[],"url":"https://ab.wikipedia.org/wiki/%D0%90%D0%BB%D1%8B%D0%BC"},"adywiki":{"site":"adywiki","title":"\u0410\u0441\u043b\u044a\u0430\u043d","badges":[],"url":"https://ady.wikipedia.org/wiki/%D0%90%D1%81%D0%BB%D1%8A%D0%B0%D0%BD"},"afwiki":{"site":"afwiki","title":"Leeu","badges":["Q17437796"],"url":"https://af.wikipedia.org/wiki/Leeu"},"alswiki":{"site":"alswiki","title":"L\u00f6we","badges":[],"url":"https://als.wikipedia.org/wiki/L%C3%B6we"},"altwiki":{"site":"altwiki","title":"\u0410\u0440\u0441\u043b\u0430\u043d","badges":[],"url":"https://alt.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%BB%D0%B0%D0%BD"},"amwiki":{"site":"amwiki","title":"\u12a0\u1295\u1260\u1233","badges":[],"url":"https://am.wikipedia.org/wiki/%E1%8A%A0%E1%8A%95%E1%89%A0%E1%88%B3"},"angwiki":{"site":"angwiki","title":"L\u0113o","badges":[],"url":"https://ang.wikipedia.org/wiki/L%C4%93o"},"anwiki":{"site":"anwiki","title":"Panthera leo","badges":[],"url":"https://an.wikipedia.org/wiki/Panthera_leo"},"arcwiki":{"site":"arcwiki","title":"\u0710\u072a\u071d\u0710","badges":[],"url":"https://arc.wikipedia.org/wiki/%DC%90%DC%AA%DC%9D%DC%90"},"arwiki":{"site":"arwiki","title":"\u0623\u0633\u062f","badges":["Q17437796"],"url":"https://ar.wikipedia.org/wiki/%D8%A3%D8%B3%D8%AF"},"arywiki":{"site":"arywiki","title":"\u0633\u0628\u0639","badges":[],"url":"https://ary.wikipedia.org/wiki/%D8%B3%D8%A8%D8%B9"},"arzwiki":{"site":"arzwiki","title":"\u0633\u0628\u0639","badges":[],"url":"https://arz.wikipedia.org/wiki/%D8%B3%D8%A8%D8%B9"},"astwiki":{"site":"astwiki","title":"Panthera leo","badges":[],"url":"https://ast.wikipedia.org/wiki/Panthera_leo"},"aswiki":{"site":"aswiki","title":"\u09b8\u09bf\u0982\u09b9","badges":[],"url":"https://as.wikipedia.org/wiki/%E0%A6%B8%E0%A6%BF%E0%A6%82%E0%A6%B9"},"avkwiki":{"site":"avkwiki","title":"Krapol (Panthera leo)","badges":[],"url":"https://avk.wikipedia.org/wiki/Krapol_(Panthera_leo)"},"avwiki":{"site":"avwiki","title":"\u0413\u044a\u0430\u043b\u0431\u0430\u0446\u04c0","badges":[],"url":"https://av.wikipedia.org/wiki/%D0%93%D1%8A%D0%B0%D0%BB%D0%B1%D0%B0%D1%86%D3%80"},"azbwiki":{"site":"azbwiki","title":"\u0622\u0633\u0644\u0627\u0646","badges":[],"url":"https://azb.wikipedia.org/wiki/%D8%A2%D8%B3%D9%84%D8%A7%D9%86"},"azwiki":{"site":"azwiki","title":"\u015eir","badges":[],"url":"https://az.wikipedia.org/wiki/%C5%9Eir"},"bat_smgwiki":{"site":"bat_smgwiki","title":"Li\u016bts","badges":[],"url":"https://bat-smg.wikipedia.org/wiki/Li%C5%ABts"},"bawiki":{"site":"bawiki","title":"\u0410\u0440\u044b\u04ab\u043b\u0430\u043d","badges":[],"url":"https://ba.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D2%AB%D0%BB%D0%B0%D0%BD"},"bclwiki":{"site":"bclwiki","title":"Leon","badges":[],"url":"https://bcl.wikipedia.org/wiki/Leon"},"be_x_oldwiki":{"site":"be_x_oldwiki","title":"\u041b\u0435\u045e","badges":[],"url":"https://be-tarask.wikipedia.org/wiki/%D0%9B%D0%B5%D1%9E"},"bewiki":{"site":"bewiki","title":"\u041b\u0435\u045e","badges":[],"url":"https://be.wikipedia.org/wiki/%D0%9B%D0%B5%D1%9E"},"bgwiki":{"site":"bgwiki","title":"\u041b\u044a\u0432","badges":[],"url":"https://bg.wikipedia.org/wiki/%D0%9B%D1%8A%D0%B2"},"bhwiki":{"site":"bhwiki","title":"\u0938\u093f\u0902\u0939","badges":[],"url":"https://bh.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9"},"bmwiki":{"site":"bmwiki","title":"Waraba","badges":[],"url":"https://bm.wikipedia.org/wiki/Waraba"},"bnwiki":{"site":"bnwiki","title":"\u09b8\u09bf\u0982\u09b9","badges":[],"url":"https://bn.wikipedia.org/wiki/%E0%A6%B8%E0%A6%BF%E0%A6%82%E0%A6%B9"},"bowiki":{"site":"bowiki","title":"\u0f66\u0f7a\u0f44\u0f0b\u0f42\u0f7a\u0f0d","badges":[],"url":"https://bo.wikipedia.org/wiki/%E0%BD%A6%E0%BD%BA%E0%BD%84%E0%BC%8B%E0%BD%82%E0%BD%BA%E0%BC%8D"},"bpywiki":{"site":"bpywiki","title":"\u09a8\u0982\u09b8\u09be","badges":[],"url":"https://bpy.wikipedia.org/wiki/%E0%A6%A8%E0%A6%82%E0%A6%B8%E0%A6%BE"},"brwiki":{"site":"brwiki","title":"Leon (loen)","badges":[],"url":"https://br.wikipedia.org/wiki/Leon_(loen)"},"bswiki":{"site":"bswiki","title":"Lav","badges":[],"url":"https://bs.wikipedia.org/wiki/Lav"},"bswikiquote":{"site":"bswikiquote","title":"Lav","badges":[],"url":"https://bs.wikiquote.org/wiki/Lav"},"bxrwiki":{"site":"bxrwiki","title":"\u0410\u0440\u0441\u0430\u043b\u0430\u043d","badges":[],"url":"https://bxr.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%B0%D0%BB%D0%B0%D0%BD"},"cawiki":{"site":"cawiki","title":"Lle\u00f3","badges":["Q17437796"],"url":"https://ca.wikipedia.org/wiki/Lle%C3%B3"},"cawikiquote":{"site":"cawikiquote","title":"Lle\u00f3","badges":[],"url":"https://ca.wikiquote.org/wiki/Lle%C3%B3"},"cdowiki":{"site":"cdowiki","title":"S\u0103i (m\u00e0-ku\u014f d\u00f4ng-\u016dk)","badges":[],"url":"https://cdo.wikipedia.org/wiki/S%C4%83i_(m%C3%A0-ku%C5%8F_d%C3%B4ng-%C5%ADk)"},"cebwiki":{"site":"cebwiki","title":"Panthera leo","badges":[],"url":"https://ceb.wikipedia.org/wiki/Panthera_leo"},"cewiki":{"site":"cewiki","title":"\u041b\u043e\u043c","badges":[],"url":"https://ce.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BC"},"chrwiki":{"site":"chrwiki","title":"\u13e2\u13d3\u13e5 \u13a4\u13c3\u13d5\u13be","badges":[],"url":"https://chr.wikipedia.org/wiki/%E1%8F%A2%E1%8F%93%E1%8F%A5_%E1%8E%A4%E1%8F%83%E1%8F%95%E1%8E%BE"},"chywiki":{"site":"chywiki","title":"P\u00e9hpe'\u00e9nan\u00f3se'hame","badges":[],"url":"https://chy.wikipedia.org/wiki/P%C3%A9hpe%27%C3%A9nan%C3%B3se%27hame"},"ckbwiki":{"site":"ckbwiki","title":"\u0634\u06ce\u0631","badges":[],"url":"https://ckb.wikipedia.org/wiki/%D8%B4%DB%8E%D8%B1"},"commonswiki":{"site":"commonswiki","title":"Panthera leo","badges":[],"url":"https://commons.wikimedia.org/wiki/Panthera_leo"},"cowiki":{"site":"cowiki","title":"Lionu","badges":[],"url":"https://co.wikipedia.org/wiki/Lionu"},"csbwiki":{"site":"csbwiki","title":"Lew","badges":[],"url":"https://csb.wikipedia.org/wiki/Lew"},"cswiki":{"site":"cswiki","title":"Lev","badges":[],"url":"https://cs.wikipedia.org/wiki/Lev"},"cswikiquote":{"site":"cswikiquote","title":"Lev","badges":[],"url":"https://cs.wikiquote.org/wiki/Lev"},"cuwiki":{"site":"cuwiki","title":"\u041b\u044c\u0432\u044a","badges":[],"url":"https://cu.wikipedia.org/wiki/%D0%9B%D1%8C%D0%B2%D1%8A"},"cvwiki":{"site":"cvwiki","title":"\u0410\u0440\u0103\u0441\u043b\u0430\u043d","badges":[],"url":"https://cv.wikipedia.org/wiki/%D0%90%D1%80%C4%83%D1%81%D0%BB%D0%B0%D0%BD"},"cywiki":{"site":"cywiki","title":"Llew","badges":[],"url":"https://cy.wikipedia.org/wiki/Llew"},"dagwiki":{"site":"dagwiki","title":"Gbu\u0263inli","badges":[],"url":"https://dag.wikipedia.org/wiki/Gbu%C9%A3inli"},"dawiki":{"site":"dawiki","title":"L\u00f8ve","badges":["Q17559452"],"url":"https://da.wikipedia.org/wiki/L%C3%B8ve"},"dewiki":{"site":"dewiki","title":"L\u00f6we","badges":["Q17437796"],"url":"https://de.wikipedia.org/wiki/L%C3%B6we"},"dewikiquote":{"site":"dewikiquote","title":"L\u00f6we","badges":[],"url":"https://de.wikiquote.org/wiki/L%C3%B6we"},"dinwiki":{"site":"dinwiki","title":"K\u00f6r","badges":[],"url":"https://din.wikipedia.org/wiki/K%C3%B6r"},"diqwiki":{"site":"diqwiki","title":"\u015e\u00ear","badges":[],"url":"https://diq.wikipedia.org/wiki/%C5%9E%C3%AAr"},"dsbwiki":{"site":"dsbwiki","title":"Law","badges":[],"url":"https://dsb.wikipedia.org/wiki/Law"},"eewiki":{"site":"eewiki","title":"Dzata","badges":[],"url":"https://ee.wikipedia.org/wiki/Dzata"},"elwiki":{"site":"elwiki","title":"\u039b\u03b9\u03bf\u03bd\u03c4\u03ac\u03c1\u03b9","badges":[],"url":"https://el.wikipedia.org/wiki/%CE%9B%CE%B9%CE%BF%CE%BD%CF%84%CE%AC%CF%81%CE%B9"},"enwiki":{"site":"enwiki","title":"Lion","badges":["Q17437796"],"url":"https://en.wikipedia.org/wiki/Lion"},"enwikiquote":{"site":"enwikiquote","title":"Lions","badges":[],"url":"https://en.wikiquote.org/wiki/Lions"},"eowiki":{"site":"eowiki","title":"Leono","badges":[],"url":"https://eo.wikipedia.org/wiki/Leono"},"eowikiquote":{"site":"eowikiquote","title":"Leono","badges":[],"url":"https://eo.wikiquote.org/wiki/Leono"},"eswiki":{"site":"eswiki","title":"Panthera leo","badges":["Q17437796"],"url":"https://es.wikipedia.org/wiki/Panthera_leo"},"eswikiquote":{"site":"eswikiquote","title":"Le\u00f3n","badges":[],"url":"https://es.wikiquote.org/wiki/Le%C3%B3n"},"etwiki":{"site":"etwiki","title":"L\u00f5vi","badges":[],"url":"https://et.wikipedia.org/wiki/L%C3%B5vi"},"etwikiquote":{"site":"etwikiquote","title":"L\u00f5vi","badges":[],"url":"https://et.wikiquote.org/wiki/L%C3%B5vi"},"euwiki":{"site":"euwiki","title":"Lehoi","badges":[],"url":"https://eu.wikipedia.org/wiki/Lehoi"},"extwiki":{"site":"extwiki","title":"Li\u00f3n (animal)","badges":[],"url":"https://ext.wikipedia.org/wiki/Li%C3%B3n_(animal)"},"fawiki":{"site":"fawiki","title":"\u0634\u06cc\u0631 (\u06af\u0631\u0628\u0647\u200c\u0633\u0627\u0646)","badges":["Q17437796"],"url":"https://fa.wikipedia.org/wiki/%D8%B4%DB%8C%D8%B1_(%DA%AF%D8%B1%D8%A8%D9%87%E2%80%8C%D8%B3%D8%A7%D9%86)"},"fawikiquote":{"site":"fawikiquote","title":"\u0634\u06cc\u0631","badges":[],"url":"https://fa.wikiquote.org/wiki/%D8%B4%DB%8C%D8%B1"},"fiu_vrowiki":{"site":"fiu_vrowiki","title":"L\u00f5vi","badges":[],"url":"https://fiu-vro.wikipedia.org/wiki/L%C3%B5vi"},"fiwiki":{"site":"fiwiki","title":"Leijona","badges":["Q17437796"],"url":"https://fi.wikipedia.org/wiki/Leijona"},"fowiki":{"site":"fowiki","title":"Leyva","badges":[],"url":"https://fo.wikipedia.org/wiki/Leyva"},"frrwiki":{"site":"frrwiki","title":"L\u00f6\u00f6w","badges":[],"url":"https://frr.wikipedia.org/wiki/L%C3%B6%C3%B6w"},"frwiki":{"site":"frwiki","title":"Lion","badges":["Q17437796"],"url":"https://fr.wikipedia.org/wiki/Lion"},"frwikiquote":{"site":"frwikiquote","title":"Lion","badges":[],"url":"https://fr.wikiquote.org/wiki/Lion"},"gagwiki":{"site":"gagwiki","title":"Aslan","badges":[],"url":"https://gag.wikipedia.org/wiki/Aslan"},"gawiki":{"site":"gawiki","title":"Leon","badges":[],"url":"https://ga.wikipedia.org/wiki/Leon"},"gdwiki":{"site":"gdwiki","title":"Le\u00f2mhann","badges":[],"url":"https://gd.wikipedia.org/wiki/Le%C3%B2mhann"},"glwiki":{"site":"glwiki","title":"Le\u00f3n","badges":[],"url":"https://gl.wikipedia.org/wiki/Le%C3%B3n"},"gnwiki":{"site":"gnwiki","title":"Le\u00f5","badges":[],"url":"https://gn.wikipedia.org/wiki/Le%C3%B5"},"gotwiki":{"site":"gotwiki","title":"\ud800\udf3b\ud800\udf39\ud800\udf45\ud800\udf30","badges":[],"url":"https://got.wikipedia.org/wiki/%F0%90%8C%BB%F0%90%8C%B9%F0%90%8D%85%F0%90%8C%B0"},"guwiki":{"site":"guwiki","title":"\u0a8f\u0ab6\u0abf\u0aaf\u0abe\u0a87 \u0ab8\u0abf\u0a82\u0ab9","badges":[],"url":"https://gu.wikipedia.org/wiki/%E0%AA%8F%E0%AA%B6%E0%AA%BF%E0%AA%AF%E0%AA%BE%E0%AA%87_%E0%AA%B8%E0%AA%BF%E0%AA%82%E0%AA%B9"},"hakwiki":{"site":"hakwiki","title":"S\u1e73\u0302-\u00e9","badges":[],"url":"https://hak.wikipedia.org/wiki/S%E1%B9%B3%CC%82-%C3%A9"},"hawiki":{"site":"hawiki","title":"Zaki","badges":[],"url":"https://ha.wikipedia.org/wiki/Zaki"},"hawwiki":{"site":"hawwiki","title":"Liona","badges":[],"url":"https://haw.wikipedia.org/wiki/Liona"},"hewiki":{"site":"hewiki","title":"\u05d0\u05e8\u05d9\u05d4","badges":[],"url":"https://he.wikipedia.org/wiki/%D7%90%D7%A8%D7%99%D7%94"},"hewikiquote":{"site":"hewikiquote","title":"\u05d0\u05e8\u05d9\u05d4","badges":[],"url":"https://he.wikiquote.org/wiki/%D7%90%D7%A8%D7%99%D7%94"},"hifwiki":{"site":"hifwiki","title":"Ser","badges":[],"url":"https://hif.wikipedia.org/wiki/Ser"},"hiwiki":{"site":"hiwiki","title":"\u0938\u093f\u0902\u0939 (\u092a\u0936\u0941)","badges":[],"url":"https://hi.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9_(%E0%A4%AA%E0%A4%B6%E0%A5%81)"},"hrwiki":{"site":"hrwiki","title":"Lav","badges":[],"url":"https://hr.wikipedia.org/wiki/Lav"},"hrwikiquote":{"site":"hrwikiquote","title":"Lav","badges":[],"url":"https://hr.wikiquote.org/wiki/Lav"},"hsbwiki":{"site":"hsbwiki","title":"Law","badges":[],"url":"https://hsb.wikipedia.org/wiki/Law"},"htwiki":{"site":"htwiki","title":"Lyon","badges":[],"url":"https://ht.wikipedia.org/wiki/Lyon"},"huwiki":{"site":"huwiki","title":"Oroszl\u00e1n","badges":[],"url":"https://hu.wikipedia.org/wiki/Oroszl%C3%A1n"},"hywiki":{"site":"hywiki","title":"\u0531\u057c\u0575\u0578\u0582\u056e","badges":[],"url":"https://hy.wikipedia.org/wiki/%D4%B1%D5%BC%D5%B5%D5%B8%D6%82%D5%AE"},"hywikiquote":{"site":"hywikiquote","title":"\u0531\u057c\u0575\u0578\u0582\u056e","badges":[],"url":"https://hy.wikiquote.org/wiki/%D4%B1%D5%BC%D5%B5%D5%B8%D6%82%D5%AE"},"hywwiki":{"site":"hywwiki","title":"\u0531\u057c\u056b\u0582\u056e","badges":[],"url":"https://hyw.wikipedia.org/wiki/%D4%B1%D5%BC%D5%AB%D6%82%D5%AE"},"iawiki":{"site":"iawiki","title":"Leon","badges":[],"url":"https://ia.wikipedia.org/wiki/Leon"},"idwiki":{"site":"idwiki","title":"Singa","badges":[],"url":"https://id.wikipedia.org/wiki/Singa"},"igwiki":{"site":"igwiki","title":"Od\u00fam","badges":[],"url":"https://ig.wikipedia.org/wiki/Od%C3%BAm"},"ilowiki":{"site":"ilowiki","title":"Leon","badges":[],"url":"https://ilo.wikipedia.org/wiki/Leon"},"inhwiki":{"site":"inhwiki","title":"\u041b\u043e\u043c","badges":[],"url":"https://inh.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BC"},"iowiki":{"site":"iowiki","title":"Leono (mamifero)","badges":[],"url":"https://io.wikipedia.org/wiki/Leono_(mamifero)"},"iswiki":{"site":"iswiki","title":"Lj\u00f3n","badges":[],"url":"https://is.wikipedia.org/wiki/Lj%C3%B3n"},"itwiki":{"site":"itwiki","title":"Panthera leo","badges":[],"url":"https://it.wikipedia.org/wiki/Panthera_leo"},"itwikiquote":{"site":"itwikiquote","title":"Leone","badges":[],"url":"https://it.wikiquote.org/wiki/Leone"},"jawiki":{"site":"jawiki","title":"\u30e9\u30a4\u30aa\u30f3","badges":[],"url":"https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%82%AA%E3%83%B3"},"jawikiquote":{"site":"jawikiquote","title":"\u7345\u5b50","badges":[],"url":"https://ja.wikiquote.org/wiki/%E7%8D%85%E5%AD%90"},"jbowiki":{"site":"jbowiki","title":"cinfo","badges":[],"url":"https://jbo.wikipedia.org/wiki/cinfo"},"jvwiki":{"site":"jvwiki","title":"Singa","badges":[],"url":"https://jv.wikipedia.org/wiki/Singa"},"kabwiki":{"site":"kabwiki","title":"Izem","badges":[],"url":"https://kab.wikipedia.org/wiki/Izem"},"kawiki":{"site":"kawiki","title":"\u10da\u10dd\u10db\u10d8","badges":[],"url":"https://ka.wikipedia.org/wiki/%E1%83%9A%E1%83%9D%E1%83%9B%E1%83%98"},"kbdwiki":{"site":"kbdwiki","title":"\u0425\u044c\u044d\u0449","badges":[],"url":"https://kbd.wikipedia.org/wiki/%D0%A5%D1%8C%D1%8D%D1%89"},"kbpwiki":{"site":"kbpwiki","title":"T\u0254\u0254y\u028b\u028b","badges":[],"url":"https://kbp.wikipedia.org/wiki/T%C9%94%C9%94y%CA%8B%CA%8B"},"kgwiki":{"site":"kgwiki","title":"Nkosi","badges":[],"url":"https://kg.wikipedia.org/wiki/Nkosi"},"kkwiki":{"site":"kkwiki","title":"\u0410\u0440\u044b\u0441\u0442\u0430\u043d","badges":[],"url":"https://kk.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D1%82%D0%B0%D0%BD"},"knwiki":{"site":"knwiki","title":"\u0cb8\u0cbf\u0c82\u0cb9","badges":[],"url":"https://kn.wikipedia.org/wiki/%E0%B2%B8%E0%B2%BF%E0%B2%82%E0%B2%B9"},"kowiki":{"site":"kowiki","title":"\uc0ac\uc790","badges":[],"url":"https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9E%90"},"kowikiquote":{"site":"kowikiquote","title":"\uc0ac\uc790","badges":[],"url":"https://ko.wikiquote.org/wiki/%EC%82%AC%EC%9E%90"},"kswiki":{"site":"kswiki","title":"\u067e\u0627\u062f\u064e\u0631 \u0633\u0655\u06c1\u06c1","badges":[],"url":"https://ks.wikipedia.org/wiki/%D9%BE%D8%A7%D8%AF%D9%8E%D8%B1_%D8%B3%D9%95%DB%81%DB%81"},"kuwiki":{"site":"kuwiki","title":"\u015e\u00ear","badges":[],"url":"https://ku.wikipedia.org/wiki/%C5%9E%C3%AAr"},"kwwiki":{"site":"kwwiki","title":"Lew","badges":[],"url":"https://kw.wikipedia.org/wiki/Lew"},"kywiki":{"site":"kywiki","title":"\u0410\u0440\u0441\u0442\u0430\u043d","badges":[],"url":"https://ky.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D1%82%D0%B0%D0%BD"},"lawiki":{"site":"lawiki","title":"Leo","badges":[],"url":"https://la.wikipedia.org/wiki/Leo"},"lawikiquote":{"site":"lawikiquote","title":"Leo","badges":[],"url":"https://la.wikiquote.org/wiki/Leo"},"lbewiki":{"site":"lbewiki","title":"\u0410\u0441\u043b\u0430\u043d","badges":[],"url":"https://lbe.wikipedia.org/wiki/%D0%90%D1%81%D0%BB%D0%B0%D0%BD"},"lbwiki":{"site":"lbwiki","title":"L\u00e9iw","badges":[],"url":"https://lb.wikipedia.org/wiki/L%C3%A9iw"},"lezwiki":{"site":"lezwiki","title":"\u0410\u0441\u043b\u0430\u043d","badges":[],"url":"https://lez.wikipedia.org/wiki/%D0%90%D1%81%D0%BB%D0%B0%D0%BD"},"lfnwiki":{"site":"lfnwiki","title":"Leon","badges":[],"url":"https://lfn.wikipedia.org/wiki/Leon"},"lijwiki":{"site":"lijwiki","title":"Lion (bestia)","badges":[],"url":"https://lij.wikipedia.org/wiki/Lion_(bestia)"},"liwiki":{"site":"liwiki","title":"Liew","badges":["Q17437796"],"url":"https://li.wikipedia.org/wiki/Liew"},"lldwiki":{"site":"lldwiki","title":"Lion","badges":[],"url":"https://lld.wikipedia.org/wiki/Lion"},"lmowiki":{"site":"lmowiki","title":"Panthera leo","badges":[],"url":"https://lmo.wikipedia.org/wiki/Panthera_leo"},"lnwiki":{"site":"lnwiki","title":"Nk\u0254\u0301si","badges":[],"url":"https://ln.wikipedia.org/wiki/Nk%C9%94%CC%81si"},"ltgwiki":{"site":"ltgwiki","title":"\u013bovs","badges":[],"url":"https://ltg.wikipedia.org/wiki/%C4%BBovs"},"ltwiki":{"site":"ltwiki","title":"Li\u016btas","badges":[],"url":"https://lt.wikipedia.org/wiki/Li%C5%ABtas"},"ltwikiquote":{"site":"ltwikiquote","title":"Li\u016btas","badges":[],"url":"https://lt.wikiquote.org/wiki/Li%C5%ABtas"},"lvwiki":{"site":"lvwiki","title":"Lauva","badges":["Q17437796"],"url":"https://lv.wikipedia.org/wiki/Lauva"},"mdfwiki":{"site":"mdfwiki","title":"\u041e\u0440\u043a\u0441\u043e\u0444\u0442\u0430","badges":["Q17437796"],"url":"https://mdf.wikipedia.org/wiki/%D0%9E%D1%80%D0%BA%D1%81%D0%BE%D1%84%D1%82%D0%B0"},"mgwiki":{"site":"mgwiki","title":"Liona","badges":[],"url":"https://mg.wikipedia.org/wiki/Liona"},"mhrwiki":{"site":"mhrwiki","title":"\u0410\u0440\u044b\u0441\u043b\u0430\u043d","badges":[],"url":"https://mhr.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD"},"mkwiki":{"site":"mkwiki","title":"\u041b\u0430\u0432","badges":[],"url":"https://mk.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2"},"mlwiki":{"site":"mlwiki","title":"\u0d38\u0d3f\u0d02\u0d39\u0d02","badges":[],"url":"https://ml.wikipedia.org/wiki/%E0%B4%B8%E0%B4%BF%E0%B4%82%E0%B4%B9%E0%B4%82"},"mniwiki":{"site":"mniwiki","title":"\uabc5\uabe3\uabe1\uabc1\uabe5","badges":[],"url":"https://mni.wikipedia.org/wiki/%EA%AF%85%EA%AF%A3%EA%AF%A1%EA%AF%81%EA%AF%A5"},"mnwiki":{"site":"mnwiki","title":"\u0410\u0440\u0441\u043b\u0430\u043d","badges":[],"url":"https://mn.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%BB%D0%B0%D0%BD"},"mrjwiki":{"site":"mrjwiki","title":"\u0410\u0440\u044b\u0441\u043b\u0430\u043d","badges":[],"url":"https://mrj.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD"},"mrwiki":{"site":"mrwiki","title":"\u0938\u093f\u0902\u0939","badges":[],"url":"https://mr.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9"},"mswiki":{"site":"mswiki","title":"Singa","badges":["Q17437796"],"url":"https://ms.wikipedia.org/wiki/Singa"},"mtwiki":{"site":"mtwiki","title":"Iljun","badges":[],"url":"https://mt.wikipedia.org/wiki/Iljun"},"mywiki":{"site":"mywiki","title":"\u1001\u103c\u1004\u103a\u1039\u101e\u1031\u1037","badges":[],"url":"https://my.wikipedia.org/wiki/%E1%80%81%E1%80%BC%E1%80%84%E1%80%BA%E1%80%B9%E1%80%9E%E1%80%B1%E1%80%B7"},"newiki":{"site":"newiki","title":"\u0938\u093f\u0902\u0939","badges":[],"url":"https://ne.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9"},"newwiki":{"site":"newwiki","title":"\u0938\u093f\u0902\u0939","badges":[],"url":"https://new.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9"},"nlwiki":{"site":"nlwiki","title":"Leeuw (dier)","badges":[],"url":"https://nl.wikipedia.org/wiki/Leeuw_(dier)"},"nnwiki":{"site":"nnwiki","title":"L\u00f8ve","badges":[],"url":"https://nn.wikipedia.org/wiki/L%C3%B8ve"},"nowiki":{"site":"nowiki","title":"L\u00f8ve","badges":[],"url":"https://no.wikipedia.org/wiki/L%C3%B8ve"},"nrmwiki":{"site":"nrmwiki","title":"Lion","badges":[],"url":"https://nrm.wikipedia.org/wiki/Lion"},"nsowiki":{"site":"nsowiki","title":"Tau","badges":[],"url":"https://nso.wikipedia.org/wiki/Tau"},"nvwiki":{"site":"nvwiki","title":"N\u00e1shd\u00f3\u00edtsoh bitsiij\u012f\u02bc dadit\u0142\u02bcoo\u00edg\u00ed\u00ed","badges":[],"url":"https://nv.wikipedia.org/wiki/N%C3%A1shd%C3%B3%C3%ADtsoh_bitsiij%C4%AF%CA%BC_dadit%C5%82%CA%BCoo%C3%ADg%C3%AD%C3%AD"},"ocwiki":{"site":"ocwiki","title":"Panthera leo","badges":[],"url":"https://oc.wikipedia.org/wiki/Panthera_leo"},"orwiki":{"site":"orwiki","title":"\u0b38\u0b3f\u0b02\u0b39","badges":[],"url":"https://or.wikipedia.org/wiki/%E0%AC%B8%E0%AC%BF%E0%AC%82%E0%AC%B9"},"oswiki":{"site":"oswiki","title":"\u0426\u043e\u043c\u0430\u0445\u044a","badges":[],"url":"https://os.wikipedia.org/wiki/%D0%A6%D0%BE%D0%BC%D0%B0%D1%85%D1%8A"},"pamwiki":{"site":"pamwiki","title":"Leon (animal)","badges":["Q17437796"],"url":"https://pam.wikipedia.org/wiki/Leon_(animal)"},"pawiki":{"site":"pawiki","title":"\u0a2c\u0a71\u0a2c\u0a30 \u0a38\u0a3c\u0a47\u0a30","badges":[],"url":"https://pa.wikipedia.org/wiki/%E0%A8%AC%E0%A9%B1%E0%A8%AC%E0%A8%B0_%E0%A8%B8%E0%A8%BC%E0%A9%87%E0%A8%B0"},"pcdwiki":{"site":"pcdwiki","title":"Lion","badges":[],"url":"https://pcd.wikipedia.org/wiki/Lion"},"plwiki":{"site":"plwiki","title":"Lew afryka\u0144ski","badges":["Q17437796"],"url":"https://pl.wikipedia.org/wiki/Lew_afryka%C5%84ski"},"plwikiquote":{"site":"plwikiquote","title":"Lew","badges":[],"url":"https://pl.wikiquote.org/wiki/Lew"},"pmswiki":{"site":"pmswiki","title":"Lion","badges":[],"url":"https://pms.wikipedia.org/wiki/Lion"},"pnbwiki":{"site":"pnbwiki","title":"\u0628\u0628\u0631 \u0634\u06cc\u0631","badges":[],"url":"https://pnb.wikipedia.org/wiki/%D8%A8%D8%A8%D8%B1_%D8%B4%DB%8C%D8%B1"},"pswiki":{"site":"pswiki","title":"\u0632\u0645\u0631\u06cc","badges":[],"url":"https://ps.wikipedia.org/wiki/%D8%B2%D9%85%D8%B1%DB%8C"},"ptwiki":{"site":"ptwiki","title":"Le\u00e3o","badges":[],"url":"https://pt.wikipedia.org/wiki/Le%C3%A3o"},"ptwikiquote":{"site":"ptwikiquote","title":"Le\u00e3o","badges":[],"url":"https://pt.wikiquote.org/wiki/Le%C3%A3o"},"quwiki":{"site":"quwiki","title":"Liyun","badges":[],"url":"https://qu.wikipedia.org/wiki/Liyun"},"rmwiki":{"site":"rmwiki","title":"Liun","badges":[],"url":"https://rm.wikipedia.org/wiki/Liun"},"rnwiki":{"site":"rnwiki","title":"Intare","badges":[],"url":"https://rn.wikipedia.org/wiki/Intare"},"rowiki":{"site":"rowiki","title":"Leu","badges":[],"url":"https://ro.wikipedia.org/wiki/Leu"},"ruewiki":{"site":"ruewiki","title":"\u041b\u0435\u0432","badges":[],"url":"https://rue.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B2"},"ruwiki":{"site":"ruwiki","title":"\u041b\u0435\u0432","badges":["Q17437798"],"url":"https://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B2"},"ruwikinews":{"site":"ruwikinews","title":"\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f:\u041b\u044c\u0432\u044b","badges":[],"url":"https://ru.wikinews.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9B%D1%8C%D0%B2%D1%8B"},"rwwiki":{"site":"rwwiki","title":"Intare","badges":[],"url":"https://rw.wikipedia.org/wiki/Intare"},"sahwiki":{"site":"sahwiki","title":"\u0425\u0430\u0445\u0430\u0439","badges":[],"url":"https://sah.wikipedia.org/wiki/%D0%A5%D0%B0%D1%85%D0%B0%D0%B9"},"satwiki":{"site":"satwiki","title":"\u1c61\u1c5f\u1c74\u1c5f\u1c60\u1c69\u1c5e","badges":[],"url":"https://sat.wikipedia.org/wiki/%E1%B1%A1%E1%B1%9F%E1%B1%B4%E1%B1%9F%E1%B1%A0%E1%B1%A9%E1%B1%9E"},"sawiki":{"site":"sawiki","title":"\u0938\u093f\u0902\u0939\u0903 \u092a\u0936\u0941\u0903","badges":[],"url":"https://sa.wikipedia.org/wiki/%E0%A4%B8%E0%A4%BF%E0%A4%82%E0%A4%B9%E0%A4%83_%E0%A4%AA%E0%A4%B6%E0%A5%81%E0%A4%83"},"scnwiki":{"site":"scnwiki","title":"Panthera leo","badges":[],"url":"https://scn.wikipedia.org/wiki/Panthera_leo"},"scowiki":{"site":"scowiki","title":"Lion","badges":["Q17437796"],"url":"https://sco.wikipedia.org/wiki/Lion"},"sdwiki":{"site":"sdwiki","title":"\u0628\u0628\u0631 \u0634\u064a\u0646\u0647\u0646","badges":[],"url":"https://sd.wikipedia.org/wiki/%D8%A8%D8%A8%D8%B1_%D8%B4%D9%8A%D9%86%D9%87%D9%86"},"sewiki":{"site":"sewiki","title":"Ledjon","badges":[],"url":"https://se.wikipedia.org/wiki/Ledjon"},"shiwiki":{"site":"shiwiki","title":"Agrzam","badges":[],"url":"https://shi.wikipedia.org/wiki/Agrzam"},"shnwiki":{"site":"shnwiki","title":"\u101e\u1062\u1004\u103a\u1087\u101e\u102e\u1088","badges":[],"url":"https://shn.wikipedia.org/wiki/%E1%80%9E%E1%81%A2%E1%80%84%E1%80%BA%E1%82%87%E1%80%9E%E1%80%AE%E1%82%88"},"shwiki":{"site":"shwiki","title":"Lav","badges":[],"url":"https://sh.wikipedia.org/wiki/Lav"},"simplewiki":{"site":"simplewiki","title":"Lion","badges":[],"url":"https://simple.wikipedia.org/wiki/Lion"},"siwiki":{"site":"siwiki","title":"\u0dc3\u0dd2\u0d82\u0dc4\u0dba\u0dcf","badges":[],"url":"https://si.wikipedia.org/wiki/%E0%B7%83%E0%B7%92%E0%B6%82%E0%B7%84%E0%B6%BA%E0%B7%8F"},"skwiki":{"site":"skwiki","title":"Lev p\u00fa\u0161\u0165ov\u00fd","badges":[],"url":"https://sk.wikipedia.org/wiki/Lev_p%C3%BA%C5%A1%C5%A5ov%C3%BD"},"skwikiquote":{"site":"skwikiquote","title":"Lev","badges":[],"url":"https://sk.wikiquote.org/wiki/Lev"},"slwiki":{"site":"slwiki","title":"Lev","badges":[],"url":"https://sl.wikipedia.org/wiki/Lev"},"smwiki":{"site":"smwiki","title":"Leona","badges":[],"url":"https://sm.wikipedia.org/wiki/Leona"},"snwiki":{"site":"snwiki","title":"Shumba","badges":[],"url":"https://sn.wikipedia.org/wiki/Shumba"},"sowiki":{"site":"sowiki","title":"Libaax","badges":[],"url":"https://so.wikipedia.org/wiki/Libaax"},"specieswiki":{"site":"specieswiki","title":"Panthera leo","badges":[],"url":"https://species.wikimedia.org/wiki/Panthera_leo"},"sqwiki":{"site":"sqwiki","title":"Luani","badges":[],"url":"https://sq.wikipedia.org/wiki/Luani"},"srwiki":{"site":"srwiki","title":"\u041b\u0430\u0432","badges":[],"url":"https://sr.wikipedia.org/wiki/%D0%9B%D0%B0%D0%B2"},"sswiki":{"site":"sswiki","title":"Libhubesi","badges":[],"url":"https://ss.wikipedia.org/wiki/Libhubesi"},"stqwiki":{"site":"stqwiki","title":"Leeuwe","badges":[],"url":"https://stq.wikipedia.org/wiki/Leeuwe"},"stwiki":{"site":"stwiki","title":"Tau","badges":[],"url":"https://st.wikipedia.org/wiki/Tau"},"suwiki":{"site":"suwiki","title":"Singa","badges":[],"url":"https://su.wikipedia.org/wiki/Singa"},"svwiki":{"site":"svwiki","title":"Lejon","badges":[],"url":"https://sv.wikipedia.org/wiki/Lejon"},"swwiki":{"site":"swwiki","title":"Simba","badges":[],"url":"https://sw.wikipedia.org/wiki/Simba"},"szlwiki":{"site":"szlwiki","title":"Lew","badges":[],"url":"https://szl.wikipedia.org/wiki/Lew"},"tawiki":{"site":"tawiki","title":"\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0bae\u0bcd","badges":[],"url":"https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%BF%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%8D"},"tcywiki":{"site":"tcywiki","title":"\u0cb8\u0cbf\u0c82\u0cb9","badges":[],"url":"https://tcy.wikipedia.org/wiki/%E0%B2%B8%E0%B2%BF%E0%B2%82%E0%B2%B9"},"tewiki":{"site":"tewiki","title":"\u0c38\u0c3f\u0c02\u0c39\u0c02","badges":[],"url":"https://te.wikipedia.org/wiki/%E0%B0%B8%E0%B0%BF%E0%B0%82%E0%B0%B9%E0%B0%82"},"tgwiki":{"site":"tgwiki","title":"\u0428\u0435\u0440","badges":[],"url":"https://tg.wikipedia.org/wiki/%D0%A8%D0%B5%D1%80"},"thwiki":{"site":"thwiki","title":"\u0e2a\u0e34\u0e07\u0e42\u0e15","badges":[],"url":"https://th.wikipedia.org/wiki/%E0%B8%AA%E0%B8%B4%E0%B8%87%E0%B9%82%E0%B8%95"},"tiwiki":{"site":"tiwiki","title":"\u12a3\u1295\u1260\u1233","badges":[],"url":"https://ti.wikipedia.org/wiki/%E1%8A%A3%E1%8A%95%E1%89%A0%E1%88%B3"},"tkwiki":{"site":"tkwiki","title":"\u00ddolbars","badges":[],"url":"https://tk.wikipedia.org/wiki/%C3%9Dolbars"},"tlwiki":{"site":"tlwiki","title":"Leon","badges":[],"url":"https://tl.wikipedia.org/wiki/Leon"},"trwiki":{"site":"trwiki","title":"Aslan","badges":[],"url":"https://tr.wikipedia.org/wiki/Aslan"},"ttwiki":{"site":"ttwiki","title":"\u0410\u0440\u044b\u0441\u043b\u0430\u043d","badges":[],"url":"https://tt.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD"},"tumwiki":{"site":"tumwiki","title":"Nkhalamu","badges":[],"url":"https://tum.wikipedia.org/wiki/Nkhalamu"},"udmwiki":{"site":"udmwiki","title":"\u0410\u0440\u044b\u0441\u043b\u0430\u043d","badges":[],"url":"https://udm.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%81%D0%BB%D0%B0%D0%BD"},"ugwiki":{"site":"ugwiki","title":"\u0634\u0649\u0631","badges":[],"url":"https://ug.wikipedia.org/wiki/%D8%B4%D9%89%D8%B1"},"ukwiki":{"site":"ukwiki","title":"\u041b\u0435\u0432","badges":[],"url":"https://uk.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B2"},"ukwikiquote":{"site":"ukwikiquote","title":"\u041b\u0435\u0432","badges":[],"url":"https://uk.wikiquote.org/wiki/%D0%9B%D0%B5%D0%B2"},"urwiki":{"site":"urwiki","title":"\u0628\u0628\u0631 \u0634\u06cc\u0631","badges":["Q17437796"],"url":"https://ur.wikipedia.org/wiki/%D8%A8%D8%A8%D8%B1_%D8%B4%DB%8C%D8%B1"},"uzwiki":{"site":"uzwiki","title":"Arslon","badges":[],"url":"https://uz.wikipedia.org/wiki/Arslon"},"vecwiki":{"site":"vecwiki","title":"Leon","badges":[],"url":"https://vec.wikipedia.org/wiki/Leon"},"vepwiki":{"site":"vepwiki","title":"Lev","badges":[],"url":"https://vep.wikipedia.org/wiki/Lev"},"viwiki":{"site":"viwiki","title":"S\u01b0 t\u1eed","badges":[],"url":"https://vi.wikipedia.org/wiki/S%C6%B0_t%E1%BB%AD"},"vlswiki":{"site":"vlswiki","title":"L\u00eaeuw (b\u00eaeste)","badges":[],"url":"https://vls.wikipedia.org/wiki/L%C3%AAeuw_(b%C3%AAeste)"},"warwiki":{"site":"warwiki","title":"Leon","badges":[],"url":"https://war.wikipedia.org/wiki/Leon"},"wowiki":{"site":"wowiki","title":"Gaynde","badges":[],"url":"https://wo.wikipedia.org/wiki/Gaynde"},"wuuwiki":{"site":"wuuwiki","title":"\u72ee","badges":[],"url":"https://wuu.wikipedia.org/wiki/%E7%8B%AE"},"xalwiki":{"site":"xalwiki","title":"\u0410\u0440\u0441\u043b\u04a3","badges":[],"url":"https://xal.wikipedia.org/wiki/%D0%90%D1%80%D1%81%D0%BB%D2%A3"},"xhwiki":{"site":"xhwiki","title":"Ingonyama","badges":[],"url":"https://xh.wikipedia.org/wiki/Ingonyama"},"xmfwiki":{"site":"xmfwiki","title":"\u10dc\u10ef\u10d8\u10da\u10dd","badges":[],"url":"https://xmf.wikipedia.org/wiki/%E1%83%9C%E1%83%AF%E1%83%98%E1%83%9A%E1%83%9D"},"yiwiki":{"site":"yiwiki","title":"\u05dc\u05d9\u05d9\u05d1","badges":[],"url":"https://yi.wikipedia.org/wiki/%D7%9C%D7%99%D7%99%D7%91"},"yowiki":{"site":"yowiki","title":"K\u00ecn\u00ec\u00fan","badges":[],"url":"https://yo.wikipedia.org/wiki/K%C3%ACn%C3%AC%C3%BAn"},"zawiki":{"site":"zawiki","title":"Saeceij","badges":[],"url":"https://za.wikipedia.org/wiki/Saeceij"},"zh_min_nanwiki":{"site":"zh_min_nanwiki","title":"Sai","badges":[],"url":"https://zh-min-nan.wikipedia.org/wiki/Sai"},"zh_yuewiki":{"site":"zh_yuewiki","title":"\u7345\u5b50","badges":["Q17437796"],"url":"https://zh-yue.wikipedia.org/wiki/%E7%8D%85%E5%AD%90"},"zhwiki":{"site":"zhwiki","title":"\u72ee","badges":[],"url":"https://zh.wikipedia.org/wiki/%E7%8B%AE"},"zuwiki":{"site":"zuwiki","title":"Ibhubesi","badges":[],"url":"https://zu.wikipedia.org/wiki/Ibhubesi"}}}}} } \ No newline at end of file