From 7d8696c0ba63649e4cfb1b17f97179b511f04cb6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 27 Aug 2017 07:17:08 +0200
Subject: [PATCH 001/117] Gastro: filters

---
 gastro.json | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gastro.json b/gastro.json
index 028f8b3..b15b364 100644
--- a/gastro.json
+++ b/gastro.json
@@ -33,5 +33,25 @@
             "</ul>"
         ],
         "markerSign": "{% if tags.amenity=='bar' %}&#127864;{% elseif tags.amenity=='biergarten'%}&#127867;{% elseif tags.amenity=='cafe' %}&#9749;{% elseif tags.amenity=='fast_food' %}&#127828;{% elseif tags.amenity=='ice_cream' %}&#127848;{% elseif tags.amenity=='pub' %}&#127866;{% else %}&#127860;{% endif %}"
+    },
+    "filter": {
+        "amenity": {
+            "name": "tag:amenity",
+            "type": "select",
+            "values": "auto",
+            "op": "="
+        },
+        "cuisine": {
+            "name": "tag:cuisine",
+            "type": "select",
+            "values": [
+                "kebab",
+                "pizza",
+                "sausage",
+                "asian",
+                "chinese"
+            ],
+            "op": "has"
+        }
     }
 }

From e0cc338c2a3e96b1aac6a7bc4a898bb2543c1ca2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 11 Aug 2018 22:09:55 +0200
Subject: [PATCH 002/117] gastro: more filter values, auto names

---
 gastro.json | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/gastro.json b/gastro.json
index b15b364..ac64283 100644
--- a/gastro.json
+++ b/gastro.json
@@ -36,21 +36,20 @@
     },
     "filter": {
         "amenity": {
-            "name": "tag:amenity",
             "type": "select",
-            "values": "auto",
+            "values": [
+              "bar",
+              "biergarten",
+              "cafe",
+              "fast_food",
+              "ice_cream",
+              "pub"
+            ],
             "op": "="
         },
         "cuisine": {
-            "name": "tag:cuisine",
-            "type": "select",
-            "values": [
-                "kebab",
-                "pizza",
-                "sausage",
-                "asian",
-                "chinese"
-            ],
+            "type": "autocomplete",
+            "values": [ "afghan", "arab", "asian", "australian", "austrian", "barbecue", "burger", "cake", "caribbean", "caribean", "chinese", "coffee", "coffee_shop", "crepe", "empanada", "fish_and_chips", "french", "fried_food", "friture", "greek", "gyros", "ice_cream", "indian", "international", "italian", "japanese", "juice", "kebab", "korean", "local", "mexican", "noodles", "pasta", "pie", "pizza", "regional", "salad", "sandwich", "sausage", "seafood", "soup", "spanish", "steak_house", "sushi", "thai", "turkish", "vegan", "vegetarian", "vietnamese" ],
             "op": "has"
         }
     }

From 2b196f522f1cf4df5856de773036f69424e63aae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 1 Apr 2018 20:23:55 +0200
Subject: [PATCH 003/117] Gastro: improve filter

---
 gastro.json | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gastro.json b/gastro.json
index ac64283..6878243 100644
--- a/gastro.json
+++ b/gastro.json
@@ -35,6 +35,12 @@
         "markerSign": "{% if tags.amenity=='bar' %}&#127864;{% elseif tags.amenity=='biergarten'%}&#127867;{% elseif tags.amenity=='cafe' %}&#9749;{% elseif tags.amenity=='fast_food' %}&#127828;{% elseif tags.amenity=='ice_cream' %}&#127848;{% elseif tags.amenity=='pub' %}&#127866;{% else %}&#127860;{% endif %}"
     },
     "filter": {
+        "name": {
+            "toCheck": [ "name", "operator", "amenity" ],
+            "name": "tag:name",
+            "type": "text",
+            "op": "strsearch"
+        },
         "amenity": {
             "type": "select",
             "values": [

From 500d94cd533cec9837870a93280fc94aafe11439 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 12 Aug 2018 22:28:44 +0200
Subject: [PATCH 004/117] gastro: filter for 'diet'

---
 gastro.json | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gastro.json b/gastro.json
index 6878243..badae53 100644
--- a/gastro.json
+++ b/gastro.json
@@ -57,6 +57,11 @@
             "type": "autocomplete",
             "values": [ "afghan", "arab", "asian", "australian", "austrian", "barbecue", "burger", "cake", "caribbean", "caribean", "chinese", "coffee", "coffee_shop", "crepe", "empanada", "fish_and_chips", "french", "fried_food", "friture", "greek", "gyros", "ice_cream", "indian", "international", "italian", "japanese", "juice", "kebab", "korean", "local", "mexican", "noodles", "pasta", "pie", "pizza", "regional", "salad", "sandwich", "sausage", "seafood", "soup", "spanish", "steak_house", "sushi", "thai", "turkish", "vegan", "vegetarian", "vietnamese" ],
             "op": "has"
+        },
+        "diet": {
+            "type": "autocomplete",
+            "values": [ "diet:vegan", "diet:vegetarian", "diet:pescetarian", "diet:lacto_vegetarian", "diet:ovo_vegetarian", "diet:fruitarian", "diet:raw", "diet:gluten_free", "diet:dairy_free", "diet:lactose_free", "diet:halal", "diet:kosher" ],
+            "op": "has_key_value"
         }
     }
 }

From e8c487cd86e59fba87ccc5a03068498e6d574ee1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 12 Aug 2018 22:29:43 +0200
Subject: [PATCH 005/117] pt: filter for route type

---
 pt.json | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/pt.json b/pt.json
index cfcca14..22c8ee2 100644
--- a/pt.json
+++ b/pt.json
@@ -189,5 +189,19 @@
             "zoom": 12,
             "color": "#007fff"
         }
+    },
+    "filter": {
+        "route": {
+            "type": "select",
+            "values": [
+                "aerialway",
+                "bus",
+                "ferry",
+                "subway",
+                "train",
+                "tram",
+                "trolleybus"
+            ]
+        }
     }
 }

From 37ba1c9eeffe355fcb41eb3aa2ab19e3f55ab342 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 22 Oct 2018 21:45:41 +0200
Subject: [PATCH 006/117] Gastro: improve filters

---
 gastro.json | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/gastro.json b/gastro.json
index 869a352..1ff2c2d 100644
--- a/gastro.json
+++ b/gastro.json
@@ -47,13 +47,8 @@
         "markerSign": "{% if tags.amenity=='bar' %}&#127864;{% elseif tags.amenity=='biergarten'%}&#127867;{% elseif tags.amenity=='cafe' %}&#9749;{% elseif tags.amenity=='fast_food' %}&#127828;{% elseif tags.amenity=='ice_cream' %}&#127848;{% elseif tags.amenity=='pub' %}&#127866;{% else %}&#127860;{% endif %}"
     },
     "filter": {
-        "name": {
-            "toCheck": [ "name", "operator", "amenity" ],
-            "name": "tag:name",
-            "type": "text",
-            "op": "strsearch"
-        },
         "amenity": {
+            "name": "{{ keyTrans('amenity') }}",
             "type": "select",
             "values": [
               "bar",
@@ -61,18 +56,24 @@
               "cafe",
               "fast_food",
               "ice_cream",
-              "pub"
+              "pub",
+              "restaurant"
             ],
+            "valueName": "{{ tagTrans('amenity', value) }}",
             "op": "="
         },
         "cuisine": {
-            "type": "autocomplete",
+            "name": "{{ keyTrans('cuisine') }}",
+            "type": "select",
             "values": [ "afghan", "arab", "asian", "australian", "austrian", "barbecue", "burger", "cake", "caribbean", "caribean", "chinese", "coffee", "coffee_shop", "crepe", "empanada", "fish_and_chips", "french", "fried_food", "friture", "greek", "gyros", "ice_cream", "indian", "international", "italian", "japanese", "juice", "kebab", "korean", "local", "mexican", "noodles", "pasta", "pie", "pizza", "regional", "salad", "sandwich", "sausage", "seafood", "soup", "spanish", "steak_house", "sushi", "thai", "turkish", "vegan", "vegetarian", "vietnamese" ],
+            "valueName": "{{ tagTrans('cuisine', value) }}",
             "op": "has"
         },
         "diet": {
-            "type": "autocomplete",
+            "name": "{{ keyTrans('diet') }}",
+            "type": "select",
             "values": [ "diet:vegan", "diet:vegetarian", "diet:pescetarian", "diet:lacto_vegetarian", "diet:ovo_vegetarian", "diet:fruitarian", "diet:raw", "diet:gluten_free", "diet:dairy_free", "diet:lactose_free", "diet:halal", "diet:kosher" ],
+            "valueName": "{{ keyTrans(value) }}",
             "op": "has_key_value"
         }
     }

From 0ad6c4aa22f5cbd42734f54173b0f3687f9945c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 24 Oct 2018 20:31:12 +0200
Subject: [PATCH 007/117] Gastro: split cuisine filter into
 food/dessert/ethnicity

---
 gastro.json | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/gastro.json b/gastro.json
index 1ff2c2d..a61b60d 100644
--- a/gastro.json
+++ b/gastro.json
@@ -62,10 +62,27 @@
             "valueName": "{{ tagTrans('amenity', value) }}",
             "op": "="
         },
-        "cuisine": {
-            "name": "{{ keyTrans('cuisine') }}",
+        "cuisine_food": {
+            "name": "{{ keyTrans('cuisine/food') }}",
             "type": "select",
-            "values": [ "afghan", "arab", "asian", "australian", "austrian", "barbecue", "burger", "cake", "caribbean", "caribean", "chinese", "coffee", "coffee_shop", "crepe", "empanada", "fish_and_chips", "french", "fried_food", "friture", "greek", "gyros", "ice_cream", "indian", "international", "italian", "japanese", "juice", "kebab", "korean", "local", "mexican", "noodles", "pasta", "pie", "pizza", "regional", "salad", "sandwich", "sausage", "seafood", "soup", "spanish", "steak_house", "sushi", "thai", "turkish", "vegan", "vegetarian", "vietnamese" ],
+            "key": "cuisine",
+            "values": [ "barbecue", "burger", "casserole", "chicken", "couscous", "curry", "fish", "fish_and_chips", "fried_food", "friture", "gyros", "kebab", "noodle", "pasta", "pizza", "sandwich", "sausage", "seafood", "soup", "steak_house", "sub", "sushi", "tapas", "wings" ],
+            "valueName": "{{ tagTrans('cuisine', value) }}",
+            "op": "has"
+        },
+        "cuisine_dessert": {
+            "name": "{{ keyTrans('cuisine/dessert') }}",
+            "type": "select",
+            "key": "cuisine",
+            "values": [ "bagel", "biscuit", "bougatsa", "cake", "coffee_shop", "cookie", "crepe", "dessert", "donut", "empanada", "frozen_yogurt", "gingerbread", "ice_cream", "chimney_cake", "langos", "pancake", "pastry", "petit_four", "pie", "pogacha", "poppy_seed_roll", "profiterole", "punch_cake", "savory_pancakes", "strudel", "teahouse", "waffle" ],
+            "valueName": "{{ tagTrans('cuisine', value) }}",
+            "op": "has"
+        },
+        "cuisine_ethnicity": {
+            "name": "{{ keyTrans('cuisine/ethnicity') }}",
+            "type": "select",
+            "key": "cuisine",
+            "values": [ "afghan", "african", "american", "arab", "argentinian", "asian", "australian", "baiana", "balkan", "basque", "bavarian", "belarusan", "bolivian", "brazilian", "cantonese", "capixaba", "caribbean", "chinese", "croatian", "czech", "danish", "french", "gaucho", "german", "greek", "hawaiian", "hunan", "hungarian", "indian", "international", "iranian", "italian", "japanese", "jewish", "korean", "kyo_ryouri", "latin_american", "lebanese", "malagasy", "mediterranean", "mexican", "mineira", "new_mexican", "okinawa_ryori", "pakistani", "peruvian", "polish", "portuguese", "regional", "rhenish", "russian", "shandong", "sichuan", "spanish", "texan", "tex-mex", "thai", "turkish", "vietnamese", "westphalian" ],
             "valueName": "{{ tagTrans('cuisine', value) }}",
             "op": "has"
         },

From 72607923ce59c1b98247dacf532796e652669942 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 24 Oct 2018 20:36:51 +0200
Subject: [PATCH 008/117] Split memorial from historic

---
 culture_religion.json |  3 ++
 historic.json         | 34 ++++++----------------
 memorial.json         | 65 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+), 26 deletions(-)
 create mode 100644 memorial.json

diff --git a/culture_religion.json b/culture_religion.json
index 2d68d92..52cc1a5 100644
--- a/culture_religion.json
+++ b/culture_religion.json
@@ -28,6 +28,9 @@
         {
             "id": "historic"
         },
+        {
+            "id": "memorial"
+        },
         {
             "id": "religion"
         },
diff --git a/historic.json b/historic.json
index 8ab235d..dab36a1 100644
--- a/historic.json
+++ b/historic.json
@@ -22,28 +22,22 @@
     "query": {
         "11": [
             "(",
-            "node[historic~\"^(castle|archaeological_site|battlefield|monument)$\"];",
-            "way[historic~\"^(castle|archaeological_site|battlefield|monument)$\"];",
-            "relation[historic~\"^(castle|archaeological_site|battlefield|monument)$\"];",
+            "node[historic~\"^(castle|archaeological_site|battlefield)$\"];",
+            "way[historic~\"^(castle|archaeological_site|battlefield)$\"];",
+            "relation[historic~\"^(castle|archaeological_site|battlefield)$\"];",
             ")"
         ],
         "14": [
             "(",
-            "node[historic];",
-            "way[historic];",
-            "relation[historic];",
+            "node[historic][historic!~\"^(memorial|monument)$\"];",
+            "way[historic][historic!~\"^(memorial|monument)$\"];",
+            "relation[historic][historic!~\"^(memorial|monument)$\"];",
             ")"
         ]
     },
     "feature": {
-        "pre": [
-            "{% set value = tags.historic %}",
-            "{% if const[tags.historic ~ ' memorial=' ~ tags.memorial] %}",
-            "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
-            "{% endif %}"
-        ],
-        "description": "{{ tagTransList('historic', value) }}",
-        "markerSign": "{{ const[value].sign|raw }}"
+        "description": "{{ tagTransList('historic', tags.historic) }}",
+        "markerSign": "{{ const[tags.historic].sign|raw }}"
     },
     "info": [
         "<table>",
@@ -79,18 +73,6 @@
         "aircraft": {
             "sign": "<img src='maki:airport'>",
             "zoom": 14
-        },
-        "memorial": {
-            "sign": "<span  style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
-            "zoom": 14
-        },
-        "memorial memorial=plaque": {
-            "sign": "",
-            "zoom": 14
-        },
-        "monument": {
-            "sign": "<img src='maki:monument?size=15'>",
-            "zoom": 11
         }
     }
 }
diff --git a/memorial.json b/memorial.json
new file mode 100644
index 0000000..666c93a
--- /dev/null
+++ b/memorial.json
@@ -0,0 +1,65 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Denkmäler",
+        "en": "Memorials"
+    },
+    "query": {
+        "11": [
+            "(",
+            "node[historic~\"^(monument)$\"];",
+            "way[historic~\"^(monument)$\"];",
+            "relation[historic~\"^(monument)$\"];",
+            ")"
+        ],
+        "14": [
+            "(",
+            "node[historic~\"^(memorial|monument)$\"];",
+            "way[historic~\"^(memorial|monument)$\"];",
+            "relation[historic~\"^(memorial|monument)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% set value = tags.historic %}",
+            "{% if const[tags.historic ~ ' memorial=' ~ tags.memorial] %}",
+            "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTransList('historic', value) }}",
+        "markerSign": "{{ const[value].sign|raw }}"
+    },
+    "info": [
+        "<table>",
+        "{% for value, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>{{ tagTrans('historic', value) }}</td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "{% if 14 <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'></div></td>",
+        "    <td>{{ trans('other') }}</td>",
+        "  </tr>",
+        "{% endif %}",
+        "</table>"
+    ],
+    "const": {
+        "memorial": {
+            "sign": "<span  style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
+            "zoom": 14
+        },
+        "memorial memorial=plaque": {
+            "sign": "",
+            "zoom": 14
+        },
+        "monument": {
+            "sign": "<img src='maki:monument?size=15'>",
+            "zoom": 11
+        }
+    }
+}

From e182ab7a0bb3991e613c3a5b9338e0f43fdcd5eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 24 Oct 2018 21:29:12 +0200
Subject: [PATCH 009/117] Memorial: use "historic=memorial memorial=*" (or
 alias memorial:type=*) as description

---
 memorial.json | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/memorial.json b/memorial.json
index 666c93a..117785c 100644
--- a/memorial.json
+++ b/memorial.json
@@ -23,8 +23,10 @@
     "feature": {
         "pre": [
             "{% set value = tags.historic %}",
-            "{% if const[tags.historic ~ ' memorial=' ~ tags.memorial] %}",
+            "{% if tags.historic == 'memorial' and tags.memorial %}",
             "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
+            "{% elseif tags.historic == 'memorial' and attribute(tags, 'memorial:type') %}",
+            "  {% set value = tags.historic ~ ' memorial=' ~ attribute(tags, 'memorial:type') %}",
             "{% endif %}"
         ],
         "description": "{{ tagTransList('historic', value) }}",

From 653a8587e7d5a5bfeb3658ab0da1ae472a82a64d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 24 Oct 2018 22:16:58 +0200
Subject: [PATCH 010/117] memorial: start writing filters

---
 memorial.json | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/memorial.json b/memorial.json
index 117785c..30cc08c 100644
--- a/memorial.json
+++ b/memorial.json
@@ -63,5 +63,25 @@
             "sign": "<img src='maki:monument?size=15'>",
             "zoom": 11
         }
+    },
+    "filter": {
+        "type": {
+            "name": "Type",
+            "type": "select",
+            "values": {
+                "monument": {
+                    "name": "{{ tagTrans('historic', 'monument') }}",
+                    "query": "nwr[historic=monument]"
+                },
+                "memorial": {
+                    "name": "{{ tagTrans('historic', 'memorial') }}",
+                    "query": "nwr[historic=memorial]"
+                },
+                "stolperstein": {
+                    "name": "{{ tagTrans('historic', 'memorial memorial=stolperstein') }}",
+                    "query": "(nwr[memorial=stolperstein];nwr[\"memorial:type\"=stolperstein];)"
+                }
+            }
+        }
     }
 }

From 6c6b34dc53d602d8394fa354dc8c90e7df802ac2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 9 Jan 2019 21:37:23 +0100
Subject: [PATCH 011/117] gastro: improve diet filter

---
 gastro.json  | 20 +++++++++++++++++++-
 lang/de.json |  3 ++-
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/gastro.json b/gastro.json
index a61b60d..83d645b 100644
--- a/gastro.json
+++ b/gastro.json
@@ -46,6 +46,7 @@
         ],
         "markerSign": "{% if tags.amenity=='bar' %}&#127864;{% elseif tags.amenity=='biergarten'%}&#127867;{% elseif tags.amenity=='cafe' %}&#9749;{% elseif tags.amenity=='fast_food' %}&#127828;{% elseif tags.amenity=='ice_cream' %}&#127848;{% elseif tags.amenity=='pub' %}&#127866;{% else %}&#127860;{% endif %}"
     },
+    "info": "{{ repoTrans('Objects with diet information') }}",
     "filter": {
         "amenity": {
             "name": "{{ keyTrans('amenity') }}",
@@ -89,7 +90,24 @@
         "diet": {
             "name": "{{ keyTrans('diet') }}",
             "type": "select",
-            "values": [ "diet:vegan", "diet:vegetarian", "diet:pescetarian", "diet:lacto_vegetarian", "diet:ovo_vegetarian", "diet:fruitarian", "diet:raw", "diet:gluten_free", "diet:dairy_free", "diet:lactose_free", "diet:halal", "diet:kosher" ],
+            "values": {
+               "*": {
+                 "name": "{{ repoTrans('Objects with diet information') }}",
+                 "query": "nwr[~\"^diet:\"~\".\"]"
+               },
+               "diet:vegan": {},
+               "diet:vegetarian": {},
+               "diet:pescetarian": {},
+               "diet:lacto_vegetarian": {},
+               "diet:ovo_vegetarian": {},
+               "diet:fruitarian": {},
+               "diet:raw": {},
+               "diet:gluten_free": {},
+               "diet:dairy_free": {},
+               "diet:lactose_free": {},
+               "diet:halal": {},
+               "diet:kosher": {}
+            },
             "valueName": "{{ keyTrans(value) }}",
             "op": "has_key_value"
         }
diff --git a/lang/de.json b/lang/de.json
index 64e096f..48e550a 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -68,5 +68,6 @@
     "category:waste": "Entsorgung",
     "category:water": "Gewässer",
     "category:wikipedia": "Wikipedia",
-    "category:works": "Fabriken"
+    "category:works": "Fabriken",
+    "Objects with diet information": "Objekte mit Ernährungsinformationen"
 }

From 81b63e2f5e150993a86aea52aa5e75c685885ba2 Mon Sep 17 00:00:00 2001
From: Bernd Arnold <wopfel@gmail.com>
Date: Thu, 17 Jan 2019 18:08:14 +0100
Subject: [PATCH 012/117] Added signs for bicycle/fishing/electronics shop

Unicode symbols:
U+1F3A3: fishing (fishing pole and fish)
U+1F6B2: bicycle
U+1F4FA: electronics (a television)

To find the html entity (&#128690; for example) I've searched the web for the unicode string (U+1F6B2 for example).
---
 shop.json | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/shop.json b/shop.json
index ce8c8cb..445bfbf 100644
--- a/shop.json
+++ b/shop.json
@@ -61,6 +61,12 @@
                 ],
                 "sign": "fa-birthday-cake"
             },
+            {
+                "types": [
+                    "bicycle"
+                ],
+                "sign": "&#128690;"
+            },
             {
                 "types": [
                     "boutique",
@@ -107,6 +113,18 @@
                 ],
                 "sign": "fa-building"
             },
+            {
+                "types": [
+                    "electronics"
+                ],
+                "sign": "&#128250;"
+            },
+            {
+                "types": [
+                    "fishing"
+                ],
+                "sign": "&#127907;"
+            },
             {
                 "types": [
                     "hairdresser"

From 33cc39fa2fc23bf47c2ba676d32e8f9f22425644 Mon Sep 17 00:00:00 2001
From: Bernd Arnold <wopfel@gmail.com>
Date: Thu, 17 Jan 2019 21:21:02 +0100
Subject: [PATCH 013/117] Added signs for shops florist and travel_agency

---
 shop.json | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/shop.json b/shop.json
index 445bfbf..084c938 100644
--- a/shop.json
+++ b/shop.json
@@ -125,6 +125,12 @@
                 ],
                 "sign": "&#127907;"
             },
+            {
+                "types": [
+                    "florist"
+                ],
+                "sign": "&#127799;"
+            },
             {
                 "types": [
                     "hairdresser"
@@ -155,6 +161,12 @@
                 ],
                 "sign": "&#128095;"
             },
+            {
+                "types": [
+                    "travel_agency"
+                ],
+                "sign": "&#129523;"
+            },
             {
                 "types": [
                     "supermarket"

From 4c218d54211da082f6d4747a3a7b6bd4bbfb7d67 Mon Sep 17 00:00:00 2001
From: Igor Eliezer <IgorEliezer@users.noreply.github.com>
Date: Sat, 19 Jan 2019 10:14:59 -0200
Subject: [PATCH 014/117] Update pt-br.json

---
 lang/pt-br.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lang/pt-br.json b/lang/pt-br.json
index 0397155..da7e995 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -52,7 +52,7 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parquinhos",
     "category:post": "Correios",
-    "category:power_routes": "Rotas de energia",
+    "category:power_routes": "Rotas energéticas",
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "Paradas e estações",
@@ -87,6 +87,6 @@
     "category:works": "Produção",
     "category:xmas": "Natal",
     "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "outdated feature": "Objeto antigo",
+    "xmas:outdated-warning": "O objeto não foi atualizado para a temporada atual! Por favor, verifique e defina a tag 'xmas:lastcheck' para a data atual."
 }

From 27355867d0d588c17081374dd3ec4ad86ddfcba1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 19 Jan 2019 20:32:46 +0100
Subject: [PATCH 015/117] Copy pt-br translations to categories

---
 power_routes.json | 2 +-
 works.json        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/power_routes.json b/power_routes.json
index 61c088e..e90591c 100644
--- a/power_routes.json
+++ b/power_routes.json
@@ -4,7 +4,7 @@
         "en": "Power routes",
         "fr": "Réseaux électriques",
         "hu": "Távvezetékek",
-        "pt-br": "Rotas de energia"
+        "pt-br": "Rotas energéticas"
     },
     "query": {
         "10": "relation[type=route][route=power]"
diff --git a/works.json b/works.json
index b9d6bca..dec86ab 100644
--- a/works.json
+++ b/works.json
@@ -11,7 +11,7 @@
         "ja": "工場",
         "nl": "Fabrieken",
         "pt": "Fábricas",
-        "pt-br": "Fábricas",
+        "pt-br": "Produção",
         "ru": "Промышленность"
     },
     "query": {

From 6b21617d2748017ead7ca7171b84cd7a613273cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 20 Jan 2019 22:32:19 +0100
Subject: [PATCH 016/117] More filters

---
 culture.json   | 11 ++++++++++-
 emergency.json | 28 ++++++++++++++++++++++++++++
 historic.json  | 45 +++++++++++++++++++++++++++++++++++++++++++++
 memorial.json  | 36 ++++++++++++++++++++++++++++++++++++
 4 files changed, 119 insertions(+), 1 deletion(-)

diff --git a/culture.json b/culture.json
index 630f375..219651a 100644
--- a/culture.json
+++ b/culture.json
@@ -121,5 +121,14 @@
         "  </tr>",
         "{% endfor %}",
         "</table>"
-    ]
+    ],
+    "filter": {
+        "type": {
+            "name": "Type",
+            "query": "nwr[{{ value }}]",
+            "type": "select",
+            "values": "const",
+            "valueName": "{{ trans('tag' ~ value) }}"
+        }
+    }
 }
diff --git a/emergency.json b/emergency.json
index 73b606d..c739352 100644
--- a/emergency.json
+++ b/emergency.json
@@ -96,5 +96,33 @@
             "sign": "<img data-src='maki:hospital?fill=white'>",
             "background": "#009262"
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ keyTrans('amenity') }}",
+            "type": "select",
+            "values": {
+                "fire_station": {
+                    "name": "{{ tagTrans('amenity', 'fire_station') }}",
+                    "query": "nwr[amenity=fire_station]"
+                },
+                "hospital": {
+                    "name": "{{ tagTrans('amenity', 'hospital') }}",
+                    "query": "nwr[amenity=hospital]"
+                },
+                "police": {
+                    "name": "{{ tagTrans('amenity', 'police') }}",
+                    "query": "nwr[amenity=police]"
+                },
+                "emergency_phone": {
+                    "name": "{{ tagTrans('emergency', 'phone') }}",
+                    "query": "node[emergency=phone]"
+                },
+                "emergency_access_point": {
+                    "name": "{{ tagTrans('highway', 'emergency_access_point') }}",
+                    "query": "node[highway=emergency_access_point]"
+                }
+            }
+        }
     }
 }
diff --git a/historic.json b/historic.json
index 0042fc1..067b740 100644
--- a/historic.json
+++ b/historic.json
@@ -113,5 +113,50 @@
             "sign": "<img data-src='temaki:ruins'>",
             "zoom": 14
         }
+    },
+    "filter": {
+        "type": {
+            "key": "historic",
+            "name": "Type",
+            "type": "select",
+            "values": "const",
+            "valueName": "{{ tagTrans('historic', value) }}"
+        },
+        "conflict": {
+            "key": "memorial:conflict",
+            "op": "has",
+            "name": "{{ keyTrans('memorial:conflict') }}",
+            "type": "select",
+            "values": [
+                "WW1",
+                "WW2"
+            ],
+            "valueName": "{{ tagTrans('memorial:conflict', value) }}"
+        },
+        "civilization": {
+            "key": "historic:civilization",
+            "op": "has",
+            "name": "{{ keyTrans('historic:civilization') }}",
+            "type": "select",
+            "values": [
+                "ancient_egyptian",
+                "ancient_greek",
+                "ancient_roman",
+                "byzantine",
+                "celtic",
+                "etruscan",
+                "imperial_chinese",
+                "korean",
+                "medieval",
+                "modern",
+                "neolithic",
+                "nuragic",
+                "ottoman",
+                "prehistoric",
+                "roman",
+                "western_roman"
+            ],
+            "valueName": "{{ tagTrans('historic:civilization', value) }}"
+        }
     }
 }
diff --git a/memorial.json b/memorial.json
index 0580731..c2c4908 100644
--- a/memorial.json
+++ b/memorial.json
@@ -125,6 +125,42 @@
                     "query": "(nwr[memorial=stolperstein];nwr[\"memorial:type\"=stolperstein];)"
                 }
             }
+        },
+        "conflict": {
+            "key": "memorial:conflict",
+            "op": "has",
+            "name": "{{ keyTrans('memorial:conflict') }}",
+            "type": "select",
+            "values": [
+                "WW1",
+                "WW2"
+            ],
+            "valueName": "{{ tagTrans('memorial:conflict', value) }}"
+        },
+        "civilization": {
+            "key": "historic:civilization",
+            "op": "has",
+            "name": "{{ keyTrans('historic:civilization') }}",
+            "type": "select",
+            "values": [
+                "ancient_egyptian",
+                "ancient_greek",
+                "ancient_roman",
+                "byzantine",
+                "celtic",
+                "etruscan",
+                "imperial_chinese",
+                "korean",
+                "medieval",
+                "modern",
+                "neolithic",
+                "nuragic",
+                "ottoman",
+                "prehistoric",
+                "roman",
+                "western_roman"
+            ],
+            "valueName": "{{ tagTrans('historic:civilization', value) }}"
         }
     }
 }

From b2b89b5be384e933fea99890e558f9193b91e505 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 24 Jan 2019 08:00:03 +0100
Subject: [PATCH 017/117] culture: filter values as twig template

---
 culture.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/culture.json b/culture.json
index 219651a..39eea20 100644
--- a/culture.json
+++ b/culture.json
@@ -127,8 +127,8 @@
             "name": "Type",
             "query": "nwr[{{ value }}]",
             "type": "select",
-            "values": "const",
-            "valueName": "{{ trans('tag' ~ value) }}"
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\">{{ trans('tag:' ~ k) }}</option>{% endfor %}<option value=\"other\" query=\"nwr[amenity=fountain]\">{{ trans('other') }}</option>",
+            "valueName": "{{ trans('tag:' ~ value) }}"
         }
     }
 }

From 41963c0658b59c963ff8fd247c5439cedc4e3ad7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 31 Jan 2019 10:25:01 +0100
Subject: [PATCH 018/117] Specify many filters

---
 children.json            | 38 ++++++++++++++++-
 communication.json       |  8 ++++
 craft.json               |  8 ++++
 culture.json             |  3 +-
 education.json           |  8 ++++
 emergency.json           |  3 +-
 financial.json           |  8 ++++
 gastro.json              |  3 +-
 health.json              |  8 ++++
 historic.json            |  5 ++-
 law.json                 |  8 ++++
 memorial.json            |  2 +-
 office.json              |  8 ++++
 organisations.json       |  8 ++++
 places.json              |  9 ++++
 public.json              |  8 ++++
 religion.json            | 92 ++++++++++++++++++++++++++++++++++++----
 shop.json                |  9 ++++
 sport.json               |  8 ++++
 swimming_bathing.json    |  8 ++++
 tourism_attractions.json | 11 +++++
 tourism_services.json    |  8 ++++
 22 files changed, 255 insertions(+), 16 deletions(-)

diff --git a/children.json b/children.json
index 69fc913..660515f 100644
--- a/children.json
+++ b/children.json
@@ -81,5 +81,41 @@
         "    <td>{{ tagTrans('amenity', 'toilets diaper=yes') }}</td>",
         "  </tr>",
         "</table>"
-    ]
+    ],
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "values": {
+                "playground": {
+                    "name": "{{ tagTrans('leisure', 'playground') }}",
+                    "query": "nwr[leisure=playground]"
+                },
+                "indoor_play": {
+                    "name": "{{ tagTrans('leisure', 'indoor_play') }}",
+                    "query": "nwr[leisure=indoor_play]"
+                },
+                "summer_camp": {
+                    "name": "{{ tagTrans('leisure', 'summer_camp') }}",
+                    "query": "nwr[leisure=summer_camp]"
+                },
+                "kids_area": {
+                    "name": "{{ keyTrans('kids_area') }}",
+                    "query": "nwr[kids_area]"
+                },
+                "shop_baby_goods": {
+                    "name": "{{ tagTrans('shop', 'baby_goods') }}",
+                    "query": "nwr[shop=baby_goods]"
+                },
+                "shop_toys": {
+                    "name": "{{ tagTrans('shop', 'toys') }}",
+                    "query": "nwr[shop=toys]"
+                },
+                "toilets": {
+                    "name": "{{ tagTrans('amenities', 'toilets diaper=yes') }}",
+                    "query": "nwr[amenity=toilets][diaper]"
+                }
+            }
+        }
+    }
 }
diff --git a/communication.json b/communication.json
index 83a90d3..3053b3e 100644
--- a/communication.json
+++ b/communication.json
@@ -130,5 +130,13 @@
             "sign": "<img src='maki:telephone'>",
             "zoom": 16
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/craft.json b/craft.json
index f9c49d4..af16569 100644
--- a/craft.json
+++ b/craft.json
@@ -73,5 +73,13 @@
             "window_construction": "",
             "winery": "🍷"
         }
+    },
+    "filter": {
+        "craft": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for t, v in const.crafts %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('craft', t) }}</option>{% endfor %}<option value='other' query='nwr[craft][craft!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>"
+        }
     }
 }
