Merge master

This commit is contained in:
pietervdvn 2022-04-03 03:26:26 +02:00
commit 6beebcd4ef
116 changed files with 2434 additions and 444 deletions

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 623 KiB

After

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 389 KiB

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 KiB

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 760 KiB

After

Width:  |  Height:  |  Size: 758 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 KiB

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 915 KiB

After

Width:  |  Height:  |  Size: 916 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 KiB

After

Width:  |  Height:  |  Size: 591 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 752 KiB

After

Width:  |  Height:  |  Size: 745 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View file

@ -1,5 +1,518 @@
{ {
"features": [ "features": [
{
"id": 119179130,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
4.8097883,
51.1276893
],
[
5.0996267,
51.1276893
],
[
5.0996267,
51.1712407
],
[
4.8097883,
51.1712407
],
[
4.8097883,
51.1276893
]
]
]
},
"properties": {
"check_user": null,
"reasons": [],
"tags": [],
"features": [],
"user": "dentonny",
"uid": "4198737",
"editor": "MapComplete 0.17.1",
"comment": "Adding data with #MapComplete for theme #grb",
"comments_count": 0,
"source": "survey",
"imagery_used": "Not reported",
"date": "2022-03-31T22:10:02Z",
"reviewed_features": [],
"create": 269,
"modify": 268,
"delete": 7,
"area": 0.0126228680937595,
"is_suspect": false,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://mapcomplete.osm.be/grb.html",
"move": 235,
"theme": "grb",
"answer": 4,
"delete": 7,
"import": 19,
"locale": "nl",
"imagery": "osm",
"conflation": 64,
"change_over_5000m": 23
},
"id": 119179130
}
},
{
"id": 119177668,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
3.2404717,
51.2068242
],
[
3.2411961,
51.2068242
],
[
3.2411961,
51.2075518
],
[
3.2404717,
51.2075518
],
[
3.2404717,
51.2068242
]
]
]
},
"properties": {
"check_user": null,
"reasons": [],
"tags": [],
"features": [],
"user": "Pieter Vander Vennet",
"uid": "3818858",
"editor": "MapComplete 0.18.0-alpha",
"comment": "Adding data with #MapComplete for theme #sidewalks",
"comments_count": 0,
"source": "survey",
"imagery_used": "Not reported",
"date": "2022-03-31T21:05:11Z",
"reviewed_features": [],
"create": 0,
"modify": 1,
"delete": 0,
"area": 5.27073439998075e-7,
"is_suspect": false,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://pietervdvn.github.io/mc/develop/sidewalks.html",
"theme": "sidewalks",
"answer": 1,
"locale": "en",
"imagery": "osm",
"change_within_500m": 1
},
"id": 119177668
}
},
{
"id": 119177017,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
5.4823647,
50.8439023
],
[
5.485757,
50.8439023
],
[
5.485757,
50.8464527
],
[
5.4823647,
50.8464527
],
[
5.4823647,
50.8439023
]
]
]
},
"properties": {
"check_user": null,
"reasons": [],
"tags": [],
"features": [],
"user": "jozin-belgium",
"uid": "1947314",
"editor": "MapComplete 0.18.0-alpha",
"comment": "Adding data with #MapComplete for theme #grb",
"comments_count": 0,
"source": "Not reported",
"imagery_used": "Not reported",
"date": "2022-03-31T20:42:39Z",
"reviewed_features": [],
"create": 165,
"modify": 0,
"delete": 0,
"area": 0.00000865172191999141,
"is_suspect": false,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://pietervdvn.github.io/mc/develop/grb.html",
"theme": "grb",
"import": 26,
"locale": "nl",
"imagery": "osm"
},
"id": 119177017
}
},
{
"id": 119176477,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
4.3951609,
50.7952296
],
[
4.4076558,
50.7952296
],
[
4.4076558,
50.7973983
],
[
4.3951609,
50.7973983
],
[
4.3951609,
50.7952296
]
]
]
},
"properties": {
"check_user": null,
"reasons": [],
"tags": [],
"features": [],
"user": "Thierry1030",
"uid": "286563",
"editor": "MapComplete 0.17.1",
"comment": "Adding data with #MapComplete for theme #cyclofix",
"comments_count": 0,
"source": "Not reported",
"imagery_used": "Not reported",
"date": "2022-03-31T20:23:31Z",
"reviewed_features": [],
"create": 0,
"modify": 6,
"delete": 0,
"area": 0.0000270976896299824,
"is_suspect": false,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://mapcomplete.osm.be/cyclofix.html",
"theme": "cyclofix",
"answer": 4,
"locale": "en",
"imagery": "osm",
"add-image": 3
},
"id": 119176477
}
},
{
"id": 119174003,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
3.3079188,
50.9896615
],
[
3.330834,
50.9896615
],
[
3.330834,
50.9979404
],
[
3.3079188,
50.9979404
],
[
3.3079188,
50.9896615
]
]
]
},
"properties": {
"check_user": null,
"reasons": [],
"tags": [],
"features": [],
"user": "Thibaultmol",
"uid": "2916921",
"editor": "MapComplete 0.17.1",
"comment": "Adding data with #MapComplete for theme #sidewalks",
"comments_count": 0,
"source": "Not reported",
"imagery_used": "Not reported",
"date": "2022-03-31T19:00:54Z",
"reviewed_features": [],
"create": 16,
"modify": 47,
"delete": 0,
"area": 0.000189712649280011,
"is_suspect": false,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://mapcomplete.osm.be/sidewalks.html",
"split": 18,
"theme": "sidewalks",
"answer": 75,
"locale": "en",
"imagery": "osm"
},
"id": 119174003
}
},
{
"id": 119173579,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
4.4072158,
51.2126045
],
[
4.4251232,
51.2126045
],
[
4.4251232,
51.2163039
],
[
4.4072158,
51.2163039
],
[
4.4072158,
51.2126045
]
]
]
},
"properties": {
"check_user": null,
"reasons": [],
"tags": [],
"features": [],
"user": "philippec",
"uid": "76884",
"editor": "MapComplete 0.17.1",
"comment": "Adding data with #MapComplete for theme #aed",
"comments_count": 0,
"source": "survey",
"imagery_used": "Not reported",
"date": "2022-03-31T18:45:55Z",
"reviewed_features": [],
"create": 1,
"modify": 4,
"delete": 0,
"area": 0.0000662466355600361,
"is_suspect": false,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://mapcomplete.osm.be/aed.html",
"theme": "aed",
"answer": 1,
"create": 1,
"locale": "nl",
"imagery": "osm",
"add-image": 3,
"change_over_5000m": 5
},
"id": 119173579
}
},
{
"id": 119166365,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
2.150535,
41.3780295
],
[
2.1822848,
41.3780295
],
[
2.1822848,
41.4018566
],
[
2.150535,
41.4018566
],
[
2.150535,
41.3780295
]
]
]
},
"properties": {
"check_user": null,
"reasons": [
{
"id": 4,
"name": "mass modification"
}
],
"tags": [],
"features": [],
"user": "ccamara",
"uid": "423535",
"editor": "MapComplete 0.17.1",
"comment": "Adding data with #MapComplete for theme #etymology",
"comments_count": 0,
"source": "Not reported",
"imagery_used": "Not reported",
"date": "2022-03-31T15:29:30Z",
"reviewed_features": [],
"create": 0,
"modify": 254,
"delete": 0,
"area": 0.000756505659580174,
"is_suspect": true,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://mapcomplete.osm.be/etymology.html",
"theme": "etymology",
"answer": 400,
"locale": "en",
"imagery": "osm"
},
"id": 119166365
}
},
{
"id": 119166248,
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
3.1954288,
51.2497832
],
[
3.1954288,
51.2497832
],
[
3.1954288,
51.2497832
],
[
3.1954288,
51.2497832
],
[
3.1954288,
51.2497832
]
]
]
},
"properties": {
"check_user": null,
"reasons": [],
"tags": [],
"features": [],
"user": "Pieter Vander Vennet",
"uid": "3818858",
"editor": "MapComplete 0.17.1",
"comment": "Adding data with #MapComplete for theme #cyclofix",
"comments_count": 0,
"source": "survey",
"imagery_used": "Not reported",
"date": "2022-03-31T15:26:54Z",
"reviewed_features": [],
"create": 0,
"modify": 1,
"delete": 0,
"area": 0,
"is_suspect": false,
"harmful": null,
"checked": false,
"check_date": null,
"metadata": {
"host": "https://mapcomplete.osm.be/cyclofix",
"theme": "cyclofix",
"answer": 1,
"locale": "nl",
"imagery": "CartoDB.Voyager",
"change_over_5000m": 1
},
"id": 119166248
}
},
{ {
"id": 119164497, "id": 119164497,
"type": "Feature", "type": "Feature",
@ -71,14 +584,14 @@
[ [
[ [
13.0583474, 13.0583474,
52.4079874 52.3648204
], ],
[ [
13.0585384, 13.0936165,
52.4079874 52.3648204
], ],
[ [
13.0585384, 13.0936165,
52.4080108 52.4080108
], ],
[ [
@ -87,7 +600,7 @@
], ],
[ [
13.0583474, 13.0583474,
52.4079874 52.3648204
] ]
] ]
] ]
@ -111,10 +624,10 @@
"imagery_used": "Not reported", "imagery_used": "Not reported",
"date": "2022-03-31T14:34:23Z", "date": "2022-03-31T14:34:23Z",
"reviewed_features": [], "reviewed_features": [],
"create": 2, "create": 8,
"modify": 2, "modify": 7,
"delete": 0, "delete": 0,
"area": 4.46939999928195e-9, "area": 0.00152328653663996,
"is_suspect": true, "is_suspect": true,
"harmful": null, "harmful": null,
"checked": false, "checked": false,
@ -199,31 +712,36 @@
"coordinates": [ "coordinates": [
[ [
[ [
2.1517345, 2.1419668,
41.3750824 41.3738288
], ],
[ [
2.1638315, 2.2162241,
41.3750824 41.3738288
], ],
[ [
2.1638315, 2.2162241,
41.3841951 41.4133962
], ],
[ [
2.1517345, 2.1419668,
41.3841951 41.4133962
], ],
[ [
2.1517345, 2.1419668,
41.3750824 41.3738288
] ]
] ]
] ]
}, },
"properties": { "properties": {
"check_user": null, "check_user": null,
"reasons": [], "reasons": [
{
"id": 4,
"name": "mass modification"
}
],
"tags": [], "tags": [],
"features": [], "features": [],
"user": "ccamara", "user": "ccamara",
@ -236,17 +754,17 @@
"date": "2022-03-31T13:40:39Z", "date": "2022-03-31T13:40:39Z",
"reviewed_features": [], "reviewed_features": [],
"create": 0, "create": 0,
"modify": 53, "modify": 588,
"delete": 0, "delete": 0,
"area": 0.000110236331900037, "area": 0.0029381682920202,
"is_suspect": false, "is_suspect": true,
"harmful": null, "harmful": null,
"checked": false, "checked": false,
"check_date": null, "check_date": null,
"metadata": { "metadata": {
"host": "https://mapcomplete.osm.be/etymology.html", "host": "https://mapcomplete.osm.be/etymology.html",
"theme": "etymology", "theme": "etymology",
"answer": 71, "answer": 829,
"locale": "en", "locale": "en",
"imagery": "osm" "imagery": "osm"
}, },
@ -265,16 +783,16 @@
50.8151642 50.8151642
], ],
[ [
5.4664566, 5.4885144,
50.8151642 50.8151642
], ],
[ [
5.4664566, 5.4885144,
50.8161343 50.8470484
], ],
[ [
5.4642697, 5.4642697,
50.8161343 50.8470484
], ],
[ [
5.4642697, 5.4642697,
@ -285,7 +803,12 @@
}, },
"properties": { "properties": {
"check_user": null, "check_user": null,
"reasons": [], "reasons": [
{
"id": 2,
"name": "possible import"
}
],
"tags": [], "tags": [],
"features": [], "features": [],
"user": "jozin-belgium", "user": "jozin-belgium",
@ -297,18 +820,18 @@
"imagery_used": "Not reported", "imagery_used": "Not reported",
"date": "2022-03-31T13:29:26Z", "date": "2022-03-31T13:29:26Z",
"reviewed_features": [], "reviewed_features": [],
"create": 59, "create": 1075,
"modify": 0, "modify": 0,
"delete": 0, "delete": 0,
"area": 0.0000021215116900076, "area": 0.000773022863739998,
"is_suspect": false, "is_suspect": true,
"harmful": null, "harmful": null,
"checked": false, "checked": false,
"check_date": null, "check_date": null,
"metadata": { "metadata": {
"host": "https://pietervdvn.github.io/mc/develop/grb.html", "host": "https://pietervdvn.github.io/mc/develop/grb.html",
"theme": "grb", "theme": "grb",
"import": 9, "import": 143,
"locale": "nl", "locale": "nl",
"imagery": "osm" "imagery": "osm"
}, },
@ -323,24 +846,24 @@
"coordinates": [ "coordinates": [
[ [
[ [
4.1911528, 4.1909382,
51.102956 51.1027885
], ],
[ [
4.1911715, 4.1914069,
51.102956 51.1027885
], ],
[ [
4.1911715, 4.1914069,
51.1030537 51.1030537
], ],
[ [
4.1911528, 4.1909382,
51.1030537 51.1030537
], ],
[ [
4.1911528, 4.1909382,
51.102956 51.1027885
] ]
] ]
] ]
@ -364,20 +887,29 @@
"imagery_used": "Not reported", "imagery_used": "Not reported",
"date": "2022-03-31T13:29:16Z", "date": "2022-03-31T13:29:16Z",
"reviewed_features": [], "reviewed_features": [],
"create": 2, "create": 9,
"modify": 0, "modify": 55,
"delete": 0, "delete": 0,
"area": 1.8269899999618e-9, "area": 1.24299239997193e-7,
"is_suspect": true, "is_suspect": true,
"harmful": null, "harmful": null,
"checked": false, "checked": false,
"check_date": null, "check_date": null,
"metadata": { "metadata": {
"host": "https://mapcomplete.osm.be/toerisme_vlaanderen.html", "host": "https://mapcomplete.osm.be/toerisme_vlaanderen.html",
"move": 15,
"theme": "toerisme_vlaanderen", "theme": "toerisme_vlaanderen",
"create": 2, "answer": 47,
"create": 9,
"locale": "nl", "locale": "nl",
"imagery": "osm" "imagery": "osm",
"add-image": 1,
"move:node/9626571473": "improve_accuracy",
"move:node/9626576649": "improve_accuracy",
"move:node/9626613959": "improve_accuracy",
"move:node/9626675921": "improve_accuracy",
"move:node/9626683663": "improve_accuracy",
"move:node/9626695007": "improve_accuracy"
}, },
"id": 119160492 "id": 119160492
} }