diff --git a/culture.json b/culture.json
index 39eea20..226b774 100644
--- a/culture.json
+++ b/culture.json
@@ -124,7 +124,8 @@
     ],
     "filter": {
         "type": {
-            "name": "Type",
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
             "query": "nwr[{{ value }}]",
             "type": "select",
             "values": "{% for k, v in const %}<option value=\"{{ k }}\">{{ trans('tag:' ~ k) }}</option>{% endfor %}<option value=\"other\" query=\"nwr[amenity=fountain]\">{{ trans('other') }}</option>",
diff --git a/education.json b/education.json
index 5b4772d..ba2fc70 100644
--- a/education.json
+++ b/education.json
@@ -129,5 +129,13 @@
             "sign": "<i class='fas fa-vials'></i>",
             "zoom": 14
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/emergency.json b/emergency.json
index c739352..361337c 100644
--- a/emergency.json
+++ b/emergency.json
@@ -99,8 +99,9 @@
     },
     "filter": {
         "type": {
-            "name": "{{ keyTrans('amenity') }}",
+            "name": "{{ trans('filter:type') }}",
             "type": "select",
+            "show_default": "true",
             "values": {
                 "fire_station": {
                     "name": "{{ tagTrans('amenity', 'fire_station') }}",
diff --git a/financial.json b/financial.json
index 82b3bfb..9dce980 100644
--- a/financial.json
+++ b/financial.json
@@ -101,5 +101,13 @@
             "sign": "<i class=\"fas fa-piggy-bank\"></i>",
             "zoom": 15
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/gastro.json b/gastro.json
index 83d645b..d26740a 100644
--- a/gastro.json
+++ b/gastro.json
@@ -49,8 +49,9 @@
     "info": "{{ repoTrans('Objects with diet information') }}",
     "filter": {
         "amenity": {
-            "name": "{{ keyTrans('amenity') }}",
+            "name": "{{ trans('filter:type') }}",
             "type": "select",
+            "show_default": "true",
             "values": [
               "bar",
               "biergarten",
diff --git a/health.json b/health.json
index a540782..8c7c3dd 100644
--- a/health.json
+++ b/health.json
@@ -88,5 +88,13 @@
         "amenity=pharmacy": "<img src='maki:pharmacy'>",
         "amenity=social_facility": "",
         "amenity=veterinary": "<img src='maki:veterinary'>"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/historic.json b/historic.json
index 067b740..adc3b1b 100644
--- a/historic.json
+++ b/historic.json
@@ -117,9 +117,10 @@
     "filter": {
         "type": {
             "key": "historic",
-            "name": "Type",
+            "show_default": "true",
+            "name": "{{ trans('filter:type') }}",
             "type": "select",
-            "values": "const",
+            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('historic', t) }}</option>{% endfor %}<option value='other' query='nwr[historic][historic!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>",
             "valueName": "{{ tagTrans('historic', value) }}"
         },
         "conflict": {
diff --git a/law.json b/law.json
index f670988..a750264 100644
--- a/law.json
+++ b/law.json
@@ -57,5 +57,13 @@
             "sign": "<i class=\"fas fa-file-signature\"></i>",
             "zoom": 14
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/memorial.json b/memorial.json
index c2c4908..bd5b942 100644
--- a/memorial.json
+++ b/memorial.json
@@ -109,7 +109,7 @@
     },
     "filter": {
         "type": {
-            "name": "Type",
+            "name": "{{ trans('filter:type') }}",
             "type": "select",
             "values": {
                 "monument": {
diff --git a/office.json b/office.json
index b92ba34..ddefd6e 100644
--- a/office.json
+++ b/office.json
@@ -43,5 +43,13 @@
         "therapist": "<i class='fas fa-couch'></i>",
         "travel_agent": "<i class='fas fa-plane-departure'></i>",
         "publisher": "<i class='fas fa-book'></i>"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/organisations.json b/organisations.json
index 1d73ea0..f8ae358 100644
--- a/organisations.json
+++ b/organisations.json
@@ -78,5 +78,13 @@
             "sign": "<i class='fas fa-hands-helping'></i>",
             "zoom": 13
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/places.json b/places.json
index 2ca3d01..29d554b 100644
--- a/places.json
+++ b/places.json
@@ -34,5 +34,14 @@
         "description": "{{ tagTrans('place', tags.place) }}",
         "body": "{% if tags.population %}{{ keyTrans('population') }}: {{ tags.population }}{% endif %}",
         "priority": "{% set priorities = { 'continent': 0, 'country': 1, 'state': 2, 'region': 3, 'city': 4, 'town': 5, 'village': 6, 'suburb': 7, 'hamlet': 8, 'quarter': 9, neighbourhood: 10, 'isolated_dwelling': 11, 'farm': 12 } %}{{ priorities[tags.place] }}"
+    },
+    "filter": {
+        "name": {
+            "key": [ "name", "name:*" ],
+            "name": "{{ keyTrans('name') }}",
+            "type": "text",
+            "change_on": "keyup",
+            "op": "strsearch"
+        }
     }
 }
diff --git a/public.json b/public.json
index 448fb31..3c95f11 100644
--- a/public.json
+++ b/public.json
@@ -89,5 +89,13 @@
         "amenity=townhall": "<img data-src='maki:town-hall'>",
         "office=administration": "<img data-src='maki:town-hall'>",
         "office=government": "<img data-src='maki:town-hall'>"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/religion.json b/religion.json
index b3e2c5a..7e3c5aa 100644
--- a/religion.json
+++ b/religion.json
@@ -83,14 +83,88 @@
             "  {{ keyTrans('denomination') }}: {{ tagTransList('denomination', tags.denomination) }}<br/>",
             "{% endif %}"
         ],
-        "markerSign": [
-            "{% if tags.religion == 'christian' %}✝",
-            "{% elseif tags.religion == 'muslim' %}☪",
-            "{% elseif tags.religion == 'buddhist' %}☸",
-            "{% elseif tags.religion == 'hindu' %}ॐ",
-            "{% elseif tags.religion == 'jewish' %}✡",
-            "{% elseif tags.religion == 'pagan' %}☆",
-            "{% endif %}"
-        ]
+        "markerSign": "{{ const.religion[tags.religion] }}"
+    },
+    "const": {
+        "religion": {
+            "christian": "✝",
+            "muslim": "☪",
+            "buddhist": "☸",
+            "shinto": "",
+            "hindu": "ॐ",
+            "jewish": "✡",
+            "taoist": "",
+            "sikh": "",
+            "none": "",
+            "multifaith": "",
+            "unitarian_universialist": "",
+            "spiritualist": "",
+            "jain": "",
+            "voodoo": "",
+            "confucian": "",
+            "bahai": "",
+            "caodaism": "",
+            "tenrikyo": "",
+            "vietnamese_folk": "",
+            "pagan": "☆",
+            "scientologist": "",
+            "zoroastrian": "",
+            "pentecostal": "",
+            "shamanic": ""
+        }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "query": "nwr[{{ value }}]",
+            "type": "select",
+            "values": {
+              "place_of_worship": {
+                "name": "{{ tagTrans('amenity', 'place_of_worship') }}",
+                "query": "nwr[amenity=place_of_worship]"
+              },
+              "grave_yard": {
+                "name": "{{ tagTrans('amenity', 'grave_yard') }}",
+                "query": "nwr[amenity=grave_yard]"
+              },
+              "crematorium": {
+                "name": "{{ tagTrans('amenity', 'crematorium') }}",
+                "query": "nwr[amenity=crematorium]"
+              },
+              "cemetery": {
+                "name": "{{ tagTrans('landuse', 'cemetery') }}",
+                "query": "nwr[landuse=cemetery]"
+              },
+              "wayside_cross": {
+                "name": "{{ tagTrans('historic', 'wayside_cross') }}",
+                "query": "nwr[historic=wayside_cross]"
+              },
+              "wayside_shrine": {
+                "name": "{{ tagTrans('historic', 'wayside_shrine') }}",
+                "query": "nwr[historic=wayside_shrine]"
+              },
+              "wayside_chapel": {
+                "name": "{{ tagTrans('historic', 'wayside_chapel') }}",
+                "query": "nwr[historic=wayside_chapel]"
+              },
+              "parish": {
+                "name": "{{ tagTrans('office', 'parish') }}",
+                "query": "nwr[office=parish]"
+              },
+              "office": {
+                "name": "{{ tagTrans('office', 'religion') }}",
+                "query": "nwr[office=religion]"
+              }
+            }
+        },
+        "religion": {
+            "name": "{{ keyTrans('religion') }}",
+            "show_default": "true",
+            "type": "select",
+            "valueName": "{{ tagTrans('religion', value) }}",
+            "values": "{% set list = [] %}{% for t, v in const.religion %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('religion', t) }}</option>{% endfor %}<option value='other' query='nwr[religion][religion!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>",
+            "op": "has"
+        }
     }
 }
diff --git a/shop.json b/shop.json
index ce8c8cb..0c94727 100644
--- a/shop.json
+++ b/shop.json
@@ -150,5 +150,14 @@
                 "sign": "&#8986;"
             }
         ]
+    },
+    "filter": {
+        "shop": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for k, v in const.shops %}{% for t in v.types %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('shop', t) }}</option>{% endfor %}{% endfor %}<option value='other' query='nwr[shop][shop!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "op": "has"
+        }
     }
 }
diff --git a/sport.json b/sport.json
index 2caadbc..3b7931b 100644
--- a/sport.json
+++ b/sport.json
@@ -68,5 +68,13 @@
         "tennis": "🎾",
         "volleyball": "🏐",
         "weightlifting": "🏋"
+    },
+    "filter": {
+        "sport": {
+            "name": "{{ keyTrans('sport') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('sport', t) }}</option>{% endfor %}<option value='other' query='nwr[sport][sport!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>"
+        }
     }
 }
diff --git a/swimming_bathing.json b/swimming_bathing.json
index def3505..98e8aee 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -139,5 +139,13 @@
             "zoom": 16,
             "sign": "🚿 "
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/tourism_attractions.json b/tourism_attractions.json
index d69b2b4..8f22154 100644
--- a/tourism_attractions.json
+++ b/tourism_attractions.json
@@ -56,5 +56,16 @@
         "theme_park": "<img data-src='maki:amusement-park'>",
         "viewpoint": "<i class='fas fa-eye' aria-hidden='true'></i>",
         "zoo": "🦁"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "query": "nwr[{{ value }}]",
+            "type": "select",
+            "key": "tourism",
+            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('tourism', t) }}</option>{% endfor %}",
+            "op": "has"
+        }
     }
 }
diff --git a/tourism_services.json b/tourism_services.json
index 4901f18..57b77d2 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -141,5 +141,13 @@
             "sign": "ℹ️",
             "zoom": 16
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }

From d40123af52514194304293e68a3db5de0be00266 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 31 Jan 2019 10:38:24 +0100
Subject: [PATCH 019/117] gastro: include amenity=food_court

---
 gastro.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gastro.json b/gastro.json
index d26740a..f37258c 100644
--- a/gastro.json
+++ b/gastro.json
@@ -19,7 +19,7 @@
         "uk": "Гастрономія"
     },
     "query": {
-        "16": "(node[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];way[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];relation[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];);"
+        "16": "(node[amenity~'^(bar|biergarten|cafe|fast_food|food_court|ice_cream|pub|restaurant)$'];way[amenity~'^(bar|biergarten|cafe|fast_food|food_court|ice_cream|pub|restaurant)$'];relation[amenity~'^(bar|biergarten|cafe|fast_food|food_court|ice_cream|pub|restaurant)$'];);"
     },
     "feature": {
         "description": "{{ tagTrans('amenity', tags.amenity) }}",
@@ -57,6 +57,7 @@
               "biergarten",
               "cafe",
               "fast_food",
+              "food_court",
               "ice_cream",
               "pub",
               "restaurant"

From d2d54f09fb6adc93e8f2f2cb1eed4b9b46942ae1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 31 Jan 2019 10:54:39 +0100
Subject: [PATCH 020/117] gastro: bugfix

---
 gastro.json | 1 -
 1 file changed, 1 deletion(-)

diff --git a/gastro.json b/gastro.json
index f37258c..eaf7a12 100644
--- a/gastro.json
+++ b/gastro.json
@@ -46,7 +46,6 @@
         ],
         "markerSign": "{% if tags.amenity=='bar' %}&#127864;{% elseif tags.amenity=='biergarten'%}&#127867;{% elseif tags.amenity=='cafe' %}&#9749;{% elseif tags.amenity=='fast_food' %}&#127828;{% elseif tags.amenity=='ice_cream' %}&#127848;{% elseif tags.amenity=='pub' %}&#127866;{% else %}&#127860;{% endif %}"
     },