View file

@ -2,7 +2,7 @@ import {Utils} from "../Utils";
export default class Constants { export default class Constants {
public static vNumber = "0.18.0-alpha"; public static vNumber = "0.18.0-alpha-2";
public static ImgurApiKey = '7070e7167f0a25a' public static ImgurApiKey = '7070e7167f0a25a'
public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85" public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"

View file

@ -270,76 +270,145 @@ class ExpandGroupRewrite extends Conversion<{
} }
class ExpandRewrite<T> extends Conversion<T | RewritableConfigJson<T>, T[]> { export class ExpandRewrite<T> extends Conversion<T | RewritableConfigJson<T>, T[]> {
constructor() { constructor() {
super("Applies a rewrite", [], "ExpandRewrite"); super("Applies a rewrite", [], "ExpandRewrite");
} }
/* Used for left|right group creation and replacement. /**
* Every 'keyToRewrite' will be replaced with 'target' recursively. This substitution will happen in place in the object 'tr' */ * Used for left|right group creation and replacement.
* Every 'keyToRewrite' will be replaced with 'target' recursively. This substitution will happen in place in the object 'tr'
*
* // should substitute strings
* const spec = {
* "someKey": "somevalue {xyz}"
* }
* ExpandRewrite.RewriteParts("{xyz}", "rewritten", spec) // => {"someKey": "somevalue rewritten"}
*
*/
public static RewriteParts<T>(keyToRewrite: string, target: string | any, tr: T): T { public static RewriteParts<T>(keyToRewrite: string, target: string | any, tr: T): T {
const targetIsTranslation = Translations.isProbablyATranslation(target)
function replaceRecursive(transl: string | any) { function replaceRecursive(obj: string | any, target) {
if(transl === keyToRewrite){ if (obj === keyToRewrite) {
return target return target
} }
if (typeof transl === "string") { if (typeof obj === "string") {
// This is a simple string - we do a simple replace // This is a simple string - we do a simple replace
return transl.replace(keyToRewrite, target) return obj.replace(keyToRewrite, target)
} }
if (Array.isArray(transl)) { if (Array.isArray(obj)) {
// This is a list of items // This is a list of items
return transl.map(o => replaceRecursive(o)) return obj.map(o => replaceRecursive(o, target))
} }
if(typeof transl === "object"){ if (typeof obj === "object") {
transl = {...transl} obj = {...obj}
for (const key in transl) {
transl[key] = replaceRecursive(transl[key]) const isTr = targetIsTranslation && Translations.isProbablyATranslation(obj)
for (const key in obj) {
let subtarget = target
if(isTr && target[key] !== undefined){
// The target is a translation AND the current object is a translation
// This means we should recursively replace with the translated value
subtarget = target[key]
}
obj[key] = replaceRecursive(obj[key], subtarget)
} }
return transl return obj
} }
return transl return obj
} }
return replaceRecursive(tr) return replaceRecursive(tr, target)
} }
/**
* // should convert simple strings
* const spec = <RewritableConfigJson<string>>{
* rewrite: {
* sourceString: ["xyz","abc"],
* into: [
* ["X", "A"],
* ["Y", "B"],
* ["Z", "C"]],
* },
* renderings: "The value of xyz is abc"
* }
* new ExpandRewrite().convertStrict(spec, "test") // => ["The value of X is A", "The value of Y is B", "The value of Z is C"]
*
* // should rewrite with translations
* const spec = <RewritableConfigJson<any>>{
* rewrite: {
* sourceString: ["xyz","abc"],
* into: [
* ["X", {en: "value", nl: "waarde"}],
* ["Y", {en: "some other value", nl: "een andere waarde"}],
* },
* renderings: {en: "The value of xyz is abc", nl: "De waarde van xyz is abc"}
* }
* const expected = [
* {
* en: "The value of X is value",
* nl: "De waarde van X is waarde"
* },
* {
* en: "The value of Y is some other value",
* nl: "De waarde van Y is een andere waarde"
* }
* ]
* new ExpandRewrite().convertStrict(spec, "test") // => expected
*/
convert(json: T | RewritableConfigJson<T>, context: string): { result: T[]; errors?: string[]; warnings?: string[]; information?: string[] } { convert(json: T | RewritableConfigJson<T>, context: string): { result: T[]; errors?: string[]; warnings?: string[]; information?: string[] } {
if(json === null || json === undefined){ if (json === null || json === undefined) {
return {result: []} return {result: []}
} }
if (json["rewrite"] === undefined) { if (json["rewrite"] === undefined) {
// not a rewrite // not a rewrite
return {result: [(<T>json)]} return {result: [(<T>json)]}
} }
const rewrite = <RewritableConfigJson<T>>json; const rewrite = <RewritableConfigJson<T>>json;
const keysToRewrite = rewrite.rewrite const keysToRewrite = rewrite.rewrite
const ts : T[] = [] const ts: T[] = []
for (let i = 0; i < keysToRewrite.sourceString.length; i++){ {// sanity check: rewrite: ["xyz", "longer_xyz"] is not allowed as "longer_xyz" will never be triggered
const guard = keysToRewrite.sourceString[i]; for (let i = 0; i < keysToRewrite.sourceString.length; i++) {
for (let j = i + 1; j < keysToRewrite.sourceString.length; j++) { const guard = keysToRewrite.sourceString[i];
const toRewrite = keysToRewrite.sourceString[j] for (let j = i + 1; j < keysToRewrite.sourceString.length; j++) {
if(toRewrite.indexOf(guard) >= 0){ const toRewrite = keysToRewrite.sourceString[j]
throw `${context} Error in rewrite: sourcestring[${i}] is a substring of sourcestring[${j}]: ${guard} will be substituted away before ${toRewrite} is reached.` if (toRewrite.indexOf(guard) >= 0) {
throw `${context} Error in rewrite: sourcestring[${i}] is a substring of sourcestring[${j}]: ${guard} will be substituted away before ${toRewrite} is reached.`
}
} }
} }
} }
for (let i = 0; i < keysToRewrite.into[0].length; i++){ {// sanity check: {rewrite: ["a", "b"] should have the right amount of 'intos' in every case
for (let i = 0; i < rewrite.rewrite.into.length; i++) {
const into = keysToRewrite.into[i]
if(into.length !== rewrite.rewrite.sourceString.length){
throw `${context}.into.${i} Error in rewrite: there are ${rewrite.rewrite.sourceString.length} keys to rewrite, but entry ${i} has only ${into.length} values`
}
}
}
for (let i = 0; i < keysToRewrite.into.length; i++) {
let t = Utils.Clone(rewrite.renderings) let t = Utils.Clone(rewrite.renderings)
for (let i1 = 0; i1 < keysToRewrite.sourceString.length; i1++){ for (let j = 0; j < keysToRewrite.sourceString.length; j++) {
const key = keysToRewrite.sourceString[i1]; const key = keysToRewrite.sourceString[j];
const target = keysToRewrite.into[i1][i] const target = keysToRewrite.into[i][j]
t = ExpandRewrite.RewriteParts(key, target, t) t = ExpandRewrite.RewriteParts(key, target, t)
} }
ts.push(t) ts.push(t)

View file

@ -1,5 +1,3 @@
import {TagRenderingConfigJson} from "./TagRenderingConfigJson";
/** /**
* Rewrites and multiplies the given renderings of type T. * Rewrites and multiplies the given renderings of type T.
* *
@ -11,8 +9,9 @@ import {TagRenderingConfigJson} from "./TagRenderingConfigJson";
* rewrite: { * rewrite: {
* sourceString: ["key", "a|b|c"], * sourceString: ["key", "a|b|c"],
* into: [ * into: [
* ["X","Y", "Z"], * ["X", 0]
* [0,1,2] * ["Y", 1],
* ["Z", 2]
* ], * ],
* renderings: { * renderings: {
* "key":"a|b|c" * "key":"a|b|c"
@ -36,7 +35,7 @@ import {TagRenderingConfigJson} from "./TagRenderingConfigJson";
* *
* ] * ]
* *
* * @see ExpandRewrite
*/ */
export default interface RewritableConfigJson<T> { export default interface RewritableConfigJson<T> {
rewrite: { rewrite: {

View file

@ -1 +1 @@
{"contributors":[{"commits":3421,"contributor":"Pieter Vander Vennet"},{"commits":86,"contributor":"Robin van der Linde"},{"commits":39,"contributor":"Tobias"},{"commits":33,"contributor":"Christian Neumann"},{"commits":31,"contributor":"Win Olario"},{"commits":31,"contributor":"Pieter Fiers"},{"commits":26,"contributor":"karelleketers"},{"commits":24,"contributor":"Ward"},{"commits":20,"contributor":"Joost"},{"commits":19,"contributor":"Sebastian Kürten"},{"commits":18,"contributor":"riQQ"},{"commits":18,"contributor":"Arno Deceuninck"},{"commits":17,"contributor":"pgm-chardelv1"},{"commits":16,"contributor":"Hosted Weblate"},{"commits":15,"contributor":"ToastHawaii"},{"commits":13,"contributor":"Nicole"},{"commits":12,"contributor":"Tobias Jordans"},{"commits":12,"contributor":"Bavo Vanderghote"},{"commits":10,"contributor":"LiamSimons"},{"commits":8,"contributor":"dependabot[bot]"},{"commits":8,"contributor":"Midgard"},{"commits":7,"contributor":"RobJN"},{"commits":7,"contributor":"Mateusz Konieczny"},{"commits":7,"contributor":"Flo Edelmann"},{"commits":7,"contributor":"Binnette"},{"commits":7,"contributor":"yopaseopor"},{"commits":6,"contributor":"pelderson"},{"commits":5,"contributor":"David Haberthür"},{"commits":4,"contributor":"Ward Beyens"},{"commits":3,"contributor":"Weblate (bot)"},{"commits":3,"contributor":"Léo Villeveygoux"},{"commits":2,"contributor":"Codain"},{"commits":2,"contributor":"arrival-spring"},{"commits":2,"contributor":"Strubbl"},{"commits":2,"contributor":"RayBB"},{"commits":2,"contributor":"Charlotte Delvaux"},{"commits":2,"contributor":"Supaplex"},{"commits":2,"contributor":"pbarban"},{"commits":2,"contributor":"graveelius"},{"commits":2,"contributor":"Stanislas Gueniffey"},{"commits":1,"contributor":"Štefan Baebler"},{"commits":1,"contributor":"Jiří Podhorecký"},{"commits":1,"contributor":"Mark Rogerson"},{"commits":1,"contributor":"nicole_s"},{"commits":1,"contributor":"SC"},{"commits":1,"contributor":"Raphael Das Gupta"},{"commits":1,"contributor":"Nikolay Korotkiy"},{"commits":1,"contributor":"Seppe Santens"},{"commits":1,"contributor":"root"},{"commits":1,"contributor":"Allan Nordhøy"},{"commits":1,"contributor":"快乐的老鼠宝宝"},{"commits":1,"contributor":"Sebastian"},{"commits":1,"contributor":"Hiroshi Miura"},{"commits":1,"contributor":"riiga"},{"commits":1,"contributor":"Vinicius"},{"commits":1,"contributor":"Alexey Shabanov"},{"commits":1,"contributor":"Polgár Sándor"},{"commits":1,"contributor":"SiegbjornSitumeang"},{"commits":1,"contributor":"Marco"},{"commits":1,"contributor":"mozita"},{"commits":1,"contributor":"Schouppe Joost"},{"commits":1,"contributor":"Thibault Molleman"},{"commits":1,"contributor":"Noémie"},{"commits":1,"contributor":"Tomas Fiers"},{"commits":1,"contributor":"tbowdecl97"}]} {"contributors":[{"commits":3435,"contributor":"Pieter Vander Vennet"},{"commits":86,"contributor":"Robin van der Linde"},{"commits":39,"contributor":"Tobias"},{"commits":33,"contributor":"Christian Neumann"},{"commits":31,"contributor":"Win Olario"},{"commits":31,"contributor":"Pieter Fiers"},{"commits":26,"contributor":"karelleketers"},{"commits":24,"contributor":"Ward"},{"commits":20,"contributor":"Joost"},{"commits":19,"contributor":"Sebastian Kürten"},{"commits":18,"contributor":"Hosted Weblate"},{"commits":18,"contributor":"riQQ"},{"commits":18,"contributor":"Arno Deceuninck"},{"commits":17,"contributor":"pgm-chardelv1"},{"commits":15,"contributor":"ToastHawaii"},{"commits":13,"contributor":"Nicole"},{"commits":12,"contributor":"Tobias Jordans"},{"commits":12,"contributor":"Bavo Vanderghote"},{"commits":10,"contributor":"LiamSimons"},{"commits":8,"contributor":"dependabot[bot]"},{"commits":8,"contributor":"Midgard"},{"commits":7,"contributor":"RobJN"},{"commits":7,"contributor":"Mateusz Konieczny"},{"commits":7,"contributor":"Flo Edelmann"},{"commits":7,"contributor":"Binnette"},{"commits":7,"contributor":"yopaseopor"},{"commits":6,"contributor":"pelderson"},{"commits":5,"contributor":"David Haberthür"},{"commits":4,"contributor":"Ward Beyens"},{"commits":3,"contributor":"Weblate (bot)"},{"commits":3,"contributor":"Léo Villeveygoux"},{"commits":2,"contributor":"Codain"},{"commits":2,"contributor":"arrival-spring"},{"commits":2,"contributor":"Strubbl"},{"commits":2,"contributor":"RayBB"},{"commits":2,"contributor":"Charlotte Delvaux"},{"commits":2,"contributor":"Supaplex"},{"commits":2,"contributor":"pbarban"},{"commits":2,"contributor":"graveelius"},{"commits":2,"contributor":"Stanislas Gueniffey"},{"commits":1,"contributor":"Štefan Baebler"},{"commits":1,"contributor":"Jiří Podhorecký"},{"commits":1,"contributor":"Mark Rogerson"},{"commits":1,"contributor":"nicole_s"},{"commits":1,"contributor":"SC"},{"commits":1,"contributor":"Raphael Das Gupta"},{"commits":1,"contributor":"Nikolay Korotkiy"},{"commits":1,"contributor":"Seppe Santens"},{"commits":1,"contributor":"root"},{"commits":1,"contributor":"Allan Nordhøy"},{"commits":1,"contributor":"快乐的老鼠宝宝"},{"commits":1,"contributor":"Sebastian"},{"commits":1,"contributor":"Hiroshi Miura"},{"commits":1,"contributor":"riiga"},{"commits":1,"contributor":"Vinicius"},{"commits":1,"contributor":"Alexey Shabanov"},{"commits":1,"contributor":"Polgár Sándor"},{"commits":1,"contributor":"SiegbjornSitumeang"},{"commits":1,"contributor":"Marco"},{"commits":1,"contributor":"mozita"},{"commits":1,"contributor":"Schouppe Joost"},{"commits":1,"contributor":"Thibault Molleman"},{"commits":1,"contributor":"Noémie"},{"commits":1,"contributor":"Tomas Fiers"},{"commits":1,"contributor":"tbowdecl97"}]}

View file

@ -247,7 +247,7 @@
"emergency=ambulance_station" "emergency=ambulance_station"
], ],
"title": { "title": {
"en": "Ambulance station", "en": "an ambulance station",
"ru": "Станция скорой помощи", "ru": "Станция скорой помощи",
"ja": "救急ステーション(消防署)", "ja": "救急ステーション(消防署)",
"fr": "une station dambulances", "fr": "une station dambulances",

View file

@ -87,7 +87,7 @@
"tourism=artwork" "tourism=artwork"
], ],
"title": { "title": {
"en": "Artwork", "en": "an artwork",
"nl": "een kunstwerk", "nl": "een kunstwerk",
"fr": "une œuvre d'art", "fr": "une œuvre d'art",
"de": "eine kunstwerk", "de": "eine kunstwerk",

View file

@ -60,7 +60,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Bollard", "en": "a bollard",
"nl": "een paaltje", "nl": "een paaltje",
"de": "eine poller", "de": "eine poller",
"ru": "Прикол", "ru": "Прикол",
@ -88,7 +88,7 @@
}, },
{ {
"title": { "title": {
"en": "Cycle barrier", "en": "a cycle barrier",
"nl": "een fietshekjes", "nl": "een fietshekjes",
"de": "eine fahrradhindernis", "de": "eine fahrradhindernis",
"hu": "Kerékpárakadály", "hu": "Kerékpárakadály",

View file

@ -605,7 +605,7 @@
"amenity=bench" "amenity=bench"
], ],
"title": { "title": {
"en": "bench", "en": "a bench",
"de": "eine sitzbank", "de": "eine sitzbank",
"fr": "une banc", "fr": "une banc",
"nl": "een zitbank", "nl": "een zitbank",

View file

@ -239,8 +239,8 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Fietsbibliotheek", "nl": "een fietsbibliotheek",
"nl": "een bicycle library", "en": "a bicycle library",
"ru": "Велосипедная библиотека", "ru": "Велосипедная библиотека",
"zh_Hant": "自行車圖書館 ( Fietsbibliotheek)", "zh_Hant": "自行車圖書館 ( Fietsbibliotheek)",
"it": "una bici in prestito", "it": "una bici in prestito",

View file

@ -289,7 +289,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "bicycle rental shop", "en": "a bicycle rental shop",
"nl": "een fietsverhuurzaak", "nl": "een fietsverhuurzaak",
"fr": "une magasin de location de vélos" "fr": "une magasin de location de vélos"
}, },
@ -305,7 +305,7 @@
}, },
{ {
"title": { "title": {
"en": "bicycle rental", "en": "a bicycle rental",
"nl": "een fietsverhuur" "nl": "een fietsverhuur"
}, },
"tags": [ "tags": [

View file

@ -49,7 +49,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Bicycle tube vending machine", "en": "a bicycle tube vending machine",
"nl": "een fietsbanden-verkoopsautomaat", "nl": "een fietsbanden-verkoopsautomaat",
"fr": "une distributeur automatique de chambre à air de vélo", "fr": "une distributeur automatique de chambre à air de vélo",
"it": "una distributore automatico di camere daria per bici", "it": "una distributore automatico di camere daria per bici",

View file

@ -336,7 +336,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Bike cafe", "en": "a bike cafe",
"nl": "een fietscafé", "nl": "een fietscafé",
"fr": "une café vélo", "fr": "une café vélo",
"gl": "Café de ciclistas", "gl": "Café de ciclistas",

View file

@ -51,7 +51,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Bike cleaning service", "en": "a bike cleaning service",
"nl": "een fietsschoonmaakpunt", "nl": "een fietsschoonmaakpunt",
"fr": "une service de nettoyage de vélo", "fr": "une service de nettoyage de vélo",
"it": "una servizio lavaggio bici", "it": "una servizio lavaggio bici",

View file

@ -25,7 +25,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Bike parking", "en": "a bike parking",
"nl": "een fietsparking", "nl": "een fietsparking",
"fr": "une parking à vélo", "fr": "une parking à vélo",
"gl": "Aparcadoiro de bicicletas", "gl": "Aparcadoiro de bicicletas",

View file

@ -657,7 +657,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "bike pump", "en": "a bike pump",
"nl": "een fietspomp", "nl": "een fietspomp",
"fr": "une pompe à vélo", "fr": "une pompe à vélo",
"gl": "bomba de ar", "gl": "bomba de ar",
@ -691,7 +691,7 @@
}, },
{ {
"title": { "title": {
"en": "bike repair station and pump", "en": "a bike repair station and pump",
"nl": "een herstelpunt en pomp", "nl": "een herstelpunt en pomp",
"fr": "une point de réparation vélo avec pompe", "fr": "une point de réparation vélo avec pompe",
"gl": "estación de arranxo de bicicletas con bomba de ar", "gl": "estación de arranxo de bicicletas con bomba de ar",
@ -718,7 +718,7 @@
}, },
{ {
"title": { "title": {
"en": "bike repair station without pump", "en": "a bike repair station without pump",
"nl": "een herstelpunt zonder pomp", "nl": "een herstelpunt zonder pomp",
"fr": "une point de réparation vélo sans pompe", "fr": "une point de réparation vélo sans pompe",
"gl": "estación de arranxo de bicicletas sin bomba de ar", "gl": "estación de arranxo de bicicletas sin bomba de ar",

View file

@ -665,7 +665,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Bike repair/shop", "en": "a bike repair/shop",
"nl": "een fietszaak", "nl": "een fietszaak",
"fr": "une magasin et réparateur de vélo", "fr": "une magasin et réparateur de vélo",
"gl": "Tenda/arranxo de bicicletas", "gl": "Tenda/arranxo de bicicletas",

View file

@ -81,7 +81,7 @@
"amenity=binoculars" "amenity=binoculars"
], ],
"title": { "title": {
"en": "binoculars", "en": "a binoculars",
"nl": "een verrekijker", "nl": "een verrekijker",
"de": "eine ferngläser", "de": "eine ferngläser",
"ru": "бинокль" "ru": "бинокль"

View file

@ -233,7 +233,7 @@
"amenity=shelter" "amenity=shelter"
], ],
"title": { "title": {
"en": "Birdhide", "en": "a birdhide",
"nl": "een vogelkijkhut" "nl": "een vogelkijkhut"
}, },
"description": { "description": {
@ -248,7 +248,7 @@
"shelter=no" "shelter=no"
], ],
"title": { "title": {
"en": "Bird blind", "en": "a bird blind",
"nl": "een vogelkijkwand" "nl": "een vogelkijkwand"
}, },
"description": { "description": {

View file

@ -24,7 +24,7 @@
"amenity=pub" "amenity=pub"
], ],
"title": { "title": {
"en": "pub", "en": "a pub",
"nl": "een bruin cafe of kroeg", "nl": "een bruin cafe of kroeg",
"de": "eine kneipe", "de": "eine kneipe",
"ru": "паб", "ru": "паб",
@ -43,7 +43,7 @@
"amenity=bar" "amenity=bar"
], ],
"title": { "title": {
"en": "bar", "en": "a bar",
"nl": "een bar", "nl": "een bar",
"de": "eine bar", "de": "eine bar",
"ru": "бар", "ru": "бар",
@ -62,7 +62,7 @@
"amenity=cafe" "amenity=cafe"
], ],
"title": { "title": {
"en": "cafe", "en": "a cafe",
"nl": "een cafe", "nl": "een cafe",
"de": "eine café", "de": "eine café",
"ru": "кафе", "ru": "кафе",

View file

@ -4000,7 +4000,7 @@
"socket:typee=1" "socket:typee=1"
], ],
"title": { "title": {
"en": "charging station for electrical bikes with a normal european wall plug <img src='./assets/layers/charging_station/TypeE.svg' style='width: 2rem; height: 2rem; float: left; background: white; border-radius: 1rem; margin-right: 0.5rem'/> (meant to charge electrical bikes)", "en": "a charging station for electrical bikes with a normal european wall plug <img src='./assets/layers/charging_station/typee.svg' style='width: 2rem; height: 2rem; float: left; background: white; border-radius: 1rem; margin-right: 0.5rem'/> (meant to charge electrical bikes)",
"nl": "een oplaadpunt voor elektrische fietsen" "nl": "een oplaadpunt voor elektrische fietsen"
}, },
"preciseInput": { "preciseInput": {
@ -4014,7 +4014,7 @@
"bicycle=no" "bicycle=no"
], ],
"title": { "title": {
"en": "charging station for cars", "en": "a charging station for cars",
"nl": "een oplaadstation voor elektrische auto's", "nl": "een oplaadstation voor elektrische auto's",
"de": "eine ladestation für e-bikes" "de": "eine ladestation für e-bikes"
}, },

View file

@ -53,7 +53,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Crossing", "en": "a crossing",
"nl": "een oversteekplaats", "nl": "een oversteekplaats",
"de": "eine kreuzung", "de": "eine kreuzung",
"fr": "une traversée" "fr": "une traversée"
@ -77,7 +77,7 @@
}, },
{ {
"title": { "title": {
"en": "Traffic signal", "en": "a traffic signal",
"nl": "een verkeerslicht", "nl": "een verkeerslicht",
"ru": "Светофор", "ru": "Светофор",
"de": "eine ampel", "de": "eine ampel",

View file

@ -35,7 +35,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Defibrillator", "en": "a defibrillator",
"ca": "Desfibril·lador", "ca": "Desfibril·lador",
"es": "una desfibrilador", "es": "una desfibrilador",
"fr": "une défibrillateur", "fr": "une défibrillateur",
@ -51,7 +51,7 @@
}, },
{ {
"title": { "title": {
"en": "defibrillator mounted on a wall", "en": "a defibrillator mounted on a wall",
"nl": "een defibrillator die aan een muur hangt", "nl": "een defibrillator die aan een muur hangt",
"sl": "defibrilator je pritrjen na steno" "sl": "defibrilator je pritrjen na steno"
}, },

View file

@ -42,7 +42,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "drinking water", "en": "a drinking water",
"nl": "een drinkbaar water", "nl": "een drinkbaar water",
"fr": "une eau potable", "fr": "une eau potable",
"gl": "auga potábel", "gl": "auga potábel",

View file

@ -265,7 +265,8 @@
{ {
"id": "width", "id": "width",
"render": { "render": {
"en": "This door has a width of {canonical(width)} meter" "en": "This door has a width of {canonical(width)} meter",
"nl": "Deze deur heeft een breedte van {canonical(width)} meter"
}, },
"question": { "question": {
"en": "What is the width of this door/entrance?", "en": "What is the width of this door/entrance?",

View file

@ -60,7 +60,8 @@
"ru": "Где это расположено?", "ru": "Где это расположено?",
"fr": "Où est-elle positionnée ?", "fr": "Où est-elle positionnée ?",
"de": "Wo befindet er sich?", "de": "Wo befindet er sich?",
"it": "Dove è posizionato?" "it": "Dove è posizionato?",
"nl": "Op welke locatie staat dit?"
}, },
"mappings": [ "mappings": [
{ {
@ -75,7 +76,8 @@
"ru": "Внутри.", "ru": "Внутри.",
"fr": "Intérieur.", "fr": "Intérieur.",
"de": "Im Innenraum vorhanden.", "de": "Im Innenraum vorhanden.",
"it": "Si trova allinterno." "it": "Si trova allinterno.",
"nl": "In een gebouw."
} }
}, },
{ {
@ -90,7 +92,8 @@
"ru": "Снаружи.", "ru": "Снаружи.",
"fr": "Extérieur.", "fr": "Extérieur.",
"de": "Im Außenraum vorhanden.", "de": "Im Außenraum vorhanden.",
"it": "Si trova allesterno." "it": "Si trova allesterno.",
"nl": "In open lucht."
} }
} }
], ],
@ -106,7 +109,7 @@
"emergency=fire_extinguisher" "emergency=fire_extinguisher"
], ],
"title": { "title": {
"en": "Fire extinguisher", "en": "a fire extinguisher",
"ja": "消火器", "ja": "消火器",
"nb_NO": "en brannslukker", "nb_NO": "en brannslukker",
"ru": "Огнетушитель", "ru": "Огнетушитель",

View file

@ -7,7 +7,8 @@
"it": "Mappa delle caserme dei vigili del fuoco", "it": "Mappa delle caserme dei vigili del fuoco",
"ru": "Карта пожарных частей", "ru": "Карта пожарных частей",
"fr": "Couche des stations de pompiers", "fr": "Couche des stations de pompiers",
"de": "Karte der Feuerwachen" "de": "Karte der Feuerwachen",
"nl": "Kaart van de brandweerstations"
}, },
"minzoom": 12, "minzoom": 12,
"source": { "source": {
@ -25,7 +26,8 @@
"nb_NO": "Brannstasjon", "nb_NO": "Brannstasjon",
"it": "Caserma dei vigili del fuoco", "it": "Caserma dei vigili del fuoco",
"fr": "Station de pompiers", "fr": "Station de pompiers",
"de": "Feuerwache" "de": "Feuerwache",
"nl": "Brandweerstation"
} }
}, },
"description": { "description": {
@ -34,7 +36,8 @@
"it": "Livello che mostra le caserme dei vigili del fuoco.", "it": "Livello che mostra le caserme dei vigili del fuoco.",
"ru": "Слой карты, отображающий пожарные части.", "ru": "Слой карты, отображающий пожарные части.",
"fr": "Couche des stations de pompiers.", "fr": "Couche des stations de pompiers.",
"de": "Kartenebene zur Darstellung von Feuerwachen." "de": "Kartenebene zur Darstellung von Feuerwachen.",
"nl": "Kaartlaag die de brandweerstations toont."
}, },
"tagRenderings": [ "tagRenderings": [
{ {
@ -48,7 +51,8 @@
"ru": "Как называется эта пожарная часть?", "ru": "Как называется эта пожарная часть?",
"it": "Come si chiama questa caserma dei vigili del fuoco?", "it": "Come si chiama questa caserma dei vigili del fuoco?",
"fr": "Quel est le nom de la station ?", "fr": "Quel est le nom de la station ?",
"de": "Wie lautet der Name dieser Feuerwache?" "de": "Wie lautet der Name dieser Feuerwache?",
"nl": "Wat is de naam van dit brandweerstation?"
}, },
"render": { "render": {
"en": "This station is called {name}.", "en": "This station is called {name}.",
@ -56,7 +60,8 @@
"it": "Questa caserma si chiama {name}.", "it": "Questa caserma si chiama {name}.",
"ru": "Эта часть называется {name}.", "ru": "Эта часть называется {name}.",
"fr": "Cette station sappelle {name}.", "fr": "Cette station sappelle {name}.",
"nb_NO": "Denne stasjonen heter {name}." "nb_NO": "Denne stasjonen heter {name}.",
"nl": "Dit station heet {name}."
} }
}, },
{ {
@ -69,14 +74,16 @@
"ja": " 救急ステーションの所在地はどこですか?", "ja": " 救急ステーションの所在地はどこですか?",
"it": " Qual è il nome della via in cui si trova la caserma?", "it": " Qual è il nome della via in cui si trova la caserma?",
"ru": " По какому адресу расположена эта часть?", "ru": " По какому адресу расположена эта часть?",
"fr": " Quel est le nom de la rue dans lequel elle se situe ?" "fr": " Quel est le nom de la rue dans lequel elle se situe ?",
"nl": " Aan welke straat ligt dit station?"
}, },
"render": { "render": {
"en": "This station is along a highway called {addr:street}.", "en": "This station is along a highway called {addr:street}.",
"ja": "{addr:street} 沿いにあります。", "ja": "{addr:street} 沿いにあります。",
"ru": "Часть расположена вдоль шоссе {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}." "it": "La stazione si trova in una strada chiamata {addr:street}.",
"nl": "Dit station ligt aan {addr:street}."
} }
}, },
{ {
@ -86,7 +93,8 @@
"ja": "このステーションの住所は?(例: 地区、村、または町の名称)", "ja": "このステーションの住所は?(例: 地区、村、または町の名称)",
"ru": "Где расположена часть? (напр., название населённого пункта)", "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à)" "it": "In che località si trova la stazione? (ad es. quartiere, paese o città)",
"nl": "Waar is dit station gelegen? (v.b. naam van de buurt, dorp of stad)"
}, },
"freeform": { "freeform": {
"key": "addr:place" "key": "addr:place"
@ -96,7 +104,8 @@
"ja": "このステーションは{addr:place}にあります。", "ja": "このステーションは{addr:place}にあります。",
"ru": "Эта часть расположена в {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}." "it": "La stazione si trova a {addr:place}.",
"nl": "Dit station ligt in {addr:place}."
} }
}, },
{ {
@ -105,13 +114,15 @@
"en": "What agency operates this station?", "en": "What agency operates this station?",
"ja": "このステーションを運営しているのはどこですか?", "ja": "このステーションを運営しているのはどこですか?",
"fr": "Quel est lexploitant de la station ?", "fr": "Quel est lexploitant de la station ?",
"it": "Quale agenzia gestisce questa stazione?" "it": "Quale agenzia gestisce questa stazione?",
"nl": "Welk agentschap beheert dit station?"
}, },
"render": { "render": {
"en": "This station is operated by {operator}.", "en": "This station is operated by {operator}.",
"ja": "このステーションは{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}." "it": "Questa stazione è gestita da {operator}.",
"nl": "Dit station wordt beheerd door {operator}."
}, },
"freeform": { "freeform": {
"key": "operator" "key": "operator"
@ -129,7 +140,8 @@
"ja": "消防局(消防庁)", "ja": "消防局(消防庁)",
"fr": "Brigade de Protection du Feu", "fr": "Brigade de Protection du Feu",
"de": "Brandschutzbehörde", "de": "Brandschutzbehörde",
"it": "Servizio antincendio governativo" "it": "Servizio antincendio governativo",
"nl": "Brandveiligheidsbureau"
} }
} }
] ]
@ -140,13 +152,15 @@
"en": "How is the station operator classified?", "en": "How is the station operator classified?",
"ja": "ステーションの運営の分類は?", "ja": "ステーションの運営の分類は?",
"fr": "Quel est le type dexploitant ?", "fr": "Quel est le type dexploitant ?",
"it": "Comè classificato il gestore di questa stazione?" "it": "Comè classificato il gestore di questa stazione?",
"nl": "Wat voor soort beheerder beheert dit station?"
}, },
"render": { "render": {
"en": "The operator is a(n) {operator:type} entity.", "en": "The operator is a(n) {operator:type} entity.",
"ja": "運営者は、{operator:type} です。", "ja": "運営者は、{operator:type} です。",
"fr": "Lexploitant est de type {operator:type}.", "fr": "Lexploitant est de type {operator:type}.",
"it": "Il gestore è un ente {operator:type}." "it": "Il gestore è un ente {operator:type}.",
"nl": "De beheerder is een organisatie van type {operator:type} ."
}, },
"freeform": { "freeform": {
"key": "operator:type" "key": "operator:type"
@ -163,7 +177,8 @@
"ja": "ステーションは自治体が運営する。", "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.", "it": "Questa stazione è gestita dal governo.",
"nb_NO": "Stasjonen drives av myndighetene." "nb_NO": "Stasjonen drives av myndighetene.",
"nl": "Dit station wordt beheerd door de overheid."
} }
}, },
{ {
@ -176,7 +191,8 @@
"en": "The station is operated by a community-based, or informal organization.", "en": "The station is operated by a community-based, or informal organization.",
"ja": "任意団体やコミュニティが運営しているステーションである。", "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 unassociazione informale." "it": "Questa stazione è gestita dalla comunità oppure unassociazione informale.",
"nl": "Dit station wordt beheerd door een informele of gemeenschapsorganisatie."
} }
}, },
{ {
@ -189,7 +205,8 @@
"en": "The station is operated by a formal group of volunteers.", "en": "The station is operated by a formal group of volunteers.",
"ja": "公益団体が運営しているステーションである。", "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." "it": "Questa stazione è gestita da un gruppo di volontari ufficiale.",
"nl": "Dit station wordt beheerd door een formele groep vrijwilligers."
} }
}, },
{ {
@ -202,7 +219,8 @@
"en": "The station is privately operated.", "en": "The station is privately operated.",
"ja": "個人が運営しているステーションである。", "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." "it": "Questa stazione è gestita da privati.",
"nl": "Dit station wordt door private organisatie beheerd."
} }
} }
] ]
@ -215,20 +233,22 @@
"amenity=fire_station" "amenity=fire_station"
], ],
"title": { "title": {
"en": "Fire station", "en": "a fire station",
"ja": "消防署", "ja": "消防署",
"ru": "Пожарная часть", "ru": "Пожарная часть",
"fr": "une caserne de pompiers", "fr": "une caserne de pompiers",
"de": "eine feuerwache", "de": "eine feuerwache",
"it": "una caserma dei vigili del fuoco", "it": "una caserma dei vigili del fuoco",
"nb_NO": "en brannstasjon" "nb_NO": "en brannstasjon",
"nl": "Brandweerstation"
}, },
"description": { "description": {
"en": "A fire station is a place where the fire trucks and firefighters are located when not in operation.", "en": "A fire station is a place where the fire trucks and firefighters are located when not in operation.",
"ja": "消防署は、運転していないときに消防車や消防士がいる場所です。", "ja": "消防署は、運転していないときに消防車や消防士がいる場所です。",
"fr": "Une caserne de pompiers est un lieu où les pompiers et leur équipements sont situés en dehors des missions.", "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 laltra." "it": "Una caserma dei pompieri è un luogo dove si trovano i mezzi antincendio e i pompieri tra una missione e laltra.",
"nl": "Een brandweerstation is een plaats waar brandweerwagens en brandweerlieden gebaseerd zijn."
} }
} }
], ],

View file

@ -17,7 +17,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "restaurant", "en": "a restaurant",
"nl": "een restaurant", "nl": "een restaurant",
"ru": "ресторан", "ru": "ресторан",
"de": "eine restaurant" "de": "eine restaurant"
@ -36,7 +36,7 @@
}, },
{ {
"title": { "title": {
"en": "fastfood", "en": "a fastfood",
"nl": "een fastfood-zaak", "nl": "een fastfood-zaak",
"ru": "быстрое питание", "ru": "быстрое питание",
"de": "eine schnellimbiss" "de": "eine schnellimbiss"
@ -55,7 +55,7 @@
}, },
{ {
"title": { "title": {
"en": "fries shop", "en": "a fries shop",
"nl": "een frituur", "nl": "een frituur",
"de": "eine pommesbude" "de": "eine pommesbude"
}, },
@ -735,6 +735,7 @@
} }
], ],
"description": { "description": {
"en": "A layer showing restaurants and fast-food amenities (with a special rendering for friteries)" "en": "A layer showing restaurants and fast-food amenities (with a special rendering for friteries)",
"nl": "Een laag die restaurants en fast food toont (met een speciale weergave van frituren)"
} }
} }

View file

@ -61,7 +61,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Ghost bike", "en": "a ghost bike",
"nl": "een witte fiets", "nl": "een witte fiets",
"de": "eine geisterrad", "de": "eine geisterrad",
"it": "una bici fantasma", "it": "una bici fantasma",
@ -224,6 +224,7 @@
} }
], ],
"description": { "description": {
"en": "A layer showing memorials for cyclists, killed in road accidents" "en": "A layer showing memorials for cyclists, killed in road accidents",
"nl": "Een laag die herdenkingsplaatsen voor verongelukte fietsers toont"
} }
} }