-    "info": "{{ repoTrans('Objects with diet information') }}",
     "filter": {
         "amenity": {
             "name": "{{ trans('filter:type') }}",

From 26c1b5e04641b9afad20535dd6a7e13c100becb9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 31 Jan 2019 22:42:22 +0100
Subject: [PATCH 021/117] education: bugfix, also include language_school from
 z16..

---
 education.json | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/education.json b/education.json
index ba2fc70..2b9887f 100644
--- a/education.json
+++ b/education.json
@@ -29,17 +29,13 @@
         ],
         "14": [
             "(",
-            "node[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
-            "way[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
-            "relation[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
+            "nwr[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
             "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ],
         "16": [
             "(",
-            "node[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
-            "way[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
-            "relation[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
+            "nwr[amenity~'^(college|university|library|school|kindergarten|language_school|public_bookcase)$'];",
             "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ]

From ffc40d9cb685c16c929a464ed5a01c5db17cff4b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Fri, 1 Feb 2019 13:48:25 +0100
Subject: [PATCH 022/117] buildings-type: also include nodes

---
 buildings-type.json | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/buildings-type.json b/buildings-type.json
index c7c2d85..d8846fc 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -7,12 +7,7 @@
         "pt-br": "Tipologias"
     },
     "query": {
-        "16": [
-            "(",
-            "  way[building][building!=no];",
-            "  relation[building][building!=no];",
-            ")"
-        ]
+        "16": "nwr[building][building!=no];"
     },
     "feature": {
         "pre": [

From 78df632375345bbb124810a6cc2da3602c448c62 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Fri, 1 Feb 2019 13:48:41 +0100
Subject: [PATCH 023/117] buildings-type: military buildings

- interpret buildings with building=yes and military=* as building=military, military=*
- for military buildings, write type in brackets (e.g. "Military (Barracks)")
---
 buildings-type.json | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/buildings-type.json b/buildings-type.json
index d8846fc..2fa2ff0 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -12,6 +12,7 @@
     "feature": {
         "pre": [
             "{% set type = tags.building|split(';')[0] %}",
+            "{% if tags.military %}{% set type = 'military' %}{% endif %}",
             "{% set color = const.other.color %}",
             "{% for cat, data in const %}",
             "  {% if type in data.types %}",
@@ -20,13 +21,18 @@
             "{% endfor %}"
         ],
         "description": [
-            "{% if tags.building == 'yes' %}",
+            "{% if tags.building == 'yes' and tags.military %}",
+            "{{ tagTrans('building', 'military') }}",
+            "{% elseif tags.building == 'yes' %}",
             "{{ keyTrans('building') }}",
             "{% else %}",
             "{{ tagTransList('building', tags.building) }}",
             "{% endif %}",
             "{% if tags.building == 'construction' and tags.construction %}",
             "({{ tagTransList('building', tags.construction) }})",
+            "{% endif %}",
+            "{% if tags.building in  [ 'yes', 'military' ] and tags.military %}",
+            "({{ tagTransList('military', tags.military) }})",
             "{% endif %}"
         ],
         "markerSymbol": "",
@@ -213,10 +219,11 @@
             ]
         },
         "military": {
-            "name": "tag:military",
+            "name": "tag:building=military",
             "color": "#4a7300",
             "types": [
-                "bunker"
+                "bunker",
+                "military"
             ]
         },
         "unspecified": {

From a715d023219ebe6407ae3f3b0dba1a86d95165df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 1 Feb 2019 19:10:50 +0100
Subject: [PATCH 024/117] buildings-height: support height tags with unit (m
 and ft)

---
 buildings-height.json | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/buildings-height.json b/buildings-height.json
index 6e3851a..dc08cf3 100644
--- a/buildings-height.json
+++ b/buildings-height.json
@@ -18,6 +18,9 @@
         "pre": [
             "{% if tags.height is defined %}",
             "{% set approxHeight = tags.height %}",
+            "{% set m = tags.height|matches('(.*)\\s*(m|ft)$') %}",
+            "{% if m and m[2] == 'm' %}{% set approxHeight = m[1] %}{% endif %}",
+            "{% if m and m[2] == 'ft' %}{% set approxHeight = m[1] / 3.2808 %}{% endif %}",
             "{% elseif attribute(tags, 'building:levels') is defined %}",
             "{% set approxHeight = attribute(tags, 'building:levels') * 3.5 %}",
             "{% endif %}",
@@ -32,10 +35,13 @@
         ],
         "description": [
             "{% if tags.height is defined %}",
-            "{{ tags.height }}m",
-            "{% endif %}",
+            "  {% if tags.height|matches('(m|ft)$') %}{{ tags.height -}}",
+            "  {% else %}{{ tags.height }}&nbsp;m",
+            "  {%- endif -%}",
+            "{% endif -%}",
             "",
-            "{% if attribute(tags, 'building:levels') is defined %}",
+            "{%- if attribute(tags, 'building:levels') is defined -%}",
+            "{%- if tags.height is defined %}, {% endif %}",
             "{{ attribute(tags, 'building:levels') }} {{ keyTrans('building:levels') }}",
             "{% endif %}"
         ],

From 88e9b0e05dcce29524ee578442994494e11c5a1e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 1 Feb 2019 19:16:12 +0100
Subject: [PATCH 025/117] buildings-start_date: if 'building:start_date' is
 defined, use this

---
 buildings-start_date.json | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/buildings-start_date.json b/buildings-start_date.json
index d2c3ffe..2b0759d 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -16,8 +16,11 @@
     },
     "feature": {
         "pre": [
-            "{% if tags.start_date %}",
-            "  {% set value = tags.start_date|osmParseDate %}",
+            "{% set start_date = tags.start_date %}",
+            "{% if attribute(tags, 'building:start_date') %}{% set start_date = attribute(tags, 'building:start_date') %}{% endif %}",
+            "",
+            "{% if start_date %}",
+            "  {% set value = start_date|osmParseDate %}",
             "  {% if value and value[0] and value[1] %}",
             "    {% set value = (value[1] - value[0]) / 2 + value[0] %}",
             "  {% elseif value and value[0] %}",
@@ -44,15 +47,15 @@
             "{% endif %}"
         ],
         "description": [
-            "{% if tags.start_date %}",
-            "{{ tags.start_date|osmFormatDate({ format: 'short' }) }}",
+            "{% if start_date %}",
+            "{{ start_date|osmFormatDate({ format: 'short' }) }}",
             "{% else %}",
             "{{ trans('unknown') }}",
             "{% endif %}"
         ],
         "popupDescription": [
-            "{% if tags.start_date %}",
-            "{{ tags.start_date|osmFormatDate }}",
+            "{% if start_date %}",
+            "{{ start_date|osmFormatDate }}",
             "{% else %}",
             "{{ trans('unknown') }}",
             "{% endif %}"
@@ -61,7 +64,7 @@
         "listMarkerSymbol": "{{ markerPolygon({ \"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
         "priority": [
             "{% set p = 100 %}",
-            "{% if tags.start_date %}{% set p = p - 20 %}{% endif %}",
+            "{% if start_date %}{% set p = p - 20 %}{% endif %}",
             "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
             "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
             "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",

From 0410286c306f3917cb6fd14c215179f24b37aaba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Iv=C3=A1n=20Seoane?= <ivanrsm1997@gmail.com>
Date: Wed, 6 Feb 2019 16:07:25 +0000
Subject: [PATCH 026/117] Added translation using Weblate (Galician)

---
 lang/gl.json | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 lang/gl.json

diff --git a/lang/gl.json b/lang/gl.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/lang/gl.json
@@ -0,0 +1 @@
+{}

From 98e595f9014f439a32605281375d46fefb514aae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Iv=C3=A1n=20Seoane?= <ivanrsm1997@gmail.com>
Date: Wed, 6 Feb 2019 16:08:09 +0000
Subject: [PATCH 027/117] Translated using Weblate (Galician)

Currently translated at 2.2% (2 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/gl/
---
 lang/gl.json | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lang/gl.json b/lang/gl.json
index 0967ef4..2962da7 100644
--- a/lang/gl.json
+++ b/lang/gl.json
@@ -1 +1,4 @@
-{}
+{
+    "category:administrative": "Divisións administrativas",
+    "category:agriculture": "Agricultura"
+}

From cd9265f9c3f07be9f686612fa1e735b6c26e931a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Iv=C3=A1n=20Seoane?= <ivanrsm1997@gmail.com>
Date: Wed, 6 Feb 2019 20:39:04 +0000
Subject: [PATCH 028/117] Translated using Weblate (Galician)

Currently translated at 100.0% (90 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/gl/
---
 lang/gl.json | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 89 insertions(+), 1 deletion(-)

diff --git a/lang/gl.json b/lang/gl.json
index 2962da7..5c8c196 100644
--- a/lang/gl.json
+++ b/lang/gl.json
@@ -1,4 +1,92 @@
 {
     "category:administrative": "Divisións administrativas",
-    "category:agriculture": "Agricultura"
+    "category:agriculture": "Agricultura",
+    "category:alternative_amenities": "Equipamentos",
+    "category:alternative_routes": "Rotas",
+    "category:buildings": "Edificios",
+    "category:buildings-entrances": "Entradas",
+    "category:buildings-figure-ground": "Cheos e baleiros",
+    "category:buildings-height": "Altitude do edificio",
+    "category:buildings-start_date": "Idade do edificio",
+    "category:buildings-type": "Tipos de edificios",
+    "category:car_amenities": "Equipamentos",
+    "category:car_furniture": "Mobiliario urbano",
+    "category:car_maxspeed": "Velocidade máxima",
+    "category:car_routes": "Rotas automobilísticas",
+    "category:children": "Equipamentos infantís",
+    "category:coal": "Carbón",
+    "category:communication": "Comunicacións",
+    "category:construction": "Terreos baixo construción",
+    "category:craft": "Artesán",
+    "category:culture": "Cultura",
+    "category:culture_religion": "Cultura e relixión",
+    "category:cycle_amenities": "Equipamentos",
+    "category:cycle_routes": "Rotas ciclistas",
+    "category:education": "Servizos educativos",
+    "category:electric_power": "Enerxía eléctrica",
+    "category:emergency": "Servizos de emerxencia",
+    "category:energy": "Enerxía",
+    "category:financial": "Finanzas",
+    "category:gastro": "Restauración",
+    "category:gastro-smoking": "Restauración sen fume",
+    "category:health": "Saúde",
+    "category:hiking_routes": "Rotas sendeiristas",
+    "category:historic": "Histórico",
+    "category:index": "Índice",
+    "category:infrastructure": "Infraestrutura",
+    "category:internet": "Acceso á internet",
+    "category:law": "Leis",
+    "category:leisure": "Lecer",
+    "category:leisure_sport_shopping": "Lecer, deporte e compras",
+    "category:memorial": "Memoriais",
+    "category:military": "Militar",
+    "category:mtb-routes": "Rotas de bicicleta de montaña",
+    "category:natural": "Formacións naturais",
+    "category:office": "Oficinas",
+    "category:oil_gas": "Petróleo e gas natural",
+    "category:organisations": "Organizacións",
+    "category:other": "Outros",
+    "category:outdoor": "Actividades ó ar libre",
+    "category:phone": "Teléfono",
+    "category:places": "Lugares",
+    "category:places_geo": "Lugares",
+    "category:playgrounds": "Parques infantís",
+    "category:post": "Correos",
+    "category:power_routes": "Liñas eléctricas",
+    "category:pt": "Mapa de transporte público",
+    "category:pt:routes": "Rotas",
+    "category:pt:stops": "Paraxes e estacións",
+    "category:pt_amenities": "Equipamentos",
+    "category:public": "Servizos públicos",
+    "category:railway": "Ferrocarril",
+    "category:railway-electrification": "Ferrocarril electrificado",
+    "category:railway-infrastructure": "Infraestrutura do ferrocarril",
+    "category:railway-maxspeed": "Velocidade máxima do ferrocarril",
+    "category:railway-routes": "Liñas de ferrocarril",
+    "category:religion": "Relixión",
+    "category:renewables": "Renovábeis",
+    "category:residential": "Zonas residenciais",
+    "category:resources": "Estracción de recursos",
+    "category:services": "Servizos",
+    "category:shop": "Compras",
+    "category:special": "Especial",
+    "category:sport": "Deporte",
+    "category:swimming_bathing": "Natación e baño",
+    "category:tourism_attractions": "Turismo",
+    "category:tourism_services": "Turismo",
+    "category:transport": "Transporte",
+    "category:transport_alternative": "Transporte alternativo",
+    "category:transport_car": "Tráfico individual",
+    "category:transport_cycle": "Ciclismo",
+    "category:transport_pt": "Transporte público",
+    "category:transport_walk": "Peonil",
+    "category:walk_amenities": "Equipamentos",
+    "category:waste": "Lixo",
+    "category:water": "Hidrografía",
+    "category:wikipedia": "Wikipedia",
+    "category:works": "Producións",
+    "category:xmas": "Nadal",
+    "date format not understood": "Formato da data non coñecido",
+    "outdated feature": "Elemento obsoleto",
+    "xmas:outdated-warning": "O elemento non foi actualizado para a tempada actual! Por favor, verifica e define a etiqueta 'xmas:lastcheck' para a data actual."
 }

From de8173c36a2426efda064d677e96d97ca4eb7ccc Mon Sep 17 00:00:00 2001
From: debyos <gabor.babos@gmail.com>
Date: Thu, 7 Feb 2019 22:15:14 +0100
Subject: [PATCH 029/117] Hungarian translations

---
 lang/hu.json | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lang/hu.json b/lang/hu.json
index 5fd5cb9..e7a8ede 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -4,11 +4,11 @@
     "category:alternative_amenities": "Létesítmények",
     "category:alternative_routes": "Útvonalak",
     "category:buildings": "Épületek",
-    "category:buildings-entrances": "",
-    "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-entrances": "Bejáratok",
+    "category:buildings-figure-ground": "Fekete épületalaprajzok",
+    "category:buildings-height": "Épületek magassága",
+    "category:buildings-start_date": "Épületek kora",
+    "category:buildings-type": "Épületek típusa",
     "category:car_amenities": "Létesítmények",
     "category:car_furniture": "Jelzőtáblák",
     "category:car_maxspeed": "Sebességkorlátozás",
@@ -35,7 +35,7 @@
     "category:index": "Tartalom",
     "category:infrastructure": "Infrastruktúra",
     "category:internet": "Internetcsatlakozás",
-    "category:law": "",
+    "category:law": "Jog",
     "category:leisure": "Szabadidő",
     "category:leisure_sport_shopping": "Szabadidő, sport és vásárlás",
     "category:memorial": "Emlékművek",
@@ -44,7 +44,7 @@
     "category:natural": "Természeti képződmények",
     "category:office": "Irodák, hivatalok",
     "category:oil_gas": "Kőolaj, földgáz",
-    "category:organisations": "",
+    "category:organisations": "Szervezetek",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
     "category:phone": "Telefon",

From 680a2573a8c42565071f1b9726d08bc15d3265ba Mon Sep 17 00:00:00 2001
From: Michel Stuyts <michel.stuyts@gmail.com>
Date: Fri, 8 Feb 2019 08:14:42 +0000
Subject: [PATCH 030/117] Translated using Weblate (Dutch)

Currently translated at 76.7% (69 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/nl/
---
 lang/nl.json | 48 ++++++++++++++++++++++++------------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/lang/nl.json b/lang/nl.json
index cad77ca..6046173 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -3,54 +3,54 @@
     "category:agriculture": "Landbouw",
     "category:alternative_amenities": "Voorzieningen",
     "category:alternative_routes": "Alternatieve routes",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:buildings": "Gebouwen",
+    "category:buildings-entrances": "Toegangen",
     "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-height": "Bouwhoogte",
+    "category:buildings-start_date": "Ouderdom van het gebouw",
+    "category:buildings-type": "Gebouwtypes",
     "category:car_amenities": "Voorzieningen",
     "category:car_furniture": "Straatmeubilair",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
-    "category:children": "",
-    "category:coal": "",
+    "category:car_maxspeed": "Snelheidslimiet",
+    "category:car_routes": "Autoroutes",
+    "category:children": "Voorzieningen voor kinderen",
+    "category:coal": "Kolen",
     "category:communication": "Communicatie",
     "category:construction": "Bouwterrein",
-    "category:craft": "",
+    "category:craft": "Handwerk",
     "category:culture": "Cultuur",
     "category:culture_religion": "Cultuur",
-    "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:cycle_amenities": "Voorzieningen",
+    "category:cycle_routes": "Fietsroutes",
     "category:education": "Onderwijs",
     "category:electric_power": "Stroomvoorziening",
     "category:emergency": "Hulpdiensten",
-    "category:energy": "",
+    "category:energy": "Energie",
     "category:financial": "Financieel",
     "category:gastro": "Gastronomie",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "Rookvrije gastronomie",
     "category:health": "Gezondheid",
-    "category:hiking_routes": "",
+    "category:hiking_routes": "Wandelroutes",
     "category:historic": "Historisch",
     "category:index": "",
-    "category:infrastructure": "",
+    "category:infrastructure": "Infrastructuur",
     "category:internet": "Internettoegang",
-    "category:law": "",
+    "category:law": "Juridische diensten",
     "category:leisure": "Vrije tijd",
     "category:leisure_sport_shopping": "Vrije tijd, Sport en Winkelen",
-    "category:memorial": "",
+    "category:memorial": "Gedenktekens",
     "category:military": "Militair",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "ATB routes",
     "category:natural": "Natuurlijke Formaties",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "Kantoren",
+    "category:oil_gas": "Petroleum en aardgas",
+    "category:organisations": "Organisaties",
     "category:other": "Andere",
-    "category:outdoor": "",
+    "category:outdoor": "Buitenactiviteiten",
     "category:phone": "Telefonie",
     "category:places": "Plaatsen",
     "category:places_geo": "Plaatsen",
-    "category:playgrounds": "",
+    "category:playgrounds": "Speeltuin",
     "category:post": "Post",
     "category:power_routes": "",
     "category:pt": "",

From 4f5f82aeb97d7b3b17c27153c5fcc8afe97ff9c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Iv=C3=A1n=20Seoane?= <ivanrsm1997@gmail.com>
Date: Thu, 7 Feb 2019 20:37:45 +0000
Subject: [PATCH 031/117] Translated using Weblate (Galician)

Currently translated at 100.0% (90 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/gl/
---
 lang/gl.json | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lang/gl.json b/lang/gl.json
index 5c8c196..17e5564 100644
--- a/lang/gl.json
+++ b/lang/gl.json
@@ -1,7 +1,7 @@
 {
     "category:administrative": "Divisións administrativas",
     "category:agriculture": "Agricultura",
-    "category:alternative_amenities": "Equipamentos",
+    "category:alternative_amenities": "Instalacións",
     "category:alternative_routes": "Rotas",
     "category:buildings": "Edificios",
     "category:buildings-entrances": "Entradas",
@@ -9,18 +9,18 @@
     "category:buildings-height": "Altitude do edificio",
     "category:buildings-start_date": "Idade do edificio",
     "category:buildings-type": "Tipos de edificios",
-    "category:car_amenities": "Equipamentos",
+    "category:car_amenities": "Instalacións",
     "category:car_furniture": "Mobiliario urbano",
     "category:car_maxspeed": "Velocidade máxima",
     "category:car_routes": "Rotas automobilísticas",
-    "category:children": "Equipamentos infantís",
+    "category:children": "Instalacións infantís",
     "category:coal": "Carbón",
     "category:communication": "Comunicacións",
     "category:construction": "Terreos baixo construción",
     "category:craft": "Artesán",
     "category:culture": "Cultura",
     "category:culture_religion": "Cultura e relixión",
-    "category:cycle_amenities": "Equipamentos",
+    "category:cycle_amenities": "Instalacións",
     "category:cycle_routes": "Rotas ciclistas",
     "category:education": "Servizos educativos",
     "category:electric_power": "Enerxía eléctrica",
@@ -56,7 +56,7 @@
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "Paraxes e estacións",
-    "category:pt_amenities": "Equipamentos",
+    "category:pt_amenities": "Instalacións",
     "category:public": "Servizos públicos",
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "Ferrocarril electrificado",
@@ -74,13 +74,13 @@
     "category:swimming_bathing": "Natación e baño",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
-    "category:transport": "Transporte",
+    "category:transport": "Mobilidade",
     "category:transport_alternative": "Transporte alternativo",
     "category:transport_car": "Tráfico individual",
     "category:transport_cycle": "Ciclismo",
     "category:transport_pt": "Transporte público",
     "category:transport_walk": "Peonil",
-    "category:walk_amenities": "Equipamentos",
+    "category:walk_amenities": "Instalacións",
     "category:waste": "Lixo",
     "category:water": "Hidrografía",
     "category:wikipedia": "Wikipedia",

From 388759ec6744ca3c285d4ec43b22cffaa0677f1f Mon Sep 17 00:00:00 2001
From: Michel Stuyts <michel.stuyts@gmail.com>
Date: Fri, 8 Feb 2019 08:36:42 +0000
Subject: [PATCH 032/117] Translated using Weblate (Dutch)

Currently translated at 97.8% (88 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/nl/
---
 lang/nl.json | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/lang/nl.json b/lang/nl.json
index 6046173..564eb9a 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -52,41 +52,41 @@
     "category:places_geo": "Plaatsen",
     "category:playgrounds": "Speeltuin",
     "category:post": "Post",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:power_routes": "Elektriciteitsleidingen",
+    "category:pt": "Openbaar vervoer kaart",
+    "category:pt:routes": "Routes",
     "category:pt:stops": "Haltes en Stations",
     "category:pt_amenities": "Voorzieningen",
     "category:public": "Openbare diensten",
     "category:railway": "Spoorwegen",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-electrification": "Spoorwegelektrificatie",
+    "category:railway-infrastructure": "Spoorweginfrastructuur",
+    "category:railway-maxspeed": "Spoorweg snelheidslimiet",
+    "category:railway-routes": "Spoorwegroutes",
     "category:religion": "Religie",
-    "category:renewables": "",
+    "category:renewables": "Hernieuwbare energie",
     "category:residential": "Woongebieden",
     "category:resources": "Grondstoffenwinning",
     "category:services": "Dienstverlening",
     "category:shop": "Winkelen",
-    "category:special": "",
+    "category:special": "Speciaal",
     "category:sport": "Sport",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Zwemmen en baden",
     "category:tourism_attractions": "Toerisme",
     "category:tourism_services": "Toerisme",
     "category:transport": "Vervoer",
     "category:transport_alternative": "Alternatief (Fiets, Wandel, ...)",
     "category:transport_car": "Gemotoriseerd individueel verkeer",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "Fietsen",
     "category:transport_pt": "Openbaar vervoer",
-    "category:transport_walk": "",
-    "category:walk_amenities": "",
+    "category:transport_walk": "Wandelen",
+    "category:walk_amenities": "Voorzieningen",
     "category:waste": "Afvalverwijdering",
-    "category:water": "",
-    "category:wikipedia": "",
+    "category:water": "Oppervlaktewater",
+    "category:wikipedia": "Wikipedia",
     "category:works": "Fabrieken",
-    "category:xmas": "",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "category:xmas": "Kerstmis",
+    "date format not understood": "Datumformaat onbekend",
+    "outdated feature": "Achterhaalde informatie",
+    "xmas:outdated-warning": "Object werd niet geactualiseerd voor het huidige seizoen! Controleer en zet de tag 'xmas:lastcheck' op de huidige datum alstublieft."
 }

From 2a6f1a01ab3fd1652494f566f60a6e67131a9359 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Babos?= <gabor.babos@gmail.com>
Date: Fri, 8 Feb 2019 14:04:53 +0000
Subject: [PATCH 033/117] Translated using Weblate (Hungarian)

Currently translated at 100.0% (90 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/hu/
---
 lang/hu.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lang/hu.json b/lang/hu.json
index e7a8ede..6b3f24e 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -86,7 +86,7 @@
     "category:wikipedia": "Wikipédia",
     "category:works": "Üzemek",
     "category:xmas": "Karácsony",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "date format not understood": "Felismerhetetlen dátumformátum",
+    "outdated feature": "Elavult információ",
+    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra."
 }

From abed633354d55a6ceea4e5920d7315979c471cb4 Mon Sep 17 00:00:00 2001
From: Jakb <public@cameloteast.de>
Date: Sat, 9 Feb 2019 10:48:41 +0000
Subject: [PATCH 034/117] Translated using Weblate (German)

Currently translated at 95.6% (86 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/de/
---
 lang/de.json | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lang/de.json b/lang/de.json
index 9ef0409..1d6ef25 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -12,7 +12,7 @@
     "category:car_amenities": "Einrichtungen",
     "category:car_furniture": "Straßenausstattung",
     "category:car_maxspeed": "Höchstgeschwindigkeiten",
-    "category:car_routes": "",
+    "category:car_routes": "Autorouten",
     "category:children": "Einrichtungen für Kinder",
     "category:coal": "Kohle",
     "category:communication": "Kommunikation",
@@ -40,17 +40,17 @@
     "category:leisure_sport_shopping": "Freizeit, Sport und Einkauf",
     "category:memorial": "Denkmäler",
     "category:military": "Militär",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "Mointainbikerouten",
     "category:natural": "Geographische Objekte",
     "category:office": "Ämter, Dienst- und Geschäftsstellen",
     "category:oil_gas": "Erdöl und Erdgas",
-    "category:organisations": "",
+    "category:organisations": "Organisationen",
     "category:other": "Andere",
     "category:outdoor": "Freiluftaktivitäten",
     "category:phone": "Telekommunikation",
     "category:places": "Orte",
     "category:places_geo": "Orte",
-    "category:playgrounds": "Spielplätze",
+    "category:playgrounds": "Spielplatz",
     "category:post": "Post",
     "category:power_routes": "",
     "category:pt": "ÖV Karte",
@@ -62,7 +62,7 @@
     "category:railway-electrification": "Eisenbahn Elektrifizierung",
     "category:railway-infrastructure": "Eisenbahn Infrastruktur",
     "category:railway-maxspeed": "Eisenbahn Höchstgeschwindigkeiten",
-    "category:railway-routes": "",
+    "category:railway-routes": "Eisenbahnrouten",
     "category:religion": "Religion",
     "category:renewables": "Erneuerbare Energien",
     "category:residential": "Wohngebiete",

From 0fc1301e36eb4e8dfeb2ce883cbfbbc615b7f42d Mon Sep 17 00:00:00 2001
From: Cybereric <cartosm@free.fr>
Date: Mon, 11 Feb 2019 23:04:45 +0000
Subject: [PATCH 035/117] Translated using Weblate (French)

Currently translated at 95.6% (86 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/fr/
---
 lang/fr.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lang/fr.json b/lang/fr.json
index 088e64e..6ee2bfe 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -55,7 +55,7 @@
     "category:power_routes": "Réseaux électriques",
     "category:pt": "Carte des transports publics",
     "category:pt:routes": "Lignes",
-    "category:pt:stops": "Arrêts/Stops, Stations",
+    "category:pt:stops": "Arrêts et stations",
     "category:pt_amenities": "Équipements",
     "category:public": "Services et équipements publics",
     "category:railway": "Chemins de fer",
@@ -81,12 +81,12 @@
     "category:transport_pt": "Transports publics",
     "category:transport_walk": "Marche à pied",
     "category:walk_amenities": "Équipements piétons",
-    "category:waste": "Déchets/Recyclage",
+    "category:waste": "Déchets et recyclage",
     "category:water": "Hydrographie",
     "category:wikipedia": "Wikipédia",
     "category:works": "Zones industrielles",
     "category:xmas": "Noël",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "xmas:outdated-warning": "Cet élément n'a pas été mis à jour pour cette saison ! Veuillez vérifier son existence et régler la valeur de \"xmas:lastcheck\" à la date actuelle."
 }

From 75883afe18c5c9fa920f3d657592bf612c64005c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 13 Feb 2019 11:58:25 +0100
Subject: [PATCH 036/117] waste: improvements; include man_made=incinerator and
 power=generator (waste)

---
 waste.json | 49 +++++++++++++++++++++++++++++++++++--------------
 1 file changed, 35 insertions(+), 14 deletions(-)

diff --git a/waste.json b/waste.json
index 0895142..7b48a86 100644
--- a/waste.json
+++ b/waste.json
@@ -18,58 +18,66 @@
         "13": [
             "(",
             "node[landuse=landfill];",
-            "node[man_made=wastewater_plant];",
+            "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "node[amenity=recycling][recycling_type=centre];",
             "way[landuse=landfill];",
-            "way[man_made=wastewater_plant];",
+            "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "way[amenity=recycling][recycling_type=centre];",
             "relation[landuse=landfill];",
-            "relation[man_made=wastewater_plant];",
+            "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "relation[amenity=recycling][recycling_type=centre];",
+            "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ],
         "15": [
             "(",
             "node[landuse=landfill];",
-            "node[man_made=wastewater_plant];",
+            "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "node[amenity=recycling];",
             "way[landuse=landfill];",
-            "way[man_made=wastewater_plant];",
+            "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "way[amenity=recycling];",
             "relation[landuse=landfill];",
-            "relation[man_made=wastewater_plant];",
+            "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "relation[amenity=recycling];",
+            "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ],
         "18": [
             "(",
             "node[landuse=landfill];",
-            "node[man_made=wastewater_plant];",
+            "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "node[amenity~\"^(recycling|waste_basket)$\"];",
             "way[landuse=landfill];",
-            "way[man_made=wastewater_plant];",
+            "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "way[amenity=recycling];",
             "relation[landuse=landfill];",
-            "relation[man_made=wastewater_plant];",
+            "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "relation[amenity=recycling];",
+            "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ]
     },
     "feature": {
         "pre": [
+            "{% set add = '' %}",
             "{% if tags.landuse == 'landfill' %}",
             "  {% set key = 'landuse' %}",
             "  {% set value = tags.landuse %}",
-            "{% elseif tags.man_made == 'wastewater_plant' %}",
+            "{% elseif tags.man_made in [ 'incinerator', 'wastewater_plant' ] %}",
             "  {% set key = 'man_made' %}",
             "  {% set value = tags.man_made %}",
             "{% elseif tags.amenity == 'recycling' or tags.amenity == 'waste_basket' %}",
             "  {% set key = 'amenity' %}",
             "  {% set value = tags.amenity %}",
+            "{% elseif tags.power == 'generator' %}",
+            "  {% set key = 'power' %}",
+            "  {% set value = tags.power %}",
+            "  {% set add = '(' ~ tagTransList('generator:source', attribute(tags, 'generator:source')) ~ ')' %}",
             "{% endif %}",
             "{% set kv = key ~ '=' ~ value %}"
         ],
-        "description": "{{ tagTrans(key, value) }}",
+        "description": "{{ tagTrans(key, value) }} {{ add }}",
         "body": [
             "{% if tags.recycling_type %}",
             "{{ keyTrans('recycling_type') }}: {{ tagTrans('recycling_type', tags.recycling_type) }}",
@@ -89,7 +97,7 @@
         "  {% set value  = kv|split('=')[1] %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('leisure', value) }}</td>",
+        "    <td>{{ tagTrans(key, value) }}{% if data.add %} ({{ trans(data.add) }}){% endif %}</td>",
         "  </tr>",
         "  {% endif %}",
         "{% endfor %}",
@@ -102,11 +110,24 @@
     "const": {
         "amenity=recycling": {
             "minZoom": 13,
-            "sign": "<img src='maki:recycling'>"
+            "sign": "<img data-src='maki:recycling'>"
+        },
+        "man_made=wastewater_plant": {
+            "minZoom": 13,
+            "sign": "<i class='fas fa-water'></i>"
+        },
+        "man_made=incinerator": {
+            "minZoom": 13,
+            "sign": "<i class='fas fa-burn'></i>"
+        },
+        "power=generator": {
+            "minZoom": 13,
+            "sign": "<i class='fas fa-bolt'></i>",
+            "add": "tag:generator:source=waste"
         },
         "amenity=waste_basket": {
             "minZoom": 18,
-            "sign": "<img src='maki:waste-basket'>"
+            "sign": "<img data-src='maki:waste-basket'>"
         }
     }
 }

From 9301b0750934c48f3ab668b838c39efe38214bc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 13 Feb 2019 13:40:05 +0100
Subject: [PATCH 037/117] waste: include amenity=waste_disposal and
 amenity=waste_transfer_station

---
 waste.json | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/waste.json b/waste.json
index 7b48a86..a91c4aa 100644
--- a/waste.json
+++ b/waste.json
@@ -26,6 +26,7 @@
             "relation[landuse=landfill];",
             "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "relation[amenity=recycling][recycling_type=centre];",
+            "nwr[amenity=waste_transfer_station];",
             "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ],
@@ -33,13 +34,13 @@
             "(",
             "node[landuse=landfill];",
             "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
-            "node[amenity=recycling];",
+            "node[amenity~\"^(recycling|waste_disposal|waste_transfer_station)$\"];",
             "way[landuse=landfill];",
             "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
-            "way[amenity=recycling];",
+            "way[amenity~\"^(recycling|waste_disposal|waste_transfer_station)$\"];",
             "relation[landuse=landfill];",
             "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
-            "relation[amenity=recycling];",
+            "relation[amenity~\"^(recycling|waste_disposal|waste_transfer_station)$\"];",
             "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ],
@@ -47,13 +48,13 @@
             "(",
             "node[landuse=landfill];",
             "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
-            "node[amenity~\"^(recycling|waste_basket)$\"];",
+            "node[amenity~\"^(recycling|waste_basket|waste_disposal|waste_transfer_station)$\"];",
             "way[landuse=landfill];",
             "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
-            "way[amenity=recycling];",
+            "way[amenity~\"^(recycling|waste_basket|waste_disposal|waste_transfer_station)$\"];",
             "relation[landuse=landfill];",
             "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
-            "relation[amenity=recycling];",
+            "relation[amenity~\"^(recycling|waste_basket|waste_disposal|waste_transfer_station)$\"];",
             "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ]
@@ -67,7 +68,7 @@
             "{% elseif tags.man_made in [ 'incinerator', 'wastewater_plant' ] %}",
             "  {% set key = 'man_made' %}",
             "  {% set value = tags.man_made %}",
-            "{% elseif tags.amenity == 'recycling' or tags.amenity == 'waste_basket' %}",
+            "{% elseif tags.amenity in [ 'recycling', 'waste_basket', 'waste_disposal', 'waste_transfer_station' ] %}",
             "  {% set key = 'amenity' %}",
             "  {% set value = tags.amenity %}",
             "{% elseif tags.power == 'generator' %}",
@@ -125,6 +126,10 @@
             "sign": "<i class='fas fa-bolt'></i>",
             "add": "tag:generator:source=waste"
         },
+        "amenity=waste_disposal": {
+            "minZoom": 15,
+            "sign": "<img data-src='maki:waste-basket'>"
+        },
         "amenity=waste_basket": {
             "minZoom": 18,
             "sign": "<img data-src='maki:waste-basket'>"

From ae3dc298f3543ea0b3e9e7233d60435f934f7cec Mon Sep 17 00:00:00 2001
From: Carlos Antonio Rivera <carlos.kapazao@gmail.com>
Date: Thu, 14 Feb 2019 13:00:49 +0000
Subject: [PATCH 038/117] Translated using Weblate (Spanish)

Currently translated at 77.8% (70 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/es/
---
 lang/es.json | 126 +++++++++++++++++++++++++--------------------------
 1 file changed, 63 insertions(+), 63 deletions(-)

diff --git a/lang/es.json b/lang/es.json
index f5f32dc..cdac6f7 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -1,92 +1,92 @@
 {
-    "category:administrative": "",
-    "category:agriculture": "",
+    "category:administrative": "Áreas Administrativas",
+    "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
-    "category:alternative_routes": "",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:alternative_routes": "Rutas",
+    "category:buildings": "Edificios",
+    "category:buildings-entrances": "Entradas",
     "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
+    "category:buildings-height": "Altura del edificio",
+    "category:buildings-start_date": "Edad del edificio",
     "category:buildings-type": "",
     "category:car_amenities": "",
-    "category:car_furniture": "",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
+    "category:car_furniture": "Mobiliario Urbano",
+    "category:car_maxspeed": "Velocidad máxima",
+    "category:car_routes": "Rutas de coche",
     "category:children": "",
-    "category:coal": "",
-    "category:communication": "",
-    "category:construction": "",
+    "category:coal": "Carbón",
+    "category:communication": "Comunicación",
+    "category:construction": "Sitios de construcción",
     "category:craft": "",
     "category:culture": "Cultura",
     "category:culture_religion": "Cultura y religión",
     "category:cycle_amenities": "",
-    "category:cycle_routes": "",
-    "category:education": "",
-    "category:electric_power": "",
+    "category:cycle_routes": "Rutas ciclistas",
+    "category:education": "Servicios educativos",
+    "category:electric_power": "Energía eléctrica",
     "category:emergency": "Servicios de emergencia",
-    "category:energy": "",
+    "category:energy": "Energía",
     "category:financial": "",
-    "category:gastro": "",
-    "category:gastro-smoking": "",
-    "category:health": "",
-    "category:hiking_routes": "",
-    "category:historic": "",
+    "category:gastro": "Gastronomía",
+    "category:gastro-smoking": "Gastronomía libre de humo",
+    "category:health": "Salud",
+    "category:hiking_routes": "Rutas de senderismo",
+    "category:historic": "Histórico",
     "category:index": "",
-    "category:infrastructure": "",
+    "category:infrastructure": "Infraestructura",
     "category:internet": "Acceso a Internet",
     "category:law": "",
-    "category:leisure": "",
+    "category:leisure": "Ocio",
     "category:leisure_sport_shopping": "Ocio, deporte y compras",
-    "category:memorial": "",
-    "category:military": "",
-    "category:mtb-routes": "",
-    "category:natural": "",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
-    "category:other": "",
-    "category:outdoor": "",
-    "category:phone": "",
-    "category:places": "",
-    "category:places_geo": "",
+    "category:memorial": "Memoriales",
+    "category:military": "Militar",
+    "category:mtb-routes": "Rutas de ciclismo de montaña",
+    "category:natural": "Formaciones naturales",
+    "category:office": "Oficinas",
+    "category:oil_gas": "Petróleo y gas natural",
+    "category:organisations": "Organizaciones",
+    "category:other": "Otro",
+    "category:outdoor": "Actividades al aire libre",
+    "category:phone": "Teléfono",
+    "category:places": "Lugares",
+    "category:places_geo": "Lugares",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:power_routes": "Rutas de energía",
+    "category:pt": "Mapa de transporte público",
+    "category:pt:routes": "Rutas",
     "category:pt:stops": "Paradas y estaciones",
     "category:pt_amenities": "",
-    "category:public": "",
-    "category:railway": "",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
-    "category:religion": "",
-    "category:renewables": "",
-    "category:residential": "",
-    "category:resources": "",
+    "category:public": "Servicios públicos",
+    "category:railway": "Ferrocarril",
+    "category:railway-electrification": "Electrificación ferroviaria",
+    "category:railway-infrastructure": "Infraestructura ferroviaria",
+    "category:railway-maxspeed": "Velocidad máxima del ferrocarril",
+    "category:railway-routes": "Rutas de ferrocarril",
+    "category:religion": "Religión",
+    "category:renewables": "Renovables",
+    "category:residential": "Áreas residenciales",
+    "category:resources": "Extracción de recursos",
     "category:services": "Servicios",
-    "category:shop": "",
-    "category:special": "",
-    "category:sport": "",
+    "category:shop": "Compras",
+    "category:special": "Especial",
+    "category:sport": "Deportes",
     "category:swimming_bathing": "",
-    "category:tourism_attractions": "",
-    "category:tourism_services": "",
-    "category:transport": "",
+    "category:tourism_attractions": "Turismo",
+    "category:tourism_services": "Turismo",
+    "category:transport": "Transporte",
     "category:transport_alternative": "",
-    "category:transport_car": "",
-    "category:transport_cycle": "",
-    "category:transport_pt": "",
+    "category:transport_car": "Tráfico individual",
+    "category:transport_cycle": "Ciclismo",
+    "category:transport_pt": "Transporte público",
     "category:transport_walk": "",
     "category:walk_amenities": "",
     "category:waste": "",
-    "category:water": "",
-    "category:wikipedia": "",
-    "category:works": "",
-    "category:xmas": "",
+    "category:water": "Cuerpos de agua",
+    "category:wikipedia": "Wikipedia",
+    "category:works": "Trabajos",
+    "category:xmas": "Navidades",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "xmas:outdated-warning": "¡La característica no se ha actualizado para la temporada actual! Por favor verifique y establezca la etiqueta 'xmas: lastcheck' a la fecha actual."
 }

From 891f04a1bb9797876754c621e4d4fa137d2a00da Mon Sep 17 00:00:00 2001
From: Carlos Antonio Rivera <carlos.kapazao@gmail.com>
Date: Fri, 15 Feb 2019 11:49:43 +0000
Subject: [PATCH 039/117] Translated using Weblate (Spanish)

Currently translated at 80.0% (72 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/es/
---
 lang/es.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lang/es.json b/lang/es.json
index cdac6f7..3742dc4 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -8,7 +8,7 @@
     "category:buildings-figure-ground": "",
     "category:buildings-height": "Altura del edificio",
     "category:buildings-start_date": "Edad del edificio",
-    "category:buildings-type": "",
+    "category:buildings-type": "Tipos de edificio",
     "category:car_amenities": "",
     "category:car_furniture": "Mobiliario Urbano",
     "category:car_maxspeed": "Velocidad máxima",
@@ -87,6 +87,6 @@
     "category:works": "Trabajos",
     "category:xmas": "Navidades",
     "date format not understood": "",
-    "outdated feature": "",
+    "outdated feature": "Característica obsoleta",
     "xmas:outdated-warning": "¡La característica no se ha actualizado para la temporada actual! Por favor verifique y establezca la etiqueta 'xmas: lastcheck' a la fecha actual."
 }

From a02a27a782af2005e70259d977de277797dc7fc0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 17 Feb 2019 18:48:27 +0100
Subject: [PATCH 040/117] buildings-start_date: parse alternative, deprecated
 tags

---
 buildings-start_date.json | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/buildings-start_date.json b/buildings-start_date.json
index 2b0759d..fad9b95 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -18,6 +18,12 @@
         "pre": [
             "{% set start_date = tags.start_date %}",
             "{% if attribute(tags, 'building:start_date') %}{% set start_date = attribute(tags, 'building:start_date') %}{% endif %}",
+            "{# Deprecated tags #}",
+            "{% if not start_date and attribute(tags, 'building:age') %}{% set start_date = attribute(tags, 'building:age') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'building:year_built') %}{% set start_date = attribute(tags, 'building:year_built') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'building:buildyear') %}{% set start_date = attribute(tags, 'building:buildyear') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'year_built') %}{% set start_date = attribute(tags, 'year_built') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'building:year') %}{% set start_date = attribute(tags, 'building:year') %}{% endif %}",
             "",
             "{% if start_date %}",
             "  {% set value = start_date|osmParseDate %}",

From 176312b461692c23019a520058f065c4652420f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 17 Feb 2019 18:57:49 +0100
Subject: [PATCH 041/117] buildings-start_date: equals some common tagging
 mistakes

- 1910-1911 -> 1910..1911
- 191* -> 1910s
---
 buildings-start_date.json | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/buildings-start_date.json b/buildings-start_date.json
index fad9b95..326f0b5 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -26,6 +26,11 @@
             "{% if not start_date and attribute(tags, 'building:year') %}{% set start_date = attribute(tags, 'building:year') %}{% endif %}",
             "",
             "{% if start_date %}",
+            "  {# equalize tagging mistakes - need to add QA messages #}",
+            "  {# convert 1910-1911 to 1910..1911 #}{% set m = start_date|matches('^(\\d{4})-(\\d{4})$') %}{% if m %}{% set start_date = m[1] ~ '..' ~ m[2] %}{% endif %}",
+            "  {# convert 191* to 1910s #}{% set m = start_date|matches('^(\\d{3})\\*$') %}{% if m %}{% set start_date = m[1] ~ '0s' %}{% endif %}",
+            "",
+            "",
             "  {% set value = start_date|osmParseDate %}",
             "  {% if value and value[0] and value[1] %}",
             "    {% set value = (value[1] - value[0]) / 2 + value[0] %}",

From abcdb53d5e38d569499ca99c7d7dc4ddb2a10375 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 17 Feb 2019 19:05:02 +0100
Subject: [PATCH 042/117] buildings-type: use building=agriculture as group for
 agriculture

---
 buildings-type.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/buildings-type.json b/buildings-type.json
index 2fa2ff0..ea9eb4e 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -149,7 +149,7 @@
             ]
         },
         "agriculture": {
-            "name": "tag:landuse=agriculture",
+            "name": "tag:building=agriculture",
             "color": "#92e934",
             "types": [
                 "bakehouse",

From 67d5a443c7b67c32397a203ca4580505c43a03a3 Mon Sep 17 00:00:00 2001
From: Carlos Antonio Rivera <carlos.kapazao@gmail.com>
Date: Tue, 19 Feb 2019 10:07:42 +0000
Subject: [PATCH 043/117] Translated using Weblate (Spanish)

Currently translated at 98.9% (89 of 90 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/es/
---
 lang/es.json | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/lang/es.json b/lang/es.json
index 3742dc4..ff0f019 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -1,41 +1,41 @@
 {
     "category:administrative": "Áreas Administrativas",
     "category:agriculture": "Agricultura",
-    "category:alternative_amenities": "",
+    "category:alternative_amenities": "Instalaciones",
     "category:alternative_routes": "Rutas",
     "category:buildings": "Edificios",
     "category:buildings-entrances": "Entradas",
-    "category:buildings-figure-ground": "",
+    "category:buildings-figure-ground": "Diagrama figura-fondo",
     "category:buildings-height": "Altura del edificio",
     "category:buildings-start_date": "Edad del edificio",
     "category:buildings-type": "Tipos de edificio",
-    "category:car_amenities": "",
+    "category:car_amenities": "Instalaciones",
     "category:car_furniture": "Mobiliario Urbano",
     "category:car_maxspeed": "Velocidad máxima",
     "category:car_routes": "Rutas de coche",
-    "category:children": "",
+    "category:children": "Atracciones para niños",
     "category:coal": "Carbón",
     "category:communication": "Comunicación",
     "category:construction": "Sitios de construcción",
-    "category:craft": "",
+    "category:craft": "Artesano",
     "category:culture": "Cultura",
     "category:culture_religion": "Cultura y religión",
-    "category:cycle_amenities": "",
+    "category:cycle_amenities": "Instalaciones",
     "category:cycle_routes": "Rutas ciclistas",
     "category:education": "Servicios educativos",
     "category:electric_power": "Energía eléctrica",
     "category:emergency": "Servicios de emergencia",
     "category:energy": "Energía",
-    "category:financial": "",
+    "category:financial": "Financiera",
     "category:gastro": "Gastronomía",
     "category:gastro-smoking": "Gastronomía libre de humo",
     "category:health": "Salud",
     "category:hiking_routes": "Rutas de senderismo",
     "category:historic": "Histórico",
-    "category:index": "",
+    "category:index": "Índice",
     "category:infrastructure": "Infraestructura",
     "category:internet": "Acceso a Internet",
-    "category:law": "",
+    "category:law": "Ley",
     "category:leisure": "Ocio",
     "category:leisure_sport_shopping": "Ocio, deporte y compras",
     "category:memorial": "Memoriales",
@@ -50,13 +50,13 @@
     "category:phone": "Teléfono",
     "category:places": "Lugares",
     "category:places_geo": "Lugares",
-    "category:playgrounds": "",
-    "category:post": "",
+    "category:playgrounds": "Parque infantil",
+    "category:post": "Correos",
     "category:power_routes": "Rutas de energía",
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rutas",
     "category:pt:stops": "Paradas y estaciones",
-    "category:pt_amenities": "",
+    "category:pt_amenities": "Instalaciones",
     "category:public": "Servicios públicos",
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "Electrificación ferroviaria",
@@ -71,22 +71,22 @@
     "category:shop": "Compras",
     "category:special": "Especial",
     "category:sport": "Deportes",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Natación y baño",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Transporte",
-    "category:transport_alternative": "",
+    "category:transport_alternative": "Transporte alternativo",
     "category:transport_car": "Tráfico individual",
     "category:transport_cycle": "Ciclismo",
     "category:transport_pt": "Transporte público",
     "category:transport_walk": "",
-    "category:walk_amenities": "",
-    "category:waste": "",
+    "category:walk_amenities": "Instalaciones",
+    "category:waste": "Basura",
     "category:water": "Cuerpos de agua",
     "category:wikipedia": "Wikipedia",
-    "category:works": "Trabajos",
+    "category:works": "Fábricas",
     "category:xmas": "Navidades",
-    "date format not understood": "",
+    "date format not understood": "Formato de fecha incomprensible",
     "outdated feature": "Característica obsoleta",
     "xmas:outdated-warning": "¡La característica no se ha actualizado para la temporada actual! Por favor verifique y establezca la etiqueta 'xmas: lastcheck' a la fecha actual."
 }

From 850a362c3f8838c734ab578a174ec87f45af31bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 21 Feb 2019 10:41:11 +0100
Subject: [PATCH 044/117] Cuisine: add translateable string

---
 lang/en.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lang/en.json b/lang/en.json
index a804044..9b11ac6 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -88,5 +88,6 @@
     "category:xmas": "Christmas",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": "Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date."
+    "xmas:outdated-warning": "Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date.",
+    "Objects with diet information": "Objects with diet information"
 }

From 1ddb335367adaf9cb4399887f89f6ad8648d4578 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 21 Feb 2019 10:41:25 +0100
Subject: [PATCH 045/117] sport: typo

---
 sport.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sport.json b/sport.json
index 3b7931b..1133f89 100644
--- a/sport.json
+++ b/sport.json
@@ -56,7 +56,7 @@
         "motocross": "🏍",
         "motor": "🏎",
         "rugby": "🏉",
-        "rugby_leage": "🏉",
+        "rugby_league": "🏉",
         "rugby_union": "🏉",
         "running": "🏃",
         "sailing": "⛵",

From 07f8162d2304f42df4c8325c9d26063b4c066dcf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Babos?= <gabor.babos@gmail.com>
Date: Thu, 21 Feb 2019 19:33:05 +0000
Subject: [PATCH 046/117] Translated using Weblate (Hungarian)

Currently translated at 100.0% (91 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/hu/
---
 lang/hu.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lang/hu.json b/lang/hu.json
index 6b3f24e..31746ef 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -88,5 +88,6 @@
     "category:xmas": "Karácsony",
     "date format not understood": "Felismerhetetlen dátumformátum",
     "outdated feature": "Elavult információ",
-    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra."
+    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra.",
+    "Objects with diet information": "Étrend-információt tartalmazó objektumok"
 }

From 16d1d18b4cdc96cfc5e14fd63c6ce5e354fe2dba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 22 Feb 2019 19:04:28 +0100
Subject: [PATCH 047/117] children: typo

---
 children.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/children.json b/children.json
index 660515f..a786e61 100644
--- a/children.json
+++ b/children.json
@@ -112,7 +112,7 @@
                     "query": "nwr[shop=toys]"
                 },
                 "toilets": {
-                    "name": "{{ tagTrans('amenities', 'toilets diaper=yes') }}",
+                    "name": "{{ tagTrans('amenity', 'toilets diaper=yes') }}",
                     "query": "nwr[amenity=toilets][diaper]"
                 }
             }

From af154345787240899563f5cf914cfcb90d4002ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 22 Feb 2019 19:12:22 +0100
Subject: [PATCH 048/117] Health: healthcare tag may have multiple values

---
 health.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/health.json b/health.json
index 8c7c3dd..0bff69b 100644
--- a/health.json
+++ b/health.json
@@ -55,7 +55,7 @@
             "{% endif %}"
         ],
         "description": [
-            "{{ tagTrans(key, value) }}",
+            "{{ tagTransList(key, value) }}",
             "{% if attribute(tags, 'healthcare:speciality') %}",
             "-",
             "{{ tagTransList('healthcare:speciality', attribute(tags, 'healthcare:speciality')) }}",

From 3e0745b47cb820f6877ef8304eed5e9aa0205aef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 22 Feb 2019 20:52:22 +0100
Subject: [PATCH 049/117] Health: rewrite to group similar tags (e.g.
 amenity=hospital and healthcare=hospital)

---
 health.json | 111 ++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 87 insertions(+), 24 deletions(-)

diff --git a/health.json b/health.json
index 0bff69b..7f1119b 100644
--- a/health.json
+++ b/health.json
@@ -48,53 +48,116 @@
             "  {% set value = tags.emergency %}",
             "{% elseif tags.healthcare %}",
             "  {% set key = 'healthcare' %}",
-            "  {% set value = tags.healthcare %}",
+            "  {% set value = tags.healthcare|split(';')[0] %}",
             "{% else %}",
             "  {% set key = 'amenity' %}",
             "  {% set value = tags.amenity %}",
-            "{% endif %}"
+            "{% endif %}",
+            "{% set kv = key ~ '=' ~ value %}",
+            "{% set found = { sign: '' } %}",
+            "{% for data in const %}",
+            "  {% if kv in data.types %}{% set found = data %}{% endif %}",
+            "{% endfor %}"
         ],
         "description": [
-            "{{ tagTransList(key, value) }}",
+            "{{ tagTransList(key, attribute(tags, key)) }}",
             "{% if attribute(tags, 'healthcare:speciality') %}",
             "-",
             "{{ tagTransList('healthcare:speciality', attribute(tags, 'healthcare:speciality')) }}",
             "{% endif %}"
         ],
-        "markerSign": "{{ const[key ~ '=' ~ value]|raw }}"
+        "markerSign": "{{ found.sign|raw }}"
     },
     "info": [
         "<table>",
-        "{% for value, sign in const %}",
+        "{% for data in const %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ sign|raw }}</div></td>",
-        "    <td>{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}</td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>{{ tagTrans(data.types[0]|split('=')[0], data.types[0]|split('=')[1]) }}</td>",
         "  </tr>",
         "{% endfor %}",
         "</table>"
     ],
-    "const": {
-        "amenity=baby_hatch": "🚼",
-        "healthcare=blood_bank": "<img src='maki:blood-bank'>",
-        "healthcare=blood_donation": "<img src='maki:blood-bank'>",
-        "healthcare=clinic": "🏥",
-        "emergency=defibrillator": "<img src='maki:defibrillator'>",
-        "healthcare=dentist": "<img src='maki:dentist'>",
-        "healthcare=doctor": "<img src='maki:doctor'>",
-        "amenity=doctors": "<img src='maki:doctor'>",
-        "amenity=hospital": "🏥",
-        "healthcare=hospital": "🏥",
-        "amenity=nursing_home": "",
-        "amenity=pharmacy": "<img src='maki:pharmacy'>",
-        "amenity=social_facility": "",
-        "amenity=veterinary": "<img src='maki:veterinary'>"
-    },
+    "const": [
+        {
+            "types": [
+                "amenity=baby_hatch"
+            ],
+            "sign": "🚼"
+        },
+        {
+            "types": [
+                "healthcare=blood_bank"
+            ],
+            "sign": "<img data-src='maki:blood-bank'>"
+        },
+        {
+            "types": [
+                "healthcare=blood_donation"
+            ],
+            "sign": "<img data-src='maki:blood-bank'>"
+        },
+        {
+            "types": [
+                "healthcare=clinic"
+            ],
+            "sign": "🏥"
+        },
+        {
+            "types": [
+                "emergency=defibrillator"
+            ],
+            "sign": "<img data-src='maki:defibrillator'>"
+        },
+        {
+            "types": [
+                "healthcare=dentist"
+            ],
+            "sign": "<img data-src='maki:dentist'>"
+        },
+        {
+            "types": [
+                "healthcare=doctor",
+                "amenity=doctors"
+            ],
+            "sign": "<img data-src='maki:doctor'>"
+        },
+        {
+            "types": [
+                "amenity=hospital",
+                "healthcare=hospital"
+            ],
+            "sign": "🏥"
+        },
+        {
+            "types": [
+                "amenity=nursing_home"
+            ]
+        },
+        {
+            "types": [
+                "amenity=pharmacy"
+            ],
+            "sign": "<img data-src='maki:pharmacy'>"
+        },
+        {
+            "types": [
+                "amenity=social_facility"
+            ]
+        },
+        {
+            "types": [
+                "amenity=veterinary"
+            ],
+            "sign": "<img data-src='maki:veterinary'>"
+        }
+    ],
     "filter": {
         "type": {
             "name": "{{ trans('filter:type') }}",
             "show_default": "true",
             "type": "select",
-            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+            "values": "{% for data in const %}<option value=\"{{ data.types[0] }}\" query=\"({% for t in data.types %}nwr[{{ t }}];{% endfor %})\" minzoom=\"{{ data.zoom }}\">{{ tagTrans(data.types[0]) }}</option>{% endfor %}"
         }
     }
 }

From 262452cb90d6ae823a01f9e423e0d019ff9574ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 22 Feb 2019 22:59:11 +0100
Subject: [PATCH 050/117] health: add additional healthcare types; more icons

---
 health.json | 133 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 113 insertions(+), 20 deletions(-)

diff --git a/health.json b/health.json
index 7f1119b..57e3148 100644
--- a/health.json
+++ b/health.json
@@ -79,6 +79,52 @@
         "</table>"
     ],
     "const": [
+        {
+            "types": [
+                "amenity=hospital",
+                "healthcare=hospital"
+            ],
+            "sign": "<i class=\"fas fa-hospital-alt\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=clinic"
+            ],
+            "sign": "<i class=\"fas fa-hospital\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=centre"
+            ],
+            "sign": "<i class=\"far fa-hospital\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=doctor",
+                "amenity=doctors"
+            ],
+            "sign": "<img data-src='maki:doctor'>"
+        },
+        {
+            "types": [
+                "amenity=pharmacy",
+                "healthcare=pharmacy"
+            ],
+            "sign": "<img data-src='maki:pharmacy'>"
+        },
+        {
+            "types": [
+                "emergency=defibrillator"
+            ],
+            "sign": "<img data-src='maki:defibrillator'>"
+        },
+        {
+            "types": [
+                "healthcare=dentist",
+                "amenity=dentist"
+            ],
+            "sign": "<img data-src='maki:dentist'>"
+        },
         {
             "types": [
                 "amenity=baby_hatch"
@@ -99,57 +145,104 @@
         },
         {
             "types": [
-                "healthcare=clinic"
+                "amenity=nursing_home"
+            ]
+        },
+        {
+            "types": [
+                "amenity=social_facility"
             ],
-            "sign": "🏥"
+            "sign": "<i class=\"fas fa-users\"></i>"
         },
         {
             "types": [
-                "emergency=defibrillator"
+                "amenity=veterinary"
             ],
-            "sign": "<img data-src='maki:defibrillator'>"
+            "sign": "<img data-src='maki:veterinary'>"
         },
         {
             "types": [
-                "healthcare=dentist"
+                "healthcare=physiotherapist"
             ],
-            "sign": "<img data-src='maki:dentist'>"
+            "sign": "<i class=\"fas fa-user-injured\"></i>"
         },
         {
             "types": [
-                "healthcare=doctor",
-                "amenity=doctors"
+                "healthcare=psychotherapist"
             ],
-            "sign": "<img data-src='maki:doctor'>"
+            "sign": "<i class=\"fas fa-couch\"></i>"
         },
         {
             "types": [
-                "amenity=hospital",
-                "healthcare=hospital"
+                "healthcare=alternative"
             ],
-            "sign": "🏥"
+            "sign": ""
         },
         {
             "types": [
-                "amenity=nursing_home"
-            ]
+                "healthcare=audiologist"
+            ],
+            "sign": "<i class=\"fas fa-headphones-alt\"></i>"
         },
         {
             "types": [
-                "amenity=pharmacy"
+                "healthcare=birthing_center"
             ],
-            "sign": "<img data-src='maki:pharmacy'>"
+            "sign": "<i class=\"fas fa-baby\"></i>"
         },
         {
             "types": [
-                "amenity=social_facility"
-            ]
+                "healthcare=dialysis"
+            ],
+            "sign": ""
         },
         {
             "types": [
-                "amenity=veterinary"
+                "healthcare=laboratory"
             ],
-            "sign": "<img data-src='maki:veterinary'>"
+            "sign": "<i class=\"fas fa-vials\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=midwife"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=nutrition_counseling"
+            ],
+            "sign": "<i class=\"fas fa-carrot\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=occupational_therapist"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=optometrist"
+            ],
+            "sign": "<i class=\"fas fa-eye\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=podiatrist"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=rehabilitation"
+            ],
+            "sign": "<i class=\"fas fa-crutch\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=speech_therapist"
+            ],
+            "sign": ""
         }
     ],
     "filter": {

From d75a4dc6afc34838723c1d2d23e548ab964b8592 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 23 Feb 2019 07:38:54 +0100
Subject: [PATCH 051/117] office: bugfix, use translations in type filter

---
 office.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/office.json b/office.json
index ddefd6e..c40cef7 100644
--- a/office.json
+++ b/office.json
@@ -49,7 +49,7 @@
             "name": "{{ trans('filter:type') }}",
             "show_default": "true",
             "type": "select",
-            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans('office', k) }}</option>{% endfor %}"
         }
     }
 }