View file

@ -62,6 +62,7 @@
} }
], ],
"description": { "description": {
"en": "Searches for all accessible grass patches within public parks - these are 'groenzones'\"" "en": "Searches for all accessible grass patches within public parks - these are 'groenzones'\"",
"nl": "Dit zoekt naar alle toegankelijke grasvelden binnen publieke parken - dit zijn 'groenzones'"
} }
} }

View file

@ -27,7 +27,8 @@
"nb_NO": "Brannhydrant", "nb_NO": "Brannhydrant",
"fr": "Bornes incendie", "fr": "Bornes incendie",
"de": "Hydrant", "de": "Hydrant",
"it": "Idrante" "it": "Idrante",
"nl": "Brandkraan"
} }
}, },
"description": { "description": {
@ -51,7 +52,8 @@
"ru": "Какого цвета гидрант?", "ru": "Какого цвета гидрант?",
"fr": "Quelle est la couleur de la borne ?", "fr": "Quelle est la couleur de la borne ?",
"de": "Welche Farbe hat der Hydrant?", "de": "Welche Farbe hat der Hydrant?",
"it": "Qual è il colore dellidrante?" "it": "Qual è il colore dellidrante?",
"nl": "Welke kleur heeft de brandkraan?"
}, },
"render": { "render": {
"en": "The hydrant color is {colour}", "en": "The hydrant color is {colour}",
@ -60,7 +62,8 @@
"ru": "Цвет гидранта {colour}", "ru": "Цвет гидранта {colour}",
"fr": "La borne est {colour}", "fr": "La borne est {colour}",
"de": "Der Hydrant hat die Farbe {colour}", "de": "Der Hydrant hat die Farbe {colour}",
"it": "Il colore dellidrante è {colour}" "it": "Il colore dellidrante è {colour}",
"nl": "De brandkraan is {colour}"
}, },
"freeform": { "freeform": {
"key": "colour" "key": "colour"
@ -78,7 +81,8 @@
"ru": "Цвет гидранта не определён.", "ru": "Цвет гидранта не определён.",
"fr": "La borne est de couleur inconnue.", "fr": "La borne est de couleur inconnue.",
"de": "Die Farbe des Hydranten ist unbekannt.", "de": "Die Farbe des Hydranten ist unbekannt.",
"it": "Il colore dellidrante è sconosciuto." "it": "Il colore dellidrante è sconosciuto.",
"nl": "De kleur van de brandkraan is onbekend."
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -94,7 +98,8 @@
"ru": "Гидрант жёлтого цвета.", "ru": "Гидрант жёлтого цвета.",
"fr": "La borne est jaune.", "fr": "La borne est jaune.",
"de": "Die Farbe des Hydranten ist gelb.", "de": "Die Farbe des Hydranten ist gelb.",
"it": "Il colore dellidrante è giallo." "it": "Il colore dellidrante è giallo.",
"nl": "De brandkraan is geel."
} }
}, },
{ {
@ -109,7 +114,8 @@
"it": "L'idrante è rosso.", "it": "L'idrante è rosso.",
"ru": "Гидрант красного цвета.", "ru": "Гидрант красного цвета.",
"fr": "La borne est rouge.", "fr": "La borne est rouge.",
"de": "Die Farbe des Hydranten ist rot." "de": "Die Farbe des Hydranten ist rot.",
"nl": "De brandkraan is rood."
} }
} }
] ]
@ -122,7 +128,8 @@
"it": "Di che tipo è questo idrante?", "it": "Di che tipo è questo idrante?",
"ru": "К какому типу относится этот гидрант?", "ru": "К какому типу относится этот гидрант?",
"fr": "De quel type de borne sagit-il ?", "fr": "De quel type de borne sagit-il ?",
"de": "Um welche Art von Hydrant handelt es sich?" "de": "Um welche Art von Hydrant handelt es sich?",
"nl": "Wat voor soort brandkraan is dit?"
}, },
"freeform": { "freeform": {
"key": "fire_hydrant:type" "key": "fire_hydrant:type"
@ -133,7 +140,8 @@
"ja": " 消火栓のタイプ:{fire_hydrant:type}", "ja": " 消火栓のタイプ:{fire_hydrant:type}",
"it": " Tipo di idrante: {fire_hydrant:type}", "it": " Tipo di idrante: {fire_hydrant:type}",
"fr": " Type de borne : {fire_hydrant:type}", "fr": " Type de borne : {fire_hydrant:type}",
"de": " Hydranten-Typ: {fire_hydrant:type}" "de": " Hydranten-Typ: {fire_hydrant:type}",
"nl": " Het type brandkraan is {fire_hydrant:type}"
}, },
"mappings": [ "mappings": [
{ {
@ -148,7 +156,8 @@
"it": "Il tipo di idrante è sconosciuto.", "it": "Il tipo di idrante è sconosciuto.",
"ru": "Тип гидранта не определён.", "ru": "Тип гидранта не определён.",
"fr": "La borne est de type inconnu.", "fr": "La borne est de type inconnu.",
"de": "Der Typ des Hydranten ist unbekannt." "de": "Der Typ des Hydranten ist unbekannt.",
"nl": "Het type brandkraan is onbekend."
}, },
"hideInAnswer": true "hideInAnswer": true
}, },
@ -163,7 +172,8 @@
"ja": "ピラー型。", "ja": "ピラー型。",
"fr": "Pilier.", "fr": "Pilier.",
"de": "Säulenart.", "de": "Säulenart.",
"it": "Soprasuolo." "it": "Soprasuolo.",
"nl": "Pillaar type."
}, },
"icon": { "icon": {
"path": "./assets/themes/hailhydrant/hydrant_pillar.svg", "path": "./assets/themes/hailhydrant/hydrant_pillar.svg",
@ -181,7 +191,8 @@
"ja": "パイプ型。", "ja": "パイプ型。",
"fr": "Tuyau.", "fr": "Tuyau.",
"de": "Rohrtyp.", "de": "Rohrtyp.",
"it": "Tubo." "it": "Tubo.",
"nl": "Buis type."
}, },
"icon": { "icon": {
"path": "./assets/themes/hailhydrant/hydrant_unknown.svg", "path": "./assets/themes/hailhydrant/hydrant_unknown.svg",
@ -201,7 +212,8 @@
"ja": "壁型。", "ja": "壁型。",
"fr": "Mural.", "fr": "Mural.",
"de": "Wandtyp.", "de": "Wandtyp.",
"it": "A muro." "it": "A muro.",
"nl": "Muur type."
}, },
"icon": { "icon": {
"path": "./assets/themes/hailhydrant/hydrant_unknown.svg", "path": "./assets/themes/hailhydrant/hydrant_unknown.svg",
@ -219,7 +231,8 @@
"ja": "地下式。", "ja": "地下式。",
"fr": "Enterré.", "fr": "Enterré.",
"de": "Untergrundtyp.", "de": "Untergrundtyp.",
"it": "Sottosuolo." "it": "Sottosuolo.",
"nl": "Ondergronds type."
}, },
"icon": { "icon": {
"path": "./assets/themes/hailhydrant/hydrant_underground.svg", "path": "./assets/themes/hailhydrant/hydrant_underground.svg",
@ -235,7 +248,8 @@
"ja": "消火栓のライフサイクルステータスを更新します。", "ja": "消火栓のライフサイクルステータスを更新します。",
"fr": "Mettre à jour létat de la borne.", "fr": "Mettre à jour létat de la borne.",
"de": "Ist dieser Hydrant noch in Betrieb?", "de": "Ist dieser Hydrant noch in Betrieb?",
"it": "Aggiorna lo stato di funzionamento dellidrante." "it": "Aggiorna lo stato di funzionamento dellidrante.",
"nl": "Werkt deze brandkraan nog?"
}, },
"mappings": [ "mappings": [
{ {
@ -250,7 +264,8 @@
"ru": "Гидрант (полностью или частично) в рабочем состоянии", "ru": "Гидрант (полностью или частично) в рабочем состоянии",
"fr": "La borne est en état, ou partiellement en état, de fonctionner.", "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": "Lidrante è (parzialmente o completamente) funzionante." "it": "Lidrante è (parzialmente o completamente) funzionante.",
"nl": "De brandkraan werkt (minstens gedeeltelijk)"
} }
}, },
{ {
@ -265,7 +280,8 @@
"ja": "消火栓は使用できません。", "ja": "消火栓は使用できません。",
"fr": "La borne est hors-service.", "fr": "La borne est hors-service.",
"de": "Der Hydrant ist nicht verfügbar", "de": "Der Hydrant ist nicht verfügbar",
"it": "Lidrante è fuori servizio." "it": "Lidrante è fuori servizio.",
"nl": "De brandkraan is niet beschikbaar"
} }
}, },
{ {
@ -281,7 +297,8 @@
"ru": "Гидрант демонтирован", "ru": "Гидрант демонтирован",
"fr": "La borne a été retirée.", "fr": "La borne a été retirée.",
"de": "Der Hydrant wurde entfernt", "de": "Der Hydrant wurde entfernt",
"it": "Lidrante è stato rimosso." "it": "Lidrante è stato rimosso.",
"nl": "Deze brandkraan is verwijderd"
} }
} }
] ]
@ -294,20 +311,22 @@
"emergency=fire_hydrant" "emergency=fire_hydrant"
], ],
"title": { "title": {
"en": "Fire hydrant", "en": "a fire hydrant",
"ru": "Пожарный гидрант", "ru": "Пожарный гидрант",
"ja": "消火栓", "ja": "消火栓",
"nb_NO": "en brannhydrant", "nb_NO": "en brannhydrant",
"fr": "une borne incendie", "fr": "une borne incendie",
"de": "eine löschwasser-hydrant", "de": "eine löschwasser-hydrant",
"it": "una idrante antincendio" "it": "una idrante antincendio",
"nl": "Brandkraan"
}, },
"description": { "description": {
"en": "A hydrant is a connection point where firefighters can tap water. It might be located underground.", "en": "A hydrant is a connection point where firefighters can tap water. It might be located underground.",
"ja": "消火栓は消防士が水を汲み上げることができる接続点です。地下にあるかもしれません。", "ja": "消火栓は消防士が水を汲み上げることができる接続点です。地下にあるかもしれません。",
"fr": "Une borne incendie est un point où les pompiers peuvent salimenter en eau. Elle peut être enterrée.", "fr": "Une borne incendie est un point où les pompiers peuvent salimenter 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." "it": "Un idrante è un punto di collegamento dove i pompieri possono estrarre acqua. Potrebbe trovarsi sottoterra.",
"nl": "Een brandkraan is een kraan waar brandweerlieden een brandslang kunnen aansluiten. Soms zit deze ondergronds."
} }
} }
], ],

View file

@ -37,7 +37,7 @@
], ],
"title": { "title": {
"nl": "een informatiebord", "nl": "een informatiebord",
"en": "information board", "en": "an information board",
"it": "una pannello informativo", "it": "una pannello informativo",
"fr": "une panneau d'informations", "fr": "une panneau d'informations",
"de": "eine informationstafel", "de": "eine informationstafel",

View file

@ -172,7 +172,7 @@
"tourism=map" "tourism=map"
], ],
"title": { "title": {
"en": "Map", "en": "a map",
"nl": "een kaart", "nl": "een kaart",
"it": "una mappa", "it": "una mappa",
"ru": "Карта", "ru": "Карта",

View file

@ -380,7 +380,7 @@
"fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen" "fixme=Toegevoegd met MapComplete, geometry nog uit te tekenen"
], ],
"title": { "title": {
"en": "nature reserve", "en": "a nature reserve",
"nl": "een natuurreservaat" "nl": "een natuurreservaat"
}, },
"description": { "description": {

View file

@ -1,7 +1,8 @@
{ {
"id": "note", "id": "note",
"name": { "name": {
"en": "OpenStreetMap notes" "en": "OpenStreetMap notes",
"nl": "OpenStreetMap Notes"
}, },
"description": "This layer shows notes on OpenStreetMap. Having this layer in your theme will trigger the 'add new note' functionality in the 'addNewPoint'-popup (or if your theme has no presets, it'll enable adding notes)", "description": "This layer shows notes on OpenStreetMap. Having this layer in your theme will trigger the 'add new note' functionality in the 'addNewPoint'-popup (or if your theme has no presets, it'll enable adding notes)",
"source": { "source": {
@ -13,13 +14,15 @@
"minzoom": 10, "minzoom": 10,
"title": { "title": {
"render": { "render": {
"en": "Note" "en": "Note",
"nl": "Note"
}, },
"mappings": [ "mappings": [
{ {
"if": "closed_at~*", "if": "closed_at~*",
"then": { "then": {
"en": "Closed note" "en": "Closed note",
"nl": "Gesloten Note"
} }
} }
] ]
@ -55,14 +58,16 @@
{ {
"id": "report-contributor", "id": "report-contributor",
"render": { "render": {
"en": "<a href='https://www.openstreetmap.org/reports/new?reportable_id={_first_user_id}&reportable_type=User' target='_blank' class='subtle'>Report {_first_user} as spam</a>" "en": "<a href='https://www.openstreetmap.org/reports/new?reportable_id={_first_user_id}&reportable_type=User' target='_blank' class='subtle'>Report {_first_user} as spam</a>",
"nl": "<a href='https://www.openstreetmap.org/reports/new?reportable_id={_first_user_id}&reportable_type=User' target='_blank' class='subtle'>{_first_user} melden als spam</a>"
}, },
"condition": "_opened_by_anonymous_user=false" "condition": "_opened_by_anonymous_user=false"
}, },
{ {
"id": "report-note", "id": "report-note",
"render": { "render": {
"en": "<a href='https://www.openstreetmap.org/reports/new?reportable_id={id}&reportable_type=Note' target='_blank'>Report this note as spam or inappropriate</a>" "en": "<a href='https://www.openstreetmap.org/reports/new?reportable_id={id}&reportable_type=Note' target='_blank'>Report this note as spam or inappropriate</a>",
"nl": "<a href='https://www.openstreetmap.org/reports/new?reportable_id={id}&reportable_type=Note' target='_blank'>Deze not melden als spam of ongepast</a>"
} }
} }
], ],
@ -106,7 +111,8 @@
} }
], ],
"question": { "question": {
"en": "Should mention {search} in the first comment" "en": "Should mention {search} in the first comment",
"nl": "Moet in de eerste opmerking \"{search}\" bevatten"
} }
} }
] ]
@ -122,7 +128,8 @@
} }
], ],
"question": { "question": {
"en": "Should <b>not</b> mention {search} in the first comment" "en": "Should <b>not</b> mention {search} in the first comment",
"nl": "Mag in de eerste opmerking <b>niet</b> \"{search}\" bevatten"
} }
} }
] ]
@ -138,7 +145,8 @@
} }
], ],
"question": { "question": {
"en": "Opened by contributor {search}" "en": "Opened by contributor {search}",
"nl": "Geopend door bijdrager {search}"
} }
} }
] ]
@ -154,7 +162,8 @@
} }
], ],
"question": { "question": {
"en": "<b>Not</b> opened by contributor {search}" "en": "<b>Not</b> opened by contributor {search}",
"nl": "<b>Niet</b> geopend door bijdrager {search}"
} }
} }
] ]
@ -170,7 +179,8 @@
} }
], ],
"question": { "question": {
"en": "Last edited by contributor {search}" "en": "Last edited by contributor {search}",
"nl": "Laatst bewerkt door bijdrager {search}"
} }
} }
] ]
@ -186,7 +196,8 @@
} }
], ],
"question": { "question": {
"en": "Opened after {search}" "en": "Opened after {search}",
"nl": "Geopend na {search}"
} }
} }
] ]
@ -203,7 +214,8 @@
} }
], ],
"question": { "question": {
"en": "Created before {search}" "en": "Created before {search}",
"nl": "Aangemaakt voor {search}"
} }
} }
] ]
@ -220,7 +232,8 @@
} }
], ],
"question": { "question": {
"en": "Created after {search}" "en": "Created after {search}",
"nl": "Aangemaakt na {search}"
} }
} }
] ]
@ -231,7 +244,8 @@
{ {
"osmTags": "_opened_by_anonymous_user=true", "osmTags": "_opened_by_anonymous_user=true",
"question": { "question": {
"en": "Only show notes opened by an anonymous contributor" "en": "Only show notes opened by an anonymous contributor",
"nl": "Toon enkel de Notes geopend door een anonieme bijdrager"
} }
} }
] ]
@ -242,7 +256,8 @@
{ {
"osmTags": "closed_at=", "osmTags": "closed_at=",
"question": { "question": {
"en": "Only show open notes" "en": "Only show open notes",
"nl": "Toon enkel open Notes"
} }
} }
] ]
@ -253,7 +268,8 @@
{ {
"osmTags": "_is_import_note=", "osmTags": "_is_import_note=",
"question": { "question": {
"en": "Hide import notes" "en": "Hide import notes",
"nl": "Verberg import Notes"
} }
} }
] ]