From 521972998a5403bbb5c12502a9422d65376f55b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 23 Feb 2019 22:34:15 +0100
Subject: [PATCH 052/117] tourism_services: translate filter

---
 tourism_services.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tourism_services.json b/tourism_services.json
index 57b77d2..0a7f5dd 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -147,7 +147,7 @@
             "name": "{{ trans('filter:type') }}",
             "show_default": "true",
             "type": "select",
-            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ trans('tag:' ~ k) }}</option>{% endfor %}"
         }
     }
 }

From 2359988994e318396a0a841f8536f3ad69930b3e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 23 Feb 2019 22:35:44 +0100
Subject: [PATCH 053/117] pt: show type filter by default; translation

---
 pt.json | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pt.json b/pt.json
index 267ca54..c7dde53 100644
--- a/pt.json
+++ b/pt.json
@@ -267,6 +267,8 @@
     "filter": {
         "route": {
             "type": "select",
+            "show_default": "true",
+            "valueName": "{{ tagTrans('route', value) }}",
             "values": [
                 "aerialway",
                 "bus",

From 46a982b9ab3b8c8910e48ef3bf27d25ca8c2cf15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 23 Feb 2019 22:44:44 +0100
Subject: [PATCH 054/117] pt: use data-src on maki icons

---
 pt.json | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/pt.json b/pt.json
index c7dde53..ff9d2b4 100644
--- a/pt.json
+++ b/pt.json
@@ -224,12 +224,12 @@
     ],
     "const": {
         "train": {
-            "sign": "<img src='maki:rail?fill=#ffffff'>",
+            "sign": "<img data-src='maki:rail?fill=#ffffff'>",
             "zoom": 12,
             "color": "#00007f"
         },
         "subway": {
-            "sign": "<img src='maki:rail-metro?fill=#ffffff'>",
+            "sign": "<img data-src='maki:rail-metro?fill=#ffffff'>",
             "zoom": 12,
             "color": "#0000ff"
         },
@@ -239,27 +239,27 @@
             "color": "#006f8f"
         },
         "tram": {
-            "sign": "<img src='maki:rail-light?fill=#ffffff'>",
+            "sign": "<img data-src='maki:rail-light?fill=#ffffff'>",
             "zoom": 12,
             "color": "#7f007f"
         },
         "bus": {
-            "sign": "<img src='maki:bus?fill=#ffffff'>",
+            "sign": "<img data-src='maki:bus?fill=#ffffff'>",
             "zoom": 12,
             "color": "#af0000"
         },
         "trolleybus": {
-            "sign": "<img src='maki:bus?fill=#ffffff'>",
+            "sign": "<img data-src='maki:bus?fill=#ffffff'>",
             "zoom": 12,
             "color": "#af3f00"
         },
         "aerialway": {
-            "sign": "<img src='maki:aerialway?fill=#ffffff'>",
+            "sign": "<img data-src='maki:aerialway?fill=#ffffff'>",
             "zoom": 12,
             "color": "#00aaaa"
         },
         "ferry": {
-            "sign": "<img src='maki:ferry?fill=#ffffff'>",
+            "sign": "<img data-src='maki:ferry?fill=#ffffff'>",
             "zoom": 12,
             "color": "#007fff"
         }

From c8fea687d7d98fc960d1d854fc0fc2208500b01a Mon Sep 17 00:00:00 2001
From: Shu Higashi <higa432@gmail.com>
Date: Sun, 24 Feb 2019 16:01:16 +0000
Subject: [PATCH 055/117] Translated using Weblate (Japanese)

Currently translated at 92.3% (84 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/ja/
---
 lang/ja.json | 83 ++++++++++++++++++++++++++--------------------------
 1 file changed, 42 insertions(+), 41 deletions(-)

diff --git a/lang/ja.json b/lang/ja.json
index 478c538..30c9061 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -1,92 +1,93 @@
 {
-    "category:administrative": "",
+    "category:administrative": "行政界",
     "category:agriculture": "農業",
     "category:alternative_amenities": "生活環境",
     "category:alternative_routes": "ルート",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:buildings": "建物",
+    "category:buildings-entrances": "エントランス",
     "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-height": "建物の高さ",
+    "category:buildings-start_date": "築年数",
+    "category:buildings-type": "建物の種類",
     "category:car_amenities": "生活環境",
     "category:car_furniture": "街路設置公共物",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
-    "category:children": "",
-    "category:coal": "",
+    "category:car_maxspeed": "最高速度",
+    "category:car_routes": "車のルート",
+    "category:children": "子ども用施設",
+    "category:coal": "石炭",
     "category:communication": "交流",
     "category:construction": "工事中",
-    "category:craft": "",
+    "category:craft": "職人",
     "category:culture": "文化",
     "category:culture_religion": "文化",
-    "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:cycle_amenities": "アメニティ",
+    "category:cycle_routes": "自転車ルート",
     "category:education": "教育サービス",
     "category:electric_power": "電力",
     "category:emergency": "緊急サービス",
-    "category:energy": "",
+    "category:energy": "エネルギー",
     "category:financial": "金融",
     "category:gastro": "食べ物",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "禁煙の飲食店",
     "category:health": "健康",
-    "category:hiking_routes": "",
-    "category:historic": "記念",
+    "category:hiking_routes": "ハイキングルート",
+    "category:historic": "歴史",
     "category:index": "",
-    "category:infrastructure": "",
+    "category:infrastructure": "インフラ",
     "category:internet": "インターネット接続",
-    "category:law": "",
+    "category:law": "法令",
     "category:leisure": "レジャー",
     "category:leisure_sport_shopping": "レジャー",
-    "category:memorial": "",
+    "category:memorial": "記念碑",
     "category:military": "軍事",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "マウンテンバイクのルート",
     "category:natural": "自然地層",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "オフィス",
+    "category:oil_gas": "石油と天然ガス",
+    "category:organisations": "組織",
     "category:other": "その他",
-    "category:outdoor": "",
+    "category:outdoor": "アウトドア活動",
     "category:phone": "電話",
     "category:places": "場所",
     "category:places_geo": "場所",
-    "category:playgrounds": "",
+    "category:playgrounds": "遊び場",
     "category:post": "郵便",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:power_routes": "電線のルート",
+    "category:pt": "公共交通地図",
+    "category:pt:routes": "ルート",
     "category:pt:stops": "停留所と駅",
     "category:pt_amenities": "生活環境",
     "category:public": "公共サービス",
     "category:railway": "鉄道",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-electrification": "鉄道の電力",
+    "category:railway-infrastructure": "鉄道インフラ",
+    "category:railway-maxspeed": "鉄道の最高速度",
+    "category:railway-routes": "鉄道ルート",
     "category:religion": "宗教",
     "category:renewables": "",
     "category:residential": "住居エリア",
     "category:resources": "",
     "category:services": "サービス",
     "category:shop": "ショッピング",
-    "category:special": "",
+    "category:special": "特別",
     "category:sport": "スポーツ",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "水泳と入浴",
     "category:tourism_attractions": "観光",
     "category:tourism_services": "観光",
     "category:transport": "輸送",
     "category:transport_alternative": "その他交通 (サイクリング、ハイキング、...)",
     "category:transport_car": "個人輸送機関",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "サイクリング",
     "category:transport_pt": "公共輸送",
-    "category:transport_walk": "",
-    "category:walk_amenities": "",
+    "category:transport_walk": "ウォーキング",
+    "category:walk_amenities": "アメニティ",
     "category:waste": "処理場",
     "category:water": "",
-    "category:wikipedia": "",
+    "category:wikipedia": "ウィキペディア",
     "category:works": "工場",
-    "category:xmas": "",
+    "category:xmas": "クリスマス",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "xmas:outdated-warning": "今のシーズンは地物が更新されていません! チェックして現在の日付に'xmas:lastcheck' タグをセットしてください。",
+    "Objects with diet information": "食事制限情報のあるオブジェクト"
 }

From 2161e1c7d3c1b40fa0fac4a264f72f34cfcfe628 Mon Sep 17 00:00:00 2001
From: Michel Stuyts <michel.stuyts@gmail.com>
Date: Mon, 25 Feb 2019 07:57:16 +0000
Subject: [PATCH 056/117] Translated using Weblate (Dutch)

Currently translated at 97.8% (89 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/nl/
---
 lang/nl.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lang/nl.json b/lang/nl.json
index 564eb9a..11c60ee 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -88,5 +88,6 @@
     "category:xmas": "Kerstmis",
     "date format not understood": "Datumformaat onbekend",
     "outdated feature": "Achterhaalde informatie",
-    "xmas:outdated-warning": "Object werd niet geactualiseerd voor het huidige seizoen! Controleer en zet de tag 'xmas:lastcheck' op de huidige datum alstublieft."
+    "xmas:outdated-warning": "Object werd niet geactualiseerd voor het huidige seizoen! Controleer en zet de tag 'xmas:lastcheck' op de huidige datum alstublieft.",
+    "Objects with diet information": "Objecten met dieet informatie"
 }

From e3e99f5d610c1d1cf717ef6661b9e670dd1be05a Mon Sep 17 00:00:00 2001
From: Shu Higashi <higa432@gmail.com>
Date: Sun, 24 Feb 2019 23:54:33 +0000
Subject: [PATCH 057/117] Translated using Weblate (Japanese)

Currently translated at 93.4% (85 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/ja/
---
 lang/ja.json | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lang/ja.json b/lang/ja.json
index 30c9061..52aff42 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -15,11 +15,11 @@
     "category:car_routes": "車のルート",
     "category:children": "子ども用施設",
     "category:coal": "石炭",
-    "category:communication": "交流",
+    "category:communication": "情報通信",
     "category:construction": "工事中",
     "category:craft": "職人",
     "category:culture": "文化",
-    "category:culture_religion": "文化",
+    "category:culture_religion": "文化と宗教",
     "category:cycle_amenities": "アメニティ",
     "category:cycle_routes": "自転車ルート",
     "category:education": "教育サービス",
@@ -35,7 +35,7 @@
     "category:index": "",
     "category:infrastructure": "インフラ",
     "category:internet": "インターネット接続",
-    "category:law": "法令",
+    "category:law": "法律",
     "category:leisure": "レジャー",
     "category:leisure_sport_shopping": "レジャー",
     "category:memorial": "記念碑",
@@ -82,7 +82,7 @@
     "category:transport_walk": "ウォーキング",
     "category:walk_amenities": "アメニティ",
     "category:waste": "処理場",
-    "category:water": "",
+    "category:water": "水系",
     "category:wikipedia": "ウィキペディア",
     "category:works": "工場",
     "category:xmas": "クリスマス",

From 54863407eafb66a67e758efc642c58f5be86c0f2 Mon Sep 17 00:00:00 2001
From: Weblate Admin <weblate@openstreetbrowser.org>
Date: Mon, 25 Feb 2019 12:17:15 +0000
Subject: [PATCH 058/117] Translated using Weblate (German)

Currently translated at 96.7% (88 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/de/
---
 lang/de.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/de.json b/lang/de.json
index 1d6ef25..ea1354f 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -35,7 +35,7 @@
     "category:index": "",
     "category:infrastructure": "Infrastruktur",
     "category:internet": "Internetzugang",
-    "category:law": "",
+    "category:law": "Juristische Institutionen",
     "category:leisure": "Freizeit",
     "category:leisure_sport_shopping": "Freizeit, Sport und Einkauf",
     "category:memorial": "Denkmäler",

From e23dc7800a305fdc75d144746c024b618f013112 Mon Sep 17 00:00:00 2001
From: Bernd <wopfel+weblate+openstreetbrowser@gmail.com>
Date: Tue, 26 Feb 2019 15:38:46 +0000
Subject: [PATCH 059/117] Translated using Weblate (German)

Currently translated at 97.8% (89 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/de/
---
 lang/de.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/de.json b/lang/de.json
index ea1354f..178bcf8 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -52,7 +52,7 @@
     "category:places_geo": "Orte",
     "category:playgrounds": "Spielplatz",
     "category:post": "Post",
-    "category:power_routes": "",
+    "category:power_routes": "Hochspannungsverbindungen",
     "category:pt": "ÖV Karte",
     "category:pt:routes": "Routen",
     "category:pt:stops": "Haltestellen",

From 835582202f45bc9e8269f3b6154fb27d8970f1a5 Mon Sep 17 00:00:00 2001
From: Cybereric <cartosm@free.fr>
Date: Wed, 27 Feb 2019 18:44:39 +0000
Subject: [PATCH 060/117] Translated using Weblate (French)

Currently translated at 95.6% (87 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/fr/
---
 lang/fr.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lang/fr.json b/lang/fr.json
index 6ee2bfe..c790163 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -88,5 +88,6 @@
     "category:xmas": "Noël",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": "Cet élément n'a pas été mis à jour pour cette saison ! Veuillez vérifier son existence et régler la valeur de \"xmas:lastcheck\" à la date actuelle."
+    "xmas:outdated-warning": "Cet élément n'a pas été mis à jour pour cette saison ! Veuillez vérifier son existence et régler la valeur de \"xmas:lastcheck\" à la date actuelle.",
+    "Objects with diet information": "Objets avec information de régime alimentaire"
 }

From 51f5c2681e0e705d31b76fc24162834449d2f38a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 25 Feb 2019 22:14:59 +0100
Subject: [PATCH 061/117] memorial: rewrite (unfin)

---
 img/blue_plaque.svg | 104 ++++++++++++++++++++++++++++++++++++++++++++
 img/plaque.svg      | 104 ++++++++++++++++++++++++++++++++++++++++++++
 memorial.json       |  77 ++++++++++++++++++++------------
 3 files changed, 257 insertions(+), 28 deletions(-)
 create mode 100644 img/blue_plaque.svg
 create mode 100644 img/plaque.svg

diff --git a/img/blue_plaque.svg b/img/blue_plaque.svg
new file mode 100644
index 0000000..ffc85b7
--- /dev/null
+++ b/img/blue_plaque.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   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:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="15"
+   height="15"
+   viewBox="0 0 15 15"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="blue_plaque.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="35.4"
+     inkscape:cx="7.5"
+     inkscape:cy="7.5"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1366"
+     inkscape:window-height="712"
+     inkscape:window-x="0"
+     inkscape:window-y="28"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4136"
+       width="10"
+       height="14"
+       x="2.5"
+       y="0.5" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157"
+       width="10"
+       height="9"
+       x="2.5"
+       y="3" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157-3"
+       width="5"
+       height="14"
+       x="5"
+       y="0.5" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.65248108px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4973402;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="2.9953218"
+       y="6.4278626"
+       id="text4520"
+       transform="scale(0.99468037,1.0053481)"><tspan
+         sodipodi:role="line"
+         id="tspan4518"
+         x="2.9953218"
+         y="6.4278626"
+         style="stroke-width:0.4973402">Ab Cde</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:1.60000002px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="2.2923846"
+       y="9.1671877"
+       id="text4524"><tspan
+         sodipodi:role="line"
+         id="tspan4522"
+         x="2.2923846"
+         y="9.1671877">Lorem ipsum</tspan></text>
+  </g>
+</svg>
diff --git a/img/plaque.svg b/img/plaque.svg
new file mode 100644
index 0000000..5aa441c
--- /dev/null
+++ b/img/plaque.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   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:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="15"
+   height="15"
+   viewBox="0 0 15 15"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="plaque.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="35.4"
+     inkscape:cx="7.5"
+     inkscape:cy="7.5"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1366"
+     inkscape:window-height="712"
+     inkscape:window-x="0"
+     inkscape:window-y="28"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4136"
+       width="10"
+       height="14"
+       x="2.5"
+       y="0.5" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157"
+       width="10"
+       height="9"
+       x="2.5"
+       y="3" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157-3"
+       width="5"
+       height="14"
+       x="5"
+       y="0.5" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.65248108px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4973402;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="2.9953218"
+       y="6.4278626"
+       id="text4520"
+       transform="scale(0.99468037,1.0053481)"><tspan
+         sodipodi:role="line"
+         id="tspan4518"
+         x="2.9953218"
+         y="6.4278626"
+         style="stroke-width:0.4973402">Ab Cde</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:1.60000002px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="2.2923846"
+       y="9.1671877"
+       id="text4524"><tspan
+         sodipodi:role="line"
+         id="tspan4522"
+         x="2.2923846"
+         y="9.1671877">Lorem ipsum</tspan></text>
+  </g>
+</svg>
diff --git a/memorial.json b/memorial.json
index bd5b942..5197f05 100644
--- a/memorial.json
+++ b/memorial.json
@@ -25,14 +25,33 @@
     },
     "feature": {
         "pre": [
-            "{% set value = tags.historic %}",
-            "{% if tags.historic == 'memorial' and tags.memorial %}",
-            "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
-            "{% elseif tags.historic == 'memorial' and attribute(tags, 'memorial:type') %}",
-            "  {% set value = tags.historic ~ ' memorial=' ~ attribute(tags, 'memorial:type') %}",
+            "{% set memtype = 'yes' %}",
+            "{% if tags.historic == 'monument' and tags.monument == 'war_monument' %}",
+            "  {% set memtype = 'war_memorial' %}",
+            "{% elseif tags.memorial %}",
+            "  {% set memtype = tags.memorial %}",
+            "{% elseif attribute(tags, 'memorial:type') %}",
+            "  {% set memtype = attribute(tags, 'memorial:type') %}",
+            "{% elseif attribute(tags, 'monument') %}",
+            "  {% set memtype = attribute(tags, 'monument') %}",
             "{% endif %}"
         ],
-        "description": "{{ tagTransList('historic', value) }}",
+        "description": [
+            "{% if tags.historic == 'monument' and tags.monument == 'war_monument' %}",
+            "  {{ tagTrans('historic', 'monument monument=war_monument') }}",
+            "{% elseif memtype == 'yes' %}",
+            "  {{ tagTrans('historic', tags.historic) }}",
+            "{% else %}",
+            "  {{ tagTrans('historic', 'memorial memorial=' ~ memtype) }}",
+            "{% endif %}",
+            "",
+            "{% if tags.historic == 'monument' %}",
+            "  ({{ tagTrans('historic', 'monument') }})",
+            "{% endif %}"
+        ],
+        "priority": [
+            "{% if tags.historic == 'monument' %}0[% else %}1{% endif %}"
+        ],
         "body": [
             "<ul>",
             "{% if tags.inscription %}",
@@ -73,7 +92,7 @@
             "{% endif %}",
             "</ul>"
         ],
-        "markerSign": "{{ const[value].sign|raw }}"
+        "markerSign": "{% if memtype == 'yes' %}<img data-src=\"maki:monument\">{% else %}{{ const[memtype].sign|raw }}{% endif %}"
     },
     "info": [
         "<table>",
@@ -87,44 +106,46 @@
         "{% endfor %}",
         "{% if 14 <= map.zoom %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'></div></td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'><img src='maki:monument'></div></td>",
         "    <td>{{ trans('other') }}</td>",
         "  </tr>",
         "{% endif %}",
         "</table>"
     ],
-    "const": {
+    "const1": {
+        "yes": {
+            "sign": "<img data-src='maki:monument?size=15'>",
+            "zoom": 11
+        },
         "memorial": {
-            "sign": "<span  style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
+            "sign": "<span style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
+            "zoom": 14
+        }
+    },
+    "const": {
+        "plaque": {
+            "sign": "<img data-src='img/plaque.svg'>",
             "zoom": 14
         },
-        "memorial memorial=plaque": {
+        "blue_plaque": {
+            "sign": "<img data-src='img/blue_plaque.svg'>",
+            "zoom": 14
+        },
+        "statue": {
             "sign": "",
             "zoom": 14
         },
-        "monument": {
-            "sign": "<img data-src='maki:monument?size=15'>",
-            "zoom": 11
+        "war_memorial": {
+            "sign": "<img data-src='maki:horse-riding'>",
+            "zoom": 14
         }
     },
     "filter": {
         "type": {
             "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
             "type": "select",
-            "values": {
-                "monument": {
-                    "name": "{{ tagTrans('historic', 'monument') }}",
-                    "query": "nwr[historic=monument]"
-                },
-                "memorial": {
-                    "name": "{{ tagTrans('historic', 'memorial') }}",
-                    "query": "nwr[historic=memorial]"
-                },
-                "stolperstein": {
-                    "name": "{{ tagTrans('historic', 'memorial memorial=stolperstein') }}",
-                    "query": "(nwr[memorial=stolperstein];nwr[\"memorial:type\"=stolperstein];)"
-                }
-            }
+            "values": "{% for k, v in const %}<option value='{{ k }}' query='(nwr[memorial=\"{{ k }}\"];nwr[\"memorial:type\"=\"{{ k }}\"];nwr[\"monument\"=\"{{ k }}\"];{% if k == 'war_memorial' %}nwr[\"monument\"=\"war_monument\"];{% endif %})'>{{ tagTrans('historic', 'memorial memorial=' ~ k) }}</option>{% endfor %}"
         },
         "conflict": {
             "key": "memorial:conflict",

From 13c9999cf79702dfe684672f3056a976708253f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 4 Mar 2019 21:24:09 +0100
Subject: [PATCH 062/117] memorial: more types, add alias, different
 translation

---
 memorial.json | 94 +++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 68 insertions(+), 26 deletions(-)

diff --git a/memorial.json b/memorial.json
index 5197f05..c61991c 100644
--- a/memorial.json
+++ b/memorial.json
@@ -26,27 +26,32 @@
     "feature": {
         "pre": [
             "{% set memtype = 'yes' %}",
-            "{% if tags.historic == 'monument' and tags.monument == 'war_monument' %}",
-            "  {% set memtype = 'war_memorial' %}",
-            "{% elseif tags.memorial %}",
+            "{% if tags.memorial %}",
             "  {% set memtype = tags.memorial %}",
             "{% elseif attribute(tags, 'memorial:type') %}",
             "  {% set memtype = attribute(tags, 'memorial:type') %}",
             "{% elseif attribute(tags, 'monument') %}",
             "  {% set memtype = attribute(tags, 'monument') %}",
-            "{% endif %}"
+            "{% elseif attribute(tags, 'memorial_type') %}",
+            "  {% set memtype = attribute(tags, 'memorial_type') %}",
+            "{% endif %}",
+            "",
+            "{% set memgroup = memtype %}",
+            "{% for value, data in const %}",
+            "{% if memtype in data.alias %}",
+            "{% set memgroup = value %}",
+            "{% endif %}",
+            "{% endfor %}"
         ],
         "description": [
-            "{% if tags.historic == 'monument' and tags.monument == 'war_monument' %}",
-            "  {{ tagTrans('historic', 'monument monument=war_monument') }}",
-            "{% elseif memtype == 'yes' %}",
-            "  {{ tagTrans('historic', tags.historic) }}",
-            "{% else %}",
-            "  {{ tagTrans('historic', 'memorial memorial=' ~ memtype) }}",
+            "{% if memtype != 'yes' and tags.historic == 'monument' %}",
+            "  {{ tagTrans('historic', 'monument') }}",
             "{% endif %}",
             "",
-            "{% if tags.historic == 'monument' %}",
-            "  ({{ tagTrans('historic', 'monument') }})",
+            "{% if memtype == 'yes' %}",
+            "  {{ tagTrans('historic', tags.historic) }}",
+            "{% else %}",
+            "  {{ tagTrans('memorial', memtype) }}",
             "{% endif %}"
         ],
         "priority": [
@@ -92,7 +97,7 @@
             "{% endif %}",
             "</ul>"
         ],
-        "markerSign": "{% if memtype == 'yes' %}<img data-src=\"maki:monument\">{% else %}{{ const[memtype].sign|raw }}{% endif %}"
+        "markerSign": "{{ const[memgroup].sign|raw }}"
     },
     "info": [
         "<table>",
@@ -100,7 +105,7 @@
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('historic', value) }}</td>",
+        "    <td>{{ tagTrans('memorial', value) }}{% for alias in data.alias %}, {{ tagTrans('memorial', alias) }}{% endfor %}</td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
@@ -112,18 +117,9 @@
         "{% endif %}",
         "</table>"
     ],
-    "const1": {
-        "yes": {
-            "sign": "<img data-src='maki:monument?size=15'>",
-            "zoom": 11
-        },
-        "memorial": {
-            "sign": "<span style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
-            "zoom": 14
-        }
-    },
     "const": {
         "plaque": {
+            "alias": [ "plate" ],
             "sign": "<img data-src='img/plaque.svg'>",
             "zoom": 14
         },
@@ -132,12 +128,58 @@
             "zoom": 14
         },
         "statue": {
-            "sign": "",
+            "sign": "<i class=\"fas fa-female\"></i>",
             "zoom": 14
         },
         "war_memorial": {
+            "alias": [ "war_monument" ],
             "sign": "<img data-src='maki:horse-riding'>",
             "zoom": 14
+        },
+        "stolperstein": {
+            "sign": "",
+            "zoom": 14
+        },
+        "stone": {
+            "sign": "",
+            "zoom": 14
+        },
+        "bust": {
+            "alias": [ "person" ],
+            "sign": "<i class=\"fas fa-user-alt\"></i>",
+            "zoom": 14
+        },
+        "stele": {
+            "alias": [ "obelisk" ],
+            "sign": "",
+            "zoom": 14
+        },
+        "sculpture": {
+            "sign": "",
+            "zoom": 14
+        },
+        "ghost_bike": {
+            "sign": "<i style=\"color: white;\" class=\"fas fa-bicycle\"></i>",
+            "zoom": 14
+        },
+        "vehicle": {
+            "alias": [ "tank" ],
+            "sign": "<i class=\"fas fa-car\"></i>",
+            "zoom": 14
+        },
+        "cross": {
+            "sign": "<i class=\"fas fa-cross\"></i>",
+            "zoom": 14
+        },
+        "flood_mark": {
+            "alias": [ "high_water_mark" ],
+            "sign": "<i class=\"fas fa-water\"></i>",
+            "zoom": 14
+        },
+        "grave": {
+            "alias": [ "graveyard" ],
+            "sign": "",
+            "zoom": 14
         }
     },
     "filter": {
@@ -145,7 +187,7 @@
             "name": "{{ trans('filter:type') }}",
             "show_default": "true",
             "type": "select",
-            "values": "{% for k, v in const %}<option value='{{ k }}' query='(nwr[memorial=\"{{ k }}\"];nwr[\"memorial:type\"=\"{{ k }}\"];nwr[\"monument\"=\"{{ k }}\"];{% if k == 'war_memorial' %}nwr[\"monument\"=\"war_monument\"];{% endif %})'>{{ tagTrans('historic', 'memorial memorial=' ~ k) }}</option>{% endfor %}"
+            "values": "{% for k, v in const %}<option value='{{ k }}' query='nwr[~\"^(memorial|memorial:type|memorial_type|monument)$\"~\"^({{ k }}{% for alias in v.alias %}|{{ alias }}{% endfor %})$\"]'>{{ tagTrans('memorial', k) }}{% for alias in v.alias %}, {{ tagTrans('memorial', alias) }}{% endfor %}</option>{% endfor %}"
         },
         "conflict": {
             "key": "memorial:conflict",

From e1850dafc8fb52fae723c5d02c20e7f4e0b927ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Tue, 5 Mar 2019 14:06:41 +0100
Subject: [PATCH 063/117] memorial: Always show memorial/monument

---
 memorial.json | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/memorial.json b/memorial.json
index c61991c..5c75c4b 100644
--- a/memorial.json
+++ b/memorial.json
@@ -44,14 +44,10 @@
             "{% endfor %}"
         ],
         "description": [
-            "{% if memtype != 'yes' and tags.historic == 'monument' %}",
-            "  {{ tagTrans('historic', 'monument') }}",
-            "{% endif %}",
+            "{{ tagTrans('historic', tags.historic) }}",
             "",
-            "{% if memtype == 'yes' %}",
-            "  {{ tagTrans('historic', tags.historic) }}",
-            "{% else %}",
-            "  {{ tagTrans('memorial', memtype) }}",
+            "{% if memtype != 'yes' %}",
+            "  ({{ tagTrans('memorial', memtype) }})",
             "{% endif %}"
         ],
         "priority": [
@@ -111,7 +107,7 @@
         "{% endfor %}",
         "{% if 14 <= map.zoom %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'><img src='maki:monument'></div></td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'></div></td>",
         "    <td>{{ trans('other') }}</td>",
         "  </tr>",
         "{% endif %}",

From 57c3557bf587c8c3c773831554e5e590845822d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 6 Mar 2019 09:44:32 +0100
Subject: [PATCH 064/117] shop: prepare 4.7: sort by name; other last

---
 shop.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/shop.json b/shop.json
index bab0dd5..d96e813 100644
--- a/shop.json
+++ b/shop.json
@@ -186,7 +186,8 @@
             "name": "{{ trans('filter:type') }}",
             "type": "select",
             "show_default": "true",
-            "values": "{% set list = [] %}{% for k, v in const.shops %}{% for t in v.types %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('shop', t) }}</option>{% endfor %}{% endfor %}<option value='other' query='nwr[shop][shop!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "values": "{% set list = [] %}{% for k, v in const.shops %}{% for t in v.types %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('shop', t) }}</option>{% endfor %}{% endfor %}<option weight='1' value='other' query='nwr[shop][shop!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "sort": "natsort",
             "op": "has"
         }
     }

From 3929a5d8ae1eeb758a3c65511f0382bf5fee8507 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 6 Mar 2019 14:04:47 +0100
Subject: [PATCH 065/117] shop: add more types

---
 shop.json | 177 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 166 insertions(+), 11 deletions(-)

diff --git a/shop.json b/shop.json
index d96e813..c19ffc6 100644
--- a/shop.json
+++ b/shop.json
@@ -26,19 +26,25 @@
     "feature": {
         "pre": "{% set shop0 = tags.shop|split(';')[0] %}{% set current = const.default %}{% for v in const.shops %}{% if shop0 in v.types %}{% set current = v %}{% endif %}{% endfor %}",
         "description": "{{ tagTransList('shop', tags.shop) }}",
-        "markerSign": "{% set c = current.sign %}{% if c|slice(0, 3) == 'fa-' %}<i class=\"fa {{ c }}\"></i>{% else %}{{ c|raw }}{% endif %}"
+        "markerSign": "{% set c = current.sign %}{% if c|slice(0, 3) == 'fa-' %}<i class=\"fa {{ c }}\"></i>{% elseif c|slice(0, 5) == 'maki:' %}<img data-src=\"{{ c }}\">{% else %}{{ c|raw }}{% endif %}"
     },
     "const": {
         "default": {
             "sign": "fa-shopping-bag"
         },
         "shops": [
+            {
+                "types": [
+                    "vacant"
+                ],
+                "sign": "fa-times"
+            },
             {
                 "types": [
                     "alcohol",
                     "beverages"
                 ],
-                "sign": "fa-beer"
+                "sign": "fa-wine-bottle"
             },
             {
                 "types": [
@@ -49,7 +55,8 @@
             {
                 "types": [
                     "bag",
-                    "general"
+                    "general",
+                    "variety_store"
                 ],
                 "sign": "fa-shopping-bag"
             },
@@ -65,7 +72,13 @@
                 "types": [
                     "bicycle"
                 ],
-                "sign": "&#128690;"
+                "sign": "fa-bicycle"
+            },
+            {
+                "types": [
+                    "motorcycle"
+                ],
+                "sign": "fa-motorcycle"
             },
             {
                 "types": [
@@ -75,10 +88,17 @@
                     "fashion",
                     "leather",
                     "sewing",
-                    "tailor"
+                    "tailor",
+                    "dry_cleaning"
                 ],
                 "sign": "&#128090;"
             },
+            {
+                "types": [
+                    "sea_food"
+                ],
+                "sign": "fa-fish"
+            },
             {
                 "types": [
                     "butcher",
@@ -115,9 +135,22 @@
             },
             {
                 "types": [
-                    "electronics"
+                    "electronics",
+                    "computer"
                 ],
-                "sign": "&#128250;"
+                "sign": "fa-tv"
+            },
+            {
+                "types": [
+                    "electrical"
+                ],
+                "sign": "fa-bolt"
+            },
+            {
+                "types": [
+                    "lighting"
+                ],
+                "sign": "fa-bulb"
             },
             {
                 "types": [
@@ -127,7 +160,14 @@
             },
             {
                 "types": [
-                    "florist"
+                    "toys"
+                ],
+                "sign": "fa-dice"
+            },
+            {
+                "types": [
+                    "florist",
+                    "garden_centre"
                 ],
                 "sign": "&#127799;"
             },
@@ -147,11 +187,12 @@
                 "types": [
                     "jewelry"
                 ],
-                "sign": "&#128141;"
+                "sign": "fa-ring"
             },
             {
                 "types": [
-                    "kiosk"
+                    "kiosk",
+                    "newsagent"
                 ],
                 "sign": "fa-newspaper-o"
             },
@@ -159,7 +200,7 @@
                 "types": [
                     "shoes"
                 ],
-                "sign": "&#128095;"
+                "sign": "fa-shoe-prints"
             },
             {
                 "types": [
@@ -178,6 +219,120 @@
                     "watches"
                 ],
                 "sign": "&#8986;"
+            },
+            {
+                "types": [
+                    "gift"
+                ],
+                "sign": "fa-gift"
+            },
+            {
+                "types": [
+                    "locksmith"
+                ],
+                "sign": "fa-key"
+            },
+            {
+                "types": [
+                    "doityourself",
+                    "hardware"
+                ],
+                "sign": "fa-tools"
+            },
+            {
+                "types": [
+                    "art"
+                ],
+                "sign": "fa-palette"
+            },
+            {
+                "types": [
+                    "stationery"
+                ],
+                "sign": "fa-pencil-ruler"
+            },
+            {
+                "types": [
+                    "funeral_directors"
+                ],
+                "sign": "maki:monument"
+            },
+            {
+                "types": [
+                    "copyshop"
+                ],
+                "sign": "fa-copy"
+            },
+            {
+                "types": [
+                    "tobacco"
+                ],
+                "sign": "fa-smoking"
+            },
+            {
+                "types": [
+                    "furniture",
+                    "interior_decoration"
+                ],
+                "sign": "fa-couch"
+            },
+            {
+                "types": [
+                    "car_repair",
+                    "car",
+                    "car_parts",
+                    "tyres"
+                ],
+                "sign": "fa-car"
+            },
+            {
+                "types": [
+                    "beauty",
+                    "cosmetics"
+                ],
+                "sign": ""
+            },
+            {
+                "types": [
+                    "music"
+                ],
+                "sign": "fa-guitar"
+            },
+            {
+                "types": [
+                    "optician"
+                ],
+                "sign": "fa-glasses"
+            },
+            {
+                "types": [
+                    "books"
+                ],
+                "sign": "fa-book"
+            },
+            {
+                "types": [
+                    "sports"
+                ],
+                "sign": "fa-basketball-ball"
+            },
+            {
+                "types": [
+                    "chemist"
+                ],
+                "sign": "fa-tablets"
+            },
+            {
+                "types": [
+                    "pet"
+                ],
+                "sign": "fa-paw"
+            },
+            {
+                "types": [
+                    "mobile_phone"
+                ],
+                "sign": "fa-mobile-alt"
             }
         ]
     },

From 1906a9ccaf8381c7f26346480d8ea399c45b45bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 6 Mar 2019 14:27:16 +0100
Subject: [PATCH 066/117] shop: rewrite from array with types to hash; also
 enable Font Awesome regular

---
 shop.json | 532 ++++++++++++++++++++++++------------------------------
 1 file changed, 238 insertions(+), 294 deletions(-)

diff --git a/shop.json b/shop.json
index c19ffc6..33e8fb2 100644
--- a/shop.json
+++ b/shop.json
@@ -24,324 +24,268 @@
         "16": "(node[shop];way[shop];relation[shop];);"
     },
     "feature": {
-        "pre": "{% set shop0 = tags.shop|split(';')[0] %}{% set current = const.default %}{% for v in const.shops %}{% if shop0 in v.types %}{% set current = v %}{% endif %}{% endfor %}",
+        "pre": [
+            "{% set shop0 = tags.shop|split(';')[0] %}",
+            "{% set current = const.default %}",
+            "{% if const.shops[shop0] %}",
+            "  {% set current = const.shops[shop0] %}",
+            "{% endif %}"
+        ],
         "description": "{{ tagTransList('shop', tags.shop) }}",
-        "markerSign": "{% set c = current.sign %}{% if c|slice(0, 3) == 'fa-' %}<i class=\"fa {{ c }}\"></i>{% elseif c|slice(0, 5) == 'maki:' %}<img data-src=\"{{ c }}\">{% else %}{{ c|raw }}{% endif %}"
+        "markerSign": [
+            "{% set c = current.sign %}",
+            "{% if c|slice(0, 4) == 'fas:' %}",
+            "  <i class=\"fas fa-{{ c|slice(4) }}\"></i>",
+            "{% elseif c|slice(0, 4) == 'far:' %}",
+            "  <i class=\"far fa-{{ c|slice(4) }}\"></i>",
+            "{% elseif c|slice(0, 5) == 'maki:' %}",
+            "  <img data-src=\"{{ c }}\">",
+            "{% else %}",
+            "  {{ c|raw }}",
+            "{% endif %}"
+        ]
     },
     "const": {
         "default": {
-            "sign": "fa-shopping-bag"
+            "sign": "fas:shopping-bag"
         },
-        "shops": [
-            {
-                "types": [
-                    "vacant"
-                ],
-                "sign": "fa-times"
-            },
-            {
-                "types": [
-                    "alcohol",
-                    "beverages"
-                ],
-                "sign": "fa-wine-bottle"
-            },
-            {
-                "types": [
-                    "baby_goods"
-                ],
-                "sign": "&#128700;"
-            },
-            {
-                "types": [
-                    "bag",
-                    "general",
-                    "variety_store"
-                ],
-                "sign": "fa-shopping-bag"
-            },
-            {
-                "types": [
-                    "bakery",
-                    "confectionery",
-                    "pastry"
-                ],
-                "sign": "fa-birthday-cake"
-            },
-            {
-                "types": [
-                    "bicycle"
-                ],
-                "sign": "fa-bicycle"
-            },
-            {
-                "types": [
-                    "motorcycle"
-                ],
-                "sign": "fa-motorcycle"
-            },
-            {
-                "types": [
-                    "boutique",
-                    "clothes",
-                    "fabric",
-                    "fashion",
-                    "leather",
-                    "sewing",
-                    "tailor",
-                    "dry_cleaning"
-                ],
+        "shops": {
+            "vacant": {
+                "sign": "fas:times"
+            },
+            "alcohol": {
+                "sign": "fas:wine-bottle"
+            },
+            "beverages": {
+                "sign": "fas:wine-bottle"
+            },
+            "baby_goods": {
+                "sign": "fas:baby"
+            },
+            "bag": {
+                "sign": "fas:shopping-bag"
+            },
+            "general": {
+                "sign": "fas:shopping-bag"
+            },
+            "variety_store": {
+                "sign": "fas:shopping-bag"
+            },
+            "bakery": {
+                "sign": "fas:birthday-cake"
+            },
+            "confectionery": {
+                "sign": "fas:birthday-cake"
+            },
+            "pastry": {
+                "sign": "fas:birthday-cake"
+            },
+            "bicycle": {
+                "sign": "fas:bicycle"
+            },
+            "motorcycle": {
+                "sign": "fas:motorcycle"
+            },
+            "boutique": {
+                "sign": "&#128090;"
+            },
+            "clothes": {
+                "sign": "&#128090;"
+            },
+            "fabric": {
+                "sign": "&#128090;"
+            },
+            "fashion": {
+                "sign": "&#128090;"
+            },
+            "leather": {
                 "sign": "&#128090;"
             },
-            {
-                "types": [
-                    "sea_food"
-                ],
-                "sign": "fa-fish"
-            },
-            {
-                "types": [
-                    "butcher",
-                    "cheese",
-                    "chocolate",
-                    "deli",
-                    "dairy",
-                    "farm",
-                    "greengrocer",
-                    "pasta",
-                    "spices"
-                ],
-                "sign": "fa-cutlery"
-            },
-            {
-                "types": [
-                    "coffee",
-                    "tea"
-                ],
-                "sign": "fa-coffee"
-            },
-            {
-                "types": [
-                    "convenience"
-                ],
-                "sign": "fa-shopping-basket"
-            },
-            {
-                "types": [
-                    "department_store",
-                    "mall"
-                ],
-                "sign": "fa-building"
-            },
-            {
-                "types": [
-                    "electronics",
-                    "computer"
-                ],
-                "sign": "fa-tv"
-            },
-            {
-                "types": [
-                    "electrical"
-                ],
-                "sign": "fa-bolt"
-            },
-            {
-                "types": [
-                    "lighting"
-                ],
-                "sign": "fa-bulb"
-            },
-            {
-                "types": [
-                    "fishing"
-                ],
-                "sign": "&#127907;"
-            },
-            {
-                "types": [
-                    "toys"
-                ],
-                "sign": "fa-dice"
-            },
-            {
-                "types": [
-                    "florist",
-                    "garden_centre"
-                ],
+            "sewing": {
+                "sign": "&#128090;"
+            },
+            "tailor": {
+                "sign": "&#128090;"
+            },
+            "dry_cleaning": {
+                "sign": "&#128090;"
+            },
+            "sea_food": {
+                "sign": "fas:fish"
+            },
+            "butcher": {
+                "sign": "fas:utensils"
+            },
+            "cheese": {
+                "sign": "fas:utensils"
+            },
+            "chocolate": {
+                "sign": "fas:utensils"
+            },
+            "deli": {
+                "sign": "fas:utensils"
+            },
+            "dairy": {
+                "sign": "fas:utensils"
+            },
+            "farm": {
+                "sign": "fas:utensils"
+            },
+            "greengrocer": {
+                "sign": "fas:utensils"
+            },
+            "pasta": {
+                "sign": "fas:utensils"
+            },
+            "spices": {
+                "sign": "fas:utensils"
+            },
+            "coffee": {
+                "sign": "fas:coffee"
+            },
+            "tea": {
+                "sign": "fas:coffee"
+            },
+            "convenience": {
+                "sign": "fas:shopping-basket"
+            },
+            "department_store": {
+                "sign": "fas:building"
+            },
+            "mall": {
+                "sign": "fas:building"
+            },
+            "electronics": {
+                "sign": "fas:tv"
+            },
+            "computer": {
+                "sign": "fas:desktop"
+            },
+            "electrical": {
+                "sign": "fas:bolt"
+            },
+            "lighting": {
+                "sign": "fas:bulb"
+            },
+            "fishing": {
+                "sign": "fas:fish"
+            },
+            "toys": {
+                "sign": "fas:dice"
+            },
+            "florist": {
                 "sign": "&#127799;"
             },
-            {
-                "types": [
-                    "hairdresser"
-                ],
+            "garden_centre": {
+                "sign": "&#127799;"
+            },
+            "hairdresser": {
                 "sign": "&#128113;"
             },
-            {
-                "types": [
-                    "ice_cream"
-                ],
-                "sign": "&#127848;"
-            },
-            {
-                "types": [
-                    "jewelry"
-                ],
-                "sign": "fa-ring"
-            },
-            {
-                "types": [
-                    "kiosk",
-                    "newsagent"
-                ],
-                "sign": "fa-newspaper-o"
-            },
-            {
-                "types": [
-                    "shoes"
-                ],
-                "sign": "fa-shoe-prints"
-            },
-            {
-                "types": [
-                    "travel_agency"
-                ],
+            "ice_cream": {
+                "sign": "fas:ice-cream"
+            },
+            "jewelry": {
+                "sign": "fas:ring"
+            },
+            "kiosk": {
+                "sign": "fas:newspaper"
+            },
+            "newsagent": {
+                "sign": "fas:newspaper"
+            },
+            "shoes": {
+                "sign": "fas:shoe-prints"
+            },
+            "travel_agency": {
                 "sign": "&#129523;"
             },
-            {
-                "types": [
-                    "supermarket"
-                ],
-                "sign": "fa-shopping-cart"
-            },
-            {
-                "types": [
-                    "watches"
-                ],
-                "sign": "&#8986;"
-            },
-            {
-                "types": [
-                    "gift"
-                ],
-                "sign": "fa-gift"
-            },
-            {
-                "types": [
-                    "locksmith"
-                ],
-                "sign": "fa-key"
-            },
-            {
-                "types": [
-                    "doityourself",
-                    "hardware"
-                ],
-                "sign": "fa-tools"
-            },
-            {
-                "types": [
-                    "art"
-                ],
-                "sign": "fa-palette"
-            },
-            {
-                "types": [
-                    "stationery"
-                ],
-                "sign": "fa-pencil-ruler"
-            },
-            {
-                "types": [
-                    "funeral_directors"
-                ],
+            "supermarket": {
+                "sign": "fas:shopping-cart"
+            },
+            "watches": {
+                "sign": "far:clock"
+            },
+            "gift": {
+                "sign": "fas:gift"
+            },
+            "locksmith": {
+                "sign": "fas:key"
+            },
+            "doityourself": {
+                "sign": "fas:tools"
+            },
+            "hardware": {
+                "sign": "fas:tools"
+            },
+            "art": {
+                "sign": "fas:palette"
+            },
+            "stationery": {
+                "sign": "fas:pencil-ruler"
+            },
+            "funeral_directors": {
                 "sign": "maki:monument"
             },
-            {
-                "types": [
-                    "copyshop"
-                ],
-                "sign": "fa-copy"
-            },
-            {
-                "types": [
-                    "tobacco"
-                ],
-                "sign": "fa-smoking"
-            },
-            {
-                "types": [
-                    "furniture",
-                    "interior_decoration"
-                ],
-                "sign": "fa-couch"
-            },
-            {
-                "types": [
-                    "car_repair",
-                    "car",
-                    "car_parts",
-                    "tyres"
-                ],
-                "sign": "fa-car"
-            },
-            {
-                "types": [
-                    "beauty",
-                    "cosmetics"
-                ],
+            "copyshop": {
+                "sign": "fas:copy"
+            },
+            "tobacco": {
+                "sign": "fas:smoking"
+            },
+            "furniture": {
+                "sign": "fas:couch"
+            },
+            "interior_decoration": {
+                "sign": "fas:couch"
+            },
+            "car_repair": {
+                "sign": "fas:car"
+            },
+            "car": {
+                "sign": "fas:car"
+            },
+            "car_parts": {
+                "sign": "fas:car"
+            },
+            "tyres": {
+                "sign": "fas:car"
+            },
+            "beauty": {
                 "sign": ""
             },
-            {
-                "types": [
-                    "music"
-                ],
-                "sign": "fa-guitar"
-            },
-            {
-                "types": [
-                    "optician"
-                ],
-                "sign": "fa-glasses"
-            },
-            {
-                "types": [
-                    "books"
-                ],
-                "sign": "fa-book"
-            },
-            {
-                "types": [
-                    "sports"
-                ],
-                "sign": "fa-basketball-ball"
-            },
-            {
-                "types": [
-                    "chemist"
-                ],
-                "sign": "fa-tablets"
-            },
-            {
-                "types": [
-                    "pet"
-                ],
-                "sign": "fa-paw"
-            },
-            {
-                "types": [
-                    "mobile_phone"
-                ],
-                "sign": "fa-mobile-alt"
+            "cosmetics": {
+                "sign": ""
+            },
+            "music": {
+                "sign": "fas:guitar"
+            },
+            "optician": {
+                "sign": "fas:glasses"
+            },
+            "books": {
+                "sign": "fas:book"
+            },
+            "sports": {
+                "sign": "fas:basketball-ball"
+            },
+            "chemist": {
+                "sign": "fas:tablets"
+            },
+            "pet": {
+                "sign": "fas:paw"
+            },
+            "mobile_phone": {
+                "sign": "fas:mobile-alt"
             }
-        ]
+        }
     },
     "filter": {
         "shop": {
             "name": "{{ trans('filter:type') }}",
             "type": "select",
             "show_default": "true",
-            "values": "{% set list = [] %}{% for k, v in const.shops %}{% for t in v.types %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('shop', t) }}</option>{% endfor %}{% endfor %}<option weight='1' value='other' query='nwr[shop][shop!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "values": "{% set list = [] %}{% for k, v in const.shops %}<option value=\"{{ k }}\">{% set list = list|merge([ k ]) %}{{ tagTrans('shop', k) }}</option>{% endfor %}<option weight='1' value='other' query='nwr[shop][shop!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
             "sort": "natsort",
             "op": "has"
         }

From 6d09413105e75eb745a509abbdd81a4fcab739e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 6 Mar 2019 14:39:46 +0100
Subject: [PATCH 067/117] shop: more types

---
 shop.json | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/shop.json b/shop.json
index 33e8fb2..4108a13 100644
--- a/shop.json
+++ b/shop.json
@@ -56,6 +56,9 @@
             "alcohol": {
                 "sign": "fas:wine-bottle"
             },
+            "wine": {
+                "sign": "fas:wine-bottle"
+            },
             "beverages": {
                 "sign": "fas:wine-bottle"
             },
@@ -212,6 +215,9 @@
             "locksmith": {
                 "sign": "fas:key"
             },
+            "houseware": {
+                "sign": "fas:tools"
+            },
             "doityourself": {
                 "sign": "fas:tools"
             },
@@ -275,6 +281,51 @@
             "pet": {
                 "sign": "fas:paw"
             },
+            "photo": {
+                "sign": "fas:camera"
+            },
+            "ticket": {
+                "sign": "fas:ticket-alt"
+            },
+            "outdoor": {
+                "sign": "fas:campground"
+            },
+            "massage": {
+                "sign": ""
+            },
+            "paint": {
+                "sign": "fas:paint-roller"
+            },
+            "fabric": {
+                "sign": ""
+            },
+            "trade": {
+                "sign": "fas:tools"
+            },
+            "bookmaker": {
+                "sign": "fas:money-bill-wave"
+            },
+            "kitchen": {
+                "sign": "fas:utensils"
+            },
+            "second_hand": {
+                "sign": ""
+            },
+            "lottery": {
+                "sign": "fas:money-bill-wave"
+            },
+            "pawnbroker": {
+                "sign": "fas:money-bill-wave"
+            },
+            "bed": {
+                "sign": "fas:bed"
+            },
+            "charity": {
+                "sign": "fas:hand-holding-heart"
+            },
+            "tattoo": {
+                "sign": ""
+            },
             "mobile_phone": {
                 "sign": "fas:mobile-alt"
             }

From 80d36e08d16951ea07eff8bfab271770ab92d2ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 6 Mar 2019 14:50:22 +0100
Subject: [PATCH 068/117] shop: write 'tag:shop' for shop=yes

---
 shop.json | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/shop.json b/shop.json
index 4108a13..7e0d285 100644
--- a/shop.json
+++ b/shop.json
@@ -31,7 +31,13 @@
             "  {% set current = const.shops[shop0] %}",
             "{% endif %}"
         ],
-        "description": "{{ tagTransList('shop', tags.shop) }}",
+        "description": [
+            "{% if tags.shop == 'yes' %}",
+            "  {{ keyTrans('shop') }}",
+            "{% else %}",
+            "  {{ tagTransList('shop', tags.shop) }}",
+            "{% endif %}"
+        ],
         "markerSign": [
             "{% set c = current.sign %}",
             "{% if c|slice(0, 4) == 'fas:' %}",

From 9f3a3d3add139b52989a54d59c4156ee1c05a466 Mon Sep 17 00:00:00 2001
From: Robin van der Linde <robin.vanderlinde@gmail.com>
Date: Sun, 10 Mar 2019 17:43:54 +0000
Subject: [PATCH 069/117] Translated using Weblate (Dutch)

Currently translated at 98.9% (90 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/nl/
---
 lang/nl.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/nl.json b/lang/nl.json
index 11c60ee..8fb6e8c 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -5,7 +5,7 @@
     "category:alternative_routes": "Alternatieve routes",
     "category:buildings": "Gebouwen",
     "category:buildings-entrances": "Toegangen",
-    "category:buildings-figure-ground": "",
+    "category:buildings-figure-ground": "Plattegrond",
     "category:buildings-height": "Bouwhoogte",
     "category:buildings-start_date": "Ouderdom van het gebouw",
     "category:buildings-type": "Gebouwtypes",

From fa46f34341d7970f7eaba04613afd2de1451088d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 11 Mar 2019 22:01:09 +0100
Subject: [PATCH 070/117] shop: new filter 'clothes'

---
 shop.json | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/shop.json b/shop.json
index 7e0d285..b480f9e 100644
--- a/shop.json
+++ b/shop.json
@@ -49,6 +49,17 @@
             "{% else %}",
             "  {{ c|raw }}",
             "{% endif %}"
+        ],
+        "body": [
+            "<ul>",
+            "  {% if tags.clothes %}",
+            "  <li class='hasSymbol'>",
+            "    <i class=\"fas fa-tshirt\" aria-hidden=\"true\"></i>",
+            "    <span class='key'>{{ keyTrans('clothes') }}:</span>",
+            "    <span class='value'>{{ tagTransList('clothes', tags.clothes) }}</span>",
+            "  </li>",
+            "  {% endif %}",
+            "</ul>"
         ]
     },
     "const": {
@@ -335,7 +346,37 @@
             "mobile_phone": {
                 "sign": "fas:mobile-alt"
             }
-        }
+        },
+        "clothes": [
+            "women",
+            "men",
+            "leather",
+            "fur",
+            "underwear",
+            "children",
+            "wedding",
+            "sports",
+            "workwear",
+            "lingerie",
+            "babies",
+            "hats",
+            "fashion",
+            "suits",
+            "unisexs",
+            "traditional",
+            "costumes",
+            "bridal",
+            "oversize",
+            "swimwear",
+            "maternity",
+            "brand",
+            "military",
+            "vintage",
+            "accessories",
+            "schoolwear",
+            "motorcycle",
+            "denim"
+        ]
     },
     "filter": {
         "shop": {
@@ -345,6 +386,13 @@
             "values": "{% set list = [] %}{% for k, v in const.shops %}<option value=\"{{ k }}\">{% set list = list|merge([ k ]) %}{{ tagTrans('shop', k) }}</option>{% endfor %}<option weight='1' value='other' query='nwr[shop][shop!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
             "sort": "natsort",
             "op": "has"
+        },
+        "clothes": {
+            "name": "{{ keyTrans('clothes') }}",
+            "type": "select",
+            "values": "{% set list = [] %}<option weight='-1' value='*' query='nwr[clothes]'>{{ trans('any value') }}</option>{% for k in const.clothes %}{% set list = list|merge([ k ]) %}<option value='{{ k }}'>{{ tagTrans('clothes', k) }}</option>{% endfor %}<option weight='1' value='other' query='nwr[clothes][clothes!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "sort": "natsort",
+            "op": "has"
         }
     }
 }

From f4a31e09ad12936da97e74eb337e95d0df253f64 Mon Sep 17 00:00:00 2001
From: Mannivu <42747216+Mannivu@users.noreply.github.com>
Date: Tue, 12 Mar 2019 20:58:55 +0100
Subject: [PATCH 071/117] Typo fix

Fixed typo in translation
---
 lang/it.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/it.json b/lang/it.json
index 0a02801..6b8ee6b 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -66,7 +66,7 @@
     "category:religion": "Religione",
     "category:renewables": "",
     "category:residential": "Aree residenziali",
-    "category:resources": "Areee estrattive",
+    "category:resources": "Aree estrattive",
     "category:services": "Servizi",
     "category:shop": "Acquisti",
     "category:special": "",

From eba3b87ed78db5ebb21d8a55a0bc4b7270701f55 Mon Sep 17 00:00:00 2001
From: Cybereric <cartosm@free.fr>
Date: Wed, 13 Mar 2019 22:23:35 +0000
Subject: [PATCH 072/117] Translated using Weblate (French)

Currently translated at 95.6% (87 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/fr/
---
 lang/fr.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/fr.json b/lang/fr.json
index c790163..b75ab0e 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -16,7 +16,7 @@
     "category:children": "Équipements pour enfants",
     "category:coal": "Charbon",
     "category:communication": "Communication",
-    "category:construction": "Constructions",
+    "category:construction": "Chantiers de construction",
     "category:craft": "Artisanat",
     "category:culture": "Culture",
     "category:culture_religion": "Culture et religion",

From 0c8abdd38e74475bd8742a881f232760e5fb7f96 Mon Sep 17 00:00:00 2001
From: Manuel Tassi <manueltassi91@gmail.com>
Date: Wed, 13 Mar 2019 19:22:47 +0000
Subject: [PATCH 073/117] Translated using Weblate (Italian)

Currently translated at 86.8% (79 of 91 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/it/
---
 lang/it.json | 74 ++++++++++++++++++++++++++--------------------------
 1 file changed, 37 insertions(+), 37 deletions(-)

diff --git a/lang/it.json b/lang/it.json
index 6b8ee6b..3f91050 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -3,75 +3,75 @@
     "category:agriculture": "Agricoltura",
     "category:alternative_amenities": "Infrastrutture",
     "category:alternative_routes": "Itinerari segnalati",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:buildings": "Edifici",
+    "category:buildings-entrances": "Ingressi",
     "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-height": "Altezza dell'edificio",
+    "category:buildings-start_date": "Età dell'edificio",
+    "category:buildings-type": "Tipi di edificio",
     "category:car_amenities": "Infrastrutture",
     "category:car_furniture": "Dotazioni stradali",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
-    "category:children": "",
-    "category:coal": "",
+    "category:car_maxspeed": "Velocità massima",
+    "category:car_routes": "Tratte automobilistiche",
+    "category:children": "Luoghi per bambini",
+    "category:coal": "Carbone",
     "category:communication": "Communicazioni",
     "category:construction": "Cantieri",
-    "category:craft": "",
+    "category:craft": "Artigianato",
     "category:culture": "Cultura",
     "category:culture_religion": "Cultura",
-    "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:cycle_amenities": "Infrastrutture",
+    "category:cycle_routes": "Percorsi ciclistici",
     "category:education": "Istruzione",
     "category:electric_power": "Energia",
     "category:emergency": "Servizi d'emergenza",
-    "category:energy": "",
+    "category:energy": "Energia",
     "category:financial": "Finanze",
     "category:gastro": "Gastronomia",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "Gastronomia non fumatori",
     "category:health": "Sanità",
-    "category:hiking_routes": "",
+    "category:hiking_routes": "Percorsi escursionistici",
     "category:historic": "Storia",
     "category:index": "",
-    "category:infrastructure": "",
-    "category:internet": "",
-    "category:law": "",
+    "category:infrastructure": "Infrastrutture",
+    "category:internet": "Accesso a internet",
+    "category:law": "Legge",
     "category:leisure": "Tempo libero",
     "category:leisure_sport_shopping": "Tempo libero, sport e shopping",
-    "category:memorial": "",
+    "category:memorial": "Memoriali",
     "category:military": "Militare",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "Percorsi per mountain bike",
     "category:natural": "Natura",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "Uffici",
+    "category:oil_gas": "Petrolio e gas naturale",
+    "category:organisations": "Organizzazioni",
     "category:other": "Altri",
-    "category:outdoor": "",
-    "category:phone": "",
+    "category:outdoor": "Attività all'aperto",
+    "category:phone": "Telefono",
     "category:places": "Luoghi",
     "category:places_geo": "Luoghi",
-    "category:playgrounds": "",
-    "category:post": "",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:playgrounds": "Parco giochi",
+    "category:post": "Posta",
+    "category:power_routes": "Linee energetiche",
+    "category:pt": "Mappa del trasporto pubblico",
+    "category:pt:routes": "Percorsi",
     "category:pt:stops": "Stazioni e fermate",
     "category:pt_amenities": "Infrastrutture",
     "category:public": "Servizi pubblici",
     "category:railway": "Ferrovie",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-electrification": "Elettrificazione ferroviaria",
+    "category:railway-infrastructure": "Infrastruttura ferroviaria",
+    "category:railway-maxspeed": "Velocità ferroviaria massima",
+    "category:railway-routes": "Percorsi ferroviari",
     "category:religion": "Religione",
-    "category:renewables": "",
+    "category:renewables": "Energie rinnovabili",
     "category:residential": "Aree residenziali",
     "category:resources": "Aree estrattive",
     "category:services": "Servizi",
     "category:shop": "Acquisti",
-    "category:special": "",
+    "category:special": "Speciali",
     "category:sport": "Sport",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Nuoto e balneazione",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Trasporti",

From cf4c40edb35c9bfc7c2bc15676e09ef07008aaab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 16 Mar 2019 07:58:21 +0100
Subject: [PATCH 074/117] railway-gauge: show gauges of railway

---
 index.json         |  3 ++
 railway-gauge.json | 77 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+)
 create mode 100644 railway-gauge.json

diff --git a/index.json b/index.json
index ba5a57d..be443ad 100644
--- a/index.json
+++ b/index.json
@@ -317,6 +317,9 @@
                         {
                             "id": "railway-maxspeed"
                         },
+                        {
+                            "id": "railway-gauge"
+                        },
                         {
                             "id": "railway-routes"
                         }
diff --git a/railway-gauge.json b/railway-gauge.json
new file mode 100644
index 0000000..090a5d0
--- /dev/null
+++ b/railway-gauge.json
@@ -0,0 +1,77 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Railway gauge"
+    },
+    "query": {
+        "11": "way[railway=rail][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'][usage~'^(main|branch)$'];",
+        "14": "way[railway][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'];"
+    },
+    "feature": {
+        "pre": "{% set gauges = tags.gauge|split(';') %}",
+        "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator'))|default(trans('unnamed')) }}",
+        "description": "{{ tags.gauge|default(trans('unknown'))|enumerate }}",
+        "body": [
+            "{{ tagTrans('railway', tags.railway) }}<br/>",
+            "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}<br>{% endif %}",
+            "{% if tags.usage %}{{ keyTrans('usage') }}: {{ tagTrans('usage', tags.usage)|default(trans('unknown')) }}<br/>{% endif %}",
+            "{% if tags.service %}{{ keyTrans('service') }}: {{ tagTrans('service', tags.service ) }}<br/>{% endif %}",
+            "{{ keyTrans('gauge') }}: {{ tags.gauge|default(trans('unknown'))|enumerate }}<br/>",
+            "{% if tags.electrified == 'no' %}{{ keyTrans('electrified') }}: {{ tagTrans('electrified', 'no') }}{% elseif tags.electrified %}{{ keyTrans('electrified') }}: {{ tagTrans('electrified', tags.electrified) }}, {{ keyTrans('voltage') }}: {{ tags.voltage|default(trans('unknown')) }}, {{ keyTrans('frequency') }}: {{ tags.frequency|default(trans('unknown')) }}<br/>{% endif %}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "line",
+        "styles": "{% if gauges|length < 2 %}default{% else %}{% for i, v in gauges %}{% if i != 0 %},{% endif %}gauge{{ i }}{% endfor %}{% endif %}",
+        "style": {
+            "width": "3",
+            "color": "{% if tags.gauge %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[0] / 2000) }}{% else %}#404040{% endif %}"
+        },
+        "style:gauge0": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[0] / 2000) }}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}"
+        },
+        "style:gauge1": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[1] / 2000) }}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
+            "dashOffset": "5"
+        },
+        "style:gauge2": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[2] / 2000) }}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
+            "dashOffset": "10"
+        },
+        "style:gauge3": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[3] / 2000) }}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
+            "dashOffset": "15"
+        }
+    },
+    "info": [
+        "<table>",
+        "  {% set color = '#404040' %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 1800, 250) %}",
+        "  {% set color = colorInterpolate([ '#00ff00', '#0000ff' ], i / 2000) %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ i }}mm</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': '#0000ff' })|raw }}</td>",
+        "    <td>>2000mm</td>",
+        "  </tr>",
+        "</table>"
+    ]
+}