View file

@ -1,7 +1,8 @@
{ {
"id": "note_import", "id": "note_import",
"name": { "name": {
"en": "Possible bookcases" "en": "Possible bookcases",
"nl": "Mogelijke publieke boekenkastjes"
}, },
"description": "Template for note note imports.", "description": "Template for note note imports.",
"source": { "source": {
@ -17,7 +18,8 @@
"minzoom": 10, "minzoom": 10,
"title": { "title": {
"render": { "render": {
"en": "Possible feature" "en": "Possible feature",
"nl": "Mogelijk object"
} }
}, },
"calculatedTags": [ "calculatedTags": [

View file

@ -28,7 +28,7 @@
], ],
"title": { "title": {
"nl": "een parking voor auto's", "nl": "een parking voor auto's",
"en": "car parking" "en": "a car parking"
} }
} }
], ],

View file

@ -1,7 +1,8 @@
{ {
"id": "pedestrian_path", "id": "pedestrian_path",
"name": { "name": {
"en": "Pedestrain paths" "en": "Pedestrian paths",
"nl": "Pad voor voetgangers"
}, },
"minzoom": 18, "minzoom": 18,
"source": { "source": {
@ -16,7 +17,8 @@
}, },
"title": {}, "title": {},
"description": { "description": {
"en": "Pedestrian footpaths, especially used for indoor navigation and snapping entrances to this layer" "en": "Pedestrian footpaths, especially used for indoor navigation and snapping entrances to this layer",
"nl": "Pad voor voetgangers, in het bijzonder gebruikt voor navigatie binnen gebouwen en om aan toegangen vast te klikken in deze laag"
}, },
"mapRendering": [ "mapRendering": [
{ {

View file

@ -85,7 +85,7 @@
"leisure=picnic_table" "leisure=picnic_table"
], ],
"title": { "title": {
"en": "picnic table", "en": "a picnic table",
"nl": "een picnic-tafel", "nl": "een picnic-tafel",
"it": "una tavolo da picnic", "it": "una tavolo da picnic",
"ru": "стол для пикника", "ru": "стол для пикника",

View file

@ -494,7 +494,7 @@
], ],
"title": { "title": {
"nl": "een speeltuin", "nl": "een speeltuin",
"en": "playground", "en": "a playground",
"ru": "Детская площадка", "ru": "Детская площадка",
"fr": "une terrain de jeux", "fr": "une terrain de jeux",
"it": "una campetto", "it": "una campetto",

View file

@ -50,7 +50,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Bookcase", "en": "a bookcase",
"nl": "een boekenruilkast", "nl": "een boekenruilkast",
"de": "eine bücherschrank", "de": "eine bücherschrank",
"fr": "une microbibliothèque", "fr": "une microbibliothèque",

View file

@ -407,7 +407,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "recycling container", "en": "a recycling container",
"nl": "een recycling container" "nl": "een recycling container"
}, },
"tags": [ "tags": [
@ -417,7 +417,7 @@
}, },
{ {
"title": { "title": {
"en": "recycling centre", "en": "a recycling centre",
"nl": "een recycling centre" "nl": "een recycling centre"
}, },
"tags": [ "tags": [

View file

@ -40,7 +40,8 @@
"ru": "{name}", "ru": "{name}",
"ja": "{name}", "ja": "{name}",
"de": "{name}", "de": "{name}",
"eo": "{name}" "eo": "{name}",
"nl": "{name}"
} }
}, },
{ {
@ -55,7 +56,8 @@
"ru": "{shop}", "ru": "{shop}",
"ja": "{shop}", "ja": "{shop}",
"de": "{shop}", "de": "{shop}",
"eo": "{shop}" "eo": "{shop}",
"nl": "{shop}"
} }
} }
] ]
@ -92,7 +94,8 @@
"fr": "Ce magasin vends {shop}", "fr": "Ce magasin vends {shop}",
"ja": "こちらのお店では{shop}を販売しております", "ja": "こちらのお店では{shop}を販売しております",
"de": "Dieses Geschäft verkauft {shop}", "de": "Dieses Geschäft verkauft {shop}",
"eo": "Ĉi tiu butiko vendas {shop}" "eo": "Ĉi tiu butiko vendas {shop}",
"nl": "Deze winkel is van type \"{shop}\""
}, },
"question": { "question": {
"en": "What does this shop sell?", "en": "What does this shop sell?",
@ -100,7 +103,8 @@
"ja": "このお店では何を売っていますか?", "ja": "このお店では何を売っていますか?",
"ru": "Что продаётся в этом магазине?", "ru": "Что продаётся в этом магазине?",
"de": "Was wird in diesem Geschäft verkauft?", "de": "Was wird in diesem Geschäft verkauft?",
"eo": "Kion vendas ĉi tiu butiko?" "eo": "Kion vendas ĉi tiu butiko?",
"nl": "Wat verkoopt deze winkel?"
}, },
"freeform": { "freeform": {
"key": "shop" "key": "shop"
@ -258,7 +262,8 @@
"ru": "<a href='{website}'>{website}</a>", "ru": "<a href='{website}'>{website}</a>",
"ja": "<a href='{website}'>{website}</a>", "ja": "<a href='{website}'>{website}</a>",
"de": "<a href='{website}'>{website}</a>", "de": "<a href='{website}'>{website}</a>",
"eo": "<a href='{website}'>{website}</a>" "eo": "<a href='{website}'>{website}</a>",
"nl": "<a href='{website}'>{website}</a>"
}, },
"question": { "question": {
"en": "What is the website of this shop?", "en": "What is the website of this shop?",
@ -331,7 +336,7 @@
"shop=yes" "shop=yes"
], ],
"title": { "title": {
"en": "Shop", "en": "a shop",
"fr": "une magasin", "fr": "une magasin",
"ru": "Магазин", "ru": "Магазин",
"ja": "店", "ja": "店",

View file

@ -280,6 +280,7 @@
} }
], ],
"description": { "description": {
"en": "All carfree roads" "en": "All carfree roads",
"nl": "Alle verkeersvrije wegen"
} }
} }

View file

@ -427,7 +427,7 @@
"title": { "title": {
"nl": "een ping-pong tafel", "nl": "een ping-pong tafel",
"fr": "une table de ping-pong", "fr": "une table de ping-pong",
"en": "Tabletennis table", "en": "a tabletennis table",
"it": "una tavolo da tennistavolo", "it": "una tavolo da tennistavolo",
"ru": "Стол для настольного тенниса", "ru": "Стол для настольного тенниса",
"de": "eine tischtennisplatte" "de": "eine tischtennisplatte"
@ -441,7 +441,7 @@
"title": { "title": {
"nl": "een sportterrein", "nl": "een sportterrein",
"fr": "une terrain de sport", "fr": "une terrain de sport",
"en": "Sport pitch", "en": "a sport pitch",
"ru": "Спортивная площадка", "ru": "Спортивная площадка",
"it": "una campo sportivo", "it": "una campo sportivo",
"de": "eine sportplatz" "de": "eine sportplatz"

View file

@ -42,7 +42,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "street lamp", "en": "a street lamp",
"nl": "een straatlantaarn" "nl": "een straatlantaarn"
}, },
"tags": [ "tags": [
@ -372,6 +372,7 @@
"enableRelocation": false "enableRelocation": false
}, },
"description": { "description": {
"en": "A layer showing street lights" "en": "A layer showing street lights",
"nl": "Een laag die alle straatlantaarns toont"
} }
} }