From 45250b6652c4558dd63eefdbb1f6f569f28b27e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 16 Mar 2019 21:52:27 +0100
Subject: [PATCH 075/117] railway-gauge: check illegal values

---
 railway-gauge.json | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/railway-gauge.json b/railway-gauge.json
index 090a5d0..da217cb 100644
--- a/railway-gauge.json
+++ b/railway-gauge.json
@@ -24,38 +24,43 @@
         "styles": "{% if gauges|length < 2 %}default{% else %}{% for i, v in gauges %}{% if i != 0 %},{% endif %}gauge{{ i }}{% endfor %}{% endif %}",
         "style": {
             "width": "3",
-            "color": "{% if tags.gauge %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[0] / 2000) }}{% else %}#404040{% endif %}"
+            "color": "{% if tags.gauge %}{% if not tags.gauge|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], tags.gauge / 2000) }}{% endif %}{% else %}#404040{% endif %}"
         },
         "style:gauge0": {
             "width": "3",
             "lineCap": "butt",
-            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[0] / 2000) }}",
+            "color": "{% if not gauges[0]|matches('^[0-9]+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[0] / 2000) }}{% endif %}",
             "dashArray": "5,{{ (gauges|length - 1) * 5 }}"
         },
         "style:gauge1": {
             "width": "3",
             "lineCap": "butt",
-            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[1] / 2000) }}",
+            "color": "{% if not gauges[1]|matches('^[0-9]+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[1] / 2000) }}{% endif %}",
             "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
             "dashOffset": "5"
         },
         "style:gauge2": {
             "width": "3",
             "lineCap": "butt",
-            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[2] / 2000) }}",
+            "color": "{% if not gauges[2]|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[2] / 2000) }}{% endif %}",
             "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
             "dashOffset": "10"
         },
         "style:gauge3": {
             "width": "3",
             "lineCap": "butt",
-            "color": "{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[3] / 2000) }}",
+            "color": "{% if not gauges[3]|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[3] / 2000) }}{% endif %}",
             "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
             "dashOffset": "15"
         }
     },
     "info": [
         "<table>",
+        "  {% set color = '#ff0000' %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ trans('illegal value') }}</td>",
+        "  </tr>",
         "  {% set color = '#404040' %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",

From 744d1807e4b74f7964917e807f4f34bdd0ecd9ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 16 Mar 2019 21:52:43 +0100
Subject: [PATCH 076/117] railway-electrification: check illegal values

---
 railway-electrification.json | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/railway-electrification.json b/railway-electrification.json
index f54ba20..f116ad1 100644
--- a/railway-electrification.json
+++ b/railway-electrification.json
@@ -15,14 +15,18 @@
     "feature": {
         "pre": [
             "{% if tags.electrified and tags.electrified != 'no' %}",
-            "  {% if tags.voltage < 1000 %}",
+            "  {% if not tags.voltage is defined %}",
+            "    {% set color = '#7f7f7f' %}",
+            "  {% elseif not tags.voltage|matches('^[0-9]+$') %}",
+            "    {% set color = '#ff0000' %}",
+            "  {% elseif tags.voltage < 1000 %}",
             "    {% set color = colorInterpolate([ '#00ff00', 'blue' ], tags.voltage / 1000) %}",
             "  {% else %}",
-            "    {% set color = colorInterpolate([ 'blue', 'red' ], (tags.voltage - 1000) / 24000) %}",
+            "    {% set color = colorInterpolate([ 'blue', '#af0000' ], (tags.voltage - 1000) / 24000) %}",
             "  {% endif %}",
             "{% else %}",
-            "  {% set color='black' %}",
-            "{%endif %}",
+            "  {% set color = 'black' %}",
+            "{% endif %}",
             "",
             "{% if tags.service == 'yard' or tags.service == 'siding' or tags.service == 'spur' or tags.service == 'crossover' %}",
             "    {% set width=2 %}",
@@ -67,7 +71,7 @@
             "opacity": "1",
             "fill": null,
             "dashArray": [
-                "{% if not tags.electrified or tags.electrified == 'no' %}",
+                "{% if not tags.electrified is defined  %}",
                 "{% elseif tags.frequency == 0 %}",
                 "{% else %}",
                 "5,2",
@@ -97,7 +101,7 @@
         "{% endfor %}",
         "",
         "{% for i in range(3000, 25000, 2000) %}",
-        "  {% set color = colorInterpolate([ 'blue', 'red' ], (i - 1000) / 24000) %}",
+        "  {% set color = colorInterpolate([ 'blue', '#af0000' ], (i - 1000) / 24000) %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
         "    <td>{{ i }}V</td>",
@@ -113,6 +117,16 @@
         "    <td>{{ markerLine({ 'styles': [ 'casing', 'default' ], 'style:casing': { 'width': 3, 'color': 'white' }, 'style': { 'width': '3', 'dashArray': '5,2', 'lineCap': 'butt', 'color': color } })|raw }}</td>",
         "    <td>{{ trans('alternating current') }}</td>",
         "  </tr>",
+        "",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': '#7f7f7f' })|raw }}</td>",
+        "    <td>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': '#ff0000' })|raw }}</td>",
+        "    <td>{{ trans('illegal value') }}</td>",
+        "  </tr>",
         "</table>"
     ]
 }

From 229f79c254ba0ba1ecf29ab44e003e59b773cc79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 17 Mar 2019 06:56:26 +0100
Subject: [PATCH 077/117] Translate category title 'railway-gauge'

---
 lang/ast.json      | 2 ++
 lang/ca.json       | 2 ++
 lang/cs.json       | 2 ++
 lang/de.json       | 5 +++--
 lang/el.json       | 2 ++
 lang/en.json       | 5 +++--
 lang/es.json       | 2 ++
 lang/et.json       | 2 ++
 lang/fr.json       | 5 +++--
 lang/gl.json       | 2 ++
 lang/hu.json       | 5 +++--
 lang/it.json       | 2 ++
 lang/ja.json       | 5 +++--
 lang/nl.json       | 5 +++--
 lang/pl.json       | 2 ++
 lang/pt-br.json    | 2 ++
 lang/pt.json       | 2 ++
 lang/ro.json       | 2 ++
 lang/ru.json       | 2 ++
 lang/template.json | 2 ++
 lang/uk.json       | 2 ++
 21 files changed, 48 insertions(+), 12 deletions(-)

diff --git a/lang/ast.json b/lang/ast.json
index dd6c6ce..803f120 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Divisiones Alministratives",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Infraestructures",
@@ -60,6 +61,7 @@
     "category:public": "Serviciu Públicu",
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/ca.json b/lang/ca.json
index ac2b799..cefe3d8 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/cs.json b/lang/cs.json
index a6dd03c..18f7ea9 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Administrativní oblasti",
     "category:agriculture": "Zemědělství",
     "category:alternative_amenities": "Občanská vybavenost",
@@ -60,6 +61,7 @@
     "category:public": "Veřejné služby",
     "category:railway": "Železnice",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/de.json b/lang/de.json
index 178bcf8..7821947 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objekte mit Ernährungsinformationen",
     "category:administrative": "Administrative Gebiete",
     "category:agriculture": "Landwirtschaft",
     "category:alternative_amenities": "Einrichtungen",
@@ -60,6 +61,7 @@
     "category:public": "Öffentliche Dienste",
     "category:railway": "Eisenbahn",
     "category:railway-electrification": "Eisenbahn Elektrifizierung",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Eisenbahn Infrastruktur",
     "category:railway-maxspeed": "Eisenbahn Höchstgeschwindigkeiten",
     "category:railway-routes": "Eisenbahnrouten",
@@ -88,6 +90,5 @@
     "category:xmas": "Weihnachten",
     "date format not understood": "Datumsformat nicht erkannt",
     "outdated feature": "Informationen nicht aktuell",
-    "xmas:outdated-warning": "Objekt wurde nicht für die aktuelle Saison aktualisiert. Bitte prüfen und das Tag 'xmas:lastcheck' auf das aktuelle Datum setzen.",
-    "Objects with diet information": "Objekte mit Ernährungsinformationen"
+    "xmas:outdated-warning": "Objekt wurde nicht für die aktuelle Saison aktualisiert. Bitte prüfen und das Tag 'xmas:lastcheck' auf das aktuelle Datum setzen."
 }
diff --git a/lang/el.json b/lang/el.json
index b631c5a..7b57169 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Διοικητικά Όρια",
     "category:agriculture": "Γεωργία",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "Δημόσιες Υπηρεσίες",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/en.json b/lang/en.json
index 9b11ac6..e742d0f 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objects with diet information",
     "category:administrative": "Administrative Areas",
     "category:agriculture": "Agriculture",
     "category:alternative_amenities": "Amenities",
@@ -60,6 +61,7 @@
     "category:public": "Public Services",
     "category:railway": "Railway",
     "category:railway-electrification": "Railway electrification",
+    "category:railway-gauge": "Railway gauge",
     "category:railway-infrastructure": "Railway infrastructure",
     "category:railway-maxspeed": "Railway Maxspeed",
     "category:railway-routes": "Railway Routes",
@@ -88,6 +90,5 @@
     "category:xmas": "Christmas",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": "Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date.",
-    "Objects with diet information": "Objects with diet information"
+    "xmas:outdated-warning": "Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date."
 }