View file

@ -460,7 +460,8 @@
"surveillance:type=camera" "surveillance:type=camera"
], ],
"title": { "title": {
"en": "surveillance camera" "en": "a surveillance camera",
"nl": "bewakingscamera"
} }
}, },
{ {
@ -470,7 +471,8 @@
"camera:mount=wall" "camera:mount=wall"
], ],
"title": { "title": {
"en": "surveillance camera mounted on a wall" "en": "a surveillance camera mounted on a wall",
"nl": "bewakingscamera gemonteerd op een muur"
}, },
"preciseInput": { "preciseInput": {
"snapToLayer": "walls_and_buildings" "snapToLayer": "walls_and_buildings"
@ -538,6 +540,7 @@
} }
], ],
"description": { "description": {
"en": "This layer shows surveillance cameras and allows a contributor to update information and add new cameras" "en": "This layer shows surveillance cameras and allows a contributor to update information and add new cameras",
"nl": "Deze laag toont bewakingscamera's en laat toe om de informatie te verrijken en om nieuwe camera\"s toe te voegen"
} }
} }

View file

@ -25,7 +25,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "public toilet", "en": "a public toilet",
"de": "eine öffentlich zugängliche toilette", "de": "eine öffentlich zugängliche toilette",
"fr": "une toilette publique", "fr": "une toilette publique",
"nl": "een publiek toilet", "nl": "een publiek toilet",
@ -38,7 +38,7 @@
}, },
{ {
"title": { "title": {
"en": "toilets with wheelchair accessible toilet", "en": "a toilets with wheelchair accessible toilet",
"de": "eine toiletten mit rollstuhlgerechter toilette", "de": "eine toiletten mit rollstuhlgerechter toilette",
"fr": "une toilettes accessible aux personnes à mobilité réduite", "fr": "une toilettes accessible aux personnes à mobilité réduite",
"nl": "een rolstoeltoegankelijke, publiek toilet", "nl": "een rolstoeltoegankelijke, publiek toilet",

View file

@ -521,7 +521,7 @@
], ],
"title": { "title": {
"nl": "een loofboom", "nl": "een loofboom",
"en": "Broadleaved tree", "en": "a broadleaved tree",
"it": "una albero latifoglia", "it": "una albero latifoglia",
"fr": "une arbre feuillu", "fr": "une arbre feuillu",
"ru": "Лиственное дерево", "ru": "Лиственное дерево",
@ -545,7 +545,7 @@
], ],
"title": { "title": {
"nl": "een naaldboom", "nl": "een naaldboom",
"en": "Needleleaved tree", "en": "a needleleaved tree",
"it": "una albero aghifoglia", "it": "una albero aghifoglia",
"ru": "Хвойное дерево", "ru": "Хвойное дерево",
"fr": "une arbre résineux", "fr": "une arbre résineux",
@ -569,7 +569,7 @@
], ],
"title": { "title": {
"nl": "een boom", "nl": "een boom",
"en": "Tree", "en": "a tree",
"it": "una albero", "it": "una albero",
"ru": "Дерево", "ru": "Дерево",
"fr": "une arbre", "fr": "une arbre",
@ -629,6 +629,7 @@
} }
], ],
"description": { "description": {
"en": "A layer showing trees" "en": "A layer showing trees",
"nl": "Een laag die bomen toont"
} }
} }

View file

@ -25,7 +25,7 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Viewpoint", "en": "a viewpoint",
"nl": "een uitzicht", "nl": "een uitzicht",
"de": "eine aussichtspunkt", "de": "eine aussichtspunkt",
"fr": "une point de vue", "fr": "une point de vue",

View file

@ -46,6 +46,7 @@
} }
], ],
"description": { "description": {
"en": "A layer showing village-green (which are communal green areas, but not quite parks\"" "en": "A layer showing village-green (which are communal green areas, but not quite parks)",
"nl": "Een laag die dorpsgroen toont (gemeenschapsgroen, maar niet echt een park)"
} }
} }

View file

@ -3,11 +3,13 @@
"minzoom": 18, "minzoom": 18,
"title": { "title": {
"render": { "render": {
"en": "Wall or building" "en": "Wall or building",
"nl": "Muur of gebouw"
} }
}, },
"description": { "description": {
"en": "Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, ...). This layer is invisible by default and not toggleable by the user." "en": "Special builtin layer providing all walls and buildings. This layer is useful in presets for objects which can be placed against walls (e.g. AEDs, postboxes, entrances, addresses, surveillance cameras, ...). This layer is invisible by default and not toggleable by the user.",
"nl": "Speciale laag met alle muren en gebouwen. Deze laag is nuttig om objecten toe te voegen die met een muur verbonden zijn (zoals AEDs, brievenbussen, adressen, bewakingscamera's,...). Deze laag is standaard onzichtbaar en kan niet aangezet worden door de gebruiker."
}, },
"source": { "source": {
"osmTags": { "osmTags": {

View file

@ -156,7 +156,7 @@
"amenity=waste_basket" "amenity=waste_basket"
], ],
"title": { "title": {
"en": "Waste Basket", "en": "a waste basket",
"nl": "een vuilnisbak", "nl": "een vuilnisbak",
"ru": "Контейнер для мусора", "ru": "Контейнер для мусора",
"de": "eine abfalleimer", "de": "eine abfalleimer",

View file

@ -1,10 +1,12 @@
{ {
"id": "waste_disposal", "id": "waste_disposal",
"name": { "name": {
"en": "Waste Disposal Bins" "en": "Waste Disposal Bins",
"nl": "Afvalcontainers voor huishoudelijk afval"
}, },
"description": { "description": {
"en": "Waste Disposal Bin, medium to large bin for disposal of (household) waste" "en": "Waste Disposal Bin, medium to large bin for disposal of (household) waste",
"nl": "Een grote afvalcontainer voor (huishoudelijk) afval"
}, },
"source": { "source": {
"osmTags": "amenity=waste_disposal" "osmTags": "amenity=waste_disposal"
@ -13,7 +15,8 @@
"minzoomVisible": 18, "minzoomVisible": 18,
"title": { "title": {
"render": { "render": {
"en": "Waste Disposal" "en": "Waste Disposal",
"nl": "Afvalbak"
} }
}, },
"mapRendering": [ "mapRendering": [
@ -28,13 +31,15 @@
"presets": [ "presets": [
{ {
"title": { "title": {
"en": "Waste Disposal Bin" "en": "a waste disposal bin",
"nl": "Afvalcontainer"
}, },
"tags": [ "tags": [
"amenity=waste_disposal" "amenity=waste_disposal"
], ],
"description": { "description": {
"en": "Medium to large bin for disposal of (household) waste" "en": "Medium to large bin for disposal of (household) waste",
"nl": "middelgrote of grote afvalcontainer voor (huishoudelijk) afval"
} }
} }
], ],
@ -42,10 +47,12 @@
{ {
"id": "access", "id": "access",
"render": { "render": {
"en": "Access: {access}" "en": "Access: {access}",
"nl": "Toegankelijk voor {access}"
}, },
"question": { "question": {
"en": "Who can use this waste disposal bin?" "en": "Who can use this waste disposal bin?",
"nl": "Wie mag deze afvalcontainer gebruiken?"
}, },
"freeform": { "freeform": {
"key": "access", "key": "access",
@ -55,19 +62,22 @@
{ {
"if": "access=yes", "if": "access=yes",
"then": { "then": {
"en": "This bin can be used by anyone" "en": "This bin can be used by anyone",
"nl": "Iedereen mag deze afvalcontainer gebruiken"
} }
}, },
{ {
"if": "access=no", "if": "access=no",
"then": { "then": {
"en": "This bin is private" "en": "This bin is private",
"nl": "Deze afvalcontainer is enkel voor privaat gebruik"
} }
}, },
{ {
"if": "access=residents", "if": "access=residents",
"then": { "then": {
"en": "This bin is only for residents" "en": "This bin is only for residents",
"nl": "Enkel bewoners mogen deze afvalcontainer gebruiken"
} }
} }
] ]
@ -109,7 +119,8 @@
"options": [ "options": [
{ {
"question": { "question": {
"en": "Only public access" "en": "Only public access",
"nl": "Enkel publiek toegankelijke afvalcontainers"
}, },
"osmTags": "access=yes" "osmTags": "access=yes"
} }

View file

@ -648,7 +648,7 @@
"tourism=caravan_site" "tourism=caravan_site"
], ],
"title": { "title": {
"en": "camper site", "en": "a camper site",
"ru": "площадка для кемпинга", "ru": "площадка для кемпинга",
"ja": "キャンプサイト", "ja": "キャンプサイト",
"zh_Hant": "露營地", "zh_Hant": "露營地",
@ -1103,7 +1103,7 @@
"amenity=sanitary_dump_station" "amenity=sanitary_dump_station"
], ],
"title": { "title": {
"en": "sanitary dump station", "en": "a sanitary dump station",
"ja": "衛生ゴミ捨て場", "ja": "衛生ゴミ捨て場",
"it": "una luogo di sversamento delle acque reflue", "it": "una luogo di sversamento delle acque reflue",
"fr": "une site de vidange", "fr": "une site de vidange",

Some files were not shown because too many files have changed in this diff Show more