diff --git a/lang/es.json b/lang/es.json
index ff0f019..da400a5 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Áreas Administrativas",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Instalaciones",
@@ -60,6 +61,7 @@
     "category:public": "Servicios públicos",
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "Electrificación ferroviaria",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infraestructura ferroviaria",
     "category:railway-maxspeed": "Velocidad máxima del ferrocarril",
     "category:railway-routes": "Rutas de ferrocarril",
diff --git a/lang/et.json b/lang/et.json
index e4fed49..6b05375 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Administratiivalad",
     "category:agriculture": "Põllumajandus",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "Kommunaalteenused",
     "category:railway": "Raudtee",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/fr.json b/lang/fr.json
index b75ab0e..82f03e3 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objets avec information de régime alimentaire",
     "category:administrative": "Zones administratives",
     "category:agriculture": "Agriculture",
     "category:alternative_amenities": "Équipement",
@@ -60,6 +61,7 @@
     "category:public": "Services et équipements publics",
     "category:railway": "Chemins de fer",
     "category:railway-electrification": "Puissance électrique ferroviaire",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infrastructure ferroviaire",
     "category:railway-maxspeed": "Limites de vitesse",
     "category:railway-routes": "Lignes ferroviaires",
@@ -88,6 +90,5 @@
     "category:xmas": "Noël",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": "Cet élément n'a pas été mis à jour pour cette saison ! Veuillez vérifier son existence et régler la valeur de \"xmas:lastcheck\" à la date actuelle.",
-    "Objects with diet information": "Objets avec information de régime alimentaire"
+    "xmas:outdated-warning": "Cet élément n'a pas été mis à jour pour cette saison ! Veuillez vérifier son existence et régler la valeur de \"xmas:lastcheck\" à la date actuelle."
 }
diff --git a/lang/gl.json b/lang/gl.json
index 17e5564..ccd2f8c 100644
--- a/lang/gl.json
+++ b/lang/gl.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Divisións administrativas",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Instalacións",
@@ -60,6 +61,7 @@
     "category:public": "Servizos públicos",
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "Ferrocarril electrificado",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infraestrutura do ferrocarril",
     "category:railway-maxspeed": "Velocidade máxima do ferrocarril",
     "category:railway-routes": "Liñas de ferrocarril",
diff --git a/lang/hu.json b/lang/hu.json
index 31746ef..8f5a494 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Étrend-információt tartalmazó objektumok",
     "category:administrative": "Közigazgatási határok",
     "category:agriculture": "Mezőgazdaság",
     "category:alternative_amenities": "Létesítmények",
@@ -60,6 +61,7 @@
     "category:public": "Közszolgáltatások",
     "category:railway": "Vasút",
     "category:railway-electrification": "Vasút villamosítottsága",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Vasúti infrastruktúra",
     "category:railway-maxspeed": "Sebességkorlátozás",
     "category:railway-routes": "Vasútvonalak",
@@ -88,6 +90,5 @@
     "category:xmas": "Karácsony",
     "date format not understood": "Felismerhetetlen dátumformátum",
     "outdated feature": "Elavult információ",
-    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra.",
-    "Objects with diet information": "Étrend-információt tartalmazó objektumok"
+    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra."
 }
diff --git a/lang/it.json b/lang/it.json
index 3f91050..713ce1e 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Suddivisioni amministrative",
     "category:agriculture": "Agricoltura",
     "category:alternative_amenities": "Infrastrutture",
@@ -60,6 +61,7 @@
     "category:public": "Servizi pubblici",
     "category:railway": "Ferrovie",
     "category:railway-electrification": "Elettrificazione ferroviaria",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infrastruttura ferroviaria",
     "category:railway-maxspeed": "Velocità ferroviaria massima",
     "category:railway-routes": "Percorsi ferroviari",
diff --git a/lang/ja.json b/lang/ja.json
index 52aff42..c858b2b 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "食事制限情報のあるオブジェクト",
     "category:administrative": "行政界",
     "category:agriculture": "農業",
     "category:alternative_amenities": "生活環境",
@@ -60,6 +61,7 @@
     "category:public": "公共サービス",
     "category:railway": "鉄道",
     "category:railway-electrification": "鉄道の電力",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "鉄道インフラ",
     "category:railway-maxspeed": "鉄道の最高速度",
     "category:railway-routes": "鉄道ルート",
@@ -88,6 +90,5 @@
     "category:xmas": "クリスマス",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": "今のシーズンは地物が更新されていません! チェックして現在の日付に'xmas:lastcheck' タグをセットしてください。",
-    "Objects with diet information": "食事制限情報のあるオブジェクト"
+    "xmas:outdated-warning": "今のシーズンは地物が更新されていません! チェックして現在の日付に'xmas:lastcheck' タグをセットしてください。"
 }
diff --git a/lang/nl.json b/lang/nl.json
index 8fb6e8c..ce9215c 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objecten met dieet informatie",
     "category:administrative": "Administratieve gebieden",
     "category:agriculture": "Landbouw",
     "category:alternative_amenities": "Voorzieningen",
@@ -60,6 +61,7 @@
     "category:public": "Openbare diensten",
     "category:railway": "Spoorwegen",
     "category:railway-electrification": "Spoorwegelektrificatie",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Spoorweginfrastructuur",
     "category:railway-maxspeed": "Spoorweg snelheidslimiet",
     "category:railway-routes": "Spoorwegroutes",
@@ -88,6 +90,5 @@
     "category:xmas": "Kerstmis",
     "date format not understood": "Datumformaat onbekend",
     "outdated feature": "Achterhaalde informatie",
-    "xmas:outdated-warning": "Object werd niet geactualiseerd voor het huidige seizoen! Controleer en zet de tag 'xmas:lastcheck' op de huidige datum alstublieft.",
-    "Objects with diet information": "Objecten met dieet informatie"
+    "xmas:outdated-warning": "Object werd niet geactualiseerd voor het huidige seizoen! Controleer en zet de tag 'xmas:lastcheck' op de huidige datum alstublieft."
 }
diff --git a/lang/pl.json b/lang/pl.json
index 77e00eb..330b44d 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index da7e995..6b7e394 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Divisão político-administrativa",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Equipamentos",
@@ -60,6 +61,7 @@
     "category:public": "Utilidade pública",
     "category:railway": "Ferrovia",
     "category:railway-electrification": "Eletrificação ferroviária",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "Rotas ferroviárias",
diff --git a/lang/pt.json b/lang/pt.json
index e38e6a6..f22254b 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Regiões administrativas",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "Serviços públicos",
     "category:railway": "Linhas ferroviárias",
     "category:railway-electrification": "Eletrificação ferroviária",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "",
diff --git a/lang/ro.json b/lang/ro.json
index 1ac1b5b..f533d2c 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Zona administrativa",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "Servicii publice",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/ru.json b/lang/ru.json
index 30e885e..a44acc3 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Административные границы",
     "category:agriculture": "Сельское хозяйство",
     "category:alternative_amenities": "Полезные места",
@@ -60,6 +61,7 @@
     "category:public": "Общественные места",
     "category:railway": "Железные дороги",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/template.json b/lang/template.json
index c7952ee..3affbef 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/uk.json b/lang/uk.json
index 4e36f3f..2632f71 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "Amenities",
@@ -60,6 +61,7 @@
     "category:public": "Громадські місця",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",

From 3818d648141265755e2a40a6b958446d27e81947 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 17 Mar 2019 07:02:29 +0100
Subject: [PATCH 078/117] railway-electrification: use 'frequency=0' and
 'frequency>0' for translation

---
 railway-electrification.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/railway-electrification.json b/railway-electrification.json
index f116ad1..6b6d49d 100644
--- a/railway-electrification.json
+++ b/railway-electrification.json
@@ -110,12 +110,12 @@
         "",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
-        "    <td>{{ trans('direct current') }}</td>",
+        "    <td>{{ trans('tag:frequency=0') }}</td>",
         "  </tr>",
         "",
         "  <tr>",
         "    <td>{{ markerLine({ 'styles': [ 'casing', 'default' ], 'style:casing': { 'width': 3, 'color': 'white' }, 'style': { 'width': '3', 'dashArray': '5,2', 'lineCap': 'butt', 'color': color } })|raw }}</td>",
-        "    <td>{{ trans('alternating current') }}</td>",
+        "    <td>{{ trans('tag:frequency>0') }}</td>",
         "  </tr>",
         "",
         "  <tr>",

From 5e708a83db34de314ebc289755d64e32e5a2f5b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 21 Mar 2019 13:32:55 +0100
Subject: [PATCH 079/117] Memorial: add filter memorial/monument; rename in en
 and de

---
 lang/de.json  |  2 +-
 lang/en.json  |  2 +-
 memorial.json | 13 ++++++-------
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/lang/de.json b/lang/de.json
index 7821947..b9abf63 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -39,7 +39,7 @@
     "category:law": "Juristische Institutionen",
     "category:leisure": "Freizeit",
     "category:leisure_sport_shopping": "Freizeit, Sport und Einkauf",
-    "category:memorial": "Denkmäler",
+    "category:memorial": "Denkmäler und Monumente",
     "category:military": "Militär",
     "category:mtb-routes": "Mointainbikerouten",
     "category:natural": "Geographische Objekte",
diff --git a/lang/en.json b/lang/en.json
index e742d0f..cd566ee 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -39,7 +39,7 @@
     "category:law": "Law",
     "category:leisure": "Leisure",
     "category:leisure_sport_shopping": "Leisure, Sport and Shopping",
-    "category:memorial": "Memorials",
+    "category:memorial": "Memorials & Monuments",
     "category:military": "Military",
     "category:mtb-routes": "Mountain bike routes",
     "category:natural": "Natural Formations",
diff --git a/memorial.json b/memorial.json
index 5c75c4b..4f8f065 100644
--- a/memorial.json
+++ b/memorial.json
@@ -1,12 +1,5 @@
 {
     "type": "overpass",
-    "name": {
-        "de": "Denkmäler",
-        "en": "Memorials",
-        "fr": "Mémoriaux",
-        "hu": "Emlékművek",
-        "pt-br": "Memoriais"
-    },
     "query": {
         "11": [
             "(",
@@ -185,6 +178,12 @@
             "type": "select",
             "values": "{% for k, v in const %}<option value='{{ k }}' query='nwr[~\"^(memorial|memorial:type|memorial_type|monument)$\"~\"^({{ k }}{% for alias in v.alias %}|{{ alias }}{% endfor %})$\"]'>{{ tagTrans('memorial', k) }}{% for alias in v.alias %}, {{ tagTrans('memorial', alias) }}{% endfor %}</option>{% endfor %}"
         },
+        "size": {
+            "name": "{{ keyTrans('memorial') }} | {{ keyTrans('monument') }}",
+            "type": "radio",
+            "values": "<option value='*' query=''>{{ trans('any value') }}</option>\n<option value='memorial' query='nwr[historic=memorial]'>{{ keyTrans('memorial') }}</option>\n<option value='monument' query='nwr[historic=monument]'>{{ keyTrans('monument') }}</option>",
+            "default": "*"
+        },
         "conflict": {
             "key": "memorial:conflict",
             "op": "has",

From 5fcb2d69e3194f75533bc9c735208b125720d0f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 21 Mar 2019 13:52:28 +0100
Subject: [PATCH 080/117] memorial: rework classification (see #41 for details)

---
 memorial.json | 21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

diff --git a/memorial.json b/memorial.json
index 4f8f065..c80d147 100644
--- a/memorial.json
+++ b/memorial.json
@@ -94,7 +94,7 @@
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('memorial', value) }}{% for alias in data.alias %}, {{ tagTrans('memorial', alias) }}{% endfor %}</td>",
+        "    <td>{{ tagTrans('memorial', value) }}</td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
@@ -134,12 +134,15 @@
             "zoom": 14
         },
         "bust": {
-            "alias": [ "person" ],
+            "alias": [ "person", "public_person" ],
             "sign": "<i class=\"fas fa-user-alt\"></i>",
             "zoom": 14
         },
         "stele": {
-            "alias": [ "obelisk" ],
+            "sign": "",
+            "zoom": 14
+        },
+        "obelisk": {
             "sign": "",
             "zoom": 14
         },
@@ -159,16 +162,6 @@
         "cross": {
             "sign": "<i class=\"fas fa-cross\"></i>",
             "zoom": 14
-        },
-        "flood_mark": {
-            "alias": [ "high_water_mark" ],
-            "sign": "<i class=\"fas fa-water\"></i>",
-            "zoom": 14
-        },
-        "grave": {
-            "alias": [ "graveyard" ],
-            "sign": "",
-            "zoom": 14
         }
     },
     "filter": {
@@ -176,7 +169,7 @@
             "name": "{{ trans('filter:type') }}",
             "show_default": "true",
             "type": "select",
-            "values": "{% for k, v in const %}<option value='{{ k }}' query='nwr[~\"^(memorial|memorial:type|memorial_type|monument)$\"~\"^({{ k }}{% for alias in v.alias %}|{{ alias }}{% endfor %})$\"]'>{{ tagTrans('memorial', k) }}{% for alias in v.alias %}, {{ tagTrans('memorial', alias) }}{% endfor %}</option>{% endfor %}"
+            "values": "{% for k, v in const %}<option value='{{ k }}' query='nwr[~\"^(memorial|memorial:type|memorial_type|monument)$\"~\"^({{ k }}{% for alias in v.alias %}|{{ alias }}{% endfor %})$\"]'>{{ tagTrans('memorial', k) }}</option>{% endfor %}"
         },
         "size": {
             "name": "{{ keyTrans('memorial') }} | {{ keyTrans('monument') }}",

From 446ef41a25ae158bb4ba8bac1c22dd2c3ccada25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 21 Mar 2019 21:28:41 +0100
Subject: [PATCH 081/117] historic: add historic=flood_mark (and variants)

---
 historic.json | 39 ++++++++++++++++++++++++++++++++++++---
 1 file changed, 36 insertions(+), 3 deletions(-)

diff --git a/historic.json b/historic.json
index adc3b1b..e9396fb 100644
--- a/historic.json
+++ b/historic.json
@@ -32,11 +32,25 @@
             "node[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
             "way[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
             "relation[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
+            "node[memorial~\"^(flood_mark|high_water_mark)$\"];",
+            "node[\"memorial:type\"~\"^(flood_mark|high_water_mark)$\"];",
+            "node[flood_mark];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTransList('historic', tags.historic) }}",
+        "description": [
+            "{% set historic = tags.historic %}",
+            "{% if attribute(tags, 'memorial') == 'high_water_mark' or attribute(tags, 'memorial:type') == 'high_water_mark' or attribute(tags, 'memorial') == 'flood_mark' or attribute(tags, 'memorial:type') == 'flood_mark' or tags.historic == 'highwater_mark' or (tags.historic != 'flood_mark' and tags.flood_mark) %}",
+            "{{ tagTrans('historic', 'flood_mark') }}",
+            "{{ debug(id ~ ': Deprecated tagging. Please use historic=flood_mark.') }}",
+            "{% set historic = 'flood_mark' %}",
+            "{% else %}",
+            "{{ tagTransList('historic', tags.historic) }}",
+            "{% endif %}",
+            "",
+            "{% if tags.flood_mark and tags.flood_mark != 'yes' %}({{ tagTrans('flood_mark', tags.flood_mark) }}){% endif %}"
+        ],
         "body": [
             "<ul>",
             "{% if tags.inscription %}",
@@ -66,9 +80,23 @@
             "   <span class='key'>{{ keyTrans('memorial:conflict') }}:</span>",
             "   <span class='value'>{{ tagTransList('memorial:conflict', attribute(tags, 'memorial:conflict')) }}</span>",
             "  </li>",
+            "{% endif %}",
+            "",
+            "{% if tags.flood_date %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fas fa-calendar-alt\"></i>",
+            "   <span class='key'>{{ keyTrans('flood_date') }}:</span>",
+            "   <span class='value'>",
+            "     {% set flood_dates = [] %}",
+            "     {% for d in tags.flood_date|split(';') %}",
+            "       {% set flood_dates = flood_dates|merge([ d|trim|osmFormatDate ]) %}",
+            "     {% endfor %}",
+            "     {{ flood_dates|enumerate }}",
+            "   </span>",
+            "  </li>",
             "{% endif %}"
         ],
-        "markerSign": "{{ const[tags.historic].sign|raw }}"
+        "markerSign": "{{ const[historic].sign|raw }}"
     },
     "info": [
         "<table>",
@@ -112,6 +140,11 @@
         "ruins": {
             "sign": "<img data-src='temaki:ruins'>",
             "zoom": 14
+        },
+        "flood_mark": {
+            "sign": "<i class=\"fas fa-water\"></i>",
+            "zoom": 14,
+            "query": "(node[historic][memorial~\"^(flood_mark|high_water_mark)$\"];node[historic][\"memorial:type\"~\"^(flood_mark|high_water_mark)$\"];node[historic~\"^(highwater_mark|flood_mark)$\"];)"
         }
     },
     "filter": {
@@ -120,7 +153,7 @@
             "show_default": "true",
             "name": "{{ trans('filter:type') }}",
             "type": "select",
-            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('historic', t) }}</option>{% endfor %}<option value='other' query='nwr[historic][historic!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>",
+            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\" {% if const[t].query %}query='{{ const[t].query }}'{% endif %}>{% set list = list|merge([ t ]) %}{{ tagTrans('historic', t) }}</option>{% endfor %}<option value='other' query='nwr[historic][historic!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>",
             "valueName": "{{ tagTrans('historic', value) }}"
         },
         "conflict": {

From df6b9002e41e517b3e730aeda91ee9bc66a65fae Mon Sep 17 00:00:00 2001
From: raphael de assis jacinto e sil <raphaelmirc@gmail.com>
Date: Sat, 23 Mar 2019 02:02:40 +0000
Subject: [PATCH 082/117] Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.9% (91 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/pt_BR/
---
 lang/pt-br.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lang/pt-br.json b/lang/pt-br.json
index 6b7e394..68cece6 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -1,5 +1,5 @@
 {
-    "Objects with diet information": "",
+    "Objects with diet information": "Objetos com informações sobre dieta",
     "category:administrative": "Divisão político-administrativa",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Equipamentos",
@@ -61,7 +61,7 @@
     "category:public": "Utilidade pública",
     "category:railway": "Ferrovia",
     "category:railway-electrification": "Eletrificação ferroviária",
-    "category:railway-gauge": "",
+    "category:railway-gauge": "Calibre ferroviário",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "Rotas ferroviárias",

From 78c9224c748975d371ef5e36ec695d6936dded13 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Mon, 25 Mar 2019 12:20:44 +0100
Subject: [PATCH 083/117] natural: add all values from wiki; improve style w/
 some icons & colors

---
 natural.json | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 187 insertions(+), 1 deletion(-)

diff --git a/natural.json b/natural.json
index 1e2d84c..457d371 100644
--- a/natural.json
+++ b/natural.json
@@ -42,6 +42,192 @@
             "{{ localizedTag(tags, 'name') | default(trans('unnamed')) }}",
             "{% if tags.natural == 'peak' and tags.ele %}({{ tags.ele }}m){% endif %}"
         ],
-        "description": "{{ tagTrans('natural', tags.natural) }}"
+        "description": "{{ tagTrans('natural', tags.natural) }}",
+        "style": {
+            "color": "{{ const[tags.natural].color|default('#f2756a') }}"
+        },
+        "markerSign": "<span style='color: white'>{{ const[tags.natural].sign|raw }}</span>",
+        "markerSymbol": "{{ markerPointer({ fillColor: const[tags.natural].color|default('#f2756a') })|raw }}",
+        "listMarkerSymbol": "{{ markerCircle({ fillColor: const[tags.natural].color|default('#f2756a') })|raw }}"
+    },
+    "const": {
+        "wood": {
+            "sign": "<i class='fas fa-tree'></i>",
+            "color": "darkgreen",
+            "group": "vegetation"
+        },
+        "tree_row": {
+            "sign": "<i class='fas fa-tree'></i>",
+            "color": "darkgreen",
+            "group": "vegetation"
+        },
+        "tree": {
+            "sign": "<i class='fas fa-tree'></i>",
+            "color": "darkgreen",
+            "group": "vegetation"
+        },
+        "scrub": {
+            "sign": "",
+            "color": "green",
+            "group": "vegetation"
+        },
+        "heath": {
+            "sign": "",
+            "color": "green",
+            "group": "vegetation"
+        },
+        "moor": {
+            "sign": "",
+            "color": "#8aba50",
+            "group": "vegetation"
+        },
+        "grassland": {
+            "sign": "",
+            "color": "#00dd24",
+            "group": "vegetation"
+        },
+        "fell": {
+            "sign": "",
+            "color": "#49ba91",
+            "group": "vegetation"
+        },
+        "bare_rock": {
+            "sign": "",
+            "color": "#6f6f6f",
+            "group": "vegetation"
+        },
+        "scree": {
+            "sign": "",
+            "color": "#6f6f6f",
+            "group": "vegetation"
+        },
+        "shingle": {
+            "sign": "",
+            "color": "#6f6f6f",
+            "group": "vegetation"
+        },
+        "sand": {
+            "sign": "",
+            "color": "#f9d199",
+            "group": "vegetation"
+        },
+        "mud": {
+            "sign": "<img data-src='maki:wetland?fill=white'>",
+            "color": "#988b00",
+            "group": "vegetation"
+        },
+        "water": {
+            "sign": "<i class='fas fa-water'></i>",
+            "color": "blue",
+            "group": "water"
+        },
+        "wetland": {
+            "sign": "<img data-src='maki:wetland?fill=white'>",
+            "color": "#00baff",
+            "group": "water"
+        },
+        "glacier": {
+            "sign": "<i style='color: black;' class='fas fa-icicles'></i>",
+            "color": "white",
+            "group": "water"
+        },
+        "bay": {
+            "sign": "",
+            "group": "water"
+        },
+        "cape": {
+            "sign": "",
+            "group": "water"
+        },
+        "peninsula": {
+            "sign": "",
+            "group": "water"
+        },
+        "strait": {
+            "sign": "",
+            "group": "water"
+        },
+        "beach": {
+            "sign": "<i class='fas fa-umbrella-beach'></i>",
+            "color": "#f9d199",
+            "group": "water"
+        },
+        "coastline": {
+            "sign": "",
+            "group": "water"
+        },
+        "spring": {
+            "sign": "",
+            "group": "water"
+        },
+        "hot_spring": {
+            "sign": "",
+            "group": "water"
+        },
+        "geyser": {
+            "sign": "",
+            "group": "water"
+        },
+        "reef": {
+            "sign": "",
+            "group": "water"
+        },
+        "peak": {
+            "sign": "<i class='fas fa-mountain'></i>",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "hill": {
+            "sign": "",
+            "group": "landform"
+        },
+        "volcano": {
+            "sign": "",
+            "group": "landform"
+        },
+        "valley": {
+            "sign": "",
+            "group": "landform"
+        },
+        "river_terrace": {
+            "sign": "",
+            "group": "landform"
+        },
+        "ridge": {
+            "sign": "",
+            "group": "landform"
+        },
+        "arete": {
+            "sign": "",
+            "group": "landform"
+        },
+        "cliff": {
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "saddle": {
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "rock": {
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "stone": {
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "sinkhole": {
+            "sign": "",
+            "group": "landform"
+        },
+        "cave_entrance": {
+            "sign": "",
+            "group": "landform"
+        }
     }
 }

From f53c9e9609c70638a745a6cdacdc8bfe557b16eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Mon, 25 Mar 2019 13:55:16 +0100
Subject: [PATCH 084/117] natural: exclude natural=water (see category water
 instead)

---
 natural.json | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/natural.json b/natural.json
index 457d371..7399392 100644
--- a/natural.json
+++ b/natural.json
@@ -24,16 +24,16 @@
         ],
         "13": [
             "(",
-            "node[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|water|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
-            "way[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|water|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
-            "relation[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|water|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
+            "node[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
+            "way[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
+            "relation[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
             ")"
         ],
         "16": [
             "(",
-            "node[natural];",
-            "way[natural];",
-            "relation[natural];",
+            "node[natural][natural!~\"^(water)$\"];",
+            "way[natural][natural!~\"^(water)$\"];",
+            "relation[natural][natural!~\"^(water)$\"];",
             ")"
         ]
     },
@@ -116,11 +116,6 @@
             "color": "#988b00",
             "group": "vegetation"
         },
-        "water": {
-            "sign": "<i class='fas fa-water'></i>",
-            "color": "blue",
-            "group": "water"
-        },
         "wetland": {
             "sign": "<img data-src='maki:wetland?fill=white'>",
             "color": "#00baff",

From 0c998938d0a4283af828843ecf3e4cfd1f3dbaf9 Mon Sep 17 00:00:00 2001
From: raphael de assis jacinto e sil <raphaelmirc@gmail.com>
Date: Mon, 25 Mar 2019 12:19:28 +0000
Subject: [PATCH 085/117] Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.9% (91 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/pt_BR/
---
 lang/pt-br.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/pt-br.json b/lang/pt-br.json
index 68cece6..ba69712 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -39,7 +39,7 @@
     "category:law": "Direito",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
-    "category:memorial": "Memoriais",
+    "category:memorial": "Memoriais e Memoriais",
     "category:military": "Militar",
     "category:mtb-routes": "Rotas de mountain bike",
     "category:natural": "Formações naturais",

From 5724fad9184f94e15c4d5ac6506a41e4bc00eb62 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Mon, 25 Mar 2019 14:07:38 +0100
Subject: [PATCH 086/117] natural/water: move some feature to water category
 (bay, spring, ...)

---
 natural.json | 28 ++--------------------------
 water.json   |  5 ++---
 2 files changed, 4 insertions(+), 29 deletions(-)

diff --git a/natural.json b/natural.json
index 7399392..63c4757 100644
--- a/natural.json
+++ b/natural.json
@@ -24,16 +24,12 @@
         ],
         "13": [
             "(",
-            "node[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
-            "way[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
-            "relation[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
+            "nwr[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|cape|beach|coastline|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
             ")"
         ],
         "16": [
             "(",
-            "node[natural][natural!~\"^(water)$\"];",
-            "way[natural][natural!~\"^(water)$\"];",
-            "relation[natural][natural!~\"^(water)$\"];",
+            "nwr[natural][natural!~\"^(water|divide|bay|strait|spring|hot_spring|geyser)$\"];",
             ")"
         ]
     },
@@ -126,10 +122,6 @@
             "color": "white",
             "group": "water"
         },
-        "bay": {
-            "sign": "",
-            "group": "water"
-        },
         "cape": {
             "sign": "",
             "group": "water"
@@ -138,10 +130,6 @@
             "sign": "",
             "group": "water"
         },
-        "strait": {
-            "sign": "",
-            "group": "water"
-        },
         "beach": {
             "sign": "<i class='fas fa-umbrella-beach'></i>",
             "color": "#f9d199",
@@ -151,18 +139,6 @@
             "sign": "",
             "group": "water"
         },
-        "spring": {
-            "sign": "",
-            "group": "water"
-        },
-        "hot_spring": {
-            "sign": "",
-            "group": "water"
-        },
-        "geyser": {
-            "sign": "",
-            "group": "water"
-        },
         "reef": {
             "sign": "",
             "group": "water"
diff --git a/water.json b/water.json
index a2d7f22..438a6c7 100644
--- a/water.json
+++ b/water.json
@@ -12,15 +12,14 @@
         "10": [
             "(",
             "way[waterway~\"^(river|canal)$\"];",
-            "way[natural~\"^(divide)$\"];",
+            "nwr[natural~\"^(divide|bay|strait)$\"];",
             "way[natural=water][water~\"^(lake|lagoon|reservoir|canal)$\"];",
             "relation[natural=water][type=multipolygon][water~\"^(lake|lagoon|reservoir|canal)$\"];",
             ")"
         ],
         "13": [
             "(",
-            "node[natural~\"^(water|divide)$\"];",
-            "way[natural~\"^(water|divide)$\"];",
+            "nwr[natural~\"^(water|divide|bay|strait|spring|hot_spring|geyser)$\"];",
             "relation[type=multipolygon][natural=water];",
             "relation[type=multipolygon][waterway=riverbank];",
             "way[waterway];",

From bbe65488d40d94f4b5a2f5d9beef2c8d5d84785d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Mon, 25 Mar 2019 14:26:51 +0100
Subject: [PATCH 087/117] natural: more colors, include isthmus

---
 natural.json | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/natural.json b/natural.json
index 63c4757..a990455 100644
--- a/natural.json
+++ b/natural.json
@@ -124,10 +124,12 @@
         },
         "cape": {
             "sign": "",
+            "color": "#1d7500",
             "group": "water"
         },
         "peninsula": {
             "sign": "",
+            "color": "#1d7500",
             "group": "water"
         },
         "beach": {
@@ -137,10 +139,12 @@
         },
         "coastline": {
             "sign": "",
+            "color": "blue",
             "group": "water"
         },
         "reef": {
             "sign": "",
+            "color": "#005fbd",
             "group": "water"
         },
         "peak": {
@@ -150,26 +154,32 @@
         },
         "hill": {
             "sign": "",
+            "color": "#4f4f4f",
             "group": "landform"
         },
         "volcano": {
             "sign": "",
+            "color": "#cf3a00",
             "group": "landform"
         },
         "valley": {
             "sign": "",
+            "color": "#1d7500",
             "group": "landform"
         },
         "river_terrace": {
             "sign": "",
+            "color": "#a0a500",
             "group": "landform"
         },
         "ridge": {
             "sign": "",
+            "color": "#4f4f4f",
             "group": "landform"
         },
         "arete": {
             "sign": "",
+            "color": "#4f4f4f",
             "group": "landform"
         },
         "cliff": {
@@ -194,10 +204,17 @@
         },
         "sinkhole": {
             "sign": "",
+            "color": "#a0a500",
             "group": "landform"
         },
         "cave_entrance": {
             "sign": "",
+            "color": "#000000",
+            "group": "landform"
+        },
+        "isthmus": {
+            "sign": "",
+            "color": "#1d7500",
             "group": "landform"
         }
     }

From 21451a36a24cda0336dca7a81cf72dce53b1a797 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 25 Mar 2019 21:58:09 +0100
Subject: [PATCH 088/117] water: include node[waterway], style some features
 with pointer

---
 water.json | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 47 insertions(+), 7 deletions(-)

diff --git a/water.json b/water.json
index 438a6c7..c71a725 100644
--- a/water.json
+++ b/water.json
@@ -22,23 +22,39 @@
             "nwr[natural~\"^(water|divide|bay|strait|spring|hot_spring|geyser)$\"];",
             "relation[type=multipolygon][natural=water];",
             "relation[type=multipolygon][waterway=riverbank];",
-            "way[waterway];",
+            "nwr[waterway];",
             ")"
         ]
     },
     "feature": {
-        "description": [
+        "pre": [
             "{% if tags.waterway %}",
-            "{{ tagTrans('waterway', tags.waterway) }}",
+            "  {% set key = 'waterway' %}",
+            "  {% set value = tags.waterway %}",
             "{% elseif tags.water %}",
-            "{{ tagTrans('water', tags.water) }}",
+            "  {% set key = 'water' %}",
+            "  {% set value = tags.water %}",
             "{% elseif tags.natural %}",
-            "{{ tagTrans('natural', tags.natural) }}",
+            "  {% set key = 'natural' %}",
+            "  {% set value = tags.natural %}",
+            "{% endif %}",
+            "{% set kv = key ~ '=' ~ value %}"
+        ],
+        "description": [
+            "{{ tagTrans(key, value) }}"
+        ],
+        "markerSign": [
+            "{{ const[kv].sign|raw }}"
+        ],
+        "markerSymbol": [
+            "{% if const[kv].symbol == 'pointer' %}",
+            "{{ markerPointer({ fillColor: '#3388ff' })|raw }}",
             "{% endif %}"
         ],
-        "markerSymbol": null,
         "listMarkerSymbol": [
-            "{% if tags.natural == 'water' %}",
+            "{% if const[kv].symbol == 'pointer' %}",
+            "{{ markerCircle({ fillColor: '#3388ff' })|raw }}",
+            "{% elseif tags.natural == 'water' %}",
             "polygon",
             "{% else %}",
             "line",
@@ -88,6 +104,24 @@
             "textRepeat": "1"
         }
     },
+    "const": {
+        "natural=spring": {
+            "sign": "<i class='fas fa-water'></i>",
+            "symbol": "pointer"
+        },
+        "natural=hot_spring": {
+            "sign": "<i style='color: orange;' class='fas fa-water'></i>",
+            "symbol": "pointer"
+        },
+        "natural=geyser": {
+            "sign": "<i style='color: red;' class='fas fa-water'></i>",
+            "symbol": "pointer"
+        },
+        "waterway=waterfall": {
+            "sign": "<img data-src='maki:waterfall'>",
+            "symbol": "pointer"
+        }
+    },
     "info": [
         "<table>",
         "  <tr>",
@@ -112,6 +146,12 @@
         "    <td>{{ markerLine(evaluate({ \"waterway\": \"dam\" }))|raw }}</td>",
         "    <td>{{ tagTrans('waterway', 'dam') }}, {{ tagTrans('waterway', 'weir') }}</td>",
         "  </tr>",
+        "  {% for k, data in const %}",
+        "    <tr>",
+        "      <td>{{ markerCircle({ fillColor: '#3388ff' })|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "      <td>{{ tagTrans(k) }}</td>",
+        "    </tr>",
+        "  {% endfor %}",
         "{% endif %}",
         "  <tr>",
         "    <td>{{ markerLine(evaluate({ \"natural\": \"divide\" }))|raw }}</td>",

From 4c540a699c166a4fb3ddc28d7b2ba619f40f6bb6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 25 Mar 2019 22:03:47 +0100
Subject: [PATCH 089/117] natural: add a type filter

---
 natural.json | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/natural.json b/natural.json
index a990455..faec7c0 100644
--- a/natural.json
+++ b/natural.json
@@ -46,6 +46,17 @@
         "markerSymbol": "{{ markerPointer({ fillColor: const[tags.natural].color|default('#f2756a') })|raw }}",
         "listMarkerSymbol": "{{ markerCircle({ fillColor: const[tags.natural].color|default('#f2756a') })|raw }}"
     },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "key": "natural",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for k, v in const %}<option value=\"{{ k }}\">{% set list = list|merge([ k ]) %}{{ tagTrans('natural', k) }}</option>{% endfor %}<option weight='1' value='other' query='nwr[natural][natural!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "sort": "natsort",
+            "op": "has"
+        }
+    },
     "const": {
         "wood": {
             "sign": "<i class='fas fa-tree'></i>",

From 9d0fe57eb4fb6c7e01f3c20068d1d1ab3668274e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 26 Mar 2019 14:52:44 +0100
Subject: [PATCH 090/117] water: add a filter for the features defined via
 const

---
 water.json | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/water.json b/water.json
index c71a725..a48071d 100644
--- a/water.json
+++ b/water.json
@@ -122,6 +122,16 @@
             "symbol": "pointer"
         }
     },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "key": "natural",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\">{{ tagTrans(k) }}</option>{% endfor %}",
+            "sort": "natsort"
+        }
+    },
     "info": [
         "<table>",
         "  <tr>",

From 0cc62107a0b902fa7fab7802ad239dad83c99a96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 26 Mar 2019 15:31:38 +0100
Subject: [PATCH 091/117] water: rewrite other features to get style, info, ...
 from const

---
 water.json | 214 ++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 145 insertions(+), 69 deletions(-)

diff --git a/water.json b/water.json
index a48071d..5ca9357 100644
--- a/water.json
+++ b/water.json
@@ -38,7 +38,8 @@
             "  {% set key = 'natural' %}",
             "  {% set value = tags.natural %}",
             "{% endif %}",
-            "{% set kv = key ~ '=' ~ value %}"
+            "{% set kv = key ~ '=' ~ value %}",
+            "{% set data = const[kv]|default(const['natural=water']) %}"
         ],
         "description": [
             "{{ tagTrans(key, value) }}"
@@ -47,57 +48,25 @@
             "{{ const[kv].sign|raw }}"
         ],
         "markerSymbol": [
-            "{% if const[kv].symbol == 'pointer' %}",
+            "{% if data.symbol == 'pointer' %}",
             "{{ markerPointer({ fillColor: '#3388ff' })|raw }}",
             "{% endif %}"
         ],
         "listMarkerSymbol": [
-            "{% if const[kv].symbol == 'pointer' %}",
+            "{% if data.symbol == 'pointer' %}",
             "{{ markerCircle({ fillColor: '#3388ff' })|raw }}",
-            "{% elseif tags.natural == 'water' %}",
+            "{% elseif data.symbol == 'polygon' %}",
             "polygon",
             "{% else %}",
             "line",
             "{% endif %}"
         ],
-        "priority": [
-            "{% if tags.natural == 'divide' %}",
-            "0",
-            "{% elseif tags.natural == 'water' and tags.water in ['lake', 'lagoon', 'reservoir', 'canal'] %}",
-            "0",
-            "{% elseif tags.waterway == 'river' %}",
-            "1",
-            "{% elseif tags.waterway == 'stream' or tags.waterway == 'drain' %}",
-            "3",
-            "{% elseif tags.waterway == 'ditch' %}",
-            "5",
-            "{% else %}",
-            "2",
-            "{% endif %}"
-        ],
+        "priority": "{{ data.priority }}",
         "style": {
-            "width": [
-                "{% if tags.waterway == 'river' %}",
-                "4",
-                "{% elseif tags.waterway == 'stream' or tags.waterway == 'drain' %}",
-                "2",
-                "{% elseif tags.waterway == 'ditch' %}",
-                "1",
-                "{% else %}",
-                "3",
-                "{% endif %}"
-            ],
-            "color": [
-                "{% if tags.natural == 'divide' %}",
-                "#ff0000",
-                "{% elseif tags.waterway in [ 'dam', 'weir' ] %}",
-                "#000000",
-                "{% else %}",
-                "#3388ff",
-                "{% endif %}"
-            ],
+            "width": "{{ data.style.width }}",
+            "color": "{{ data.style.color }}",
             "text": [
-                "{% if type=='way' and tags.waterway in [ 'river', 'stream', 'canal', 'ditch', 'wadi', 'drystream', 'drain' ] %}",
+                "{% if data.text %}",
                 "{{ tags.name }}   ➔   ",
                 "{% endif %}"
             ],
@@ -105,21 +74,145 @@
         }
     },
     "const": {
+        "natural=water": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "priority": 2
+        },
+        "water=lake": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "hideInfo": true,
+            "priority": 0
+        },
+        "water=lagoon": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "hideInfo": true,
+            "priority": 0
+        },
+        "water=reservoir": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "hideInfo": true,
+            "priority": 0
+        },
+        "waterway=river": {
+            "zoom": 10,
+            "symbol": "line",
+            "style": {
+                "width": 4,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 1
+        },
+        "waterway=canal": {
+            "alias": [
+                "water=canal"
+            ],
+            "zoom": 10,
+            "symbol": "line",
+            "style": {
+                "width": 4,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 1
+        },
+        "waterway=stream": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 2,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 3
+        },
+        "waterway=drain": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 2,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 3
+        },
+        "waterway=ditch": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 1,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 5
+        },
         "natural=spring": {
             "sign": "<i class='fas fa-water'></i>",
+            "zoom": 13,
             "symbol": "pointer"
         },
         "natural=hot_spring": {
             "sign": "<i style='color: orange;' class='fas fa-water'></i>",
+            "zoom": 13,
             "symbol": "pointer"
         },
         "natural=geyser": {
             "sign": "<i style='color: red;' class='fas fa-water'></i>",
+            "zoom": 13,
             "symbol": "pointer"
         },
         "waterway=waterfall": {
             "sign": "<img data-src='maki:waterfall'>",
+            "zoom": 13,
             "symbol": "pointer"
+        },
+        "waterway=dam": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 3,
+                "color": "#000000"
+            },
+            "priority": 3
+        },
+        "waterway=weir": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 3,
+                "color": "#000000"
+            },
+            "priority": 3
+        },
+        "natural=divide": {
+            "zoom": 10,
+            "symbol": "line",
+            "style": {
+                "width": 3,
+                "color": "#ff0000"
+            },
+            "text": true,
+            "priority": 0
         }
     },
     "filter": {
@@ -128,45 +221,28 @@
             "key": "natural",
             "type": "select",
             "show_default": "true",
-            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\">{{ tagTrans(k) }}</option>{% endfor %}",
+            "values": "{% for k, data in const %}<option value=\"{{ k }}\" query=\"(nwr[{{ k }}];{% for a in data.alias %}nwr[{{ a }}];{% endfor %})\">{{ tagTrans(k) }}</option>{% endfor %}",
             "sort": "natsort"
         }
     },
     "info": [
         "<table>",
-        "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"natural\": \"water\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('natural', 'water') }}</td>",
-        "  </tr>",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"river\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'river') }},",
-        " {{ tagTrans('waterway', 'canal') }}</td>",
-        "  </tr>",
-        "{% if map.zoom >= 13 %}",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"stream\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'stream') }}, {{ tagTrans('waterway', 'drain') }}</td>",
-        "  </tr>",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"ditch\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'ditch') }}</td>",
-        "  </tr>",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"dam\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'dam') }}, {{ tagTrans('waterway', 'weir') }}</td>",
-        "  </tr>",
         "  {% for k, data in const %}",
+        "    {% if not data.hideInfo and data.zoom <= map.zoom %}",
         "    <tr>",
-        "      <td>{{ markerCircle({ fillColor: '#3388ff' })|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "      <td>",
+        "      {% if data.symbol == 'pointer' %}",
+        "        {{ markerCircle({ fillColor: '#3388ff' })|raw }}<div class='sign'>{{ data.sign|raw }}</div>",
+        "      {% elseif data.symbol == 'polygon' %}",
+        "        {{ markerPolygon(data.style)|raw }}",
+        "      {% elseif data.symbol == 'line' %}",
+        "        {{ markerLine(data.style)|raw }}",
+        "      {% endif %}",
+        "      </td>",
         "      <td>{{ tagTrans(k) }}</td>",
         "    </tr>",
+        "    {% endif %}",
         "  {% endfor %}",
-        "{% endif %}",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"natural\": \"divide\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('natural', 'divide') }}</td>",
-        "  </tr>",
         "</table>"
     ]
 }

From 3c3a26b01dc8477bcd46c9c12713d3f3b7805709 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 26 Mar 2019 15:37:08 +0100
Subject: [PATCH 092/117] water: show intermittet waterways with dashed line

---
 water.json | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/water.json b/water.json
index 5ca9357..879020d 100644
--- a/water.json
+++ b/water.json
@@ -70,7 +70,9 @@
                 "{{ tags.name }}   ➔   ",
                 "{% endif %}"
             ],
-            "textRepeat": "1"
+            "textRepeat": "1",
+            "dashArray": "{% if tags.intermittent == 'yes' %}5,5{% endif %}",
+            "lineCap": "{% if tags.intermittent == 'yes' %}butt{% else %}round{% endif %}"
         }
     },
     "const": {
@@ -243,6 +245,10 @@
         "    </tr>",
         "    {% endif %}",
         "  {% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ width: 3, color: '#3388ff', dashArray: '5,5', lineCap: 'butt' })|raw }}</td>",
+        "    <td>{{ keyTrans('intermittent') }}</td>",
+        "  </tr>",
         "</table>"
     ]
 }

From edc387e049616b42511bafa1a639a5c3ef104fe5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 26 Mar 2019 22:01:13 +0100
Subject: [PATCH 093/117] water: additional 'intermittent' filter

---
 water.json | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/water.json b/water.json
index 879020d..1b08673 100644
--- a/water.json
+++ b/water.json
@@ -44,6 +44,16 @@
         "description": [
             "{{ tagTrans(key, value) }}"
         ],
+        "body": [
+            "<ul>",
+            "{% if tags.intermittent %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"far fa-circle\"></i>",
+            "   <span class='key'>{{ keyTrans('intermittent') }}:</span>",
+            "   <span class='value'>{{ tagTrans('intermittent', tags.intermittent) }}</span>",
+            "{% endif %}",
+            "</ul>"
+        ],
         "markerSign": [
             "{{ const[kv].sign|raw }}"
         ],
@@ -225,6 +235,12 @@
             "show_default": "true",
             "values": "{% for k, data in const %}<option value=\"{{ k }}\" query=\"(nwr[{{ k }}];{% for a in data.alias %}nwr[{{ a }}];{% endfor %})\">{{ tagTrans(k) }}</option>{% endfor %}",
             "sort": "natsort"
+        },
+        "intermittent": {
+            "name": "{{ keyTrans('intermittent') }}",
+            "key": "intermittent",
+            "type": "radio",
+            "values": "<option value='yes' query=\"nwr[intermittent][intermittent!=no]\">{{ tagTrans('intermittent', 'yes') }}</option><option value='no' query=\"(nwr[!intermittent];nwr[intermittent=no];)\">{{ tagTrans('intermittent', 'no') }}</option>"
         }
     },
     "info": [

From 582f9740294083b66393539c5653397576db961e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 27 Mar 2019 11:32:32 +0100
Subject: [PATCH 094/117] natural: update 'de' name

---
 lang/de.json | 2 +-
 natural.json | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lang/de.json b/lang/de.json
index b9abf63..dc739fb 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -42,7 +42,7 @@
     "category:memorial": "Denkmäler und Monumente",
     "category:military": "Militär",
     "category:mtb-routes": "Mointainbikerouten",
-    "category:natural": "Geographische Objekte",
+    "category:natural": "Naturformationen",
     "category:office": "Ämter, Dienst- und Geschäftsstellen",
     "category:oil_gas": "Erdöl und Erdgas",
     "category:organisations": "Organisationen",
diff --git a/natural.json b/natural.json
index faec7c0..65f8398 100644
--- a/natural.json
+++ b/natural.json
@@ -3,7 +3,7 @@
     "name": {
         "ast": "Formaciones naturales",
         "cs": "Přírodní úkazy",
-        "de": "Geographische Objekte",
+        "de": "Naturformationen",
         "el": "Φυσικοί Σχηματισμοί",
         "en": "Natural Formations",
         "fr": "Éléments naturels",

From a62e87904fe466bc6366a8cdcc581adaf63a290b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 27 Mar 2019 13:02:01 +0100
Subject: [PATCH 095/117] natural: add an info page

---
 natural.json | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/natural.json b/natural.json
index 65f8398..9a06596 100644
--- a/natural.json
+++ b/natural.json
@@ -59,174 +59,222 @@
     },
     "const": {
         "wood": {
+            "zoom": 13,
             "sign": "<i class='fas fa-tree'></i>",
             "color": "darkgreen",
             "group": "vegetation"
         },
         "tree_row": {
+            "zoom": 16,
             "sign": "<i class='fas fa-tree'></i>",
             "color": "darkgreen",
             "group": "vegetation"
         },
         "tree": {
+            "zoom": 16,
             "sign": "<i class='fas fa-tree'></i>",
             "color": "darkgreen",
             "group": "vegetation"
         },
         "scrub": {
+            "zoom": 13,
             "sign": "",
             "color": "green",
             "group": "vegetation"
         },
         "heath": {
+            "zoom": 13,
             "sign": "",
             "color": "green",
             "group": "vegetation"
         },
         "moor": {
+            "zoom": 13,
             "sign": "",
             "color": "#8aba50",
             "group": "vegetation"
         },
         "grassland": {
+            "zoom": 13,
             "sign": "",
             "color": "#00dd24",
             "group": "vegetation"
         },
         "fell": {
+            "zoom": 13,
             "sign": "",
             "color": "#49ba91",
             "group": "vegetation"
         },
         "bare_rock": {
+            "zoom": 13,
             "sign": "",
             "color": "#6f6f6f",
             "group": "vegetation"
         },
         "scree": {
+            "zoom": 13,
             "sign": "",
             "color": "#6f6f6f",
             "group": "vegetation"
         },
         "shingle": {
+            "zoom": 13,
             "sign": "",
             "color": "#6f6f6f",
             "group": "vegetation"
         },
         "sand": {
+            "zoom": 13,
             "sign": "",
             "color": "#f9d199",
             "group": "vegetation"
         },
         "mud": {
+            "zoom": 13,
             "sign": "<img data-src='maki:wetland?fill=white'>",
             "color": "#988b00",
             "group": "vegetation"
         },
         "wetland": {
+            "zoom": 13,
             "sign": "<img data-src='maki:wetland?fill=white'>",
             "color": "#00baff",
             "group": "water"
         },
         "glacier": {
+            "zoom": 13,
             "sign": "<i style='color: black;' class='fas fa-icicles'></i>",
             "color": "white",
             "group": "water"
         },
         "cape": {
+            "zoom": 16,
             "sign": "",
             "color": "#1d7500",
             "group": "water"
         },
         "peninsula": {
+            "zoom": 16,
             "sign": "",
             "color": "#1d7500",
             "group": "water"
         },
         "beach": {
+            "zoom": 13,
             "sign": "<i class='fas fa-umbrella-beach'></i>",
             "color": "#f9d199",
             "group": "water"
         },
         "coastline": {
+            "zoom": 13,
             "sign": "",
             "color": "blue",
             "group": "water"
         },
         "reef": {
+            "zoom": 13,
             "sign": "",
             "color": "#005fbd",
             "group": "water"
         },
         "peak": {
+            "zoom": 9,
             "sign": "<i class='fas fa-mountain'></i>",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "hill": {
+            "zoom": 16,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "volcano": {
+            "zoom": 9,
             "sign": "",
             "color": "#cf3a00",
             "group": "landform"
         },
         "valley": {
+            "zoom": 13,
             "sign": "",
             "color": "#1d7500",
             "group": "landform"
         },
         "river_terrace": {
+            "zoom": 16,
             "sign": "",
             "color": "#a0a500",
             "group": "landform"
         },
         "ridge": {
+            "zoom": 13,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "arete": {
+            "zoom": 13,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "cliff": {
+            "zoom": 13,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "saddle": {
+            "zoom": 13,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "rock": {
+            "zoom": 13,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "stone": {
+            "zoom": 13,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "sinkhole": {
+            "zoom": 13,
             "sign": "",
             "color": "#a0a500",
             "group": "landform"
         },
         "cave_entrance": {
+            "zoom": 13,
             "sign": "",
             "color": "#000000",
             "group": "landform"
         },
         "isthmus": {
+            "zoom": 16,
             "sign": "",
             "color": "#1d7500",
             "group": "landform"
         }
-    }
+    },
+    "info": [
+        "<table>",
+        "  {% for k, data in const %}",
+        "    {% if data.zoom <= map.zoom %}",
+        "    <tr>",
+        "      <td>",
+        "        {{ markerCircle({ fillColor: data.color })|raw }}<div class='sign'>{{ data.sign|raw }}</div>",
+        "      </td>",
+        "      <td>{{ tagTrans('natural', k) }}</td>",
+        "    </tr>",
+        "    {% endif %}",
+        "  {% endfor %}",
+        "</table>"
+    ]
 }

From 2bd2999d57695f79d15b81cf8aaa318bf18df6b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 27 Mar 2019 13:09:06 +0100
Subject: [PATCH 096/117] natural: improve zoom level

---
 natural.json | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/natural.json b/natural.json
index 9a06596..b1d688f 100644
--- a/natural.json
+++ b/natural.json
@@ -19,15 +19,20 @@
     "query": {
         "9": [
             "(",
-            "node[natural~\"^(peak|volcano)$\"];",
+            "node[natural~\"^(peak|volcano|valley)$\"];",
             ")"
         ],
         "13": [
             "(",
-            "nwr[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|wetland|glacier|cape|beach|coastline|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
+            "nwr[natural~\"^(peak|volcano|wood|glacier|cape|peninsula|beach|coastline|reef|hill|valley|ridge|arete|saddle|sinkhole|cave_entrance|isthmus)$\"];",
             ")"
         ],
         "16": [
+            "(",
+            "nwr[natural][natural!~\"^(water|divide|bay|strait|spring|hot_spring|geyser|tree)$\"];",
+            ")"
+        ],
+        "18": [
             "(",
             "nwr[natural][natural!~\"^(water|divide|bay|strait|spring|hot_spring|geyser)$\"];",
             ")"
@@ -71,19 +76,19 @@
             "group": "vegetation"
         },
         "tree": {
-            "zoom": 16,
+            "zoom": 18,
             "sign": "<i class='fas fa-tree'></i>",
             "color": "darkgreen",
             "group": "vegetation"
         },
         "scrub": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "green",
             "group": "vegetation"
         },
         "heath": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "green",
             "group": "vegetation"
@@ -95,49 +100,49 @@
             "group": "vegetation"
         },
         "grassland": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#00dd24",
             "group": "vegetation"
         },
         "fell": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#49ba91",
             "group": "vegetation"
         },
         "bare_rock": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#6f6f6f",
             "group": "vegetation"
         },
         "scree": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#6f6f6f",
             "group": "vegetation"
         },
         "shingle": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#6f6f6f",
             "group": "vegetation"
         },
         "sand": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#f9d199",
             "group": "vegetation"
         },
         "mud": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "<img data-src='maki:wetland?fill=white'>",
             "color": "#988b00",
             "group": "vegetation"
         },
         "wetland": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "<img data-src='maki:wetland?fill=white'>",
             "color": "#00baff",
             "group": "water"
@@ -149,13 +154,13 @@
             "group": "water"
         },
         "cape": {
-            "zoom": 16,
+            "zoom": 13,
             "sign": "",
             "color": "#1d7500",
             "group": "water"
         },
         "peninsula": {
-            "zoom": 16,
+            "zoom": 13,
             "sign": "",
             "color": "#1d7500",
             "group": "water"
@@ -185,7 +190,7 @@
             "group": "landform"
         },
         "hill": {
-            "zoom": 16,
+            "zoom": 13,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
@@ -197,7 +202,7 @@
             "group": "landform"
         },
         "valley": {
-            "zoom": 13,
+            "zoom": 9,
             "sign": "",
             "color": "#1d7500",
             "group": "landform"
@@ -221,7 +226,7 @@
             "group": "landform"
         },
         "cliff": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
@@ -233,13 +238,13 @@
             "group": "landform"
         },
         "rock": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
         },
         "stone": {
-            "zoom": 13,
+            "zoom": 16,
             "sign": "",
             "color": "#4f4f4f",
             "group": "landform"
@@ -257,7 +262,7 @@
             "group": "landform"
         },
         "isthmus": {
-            "zoom": 16,
+            "zoom": 13,
             "sign": "",
             "color": "#1d7500",
             "group": "landform"

From ad2852ee3774831b440d859feb94d3292b90140b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Thu, 28 Mar 2019 10:51:50 +0100
Subject: [PATCH 097/117] natural: different color for beach

---
 natural.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/natural.json b/natural.json
index b1d688f..53749c3 100644
--- a/natural.json
+++ b/natural.json
@@ -168,7 +168,7 @@
         "beach": {
             "zoom": 13,
             "sign": "<i class='fas fa-umbrella-beach'></i>",
-            "color": "#f9d199",
+            "color": "#ff7f50",
             "group": "water"
         },
         "coastline": {

From 16e894012e7a285c5472b97bdf895007bd9e7b6b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Babos?= <gabor.babos@gmail.com>
Date: Tue, 9 Apr 2019 11:11:09 +0000
Subject: [PATCH 098/117] Translated using Weblate (Hungarian)

Currently translated at 100.0% (92 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/hu/
---
 lang/hu.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/hu.json b/lang/hu.json
index 8f5a494..aeb7821 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -61,7 +61,7 @@
     "category:public": "Közszolgáltatások",
     "category:railway": "Vasút",
     "category:railway-electrification": "Vasút villamosítottsága",
-    "category:railway-gauge": "",
+    "category:railway-gauge": "Vasúti nyomtáv",
     "category:railway-infrastructure": "Vasúti infrastruktúra",
     "category:railway-maxspeed": "Sebességkorlátozás",
     "category:railway-routes": "Vasútvonalak",

From 2e43a24c334d87a9b88b91994ada45817f0f3fc3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Fri, 12 Apr 2019 14:08:21 +0200
Subject: [PATCH 099/117] railway-electrification: fix display of
 non-electrified / unknown

---
 railway-electrification.json | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/railway-electrification.json b/railway-electrification.json
index 6b6d49d..f67f218 100644
--- a/railway-electrification.json
+++ b/railway-electrification.json
@@ -24,8 +24,10 @@
             "  {% else %}",
             "    {% set color = colorInterpolate([ 'blue', '#af0000' ], (tags.voltage - 1000) / 24000) %}",
             "  {% endif %}",
+            "{% elseif tags.electrified and tags.electrified == 'no' %}",
+            "  {% set color = '#000000' %}",
             "{% else %}",
-            "  {% set color = 'black' %}",
+            "  {% set color = '#7f7f7f' %}",
             "{% endif %}",
             "",
             "{% if tags.service == 'yard' or tags.service == 'siding' or tags.service == 'spur' or tags.service == 'crossover' %}",
@@ -72,7 +74,7 @@
             "fill": null,
             "dashArray": [
                 "{% if not tags.electrified is defined  %}",
-                "{% elseif tags.frequency == 0 %}",
+                "{% elseif not tags.frequency is defined or tags.frequency == 0 %}",
                 "{% else %}",
                 "5,2",
                 "{% endif %}"

From c5c40aba86de04ea8f720a6ef7b0fe9d5ebdcc14 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Fri, 12 Apr 2019 14:12:53 +0200
Subject: [PATCH 100/117] railway categories: in >z14 load only map features
 which are tracks

(e.g. railway=rail, ...)
---
 railway-electrification.json | 2 +-
 railway-gauge.json           | 2 +-
 railway-maxspeed.json        | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/railway-electrification.json b/railway-electrification.json
index f67f218..7e61111 100644
--- a/railway-electrification.json
+++ b/railway-electrification.json
@@ -10,7 +10,7 @@
     },
     "query": {
         "11": "way[railway=rail][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'][usage~'^(main|branch)$'];",
-        "14": "way[railway][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'];"
+        "14": "way[railway~'^(disused|construction|funicular|light_rail|miniature|monorail|narrow_gauge|preserved|rail|subway|tram)$'];"
     },
     "feature": {
         "pre": [
diff --git a/railway-gauge.json b/railway-gauge.json
index da217cb..e20de61 100644
--- a/railway-gauge.json
+++ b/railway-gauge.json
@@ -5,7 +5,7 @@
     },
     "query": {
         "11": "way[railway=rail][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'][usage~'^(main|branch)$'];",
-        "14": "way[railway][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'];"
+        "14": "way[railway~'^(disused|construction|funicular|light_rail|miniature|monorail|narrow_gauge|preserved|rail|subway|tram)$'];"
     },
     "feature": {
         "pre": "{% set gauges = tags.gauge|split(';') %}",
diff --git a/railway-maxspeed.json b/railway-maxspeed.json
index 1c756f2..111d5de 100644
--- a/railway-maxspeed.json
+++ b/railway-maxspeed.json
@@ -10,7 +10,7 @@
     },
     "query": {
         "11": "way[railway=rail][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'][usage~'^(main|branch)$'];",
-        "14": "way[railway][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'];"
+        "14": "way[railway~'^(disused|construction|funicular|light_rail|miniature|monorail|narrow_gauge|preserved|rail|subway|tram)$'];"
     },
     "feature": {
         "pre": [

From a56155f033c00e85fa36e4a0baf9952a95e9fccb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Fri, 12 Apr 2019 14:31:16 +0200
Subject: [PATCH 101/117] railway-electrification: improve colors; set
 preferences via const

---
 railway-electrification.json | 45 +++++++++++++++++++++---------------
 1 file changed, 27 insertions(+), 18 deletions(-)

diff --git a/railway-electrification.json b/railway-electrification.json
index 7e61111..66bb031 100644
--- a/railway-electrification.json
+++ b/railway-electrification.json
@@ -16,18 +16,18 @@
         "pre": [
             "{% if tags.electrified and tags.electrified != 'no' %}",
             "  {% if not tags.voltage is defined %}",
-            "    {% set color = '#7f7f7f' %}",
+            "    {% set color = const.colorUnknown %}",
             "  {% elseif not tags.voltage|matches('^[0-9]+$') %}",
-            "    {% set color = '#ff0000' %}",
-            "  {% elseif tags.voltage < 1000 %}",
-            "    {% set color = colorInterpolate([ '#00ff00', 'blue' ], tags.voltage / 1000) %}",
+            "    {% set color = const.colorIllegal %}",
+            "  {% elseif tags.voltage < const.range[1] %}",
+            "    {% set color = colorInterpolate(const.scheme|slice(0, 2), tags.voltage / const.range[1]) %}",
             "  {% else %}",
-            "    {% set color = colorInterpolate([ 'blue', '#af0000' ], (tags.voltage - 1000) / 24000) %}",
+            "    {% set color = colorInterpolate(const.scheme|slice(1, 2), (tags.voltage - const.range[1]) / (const.range[2] - const.range[1])) %}",
             "  {% endif %}",
             "{% elseif tags.electrified and tags.electrified == 'no' %}",
-            "  {% set color = '#000000' %}",
+            "  {% set color = const.colorNone %}",
             "{% else %}",
-            "  {% set color = '#7f7f7f' %}",
+            "  {% set color = const.colorUnknown %}",
             "{% endif %}",
             "",
             "{% if tags.service == 'yard' or tags.service == 'siding' or tags.service == 'spur' or tags.service == 'crossover' %}",
@@ -35,9 +35,9 @@
             "  {% else %}",
             "    {% if tags.railway == 'rail' %}",
             "      {% if tags.usage == 'main' or tags.usage == 'branch' %}",
-            "        {% set width=3 %}",
+            "        {% set width=4 %}",
             "      {% else %}",
-            "        {% set width=2.5 %}",
+            "        {% set width=3 %}",
             "      {% endif %}",
             "    {% else %}",
             "      {% set width=2 %}",
@@ -84,32 +84,33 @@
             "width": "{{ width }}",
             "color": "white",
             "opacity": "1",
+            "lineCap": "butt",
             "fill": null
         }
     },
     "info": [
         "<table>",
-        "  {% set color = '#000000' %}",
         "  <tr>",
-        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': const.colorNone })|raw }}</td>",
         "    <td>{{ trans('not electrified') }}</td>",
         "  </tr>",
-        "{% for i in range(0, 1000, 200) %}",
-        "  {% set color = colorInterpolate([ '#00ff00', 'blue' ], i / 1000) %}",
+        "{% for i in range(0, const.range[1], const.infoSteps[0]) %}",
+        "  {% set color = colorInterpolate(const.scheme|slice(0, 2), i / const.range[1]) %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
         "    <td>{{ i }}V</td>",
         "  </tr>",
         "{% endfor %}",
         "",
-        "{% for i in range(3000, 25000, 2000) %}",
-        "  {% set color = colorInterpolate([ 'blue', '#af0000' ], (i - 1000) / 24000) %}",
+        "{% for i in range(const.range[1] + const.infoSteps[1], const.range[2], const.infoSteps[1]) %}",
+        "  {% set color = colorInterpolate(const.scheme|slice(1, 2), (i - const.range[1]) / (const.range[2] - const.range[1])) %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
         "    <td>{{ i }}V</td>",
         "  </tr>",
         "{% endfor %}",
         "",
+        "{% set color = const.scheme[1] %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
         "    <td>{{ trans('tag:frequency=0') }}</td>",
@@ -121,14 +122,22 @@
         "  </tr>",
         "",
         "  <tr>",
-        "    <td>{{ markerLine({ 'width': 3, 'color': '#7f7f7f' })|raw }}</td>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': const.colorUnknown })|raw }}</td>",
         "    <td>{{ trans('unknown') }}</td>",
         "  </tr>",
         "",
         "  <tr>",
-        "    <td>{{ markerLine({ 'width': 3, 'color': '#ff0000' })|raw }}</td>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': const.colorIllegal })|raw }}</td>",
         "    <td>{{ trans('illegal value') }}</td>",
         "  </tr>",
         "</table>"
-    ]
+    ],
+    "const": {
+        "range": [ 0, 1000, 25000 ],
+        "infoSteps": [ 200, 2000 ],
+        "scheme": [ "#00ff00", "#003fff", "#af0000" ],
+        "colorNone": "orange",
+        "colorUnknown": "#404040",
+        "colorIllegal": "#ff0000"
+    }
 }

From c0bbff504b972fa34b2edaec84c450d43874b3f9 Mon Sep 17 00:00:00 2001
From: Swyter <swyterzone+openstreetbrowser@gmail.com>
Date: Sun, 14 Apr 2019 14:39:18 +0000
Subject: [PATCH 102/117] Translated using Weblate (Spanish)

Currently translated at 100.0% (92 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/es/
---
 lang/es.json | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lang/es.json b/lang/es.json
index da400a5..9146800 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -1,5 +1,5 @@
 {
-    "Objects with diet information": "",
+    "Objects with diet information": "Objetos con información dietética",
     "category:administrative": "Áreas Administrativas",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Instalaciones",
@@ -39,7 +39,7 @@
     "category:law": "Ley",
     "category:leisure": "Ocio",
     "category:leisure_sport_shopping": "Ocio, deporte y compras",
-    "category:memorial": "Memoriales",
+    "category:memorial": "Monumentos y lugares conmemorativos",
     "category:military": "Militar",
     "category:mtb-routes": "Rutas de ciclismo de montaña",
     "category:natural": "Formaciones naturales",
@@ -61,7 +61,7 @@
     "category:public": "Servicios públicos",
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "Electrificación ferroviaria",
-    "category:railway-gauge": "",
+    "category:railway-gauge": "Ancho de vía",
     "category:railway-infrastructure": "Infraestructura ferroviaria",
     "category:railway-maxspeed": "Velocidad máxima del ferrocarril",
     "category:railway-routes": "Rutas de ferrocarril",
@@ -81,7 +81,7 @@
     "category:transport_car": "Tráfico individual",
     "category:transport_cycle": "Ciclismo",
     "category:transport_pt": "Transporte público",
-    "category:transport_walk": "",
+    "category:transport_walk": "Viandantes",
     "category:walk_amenities": "Instalaciones",
     "category:waste": "Basura",
     "category:water": "Cuerpos de agua",

From a25ea37e08360a6c53d5b440ce445a4b294aa6d0 Mon Sep 17 00:00:00 2001
From: Carlos Antonio Rivera <carlos.kapazao@gmail.com>
Date: Sun, 14 Apr 2019 14:43:44 +0000
Subject: [PATCH 103/117] Translated using Weblate (Spanish)

Currently translated at 100.0% (92 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/es/
---
 lang/es.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lang/es.json b/lang/es.json
index 9146800..25f20b7 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -14,7 +14,7 @@
     "category:car_furniture": "Mobiliario Urbano",
     "category:car_maxspeed": "Velocidad máxima",
     "category:car_routes": "Rutas de coche",
-    "category:children": "Atracciones para niños",
+    "category:children": "Instalaciones para niños",
     "category:coal": "Carbón",
     "category:communication": "Comunicación",
     "category:construction": "Sitios de construcción",

From 723b77c5cc491da1c8007e20a90f59cad83740df Mon Sep 17 00:00:00 2001
From: Ciprian <c1pr1an@tuta.io>
Date: Fri, 19 Apr 2019 18:04:38 +0000
Subject: [PATCH 104/117] Translated using Weblate (Romanian)

Currently translated at 38.0% (35 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/ro/
---
 lang/ro.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lang/ro.json b/lang/ro.json
index f533d2c..aa2af4e 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -3,9 +3,9 @@
     "category:administrative": "Zona administrativa",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
-    "category:alternative_routes": "",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:alternative_routes": "Rute",
+    "category:buildings": "Clădiri",
+    "category:buildings-entrances": "Intrări",
     "category:buildings-figure-ground": "",
     "category:buildings-height": "",
     "category:buildings-start_date": "",

From c9589e4fe8213eab9fac01b73811c773a9fd39c4 Mon Sep 17 00:00:00 2001
From: Ciprian <c1pr1an@tuta.io>
Date: Mon, 22 Apr 2019 18:08:54 +0000
Subject: [PATCH 105/117] Translated using Weblate (Romanian)

Currently translated at 41.3% (38 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/ro/
---
 lang/ro.json | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lang/ro.json b/lang/ro.json
index aa2af4e..f80c6a2 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -1,6 +1,6 @@
 {
     "Objects with diet information": "",
-    "category:administrative": "Zona administrativa",
+    "category:administrative": "Zona administrativă",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
     "category:alternative_routes": "Rute",
@@ -51,11 +51,11 @@
     "category:phone": "Telefon",
     "category:places": "Locuri",
     "category:places_geo": "Locuri",
-    "category:playgrounds": "Loc de joaca",
+    "category:playgrounds": "Loc de joacă",
     "category:post": "",
     "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:pt": "Hartă transport public",
+    "category:pt:routes": "Rute",
     "category:pt:stops": "",
     "category:pt_amenities": "",
     "category:public": "Servicii publice",
@@ -87,7 +87,7 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": "",
+    "category:xmas": "Crăciun",
     "date format not understood": "",
     "outdated feature": "",
     "xmas:outdated-warning": ""

From ed53543768353ded6c69e6708da4c48cd08e22a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 27 Apr 2019 10:00:27 +0200
Subject: [PATCH 106/117] children: show type filter by default

---
 children.json | 1 +
 1 file changed, 1 insertion(+)

diff --git a/children.json b/children.json
index a786e61..fa2efec 100644
--- a/children.json
+++ b/children.json
@@ -86,6 +86,7 @@
         "type": {
             "name": "{{ trans('filter:type') }}",
             "type": "select",
+            "show_default": "true",
             "values": {
                 "playground": {
                     "name": "{{ tagTrans('leisure', 'playground') }}",

From a343fb17f1b998210aa0652c4d17d571cc5d1e4e Mon Sep 17 00:00:00 2001
From: Ciprian <c1pr1an@tuta.io>
Date: Mon, 22 Apr 2019 18:08:54 +0000
Subject: [PATCH 107/117] Translated using Weblate (Romanian)

Currently translated at 41.3% (38 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/ro/
---
 lang/ro.json | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lang/ro.json b/lang/ro.json
index aa2af4e..f80c6a2 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -1,6 +1,6 @@
 {
     "Objects with diet information": "",
-    "category:administrative": "Zona administrativa",
+    "category:administrative": "Zona administrativă",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
     "category:alternative_routes": "Rute",
@@ -51,11 +51,11 @@
     "category:phone": "Telefon",
     "category:places": "Locuri",
     "category:places_geo": "Locuri",
-    "category:playgrounds": "Loc de joaca",
+    "category:playgrounds": "Loc de joacă",
     "category:post": "",
     "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:pt": "Hartă transport public",
+    "category:pt:routes": "Rute",
     "category:pt:stops": "",
     "category:pt_amenities": "",
     "category:public": "Servicii publice",
@@ -87,7 +87,7 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": "",
+    "category:xmas": "Crăciun",
     "date format not understood": "",
     "outdated feature": "",
     "xmas:outdated-warning": ""

From 69df765ec37177aef63801d04477ab99b4673be3 Mon Sep 17 00:00:00 2001
From: frangesco gargano <frengofieramosca2@gmail.com>
Date: Sat, 27 Apr 2019 14:56:16 +0000
Subject: [PATCH 108/117] Translated using Weblate (English)

Currently translated at 100.0% (92 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/en/
---
 lang/en.json | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lang/en.json b/lang/en.json
index cd566ee..a774cf2 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -33,7 +33,7 @@
     "category:health": "Health",
     "category:hiking_routes": "Hiking routes",
     "category:historic": "Historic",
-    "category:index": "",
+    "category:index": "Index of Categories",
     "category:infrastructure": "Infrastructure",
     "category:internet": "Internet access",
     "category:law": "Law",
@@ -77,7 +77,7 @@
     "category:tourism_attractions": "Tourism",
     "category:tourism_services": "Tourism",
     "category:transport": "Transportation",
-    "category:transport_alternative": "",
+    "category:transport_alternative": "Alternative Transportation modes",
     "category:transport_car": "Individual Traffic",
     "category:transport_cycle": "Cycling",
     "category:transport_pt": "Public Transportation",
@@ -88,7 +88,7 @@
     "category:wikipedia": "Wikipedia",
     "category:works": "Works",
     "category:xmas": "Christmas",
-    "date format not understood": "",
-    "outdated feature": "",
+    "date format not understood": "Invalid Date Format",
+    "outdated feature": "Features outdated",
     "xmas:outdated-warning": "Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date."
 }

From b670e24cd87f4cc363b3bd07bab3e91b2cbd126b Mon Sep 17 00:00:00 2001
From: frangesco gargano <frengofieramosca2@gmail.com>
Date: Sat, 27 Apr 2019 13:29:11 +0000
Subject: [PATCH 109/117] Translated using Weblate (Italian)

Currently translated at 100.0% (92 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/it/
---
 lang/it.json | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/lang/it.json b/lang/it.json
index 713ce1e..39fa8e9 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1,12 +1,12 @@
 {
-    "Objects with diet information": "",
+    "Objects with diet information": "Elementi con informazioni alimentari",
     "category:administrative": "Suddivisioni amministrative",
     "category:agriculture": "Agricoltura",
     "category:alternative_amenities": "Infrastrutture",
     "category:alternative_routes": "Itinerari segnalati",
     "category:buildings": "Edifici",
     "category:buildings-entrances": "Ingressi",
-    "category:buildings-figure-ground": "",
+    "category:buildings-figure-ground": "Schema di Impronta",
     "category:buildings-height": "Altezza dell'edificio",
     "category:buildings-start_date": "Età dell'edificio",
     "category:buildings-type": "Tipi di edificio",
@@ -33,13 +33,13 @@
     "category:health": "Sanità",
     "category:hiking_routes": "Percorsi escursionistici",
     "category:historic": "Storia",
-    "category:index": "",
+    "category:index": "Indice delle Categorie",
     "category:infrastructure": "Infrastrutture",
     "category:internet": "Accesso a internet",
     "category:law": "Legge",
     "category:leisure": "Tempo libero",
     "category:leisure_sport_shopping": "Tempo libero, sport e shopping",
-    "category:memorial": "Memoriali",
+    "category:memorial": "Monumenti e Memoriali",
     "category:military": "Militare",
     "category:mtb-routes": "Percorsi per mountain bike",
     "category:natural": "Natura",
@@ -61,7 +61,7 @@
     "category:public": "Servizi pubblici",
     "category:railway": "Ferrovie",
     "category:railway-electrification": "Elettrificazione ferroviaria",
-    "category:railway-gauge": "",
+    "category:railway-gauge": "Scartamento Ferroviario",
     "category:railway-infrastructure": "Infrastruttura ferroviaria",
     "category:railway-maxspeed": "Velocità ferroviaria massima",
     "category:railway-routes": "Percorsi ferroviari",
@@ -77,18 +77,18 @@
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Trasporti",
-    "category:transport_alternative": "Alternativi (bicicletta, camminate, ...)",
+    "category:transport_alternative": "Trasporti Alternativi (bicicletta, camminate, ...)",
     "category:transport_car": "Trasporti individuali",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "Ciclistico",
     "category:transport_pt": "Trasporti pubblici",
-    "category:transport_walk": "",
-    "category:walk_amenities": "",
+    "category:transport_walk": "Pedonale",
+    "category:walk_amenities": "Attrazioni",
     "category:waste": "Smaltimento",
-    "category:water": "",
-    "category:wikipedia": "",
+    "category:water": "Corpi Idrici",
+    "category:wikipedia": "Wikipedia",
     "category:works": "Fabbriche",
-    "category:xmas": "",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "category:xmas": "Natale",
+    "date format not understood": "Formato Data non riconosciuto",
+    "outdated feature": "Caratteristica obsoleta",
+    "xmas:outdated-warning": "Caratteristica non aggiornata alla stagione corrente! Controllare e revisionare il tag'xmas:lastcheck' alla data corrente."
 }

From bc94a0df0ebd2d67287a23c36df904f995c869a2 Mon Sep 17 00:00:00 2001
From: Nikolay Parukhin <parukhin@gmail.com>
Date: Wed, 1 May 2019 16:56:29 +0000
Subject: [PATCH 110/117] Translated using Weblate (Russian)

Currently translated at 91.3% (84 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/ru/
---
 lang/ru.json | 96 ++++++++++++++++++++++++++--------------------------
 1 file changed, 48 insertions(+), 48 deletions(-)

diff --git a/lang/ru.json b/lang/ru.json
index a44acc3..bea6895 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -1,94 +1,94 @@
 {
-    "Objects with diet information": "",
+    "Objects with diet information": "Объекты с информацией о питании",
     "category:administrative": "Административные границы",
     "category:agriculture": "Сельское хозяйство",
     "category:alternative_amenities": "Полезные места",
     "category:alternative_routes": "Маршруты",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:buildings": "Здания",
+    "category:buildings-entrances": "Входы",
     "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-height": "Высота здания",
+    "category:buildings-start_date": "Возраст здания",
+    "category:buildings-type": "Типы зданий",
     "category:car_amenities": "Обслуживание транспорта",
     "category:car_furniture": "Элементы дороги",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
+    "category:car_maxspeed": "Максимальная скорость",
+    "category:car_routes": "Автомобильные маршруты",
     "category:children": "",
-    "category:coal": "",
+    "category:coal": "Уголь",
     "category:communication": "Услуги связи",
     "category:construction": "Места строительства",
-    "category:craft": "",
+    "category:craft": "Мастерские",
     "category:culture": "Культура",
-    "category:culture_religion": "Культура",
+    "category:culture_religion": "Культура и религия",
     "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:cycle_routes": "Веломаршруты",
     "category:education": "Образование",
-    "category:electric_power": "Энергетика",
+    "category:electric_power": "Электроэнергетика",
     "category:emergency": "Экстренные службы",
-    "category:energy": "",
+    "category:energy": "Энергетика",
     "category:financial": "Финансы",
     "category:gastro": "Общепит",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "Общественное питание без курения",
     "category:health": "Медицина",
-    "category:hiking_routes": "",
+    "category:hiking_routes": "Туристические маршруты",
     "category:historic": "Историческое",
-    "category:index": "",
-    "category:infrastructure": "",
-    "category:internet": "",
-    "category:law": "",
+    "category:index": "Индекс категорий",
+    "category:infrastructure": "Инфраструктура",
+    "category:internet": "Доступ в интернет",
+    "category:law": "Юристы",
     "category:leisure": "Досуг",
     "category:leisure_sport_shopping": "Досуг",
-    "category:memorial": "",
+    "category:memorial": "Памятники и монументы",
     "category:military": "Вооружённые силы",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "Маршруты для горных велосипедов",
     "category:natural": "Природные образования",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "Офисы",
+    "category:oil_gas": "Нефть и природный газ",
+    "category:organisations": "Организации",
     "category:other": "Прочее",
-    "category:outdoor": "",
-    "category:phone": "",
+    "category:outdoor": "Мероприятия на природе",
+    "category:phone": "Телефон",
     "category:places": "Места",
     "category:places_geo": "Места",
-    "category:playgrounds": "",
-    "category:post": "",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:playgrounds": "Детская площадка",
+    "category:post": "Почта",
+    "category:power_routes": "Маршруты энергетики",
+    "category:pt": "Карта общественного транспорта",
+    "category:pt:routes": "Маршруты",
     "category:pt:stops": "Остановки и станции",
     "category:pt_amenities": "Транспортные принадлежности",
     "category:public": "Общественные места",
     "category:railway": "Железные дороги",
-    "category:railway-electrification": "",
-    "category:railway-gauge": "",
-    "category:railway-infrastructure": "",
+    "category:railway-electrification": "Электрификация железных дорог",
+    "category:railway-gauge": "Железнодорожная колея",
+    "category:railway-infrastructure": "Железнодорожная инфраструктура",
     "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-routes": "Железнодорожные маршруты",
     "category:religion": "Религия",
-    "category:renewables": "",
+    "category:renewables": "Возобновляемые",
     "category:residential": "Жилые районы",
     "category:resources": "Добыча ресурсов",
     "category:services": "Услуги",
     "category:shop": "Покупки",
-    "category:special": "",
+    "category:special": "Специальное",
     "category:sport": "Спорт",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Бассейны и сауны",
     "category:tourism_attractions": "Туризм",
     "category:tourism_services": "Туризм",
     "category:transport": "Транспорт",
-    "category:transport_alternative": "Альтернативное передвижение (Велоспорт, Пешие прогулки, ...)",
+    "category:transport_alternative": "Альтернативное передвижение",
     "category:transport_car": "Частный транспорт",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "Велосипедный",
     "category:transport_pt": "Общественный транспорт",
-    "category:transport_walk": "",
+    "category:transport_walk": "Пешеходный",
     "category:walk_amenities": "",
     "category:waste": "Переработка отходов",
-    "category:water": "",
-    "category:wikipedia": "",
+    "category:water": "Водоемы",
+    "category:wikipedia": "Википедия",
     "category:works": "Промышленность",
-    "category:xmas": "",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "category:xmas": "Рождество",
+    "date format not understood": "Неверный формат даты",
+    "outdated feature": "Устаревшие объекты",
+    "xmas:outdated-warning": "Объект не был обновлен в текущем сезоне! Пожалуйста, проверьте и установите текущую дату в теге 'xmas: lastcheck'."
 }

From 7f67e07d7c985ab99e023691fae18008e92fcaa8 Mon Sep 17 00:00:00 2001
From: Nikolay Parukhin <parukhin@gmail.com>
Date: Sat, 4 May 2019 07:56:21 +0000
Subject: [PATCH 111/117] Translated using Weblate (Russian)

Currently translated at 92.4% (85 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/ru/
---
 lang/ru.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lang/ru.json b/lang/ru.json
index bea6895..d95d41d 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -38,7 +38,7 @@
     "category:internet": "Доступ в интернет",
     "category:law": "Юристы",
     "category:leisure": "Досуг",
-    "category:leisure_sport_shopping": "Досуг",
+    "category:leisure_sport_shopping": "Досуг, спорт и магазины",
     "category:memorial": "Памятники и монументы",
     "category:military": "Вооружённые силы",
     "category:mtb-routes": "Маршруты для горных велосипедов",
@@ -63,10 +63,10 @@
     "category:railway-electrification": "Электрификация железных дорог",
     "category:railway-gauge": "Железнодорожная колея",
     "category:railway-infrastructure": "Железнодорожная инфраструктура",
-    "category:railway-maxspeed": "",
+    "category:railway-maxspeed": "Максимальная скорость",
     "category:railway-routes": "Железнодорожные маршруты",
     "category:religion": "Религия",
-    "category:renewables": "Возобновляемые",
+    "category:renewables": "Возобновляемая",
     "category:residential": "Жилые районы",
     "category:resources": "Добыча ресурсов",
     "category:services": "Услуги",

From 70906c504901b090574788e8d6db0a55d513a8f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Babos?= <gabor.babos@gmail.com>
Date: Mon, 27 May 2019 18:41:22 +0000
Subject: [PATCH 112/117] Translated using Weblate (Hungarian)

Currently translated at 100.0% (92 of 92 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/hu/
---
 lang/hu.json | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lang/hu.json b/lang/hu.json
index aeb7821..49faa1f 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -33,7 +33,7 @@
     "category:health": "Egészségügy",
     "category:hiking_routes": "Turistautak",
     "category:historic": "Történelmi objektumok",
-    "category:index": "Tartalom",
+    "category:index": "Kategóriák jegyzéke",
     "category:infrastructure": "Infrastruktúra",
     "category:internet": "Internetcsatlakozás",
     "category:law": "Jog",
@@ -77,7 +77,7 @@
     "category:tourism_attractions": "Látnivalók",
     "category:tourism_services": "Szálláshelyek, turisztikai információk",
     "category:transport": "Közlekedés",
-    "category:transport_alternative": "Alternatív (Kerékpár, Túra)",
+    "category:transport_alternative": "Alternatív közlekedési módok",
     "category:transport_car": "Autós közlekedés",
     "category:transport_cycle": "Kerékpáros közlekedés",
     "category:transport_pt": "Tömegközlekedés",
@@ -88,7 +88,7 @@
     "category:wikipedia": "Wikipédia",
     "category:works": "Üzemek",
     "category:xmas": "Karácsony",
-    "date format not understood": "Felismerhetetlen dátumformátum",
-    "outdated feature": "Elavult információ",
+    "date format not understood": "Érvénytelen dátumformátum",
+    "outdated feature": "Elavult objektumok",
     "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra."
 }

From e6c41b186145bfb9f14082701833f4c605078c41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 28 May 2019 22:25:35 +0200
Subject: [PATCH 113/117] roads: new category

---
 index.json   |   3 ++
 lang/en.json |   1 +
 roads.json   | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 112 insertions(+)
 create mode 100644 roads.json

diff --git a/index.json b/index.json
index be443ad..85c4991 100644
--- a/index.json
+++ b/index.json
@@ -252,6 +252,9 @@
                 "hu": "Infrastruktúra"
             },
             "subCategories": [
+                {
+                    "id": "roads"
+                },
                 {
                     "id": "agriculture"
                 },
diff --git a/lang/en.json b/lang/en.json
index a774cf2..47f78ac 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -69,6 +69,7 @@
     "category:renewables": "Renewables",
     "category:residential": "Residential Areas",
     "category:resources": "Resource Extraction",
+    "category:roads": "Roads",
     "category:services": "Services",
     "category:shop": "Shopping",
     "category:special": "Special",
diff --git a/roads.json b/roads.json
new file mode 100644
index 0000000..8b3b820
--- /dev/null
+++ b/roads.json
@@ -0,0 +1,108 @@
+{
+    "type": "overpass",
+    "query": {
+        "10": "way[highway~'^(motorway|trunk)']",
+        "12": "way[highway~'^(motorway|trunk|primary)']",
+        "13": "way[highway~'^(motorway|trunk|primary|secondary)']",
+        "14": "way[highway~'^(motorway|trunk|primary|secondary|tertiary)']",
+        "15": "way[highway~'^(motorway|trunk|primary|secondary|tertiary|pedestrian|unclassified)']",
+        "16": "way[highway~'^(motorway|trunk|primary|secondary|tertiary|pedestrian|unclassified|residential)']",
+        "17": "way[highway~'^(motorway|trunk|primary|secondary|tertiary|pedestrian|unclassified|residential|living_street|service)']",
+        "18": "way[highway][highway!~'^(raceway|bus_guideway)$']"
+    },
+    "feature": {
+        "pre": [
+            "{% set highway = tags.highway %}{% set is_link = false %}",
+            "{% if tags.highway|matches('_link$') %}",
+            "  {% set highway = tags.highway|slice(0, tags.highway|length - 5) %}{% set is_link = true %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans('highway', tags.highway) }}",
+        "priority": "{{ const.priorities[highway]|default(50) + (is_link ? 0.5 : 0) }}",
+        "markerSymbol": "",
+        "listMarkerSymbol": "line",
+        "style": {
+            "width": "{{ is_link ? 2 : 4 }}",
+            "color": "{{ const.colors[highway]|default('#ff0000') }}"
+        }
+    },
+    "info": [
+        "<table>",
+        "{% for k, color in const.colors  %}",
+        "  {% if map.zoom >= const.zooms[k] %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ \"width\": \"4\", \"color\": color })|raw }}</td>",
+        "    <td>{{ tagTrans('highway', k) }}</td>",
+        "  </tr>",
+        "  {% endif %}",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ \"width\": \"2\", \"color\": const.colors.motorway })|raw }}</td>",
+        "    <td>{{ tagTrans('highway', 'motorway_link') }}</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerLine({ \"width\": \"4\", \"color\": \"#ff0000\" })|raw }}</td>",
+        "    <td>{{ trans('invalid value') }}</td>",
+        "  </tr>",
+        "</table>"
+    ],
+    "const": {
+        "priorities": {
+            "motorway": 1,
+            "trunk": 2,
+            "primary": 10,
+            "secondary": 11,
+            "tertiary": 12,
+            "pedestrian": 20,
+            "unclassified": 21,
+            "residential": 22,
+            "living_street": 23,
+            "service": 24,
+            "track": 30,
+            "escape": 31,
+            "cycleway": 41,
+            "bridleway": 42,
+            "footway": 43,
+            "path": 44,
+            "steps": 45
+        },
+        "colors": {
+            "motorway": "#af0000",
+            "trunk": "#af3f00",
+            "primary": "#ff3f00",
+            "secondary": "#ff7f00",
+            "tertiary": "#ffaf00",
+            "pedestrian": "#ff00ff",
+            "unclassified": "#0000ff",
+            "residential": "#7f00ff",
+            "living_street": "#af00ff",
+            "service": "#00007f",
+            "track": "#bb6300",
+            "escape": "#bb3300",
+            "cycleway": "#7faf00",
+            "bridleway": "#00af7f",
+            "footway": "#00af00",
+            "path": "#007f00",
+            "steps": "#00af00"
+        },
+        "zooms": {
+            "motorway": 10,
+            "trunk": 10,
+            "primary": 12,
+            "secondary": 13,
+            "tertiary": 14,
+            "pedestrian": 15,
+            "unclassified": 15,
+            "residential": 16,
+            "living_street": 17,
+            "service": 17,
+            "track": 18,
+            "escape": 18,
+            "cycleway": 18,
+            "bridleway": 18,
+            "footway": 18,
+            "path": 18,
+            "steps": 18
+        }
+    }
+}

From 24b344d66286ccf9bace380c7b54e0364485b6df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@cg.tuwien.ac.at>
Date: Wed, 29 May 2019 11:11:36 +0200
Subject: [PATCH 114/117] roads: show (localized) names, lighter colors

---
 roads.json | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/roads.json b/roads.json
index 8b3b820..9d7fb33 100644
--- a/roads.json
+++ b/roads.json
@@ -23,7 +23,10 @@
         "listMarkerSymbol": "line",
         "style": {
             "width": "{{ is_link ? 2 : 4 }}",
-            "color": "{{ const.colors[highway]|default('#ff0000') }}"
+            "color": "{{ const.colors[highway]|default('#ff0000') }}",
+            "text": "  {{ localizedTag(tags, 'name') }}              ",
+            "textRepeat": "1",
+            "textFontWeight": "bold"
         }
     },
     "info": [
@@ -67,16 +70,16 @@
             "steps": 45
         },
         "colors": {
-            "motorway": "#af0000",
-            "trunk": "#af3f00",
-            "primary": "#ff3f00",
-            "secondary": "#ff7f00",
-            "tertiary": "#ffaf00",
+            "motorway": "#ff2f2f",
+            "trunk": "#ff4f4f",
+            "primary": "#ff7f00",
+            "secondary": "#ffaf00",
+            "tertiary": "#ffff00",
             "pedestrian": "#ff00ff",
-            "unclassified": "#0000ff",
-            "residential": "#7f00ff",
-            "living_street": "#af00ff",
-            "service": "#00007f",
+            "unclassified": "#4f4fff",
+            "residential": "#7f4fff",
+            "living_street": "#af2fff",
+            "service": "#4f4f7f",
             "track": "#bb6300",
             "escape": "#bb3300",
             "cycleway": "#7faf00",

From 5e2fdb7c8c2770921f3b843bab006895c13fec96 Mon Sep 17 00:00:00 2001
From: OSM-OC <52070791+OSM-OC@users.noreply.github.com>
Date: Sat, 22 Jun 2019 12:08:47 +0200
Subject: [PATCH 115/117] Create oc.json

---
 lang/oc.json | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 lang/oc.json

diff --git a/lang/oc.json b/lang/oc.json
new file mode 100644
index 0000000..e7efa8a
--- /dev/null
+++ b/lang/oc.json
@@ -0,0 +1,94 @@
+{
+    "Objects with diet information": "Elements amb information de regime alimentari",
+    "category:administrative": "Divisions administrativas",
+    "category:agriculture": "Agricultura",
+    "category:alternative_amenities": "Equipament",
+    "category:alternative_routes": "Varianta d'itinerari",
+    "category:buildings": "Bastissas",
+    "category:buildings-entrances": "Intradas",
+    "category:buildings-figure-ground": "Marca au sòu",
+    "category:buildings-height": "Autor de la bastissa",
+    "category:buildings-start_date": "Data de bastison",
+    "category:buildings-type": "Tipe de bastissa",
+    "category:car_amenities": "Equipaments auto",
+    "category:car_furniture": "Fornituras automobilas",
+    "category:car_maxspeed": "Limits de velocitat",
+    "category:car_routes": "Itineraris auto",
+    "category:children": "Luòcs per leis enfants",
+    "category:coal": "Carbon",
+    "category:communication": "Communicacion",
+    "category:construction": "Talhiers de construccion",
+    "category:craft": "Artisanat",
+    "category:culture": "Cultura",
+    "category:culture_religion": "Cultura e religion",
+    "category:cycle_amenities": "Equipaments per lei cicistas",
+    "category:cycle_routes": "Itineraris ciclistas",
+    "category:education": "Education",
+    "category:electric_power": "Produccion/ Transpòrt d'Energia",
+    "category:emergency": "Servicis d'urgéncia",
+    "category:energy": "Energia",
+    "category:financial": "Finança",
+    "category:gastro": "Restauracion/ Gastronomia",
+    "category:gastro-smoking": "Restauration sensa tabat",
+    "category:health": "Santat",
+    "category:hiking_routes": "Itineraris per escorregudas",
+    "category:historic": "Istòria",
+    "category:index": "Indici dei categorias",
+    "category:infrastructure": "Infrastructuras",
+    "category:internet": "Accès a Internet",
+    "category:law": "Lèi",
+    "category:leisure": "Lesers",
+    "category:leisure_sport_shopping": "Vida quotidiana, lesers e espòrts",
+    "category:memorial": "Monuments e Memoriaus",
+    "category:military": "Luòcs militaris",
+    "category:mtb-routes": "Itineraris de VTT",
+    "category:natural": "Elements naturaus",
+    "category:office": "Oficis/ Burèus",
+    "category:oil_gas": "Petròli e gas naturau",
+    "category:organisations": "Organizacions",
+    "category:other": "Autrei",
+    "category:outdoor": "Activitats de plen aire",
+    "category:phone": "Telefòne",
+    "category:places": "Luòcs",
+    "category:places_geo": "Luòcs",
+    "category:playgrounds": "Jòcs per leis enfants",
+    "category:post": "Pòsta",
+    "category:power_routes": "Linhas electricas",
+    "category:pt": "Transpòrts publics",
+    "category:pt:routes": "Linhas",
+    "category:pt:stops": "Arrèsts e Estations",
+    "category:pt_amenities": "Infrastructuras de transpòrt",
+    "category:public": "Servicis e equimaments publics",
+    "category:railway": "Camins de fer",
+    "category:railway-electrification": "Electrificacion ferroviària",
+    "category:railway-gauge": "Ample dei vias",
+    "category:railway-infrastructure": "Infrastructura ferroviària",
+    "category:railway-maxspeed": "Limits de velocitat",
+    "category:railway-routes": "Linhas ferroviàrias",
+    "category:religion": "Religion",
+    "category:renewables": "Energias renovelablas",
+    "category:residential": "Quartiers residenciaus",
+    "category:resources": "Airau d'extraccion de ressorsas",
+    "category:services": "Servicis",
+    "category:shop": "Botigas",
+    "category:special": "Categorias particularas",
+    "category:sport": "Espòrt",
+    "category:swimming_bathing": "Natacion, banhada e banhèra",
+    "category:tourism_attractions": "Torisma",
+    "category:tourism_services": "Torisma",
+    "category:transport": "Transpòrts",
+    "category:transport_alternative": "Transpòrt alternatiu (ciclisme, caminada, ...)",
+    "category:transport_car": "Transpòrt automobil",
+    "category:transport_cycle": "Ciclisme",
+    "category:transport_pt": "Transpòrts publics",
+    "category:transport_walk": "Caminada",
+    "category:walk_amenities": "Equipaments pedoniers",
+    "category:waste": "Bordilhas e reciclatge",
+    "category:water": "Aigas e rius",
+    "category:wikipedia": "Wikipèdia",
+    "category:works": "Airaus industriaus",
+    "category:xmas": "Calendas",
+    "date format not understood": "Format de data non reconoissut",
+    "outdated feature": "Caracteristicas obsoletas",
+    "xmas:outdated-warning": "Aquest element es pas estat actualizat per la session ! Siatz pregats de verificar e mai reglar la valor de \"xmas:lastcheck\" a la data actuala."
+}

From 73ed104527bbb45a6db8185d53d7d771104523e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Babos?= <gabor.babos@gmail.com>
Date: Tue, 25 Jun 2019 15:13:58 +0000
Subject: [PATCH 116/117] Translated using Weblate (Hungarian)

Currently translated at 100.0% (93 of 93 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/hu/
---
 lang/hu.json | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lang/hu.json b/lang/hu.json
index 49faa1f..675bd27 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -3,7 +3,7 @@
     "category:administrative": "Közigazgatási határok",
     "category:agriculture": "Mezőgazdaság",
     "category:alternative_amenities": "Létesítmények",
-    "category:alternative_routes": "Útvonalak",
+    "category:alternative_routes": "(Jelzett) útvonalak",
     "category:buildings": "Épületek",
     "category:buildings-entrances": "Bejáratok",
     "category:buildings-figure-ground": "Fekete épületalaprajzok",
@@ -90,5 +90,6 @@
     "category:xmas": "Karácsony",
     "date format not understood": "Érvénytelen dátumformátum",
     "outdated feature": "Elavult objektumok",
-    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra."
+    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra.",
+    "category:roads": "Utak"
 }

From 17855ba940678e7ef7ab080087be5e0aa0aee401 Mon Sep 17 00:00:00 2001
From: Peire BRECHET <adminieopaca@gmail.com>
Date: Tue, 25 Jun 2019 16:26:41 +0000
Subject: [PATCH 117/117] Translated using Weblate (Occitan)

Currently translated at 100.0% (93 of 93 strings)

Translation: OpenStreetBrowser/Main Categories
Translate-URL: http://weblate.openstreetbrowser.org/projects/openstreetbrowser/main-categories/oc/
---
 lang/oc.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lang/oc.json b/lang/oc.json
index e7efa8a..1ad0b8d 100644
--- a/lang/oc.json
+++ b/lang/oc.json
@@ -90,5 +90,6 @@
     "category:xmas": "Calendas",
     "date format not understood": "Format de data non reconoissut",
     "outdated feature": "Caracteristicas obsoletas",
-    "xmas:outdated-warning": "Aquest element es pas estat actualizat per la session ! Siatz pregats de verificar e mai reglar la valor de \"xmas:lastcheck\" a la data actuala."
+    "xmas:outdated-warning": "Aquest element es pas estat actualizat per la session ! Siatz pregats de verificar e mai reglar la valor de \"xmas:lastcheck\" a la data actuala.",
+    "category:roads": "Rotas"
 }