From 9da039f8cc3379e3a324d2720923be64335e4110 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Tue, 29 Sep 2020 22:22:03 +0200
Subject: [PATCH 01/27] Layouts: split details from description; remove
 'unnamed'

---
 buildings-height.json        | 15 +++++++++++++++
 car_maxspeed.json            |  3 ++-
 car_routes.json              |  2 +-
 communication.json           |  1 -
 cycle_amenities.json         |  2 +-
 cycle_routes.json            |  2 +-
 hiking_routes.json           |  4 ++--
 mtb-routes.json              |  2 +-
 natural.json                 |  5 +----
 power_routes.json            |  2 +-
 pt.json                      |  2 +-
 public.json                  |  1 -
 railway-electrification.json | 11 +++++------
 railway-gauge.json           |  5 +++--
 railway-infrastructure.json  |  2 +-
 railway-routes.json          |  2 +-
 16 files changed, 36 insertions(+), 25 deletions(-)

diff --git a/buildings-height.json b/buildings-height.json
index dc08cf3..a29e75e 100644
--- a/buildings-height.json
+++ b/buildings-height.json
@@ -34,6 +34,21 @@
             "{% endif %}"
         ],
         "description": [
+            "{% 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 %}"
+        ],
+        "details": [
             "{% if tags.height is defined %}",
             "  {% if tags.height|matches('(m|ft)$') %}{{ tags.height -}}",
             "  {% else %}{{ tags.height }}&nbsp;m",
diff --git a/car_maxspeed.json b/car_maxspeed.json
index b504733..9805d07 100644
--- a/car_maxspeed.json
+++ b/car_maxspeed.json
@@ -93,7 +93,8 @@
             "{% set colorB = colorInterpolate(const.colorMap, (maxspeedBKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
             "{% endif %}"
         ],
-        "description": [
+        "description": "{{ tagTransList('highway', tags.highway) }}",
+        "details": [
             "{% if maxspeedF or maxspeedB %}",
             "<span style='color: {{ colorB }}'>{{ maxspeedB == 'other' ? attribute(tags, 'maxspeed:backward') : const.colorOther[maxspeedB] ? tagTrans('maxspeed', maxspeedB) : maxspeedB|default(trans('unknown')) }}</span> / <span style='color: {{ colorF }}'>{{ maxspeedF == 'other' ? attribute(tags, 'maxspeed:forward') : const.colorOther[maxspeedF] ? tagTrans('maxspeed', maxspeedF) : maxspeedF|default(trans('unknown')) }}</span> {{ unit }}",
             "{% elseif maxspeed %}",
diff --git a/car_routes.json b/car_routes.json
index d1c7734..a60530a 100644
--- a/car_routes.json
+++ b/car_routes.json
@@ -13,7 +13,7 @@
     "feature": {
         "pre": "{% set color = '#' ~ tags.network|default('')|md5|slice(0, 6) %}",
         "description": "{% if tags.network %}{{ tagTrans('network', tags.network) }}{% endif %}",
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': color })|raw }}",
         "markerSymbol": "",
         "styles": ""
diff --git a/communication.json b/communication.json
index 3053b3e..5fc3d48 100644
--- a/communication.json
+++ b/communication.json
@@ -46,7 +46,6 @@
             "  {% set value = tags.office %}",
             "{% endif %}"
         ],
-        "title": "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) |default(tagTrans('amenity', tags.amenity)) }}",
         "description": [
             "{% if key == 'office' %}",
             "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
diff --git a/cycle_amenities.json b/cycle_amenities.json
index 925ade8..e38afff 100644
--- a/cycle_amenities.json
+++ b/cycle_amenities.json
@@ -56,7 +56,7 @@
             "{% set constIndex = (key ~ \"=\" ~ value) %}"
         ],
         "title": [
-            "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) | default(localizedTag(tags, 'ref')) | default(trans('unnamed')) }}",
+            "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) | default(localizedTag(tags, 'ref')) }}",
             "",
             "{% if tags.capacity %}({{ tags.capacity }}){% endif %}"
         ],
diff --git a/cycle_routes.json b/cycle_routes.json
index a3c5ceb..69ccde1 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -16,7 +16,7 @@
     },
     "members": true,
     "feature": {
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
         "description": "{{ tagTrans('network', tags.network) }}",
         "markerSymbol": "",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network].color|default(const[''].color) })|raw }}",
diff --git a/hiking_routes.json b/hiking_routes.json
index 53ce1e5..2e1e25e 100644
--- a/hiking_routes.json
+++ b/hiking_routes.json
@@ -19,7 +19,7 @@
         "priority": "{{ const[tags.network].priority|default(4) }}",
         "description": "{% if tags.network %}{{ tagTrans('network', tags.network) }}{% endif %}",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network|default('')].color|default(const[''].color) })|raw }}",
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
         "styles": "",
         "markerSymbol": ""
     },
@@ -46,7 +46,7 @@
             "{% for master in masters %}",
             "  <li data-object=\"{{ master.id }}\">",
             "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: const[master.tags.network].color|default(const[''].color) })|raw }}</div></span>",
-            "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
+            "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% endif %}</span>",
             "    <span class='description'>{{ tagTrans('network', master.tags.network) }}</span>",
             "  </li>",
             "{% endfor %}",
diff --git a/mtb-routes.json b/mtb-routes.json
index b793061..2d0d524 100644
--- a/mtb-routes.json
+++ b/mtb-routes.json
@@ -13,7 +13,7 @@
     "feature": {
         "description": "{{ tagTrans('route', 'mtb') }}",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': '#007fff' })|raw }}",
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
         "styles": "",
         "markerSymbol": ""
     },
diff --git a/natural.json b/natural.json
index 53749c3..b2f09c6 100644
--- a/natural.json
+++ b/natural.json
@@ -39,10 +39,7 @@
         ]
     },
     "feature": {
-        "title": [
-            "{{ localizedTag(tags, 'name') | default(trans('unnamed')) }}",
-            "{% if tags.natural == 'peak' and tags.ele %}({{ tags.ele }}m){% endif %}"
-        ],
+        "details": "{% if tags.natural == 'peak' and tags.ele %}{{ tags.ele }}m{% endif %}",
         "description": "{{ tagTrans('natural', tags.natural) }}",
         "style": {
             "color": "{{ const[tags.natural].color|default('#f2756a') }}"
diff --git a/power_routes.json b/power_routes.json
index e90591c..7794763 100644
--- a/power_routes.json
+++ b/power_routes.json
@@ -13,7 +13,7 @@
     "feature": {
         "pre": "{% set color = '#' ~ tags.operator|default('')|md5|slice(0, 6) %}",
         "description": "{% if tags.operator %}{{ tags.operator }}{% endif %}",
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': color })|raw }}",
         "markerSymbol": "",
         "styles": ""
diff --git a/pt.json b/pt.json
index 6bbd5ac..6b066fe 100644
--- a/pt.json
+++ b/pt.json
@@ -54,7 +54,7 @@
         "title": [
             "{% if tags.ref %}{{ tags.ref }} - {% endif %}",
             "",
-            "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) | default(localizedTag(tags, 'ref')) | default(trans('unnamed')) }}"
+            "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) | default(localizedTag(tags, 'ref')) }}"
         ],
         "description": "{{ tagTrans('route', tags.route) }}",
         "body": [
diff --git a/public.json b/public.json
index 3c95f11..2421b81 100644
--- a/public.json
+++ b/public.json
@@ -53,7 +53,6 @@
             "{% set value = tags.office %}",
             "{% endif %}"
         ],
-        "title": "{{ tags.name|default(tags.operator)|default(tagTrans('amenity', value)) }}",
         "description": [
             "{% if key == 'office' %}",
             "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
diff --git a/railway-electrification.json b/railway-electrification.json
index 66bb031..01fd618 100644
--- a/railway-electrification.json
+++ b/railway-electrification.json
@@ -44,14 +44,13 @@
             "  {% endif %}",
             "{% endif %}"
         ],
-        "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator'))|default(trans('unnamed')) }}",
-        "description": [
-            "{{ tagTrans('railway', tags.railway) }}",
-            "",
+        "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator')) }}",
+        "description": "{{ tagTrans('railway', tags.railway) }}",
+        "details": [
             "{% if tags.electrified == 'no' %}",
-            "  - {{ tagTrans('electrified', 'no') }}",
+            "{{ tagTrans('electrified', 'no') }}",
             "{% elseif tags.electrified %}",
-            "  - {{ tags.voltage|default(trans('unknown')) }}V, {{ tags.frequency|default(trans('unknown')) }}Hz",
+            "{{ tags.voltage|default(trans('unknown')) }}V, {{ tags.frequency|default(trans('unknown')) }}Hz",
             "{% endif %}"
         ],
         "body": [
diff --git a/railway-gauge.json b/railway-gauge.json
index 4771b27..f9a8046 100644
--- a/railway-gauge.json
+++ b/railway-gauge.json
@@ -12,8 +12,9 @@
             "{% set gauges = tags.gauge|split(';')|sort|reverse %}",
             "{% set width = max(3, 3 / map.metersPerPixel) %}"
         ],
-        "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 }}",
+        "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator')) }}",
+        "description": "{{ tagTrans('railway', tags.railway) }}",
+        "details": "{{ tags.gauge|default(trans('unknown'))|enumerate }}",
         "body": [
             "{{ tagTrans('railway', tags.railway) }}<br/>",
             "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}<br>{% endif %}",
diff --git a/railway-infrastructure.json b/railway-infrastructure.json
index 9381048..43edcc6 100644
--- a/railway-infrastructure.json
+++ b/railway-infrastructure.json
@@ -14,7 +14,7 @@
         "17": "(node[railway];way[railway];)"
     },
     "feature": {
-        "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator'))|default(trans('unnamed')) }}",
+        "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator')) }}",
         "description": [
             "{{ tagTrans('railway', tags.railway) -}}",
             "{%- if tags.usage %}",
diff --git a/railway-routes.json b/railway-routes.json
index f06a1d3..f163c5c 100644
--- a/railway-routes.json
+++ b/railway-routes.json
@@ -14,7 +14,7 @@
         "pre": "{% set color = '#' ~ tags.operator|default('')|md5|slice(0, 6) %}",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': color })|raw }}",
         "description": "{{ tags.operator }}",
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
         "styles": "",
         "markerSymbol": ""
     },

From fa9d31bbb199b91154d0807d60f6c4b9060eea46 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 1 Oct 2020 20:54:10 +0200
Subject: [PATCH 02/27] gastro, religion: show details

---
 gastro.json   | 1 +
 religion.json | 8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/gastro.json b/gastro.json
index eaf7a12..667b858 100644
--- a/gastro.json
+++ b/gastro.json
@@ -23,6 +23,7 @@
     },
     "feature": {
         "description": "{{ tagTrans('amenity', tags.amenity) }}",
+        "details": "{{ tagTransList('cuisine', tags.cuisine) }}",
         "body": [
             "<ul>",
             "  <li class='hasSymbol'>",
diff --git a/religion.json b/religion.json
index 7e3c5aa..89d23b3 100644
--- a/religion.json
+++ b/religion.json
@@ -63,15 +63,15 @@
             "  {% if isTranslated('tag:building=' ~ tags.building ~ ' religion=' ~ tags.religion) %}",
             "    {{ trans('tag:building=' ~ tags.building ~ ' religion=' ~ tags.religion) }}",
             "  {% elseif tags.building != 'yes' %}",
-            "    {{ trans('tag:building=' ~ tags.building) }}{% if tags.religion %}: {{ tagTransList('religion', tags.religion) }}{% endif %}",
+            "    {{ trans('tag:building=' ~ tags.building) }}",
             "  {% else %}",
-            "    {{ tagTrans(key, value) }}: {{ tagTransList('religion', tags.religion) }}",
+            "    {{ tagTrans(key, value) }}",
             "  {% endif %}",
             "{% else %}",
-            "  {{ tagTrans(key, value) }}{% if tags.religion %}: {{ tagTransList('religion', tags.religion) }}{% endif %}",
+            "  {{ tagTrans(key, value) }}",
             "{% endif %}"
         ],
-        "popupDescription": "{{ tagTrans(key, value) }}",
+        "details": "{{ tagTransList('religion', tags.religion) }}{% if tags.denomination %} - {{ tagTransList('denomination', tags.denomination) }}{% endif %}",
         "body": [
             "{% if tags.building %}",
             "  {{ keyTrans('building') }}: {{ tagTrans('building', tags.building) }}<br/>",

From e6edcbd30caab1829a710b927d150b19df122867 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 1 Jan 2021 18:49:13 +0100
Subject: [PATCH 03/27] pt: fix rendering of popups

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

diff --git a/pt.json b/pt.json
index 6b066fe..7992d43 100644
--- a/pt.json
+++ b/pt.json
@@ -128,9 +128,13 @@
             "{% for master in masters %}",
             "  {% if master.tags.public_transport != 'stop_area' %}",
             "  <li data-object=\"{{ master.id }}\">",
-            "    <span class='markerParent'><div class='marker'>{{ markerCircle({fillColor:const[master.tags.route].color})|raw }}</div><div class='icon'>{{ const[master.tags.route].sign|raw }}</div></span>",
-            "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
-            "    <span class='description'>{{ tagTrans('route', master.tags.route) }}</span>",
+            "    <a href='#pt/{{ master.id }}'>",
+            "      <div class='marker'><div class='symbol'>{{ markerCircle({fillColor:const[master.tags.route].color})|raw }}</div><div class='sign'>{{ const[master.tags.route].sign|raw }}</div></div>",
+            "      <div class='content'>",
+            "        <div class='description'>{{ tagTrans('route', master.tags.route) }}</div>",
+            "        <div class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</div>",
+            "      </div>",
+            "    </a>",
             "  </li>",
             "  {% endif %}",
             "{% endfor %}",

From ce4128ff2f1b5aa200be5ec66880a76b77657a13 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 22 Oct 2020 09:11:18 +0200
Subject: [PATCH 04/27] religion, sport: unfin

---
 religion.json |  2 +-
 sport.json    | 14 ++++++++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/religion.json b/religion.json
index 89d23b3..5c1df92 100644
--- a/religion.json
+++ b/religion.json
@@ -71,7 +71,7 @@
             "  {{ tagTrans(key, value) }}",
             "{% endif %}"
         ],
-        "details": "{{ tagTransList('religion', tags.religion) }}{% if tags.denomination %} - {{ tagTransList('denomination', tags.denomination) }}{% endif %}",
+        "listDetails": "{{ tagTransList('religion', tags.religion) }}{% if tags.denomination %} - {{ tagTransList('denomination', tags.denomination) }}{% endif %}",
         "body": [
             "{% if tags.building %}",
             "  {{ keyTrans('building') }}: {{ tagTrans('building', tags.building) }}<br/>",
diff --git a/sport.json b/sport.json
index eb0ef33..de8bc35 100644
--- a/sport.json
+++ b/sport.json
@@ -20,8 +20,18 @@
         "14": "(node[sport];way[sport];relation[sport];)"
     },
     "feature": {
-        "title": "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) |default(tagTransList('sport', tags.sport)) }}",
-        "description": "{{ tagTransList('sport', tags.sport) }}",
+        "description": [
+            "{% if tags.leisure %}{{ tagTrans('leisure', tags.leisure) }}",
+            "{% elseif tags.amenity %}{{ tagTrans('amenity', tags.amenity) }}",
+            "{% elseif tags.shop %}{{ tags.shop == 'yes' ? keyTrans('shop') : tagTrans('shop', tags.shop) }}",
+            "{% elseif tags.landuse %}{{ tagTrans('landuse', tags.landuse) }}",
+            "{% elseif tags.building %}{{ tags.building == 'yes' ? keyTrans('building') : tagTrans('building', tags.building) }}",
+            "{% elseif tags.highway %}{{ tagTrans('highway', tags.highway) }}",
+            "{% else %}{{ keyTrans('sport') }}",
+            "{% endif %}"
+        ],
+        "listDetails": "{{ tagTransList('sport', tags.sport) }}",
+        "body": "{{ keyTrans('sport') }}: {{ tagTransList('sport', tags.sport) }}",
         "markerSign": [
             "{% set firstSport = tags.sport|split(';')[0] %}",
             "{{ const[firstSport] }}"

From 46b25b5450f96bc92f147b3869fdb4653d40232e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 29 Oct 2020 20:45:27 +0100
Subject: [PATCH 05/27] pt

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

diff --git a/pt.json b/pt.json
index 7992d43..90893a9 100644
--- a/pt.json
+++ b/pt.json
@@ -183,7 +183,13 @@
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
         "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
-        "listStopsDescription": "{{ refs|join(' · ') }}",
+        "listStopsDetails": "{{ refs|join(' · ') }}",
+        "listStopsDescription": [
+          "{% set stopTypes = [] %}",
+          "{% if tags.railway in ['tram_stop'] %}{% set stopTypes = stopTypes|merge([ tagTrans('railway', tags.railway) ]) %}{% endif %}",
+          "{% if tags.highway in ['bus_stop'] %}{% set stopTypes = stopTypes|merge([ tagTrans('highway', tags.highway) ]) %}{% endif %}",
+          "{{ enumerate(stopTypes) }}"
+        ],
         "listRoutesExclude": "true",
         "style:stop": {
             "width": "4",

From 65917dc210522c79d27acae77546fe93543a5c7c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 1 Jan 2021 21:59:17 +0100
Subject: [PATCH 06/27] pt: more

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

diff --git a/pt.json b/pt.json
index 90893a9..d78e8b6 100644
--- a/pt.json
+++ b/pt.json
@@ -182,13 +182,15 @@
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
-        "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
-        "listStopsDetails": "{{ refs|join(' · ') }}",
-        "listStopsDescription": [
+        "listStopsTitle": [
+          "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}<br/>",
+          "<i>{{ refs|join(' · ') }}</i>"
+        ],
+        "description": [
           "{% set stopTypes = [] %}",
           "{% if tags.railway in ['tram_stop'] %}{% set stopTypes = stopTypes|merge([ tagTrans('railway', tags.railway) ]) %}{% endif %}",
           "{% if tags.highway in ['bus_stop'] %}{% set stopTypes = stopTypes|merge([ tagTrans('highway', tags.highway) ]) %}{% endif %}",
-          "{{ enumerate(stopTypes) }}"
+          "{% if stopTypes|length %}{{ enumerate(stopTypes) }}{% elseif isStop %}{{ tagTrans('public_transport', 'stop_position') }}{% else %}{{ keyTrans('route') }}{% endif %}"
         ],
         "listRoutesExclude": "true",
         "style:stop": {
@@ -205,7 +207,7 @@
             "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
             "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
             "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
-            "text": "{{ refs|join(' · ') }}             ",
+            "text1": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",

From 7bddaf1d875c65a395eb6aa4cfed8a5aabfd957f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 23 Jul 2021 17:46:30 +0200
Subject: [PATCH 07/27] cycle_amenities: exclude charging stations without
 information about bicycles

(bicycle=no was excluded before)

fixes #40
---
 cycle_amenities.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/cycle_amenities.json b/cycle_amenities.json
index 925ade8..ed8d219 100644
--- a/cycle_amenities.json
+++ b/cycle_amenities.json
@@ -13,7 +13,7 @@
             "node[amenity~\"^(bicycle_rental)$\"];",
             "way[amenity~\"^(bicycle_rental)$\"];",
             "relation[amenity~\"^(bicycle_rental)$\"];",
-            "node[amenity~\"^(charging_station)$\"][bicycle!=\"no\"];",
+            "node[amenity~\"^(charging_station)$\"][bicycle][bicycle!=\"no\"];",
             "node[shop~\"^(bicycle)$\"];",
             "way[shop~\"^(bicycle)$\"];",
             "relation[shop~\"^(bicycle)$\"];",
@@ -24,7 +24,7 @@
             "node[amenity~\"^(bicycle_.*|compressed_air)$\"];",
             "way[amenity~\"^(bicycle_.*|compressed_air)$\"];",
             "relation[amenity~\"^(bicycle_.*|compressed_air)$\"];",
-            "node[amenity~\"^(charging_station)$\"][bicycle!=\"no\"];",
+            "node[amenity~\"^(charging_station)$\"][bicycle][bicycle!=\"no\"];",
             "node[shop~\"^(bicycle)$\"];",
             "way[shop~\"^(bicycle)$\"];",
             "relation[shop~\"^(bicycle)$\"];",

From 68200e40f3e4a63c0af37cdd64143e9ad3d3d02e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 26 Jul 2021 20:03:26 +0200
Subject: [PATCH 08/27] car_amenities: improve and simplify queries

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

diff --git a/car_amenities.json b/car_amenities.json
index 97e47da..e5fbbc1 100644
--- a/car_amenities.json
+++ b/car_amenities.json
@@ -17,18 +17,14 @@
     "query": {
         "13": [
             "(",
-            "node[amenity~\"^(car_rental|car_sharing|fuel)$\"];",
-            "way[amenity~\"^(car_rental|car_sharing|fuel)$\"];",
-            "relation[amenity~\"^(car_rental|car_sharing|fuel)$\"];",
-            "node[amenity~\"^(charging_station)$\"][car!=\"no\"];",
-            "node[amenity~\"^(charging_station)$\"][motorcycle!=\"no\"];",
+            "nwr[amenity~\"^(car_rental|car_sharing|fuel)$\"];",
+            "nwr[amenity~\"^(charging_station)$\"][motorcar!=\"no\"][motorcycle!=\"no\"];",
             ")"
         ],
         "16": [
             "(",
-            "node[amenity~\"^(car_rental|car_sharing|car_wash|charging_station|fuel|motorcycle_parking|parking)$\"];",
-            "way[amenity~\"^(car_rental|car_sharing|car_wash|charging_station|fuel|motorcycle_parking|parking)$\"];",
-            "relation[amenity~\"^(car_rental|car_sharing|car_wash|charging_station|fuel|motorcycle_parking|parking)$\"];",
+            "nwr[amenity~\"^(car_rental|car_sharing|car_wash|fuel|motorcycle_parking|parking)$\"];",
+            "nwr[amenity~\"^(charging_station)$\"][motorcar!=\"no\"][motorcycle!=\"no\"];",
             ")"
         ]
     },

From 0f87348bfef8e27022c3845284c11502720adf92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Mon, 26 Jul 2021 20:09:42 +0200
Subject: [PATCH 09/27] car_amenities: improve queries for charging stations

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

diff --git a/car_amenities.json b/car_amenities.json
index e5fbbc1..da6d0c0 100644
--- a/car_amenities.json
+++ b/car_amenities.json
@@ -18,13 +18,15 @@
         "13": [
             "(",
             "nwr[amenity~\"^(car_rental|car_sharing|fuel)$\"];",
-            "nwr[amenity~\"^(charging_station)$\"][motorcar!=\"no\"][motorcycle!=\"no\"];",
+            "nwr[amenity~\"^(charging_station)$\"][motorcar][motorcar!=\"no\"];",
+            "nwr[amenity~\"^(charging_station)$\"][motorcycle][motorcycle!=\"no\"];",
             ")"
         ],
         "16": [
             "(",
             "nwr[amenity~\"^(car_rental|car_sharing|car_wash|fuel|motorcycle_parking|parking)$\"];",
-            "nwr[amenity~\"^(charging_station)$\"][motorcar!=\"no\"][motorcycle!=\"no\"];",
+            "nwr[amenity~\"^(charging_station)$\"][motorcar][motorcar!=\"no\"];",
+            "nwr[amenity~\"^(charging_station)$\"][motorcycle][motorcycle!=\"no\"];",
             ")"
         ]
     },

From 2c49b5d2482618cd2c6755fe0452db7e06c012ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Wed, 11 Aug 2021 21:18:20 +0200
Subject: [PATCH 10/27] natural: use mountain icon for volcano too

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

diff --git a/natural.json b/natural.json
index 132420e..f0d2bf3 100644
--- a/natural.json
+++ b/natural.json
@@ -222,7 +222,7 @@
         },
         "volcano": {
             "zoom": 9,
-            "sign": "",
+            "sign": "<i class='fas fa-mountain'></i>",
             "color": "#cf3a00",
             "group": "landform"
         },

From 000fa2c26655455c572a06f31cffac2c725f7d71 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 12 Aug 2021 10:03:06 +0200
Subject: [PATCH 11/27] Popup/Details Body: show addresses with 'contact:'
 prefix

---
 detailsBody.html | 14 ++++++++++++++
 popupBody.html   | 14 ++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/detailsBody.html b/detailsBody.html
index 9bb0959..4cf1329 100644
--- a/detailsBody.html
+++ b/detailsBody.html
@@ -21,6 +21,20 @@
 </li>
 {% endif %}
 
+{% set address = tagsPrefix(tags, 'contact:') %}
+{% if address %}
+<li class='hasSymbol'>
+  <i class="fa fa-map-marker" aria-hidden="true"></i>
+  <span class='key'>{{ keyTrans('address') }}:</span>
+  <span class='value'>
+    {{ attribute(tags, 'contact:street') }}
+    {{ attribute(tags, 'contact:housenumber') }},
+    {{ attribute(tags, 'contact:postcode') }}
+    {{ attribute(tags, 'contact:city') }}
+  </span>
+</li>
+{% endif %}
+
 {% if attribute(tags, 'name:etymology') %}
 <li class='hasSymbol'>
   <i class="fa fa-book" aria-hidden="true"></i>
diff --git a/popupBody.html b/popupBody.html
index 99016bf..462f113 100644
--- a/popupBody.html
+++ b/popupBody.html
@@ -21,6 +21,20 @@
 </li>
 {% endif %}
 
+{% set address = tagsPrefix(tags, 'contact:') %}
+{% if address %}
+<li class='hasSymbol'>
+  <i class="fa fa-map-marker" aria-hidden="true"></i>
+  <span class='key'>{{ keyTrans('address') }}:</span>
+  <span class='value'>
+    {{ attribute(tags, 'contact:street') }}
+    {{ attribute(tags, 'contact:housenumber') }},
+    {{ attribute(tags, 'contact:postcode') }}
+    {{ attribute(tags, 'contact:city') }}
+  </span>
+</li>
+{% endif %}
+
 {% if attribute(tags, 'name:etymology') %}
 <li class='hasSymbol'>
   <i class="fa fa-book" aria-hidden="true"></i>

From 12b56c27a0bbaea99f4e273e20df6475ddb302f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 15 Aug 2021 21:27:20 +0200
Subject: [PATCH 12/27] buildings-start_date: use building type as description,
 start date as details

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

diff --git a/buildings-start_date.json b/buildings-start_date.json
index 599a85e..d8e7798 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -16,6 +16,9 @@
     },
     "feature": {
         "pre": [
+            "{% set type = tags.building|split(';')[0] %}",
+            "{% if tags.military %}{% set type = 'military' %}{% endif %}",
+            "",
             "{% set start_date = tags.start_date %}",
             "{% if attribute(tags, 'building:start_date') %}{% set start_date = attribute(tags, 'building:start_date') %}{% endif %}",
             "{# Deprecated tags #}",
@@ -59,6 +62,21 @@
             "{% endif %}"
         ],
         "description": [
+            "{% 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 %}"
+        ],
+        "details": [
             "{% if start_date %}",
             "{{ start_date|osmFormatDate({ format: 'short' }) }}",
             "{% else %}",

From b713c3bb0ecc7dee2aa89033dedd6822516be045 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 20 Aug 2021 12:21:38 +0200
Subject: [PATCH 13/27] cycle_routes, hiking_routes: allow ';' in network tags

---
 cycle_routes.json  | 20 +++++++++++++-------
 hiking_routes.json | 20 +++++++++++++-------
 2 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/cycle_routes.json b/cycle_routes.json
index 69ccde1..ecf5afe 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -9,18 +9,24 @@
         "pt-br": "Ciclorrotas"
     },
     "query": {
-        "6": "relation[type=route][route~\"(|.*;)bicycle(|;.*)\"][network~'^(icn)$']",
-        "9": "relation[type=route][route~\"(|.*;)bicycle(|;.*)\"][network~'^(icn|ncn)$']",
-        "12": "relation[type=route][route~\"(|.*;)bicycle(|;.*)\"][network~'^(icn|ncn|rcn)$']",
-        "15": "relation[type=route][route~\"(|.*;)bicycle(|;.*)\"]"
+        "6": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"][network~'^(|.*;)(icn)(|;.*)$']",
+        "9": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"][network~'^(|.*;)(icn|ncn)(|;.*)$']",
+        "12": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"][network~'^(|.*;)(icn|ncn|rcn)(|;.*)$']",
+        "15": "relation[type=route][route~\"^(|.*;)bicycle(|;.*)$\"]"
     },
     "members": true,
     "feature": {
+        "pre": [
+            "{% set network = tags.network %}",
+            "{% for n in tags.network|split(';') %}",
+            "{% if n|matches('cn$') %}{% set network = n %}{% endif %}",
+            "{% endfor %}"
+        ],
         "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
-        "description": "{{ tagTrans('network', tags.network) }}",
+        "description": "{{ tagTrans('network', network) }}",
         "markerSymbol": "",
-        "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network].color|default(const[''].color) })|raw }}",
-        "priority": "{{ const[tags.network].priority|default(4) }}",
+        "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[network].color|default(const[''].color) })|raw }}",
+        "priority": "{{ const[network].priority|default(4) }}",
         "styles": "",
         "style:hover": {
             "width": "0"
diff --git a/hiking_routes.json b/hiking_routes.json
index 2e1e25e..f0ce546 100644
--- a/hiking_routes.json
+++ b/hiking_routes.json
@@ -9,16 +9,22 @@
         "pt-br": "Rotas de caminhada"
     },
     "query": {
-        "10": "relation[type=route][route~\"(|.*;)hiking(|;.*)\"][network~\"^(iwn)$\"]",
-        "11": "relation[type=route][route~\"(|.*;)hiking(|;.*)\"][network~\"^(iwn|nwn)$\"]",
-        "12": "relation[type=route][route~\"(|.*;)hiking(|;.*)\"][network~\"^(iwn|nwn|rwn)$\"]",
-        "14": "relation[type=route][route~\"(|.*;)hiking(|;.*)\"]"
+        "10": "relation[type=route][route~\"^(|.*;)hiking(|;.*)$\"][network~\"^(|.*;)(iwn)(|;.*)$\"]",
+        "11": "relation[type=route][route~\"^(|.*;)hiking(|;.*)$\"][network~\"^(|.*;)(iwn|nwn)(|;.*)$\"]",
+        "12": "relation[type=route][route~\"^(|.*;)hiking(|;.*)$\"][network~\"^(|.*;)(iwn|nwn|rwn)(|;.*)$\"]",
+        "14": "relation[type=route][route~\"^(|.*;)hiking(|;.*)$\"]"
     },
     "members": true,
     "feature": {
-        "priority": "{{ const[tags.network].priority|default(4) }}",
-        "description": "{% if tags.network %}{{ tagTrans('network', tags.network) }}{% endif %}",
-        "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network|default('')].color|default(const[''].color) })|raw }}",
+        "pre": [
+            "{% set network = tags.network %}",
+            "{% for n in tags.network|split(';') %}",
+            "{% if n|matches('wn$') %}{% set network = n %}{% endif %}",
+            "{% endfor %}"
+        ],
+        "priority": "{{ const[network].priority|default(4) }}",
+        "description": "{% if network %}{{ tagTrans('network', network) }}{% endif %}",
+        "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[network|default('')].color|default(const[''].color) })|raw }}",
         "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% endif %}",
         "styles": "",
         "markerSymbol": ""

From ac0de2d067d9974a3304ddf1a58a4c2062427481 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 21 Aug 2021 10:04:05 +0200
Subject: [PATCH 14/27] cycle_routes, hiking_routes: handle network tags with
 ';' on member ways

---
 cycle_routes.json  | 16 ++++++++++++----
 hiking_routes.json | 16 ++++++++++++----
 2 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/cycle_routes.json b/cycle_routes.json
index ecf5afe..68a8b96 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -46,10 +46,14 @@
             "{% set selected = false %}",
             "",
             "{% for master in masters %}",
-            "  {% set _p = const[master.tags.network].priority|default(4) %}",
+            "  {% set masterNetwork = '' %}",
+            "  {% for n in master.tags.network|split(';') %}",
+            "    {% if n|matches('cn$') %}{% set masterNetwork = n %}{% endif %}",
+            "  {% endfor %}",
+            "  {% set _p = const[masterNetwork].priority|default(4) %}",
             "  {% if _p < priority %}",
             "    {% set priority = _p %}",
-            "    {% set network = master.tags.network %}",
+            "    {% set network = masterNetwork %}",
             "  {% endif %}",
             "  {% if master.tags.ref %}",
             "    {% set refs = refs|merge([ master.tags.ref ]) %}",
@@ -67,10 +71,14 @@
             "<h4>Routes</h4>",
             "<ul class='overpass-layer-list'>",
             "{% for master in masters %}",
+            "  {% set masterNetwork = '' %}",
+            "  {% for n in master.tags.network|split(';') %}",
+            "    {% if n|matches('cn$') %}{% set masterNetwork = n %}{% endif %}",
+            "  {% endfor %}",
             "  <li data-object=\"{{ master.id }}\">",
-            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: const[master.tags.network].color|default(const[''].color) })|raw }}</div></span>",
+            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div></span>",
             "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
-            "    <span class='description'>{{ tagTrans('network', master.tags.network) }}</span>",
+            "    <span class='description'>{{ tagTrans('network', masterNetwork) }}</span>",
             "  </li>",
             "{% endfor %}",
             "</ul>"
diff --git a/hiking_routes.json b/hiking_routes.json
index f0ce546..a31378b 100644
--- a/hiking_routes.json
+++ b/hiking_routes.json
@@ -36,10 +36,14 @@
             "{% set refs = [] %}",
             "",
             "{% for master in masters %}",
-            "  {% set _p = const[master.tags.network].priority|default(4) %}",
+            "  {% set masterNetwork = '' %}",
+            "  {% for n in master.tags.network|split(';') %}",
+            "    {% if n|matches('wn$') %}{% set masterNetwork = n %}{% endif %}",
+            "  {% endfor %}",
+            "  {% set _p = const[masterNetwork].priority|default(4) %}",
             "  {% if _p < priority %}",
             "    {% set priority = _p %}",
-            "    {% set network = master.tags.network %}",
+            "    {% set network = masterNetwork %}",
             "  {% endif %}",
             "  {% if master.tags.ref %}",
             "    {% set refs = refs|merge([ master.tags.ref ]) %}",
@@ -50,10 +54,14 @@
             "<h4>Routes</h4>",
             "<ul class='overpass-layer-list'>",
             "{% for master in masters %}",
+            "  {% set masterNetwork = '' %}",
+            "  {% for n in master.tags.network|split(';') %}",
+            "    {% if n|matches('wn$') %}{% set masterNetwork = n %}{% endif %}",
+            "  {% endfor %}",
             "  <li data-object=\"{{ master.id }}\">",
-            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: const[master.tags.network].color|default(const[''].color) })|raw }}</div></span>",
+            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div></span>",
             "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% endif %}</span>",
-            "    <span class='description'>{{ tagTrans('network', master.tags.network) }}</span>",
+            "    <span class='description'>{{ tagTrans('network', masterNetwork) }}</span>",
             "  </li>",
             "{% endfor %}",
             "</ul>"

From ce31055d74c7b18f39829e2e0f0991d14d379ed5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 21 Aug 2021 10:19:36 +0200
Subject: [PATCH 15/27] cycle_routes, hiking_routes: format list of routes in
 member way popups

---
 cycle_routes.json  | 12 ++++++++----
 hiking_routes.json | 14 +++++++++-----
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/cycle_routes.json b/cycle_routes.json
index 68a8b96..836fa7a 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -75,10 +75,14 @@
             "  {% for n in master.tags.network|split(';') %}",
             "    {% if n|matches('cn$') %}{% set masterNetwork = n %}{% endif %}",
             "  {% endfor %}",
-            "  <li data-object=\"{{ master.id }}\">",
-            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div></span>",
-            "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
-            "    <span class='description'>{{ tagTrans('network', masterNetwork) }}</span>",
+            "  <li data-object=\"{{ master.id }}\"><a>",
+            "    <div class='marker'>",
+            "      <div class='symbol'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div>",
+            "    </div>",
+            "    <div class='content'>",
+            "      <div class='description'>{{ tagTrans('network', masterNetwork) }}</div>",
+            "      <div class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</div>",
+            "    </div>",
             "  </li>",
             "{% endfor %}",
             "</ul>"
diff --git a/hiking_routes.json b/hiking_routes.json
index a31378b..3ba0c5f 100644
--- a/hiking_routes.json
+++ b/hiking_routes.json
@@ -58,11 +58,15 @@
             "  {% for n in master.tags.network|split(';') %}",
             "    {% if n|matches('wn$') %}{% set masterNetwork = n %}{% endif %}",
             "  {% endfor %}",
-            "  <li data-object=\"{{ master.id }}\">",
-            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div></span>",
-            "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% endif %}</span>",
-            "    <span class='description'>{{ tagTrans('network', masterNetwork) }}</span>",
-            "  </li>",
+            "  <li data-object=\"{{ master.id }}\"><a>",
+            "    <div class='marker'>",
+            "      <div class='symbol'>{{ markerLine({ width: 4, color: const[masterNetwork].color|default(const[''].color) })|raw }}</div>",
+            "    </div>",
+            "    <div class='content'>",
+            "      <div class='description'>{{ tagTrans('network', masterNetwork) }}</div>",
+            "      <div class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% endif %}</div>",
+            "    </div>",
+            "  </a></li>",
             "{% endfor %}",
             "</ul>"
         ],

From 12d3e3620300bb2e5d0bbf2d3ee0a682b4d7bf22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 22 Aug 2021 20:56:41 +0200
Subject: [PATCH 16/27] cycle_routes: fix layout of member popups

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

diff --git a/cycle_routes.json b/cycle_routes.json
index 836fa7a..16d8f6e 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -83,7 +83,7 @@
             "      <div class='description'>{{ tagTrans('network', masterNetwork) }}</div>",
             "      <div class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</div>",
             "    </div>",
-            "  </li>",
+            "  </a></li>",
             "{% endfor %}",
             "</ul>"
         ],

From c731ab44372137e718253607b5860631c51eab32 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 5 Sep 2020 08:55:49 +0200
Subject: [PATCH 17/27] heritage: create basic category

---
 culture_religion.json | 3 +++
 heritage.json         | 9 +++++++++
 2 files changed, 12 insertions(+)
 create mode 100644 heritage.json

diff --git a/culture_religion.json b/culture_religion.json
index 17c8e16..fa89b4a 100644
--- a/culture_religion.json
+++ b/culture_religion.json
@@ -31,6 +31,9 @@
         {
             "id": "memorial"
         },
+        {
+            "id": "heritage"
+        },
         {
             "id": "religion"
         },
diff --git a/heritage.json b/heritage.json
new file mode 100644
index 0000000..b8ee500
--- /dev/null
+++ b/heritage.json
@@ -0,0 +1,9 @@
+{
+    "type": "overpass",
+    "query": {
+        "8": "nwr[heritage=1];",
+        "11": "nwr[heritage~'^(1|2)$'];"
+    },
+    "feature": {
+    }
+}

From 4347becbee97c579da911caa0e2a9cc8db3b9856 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sun, 6 Sep 2020 19:17:34 +0200
Subject: [PATCH 18/27] Heritage: start developing category

---
 heritage.json | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/heritage.json b/heritage.json
index b8ee500..00a17ad 100644
--- a/heritage.json
+++ b/heritage.json
@@ -1,9 +1,29 @@
 {
     "type": "overpass",
     "query": {
-        "8": "nwr[heritage=1];",
-        "11": "nwr[heritage~'^(1|2)$'];"
+        "8": "nwr[heritage~\"^(|.*;)1(|;.*)$\"];",
+        "11": "nwr[heritage~\"^(|.*;)(1|2)(|;.*)$\"];",
+        "13": "nwr[heritage];"
     },
     "feature": {
+        "description": [
+            "{% for op in attribute(tags, 'heritage:operator')|split(';') %}",
+            "{% if const[op].url and attribute(tags, const[op].key) %}<a target=\"_blank\" href=\"{{ const[op].url|replace({\"$1\": attribute(tags, const[op].key)}) }}\">{% endif -%}",
+            "{{- tagTrans('heritage:operator', op) -}}",
+            "{%- if attribute(tags, const[op].key) %}: {{ attribute(tags, const[op].key) }}{% endif %}",
+            "{% if const[op].url and attribute(tags, const[op].key) %}</a>{% endif -%}",
+            "<br/>",
+            "{% endfor %}"
+        ],
+        "priority": "{{ min(tags.heritage|split(\";\")) }}"
+    },
+    "const": {
+        "whc": {
+            "key": "ref:whc"
+        },
+        "bda": {
+            "key": "ref:at:bda",
+            "url": "https://tools.wmflabs.org/denkmalliste/index.php?action=EinzelID&ID=$1"
+        }
     }
 }

From 2a3fa796bed7e66f5e992c3b4b81ebf2611eeceb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 12 Nov 2021 16:46:07 +0100
Subject: [PATCH 19/27] Name for 'heritage' category: de, en

---
 lang/de.json | 1 +
 lang/en.json | 1 +
 2 files changed, 2 insertions(+)

diff --git a/lang/de.json b/lang/de.json
index bf640db..9820e52 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -32,6 +32,7 @@
     "category:gastro": "Gastronomie",
     "category:gastro-smoking": "Rauchfreie Gastronomie",
     "category:health": "Gesundheitsdienste",
+    "category:heritage": "Denkmalschutz",
     "category:hiking_routes": "Wanderrouten",
     "category:historic": "Geschichte",
     "category:index": "",
diff --git a/lang/en.json b/lang/en.json
index 03ed02d..c97dad0 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -34,6 +34,7 @@
     "category:gastro": "Gastronomy",
     "category:gastro-smoking": "Smokefree Gastronomy",
     "category:health": "Health",
+    "category:heritage": "Heritage Protection",
     "category:hiking_routes": "Hiking routes",
     "category:historic": "Historic",
     "category:index": "Index of Categories",

From da5a4568355bed759ab99a0ee4bf84464bb7fffd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Sat, 13 Nov 2021 13:29:24 +0100
Subject: [PATCH 20/27] heritage: detect 'description' of object from several
 tags

---
 heritage.json | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/heritage.json b/heritage.json
index 00a17ad..59fae5d 100644
--- a/heritage.json
+++ b/heritage.json
@@ -7,23 +7,22 @@
     },
     "feature": {
         "description": [
-            "{% for op in attribute(tags, 'heritage:operator')|split(';') %}",
-            "{% if const[op].url and attribute(tags, const[op].key) %}<a target=\"_blank\" href=\"{{ const[op].url|replace({\"$1\": attribute(tags, const[op].key)}) }}\">{% endif -%}",
-            "{{- tagTrans('heritage:operator', op) -}}",
-            "{%- if attribute(tags, const[op].key) %}: {{ attribute(tags, const[op].key) }}{% endif %}",
-            "{% if const[op].url and attribute(tags, const[op].key) %}</a>{% endif -%}",
-            "<br/>",
-            "{% endfor %}"
+            "{% set found = false %}",
+            "{% for k in ['amenity', 'shop', 'telecom', 'waterway', 'craft', 'highway', 'railway', 'aerialway', 'emergency', 'geological', 'man_made', 'natural', 'office', 'power', 'aeroway', 'tourism', 'leisure', 'military', 'landuse', 'barrier', 'route'] if not found %}",
+            "  {% if attribute(tags, k) and attribute(tags, k) != 'yes' %}",
+            "    {{ tagTransList(k, attribute(tags, k)) }}",
+            "    {% set found = true %}",
+            "  {% endif %}",
+            "{% endfor %}",
+            "{% if found %}{# nothing #}",
+            "{% elseif tags.building and tags.building != 'yes' %}",
+            "{{ tagTransList('building', tags.building) }}",
+            "{% elseif tags.historic and tags.historic not in ['heritage', 'yes', 'building'] %}",
+            "{{ tagTransList('historic', tags.historic) }}",
+            "{% elseif tags.building == 'yes' or tags.historic == 'building' %}",
+            "{{ keyTrans('building') }}",
+            "{% endif %}"
         ],
         "priority": "{{ min(tags.heritage|split(\";\")) }}"
-    },
-    "const": {
-        "whc": {
-            "key": "ref:whc"
-        },
-        "bda": {
-            "key": "ref:at:bda",
-            "url": "https://tools.wmflabs.org/denkmalliste/index.php?action=EinzelID&ID=$1"
-        }
     }
 }

From a5bb40231be147a3cb61b1778310b95fa639e076 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 14 Jan 2022 21:06:22 +0100
Subject: [PATCH 21/27] communication: include amenity=parcel_locker (and older
 variants)

---
 communication.json | 36 ++++++++++++++++++++++++++----------
 1 file changed, 26 insertions(+), 10 deletions(-)

diff --git a/communication.json b/communication.json
index 5fc3d48..3382980 100644
--- a/communication.json
+++ b/communication.json
@@ -22,23 +22,25 @@
     "query": {
         "13": [
             "(",
-            "node[amenity~'^(post_office|internet_cafe)$'];",
-            "way[amenity~'^(post_office|internet_cafe)$'];",
-            "relation[amenity~'^(post_office|internet_cafe)$'];",
+            "nwr[amenity~'^(post_office|internet_cafe)$'];",
             "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];",
             ");"
         ],
-        "16": [
-            "(node[amenity~'^(post_office|internet_cafe|post_box|telephone)$'];",
-            "way[amenity~'^(post_office|internet_cafe)$'];",
-            "relation[amenity~'^(post_office|internet_cafe)$'];",
+        "15": [
+            "(",
+            "nwr[amenity~'^(post_office|internet_cafe|post_box|parcel_locker|telephone)$'];",
             "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];",
+            "nwr[vending~\"^(|.*;)parcel_pickup(;.*|)$\"];",
+            "nwr[vending~\"^(|.*;)parcel_mail_in(;.*|)$\"];",
             ");"
         ]
     },
     "feature": {
         "pre": [
-            "{% if tags.amenity %}",
+            "{% if tags.vending %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = 'parcel_locker' %}",
+            "{% elseif tags.amenity %}",
             "  {% set key = 'amenity' %}",
             "  {% set value = tags.amenity %}",
             "{% else %}",
@@ -50,7 +52,7 @@
             "{% if key == 'office' %}",
             "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
             "{% else %}",
-            "  {{ tagTrans(key, value) }}",
+            "  {{ tagTransList(key, value) }}",
             "{% endif %}"
         ],
         "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}<br/>{% endif %}",
@@ -64,7 +66,7 @@
     "info": [
         "<table>",
         "{% for kv, data in const %}",
-        "{% if data.zoom <= map.zoom %}",
+        "{% if data.zoom <= map.zoom and not data.info_hide %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
         "    <td>",
@@ -93,6 +95,20 @@
             "sign": "<i class='fa fa-laptop' aria-hidden='true'></i>",
             "zoom": 13
         },
+        "amenity=parcel_locker": {
+            "sign": "<i class='fas fa-box'></i>",
+            "zoom": 16
+        },
+        "vending=parcel_pickup": {
+            "sign": "<i class='fas fa-box'></i>",
+            "info_hide": true,
+            "zoom": 16
+        },
+        "vending=parcel_mail_in": {
+            "sign": "<i class='fas fa-box'></i>",
+            "info_hide": true,
+            "zoom": 16
+        },
         "office=telecommunication": {
             "sign": "<i class='fas fa-mobile-alt'></i>",
             "zoom": 13

From 1a07afc37b36c8687c85a2e3984eccefdc7f9f60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Fri, 14 Jan 2022 21:07:10 +0100
Subject: [PATCH 22/27] swimming_bathing: fix queries

---
 swimming_bathing.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/swimming_bathing.json b/swimming_bathing.json
index 98e8aee..e499453 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -11,10 +11,10 @@
         "13": [
             "(",
             "nwr[leisure=swimming_area];",
-            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(;.*|)$\"];",
             "nwr[natural~\"^(beach)\"];",
             "nwr[leisure~\"^(water_park|beach_resort)$\"];",
-            "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(;.*|)$\"];",
             "nwr[amenity=public_bath];",
             "nwr[tourism=spa_resort];",
             ")"
@@ -22,7 +22,7 @@
         "16": [
             "(",
             "nwr[leisure=swimming_area];",
-            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(;.*|)$\"];",
             "nwr[natural~\"^(beach)\"];",
             "nwr[leisure~\"^(water_park|beach_resort)$\"];",
             "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(;.*|)$\"];",

From 7f31ea141dd5eebdf3db843f72d4426b2e187fab Mon Sep 17 00:00:00 2001
From: CapitaineMoustache <capmondoosm@gmail.com>
Date: Wed, 11 Aug 2021 18:19:31 +0000
Subject: [PATCH 23/27] Translated using Weblate (French)

Currently translated at 95.9% (93 of 97 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 2d723e2..03738e5 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -20,7 +20,7 @@
     "category:construction": "Chantiers de construction",
     "category:craft": "Artisanat",
     "category:culture": "Culture",
-    "category:culture_religion": "Culture et religion",
+    "category:culture_religion": "Culture et Religion",
     "category:cycle_amenities": "Équipements vélo",
     "category:cycle_routes": "Itinéraires vélo",
     "category:education": "Éducation",

From a775da6ea2f73c6e4ce2cc44c815f023c33f3465 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20Str=C4=99bski?= <strebski@gmail.com>
Date: Fri, 29 Oct 2021 20:07:44 +0000
Subject: [PATCH 24/27] Translated using Weblate (Polish)

Currently translated at 100.0% (97 of 97 strings)

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

diff --git a/lang/pl.json b/lang/pl.json
index b467b16..4fdbc8d 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -92,5 +92,8 @@
     "outdated feature": "Przestarzałe obiekty",
     "xmas:outdated-warning": "Funkcja nie została zaktualizowana w bieżącym sezonie! Sprawdź i ustaw znacznik „xmas:lastcheck” na bieżącą datę.",
     "category:climbing": "Wspinaczka",
-    "category:roads": "Drogi"
+    "category:roads": "Drogi",
+    "category:developable_areas": "Obszary do rozwoju",
+    "category:developments": "Planowanie i budowanie",
+    "category:proposals": "Propozycje"
 }

From 8aaa98c36036d60412c14c08f906922e15161c78 Mon Sep 17 00:00:00 2001
From: Igor Eliezer <igor.eliezer@gmail.com>
Date: Thu, 4 Nov 2021 14:06:33 +0000
Subject: [PATCH 25/27] Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (97 of 97 strings)

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

diff --git a/lang/pt-br.json b/lang/pt-br.json
index 4c662af..881f1a3 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -12,7 +12,7 @@
     "category:buildings-type": "Tipologias",
     "category:car_amenities": "Equipamentos",
     "category:car_furniture": "Mobiliário urbano",
-    "category:car_maxspeed": "Velocidade máxima",
+    "category:car_maxspeed": "Veloc. máxima",
     "category:car_routes": "Rotas rodoviárias",
     "category:children": "Equipamentos infantis",
     "category:coal": "Carvão",
@@ -20,7 +20,7 @@
     "category:construction": "Terrenos vazios e obras",
     "category:craft": "Ofícios",
     "category:culture": "Cultura",
-    "category:culture_religion": "Cultura",
+    "category:culture_religion": "Cultura e religião",
     "category:cycle_amenities": "Equipamentos",
     "category:cycle_routes": "Ciclorrotas",
     "category:education": "Educação",
@@ -39,10 +39,10 @@
     "category:law": "Direito",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
-    "category:memorial": "Memoriais e Monumentos",
+    "category:memorial": "Memoriais e monumentos",
     "category:military": "Militar",
     "category:mtb-routes": "Rotas de mountain bike",
-    "category:natural": "Formações naturais",
+    "category:natural": "Elementos naturais",
     "category:office": "Escritórios e agências",
     "category:oil_gas": "Petróleo e gás",
     "category:organisations": "Organizações",
@@ -50,12 +50,12 @@
     "category:outdoor": "Atividades ao ar livre",
     "category:phone": "Telefone",
     "category:places": "Lugares",
-    "category:places_geo": "Lugares",
+    "category:places_geo": "Localidades",
     "category:playgrounds": "Parquinhos",
     "category:post": "Correios",
-    "category:power_routes": "Rotas energéticas",
+    "category:power_routes": "Rotas de energia",
     "category:pt": "Mapa de transporte público",
-    "category:pt:routes": "Rotas",
+    "category:pt:routes": "Linhas",
     "category:pt:stops": "Paradas e estações",
     "category:pt_amenities": "Equipamentos",
     "category:public": "Utilidade pública",
@@ -95,5 +95,5 @@
     "category:climbing": "Escalada",
     "category:developable_areas": "Áreas urbanizáveis",
     "category:developments": "Planejamento e construção",
-    "category:proposals": "Propostas"
+    "category:proposals": "Planejados"
 }

From 1af63c464efa8020307de2eae8a412183de7a0b5 Mon Sep 17 00:00:00 2001
From: Igor Eliezer <igor.eliezer@gmail.com>
Date: Wed, 17 Nov 2021 04:22:02 +0000
Subject: [PATCH 26/27] Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (97 of 97 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 881f1a3..09ee9ae 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -27,7 +27,7 @@
     "category:electric_power": "Energia elétrica",
     "category:emergency": "Emergência",
     "category:energy": "Energia",
-    "category:financial": "Finanças",
+    "category:financial": "Finanças e seguros",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "Gastronomia sem fumo",
     "category:health": "Saúde e assistência",

From 5d335e708dbe894d92a2147a4983b8ce6c14c4b6 Mon Sep 17 00:00:00 2001
From: Peire BRECHET <adminieopaca@gmail.com>
Date: Wed, 29 Dec 2021 14:37:18 +0000
Subject: [PATCH 27/27] Translated using Weblate (Occitan)

Currently translated at 100.0% (97 of 97 strings)

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

diff --git a/lang/oc.json b/lang/oc.json
index 6952eef..42e1d2c 100644
--- a/lang/oc.json
+++ b/lang/oc.json
@@ -91,5 +91,9 @@
     "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.",
-    "category:roads": "Rotas"
+    "category:roads": "Rotas",
+    "category:climbing": "Escalada",
+    "category:developable_areas": "Airaus ameinatjats",
+    "category:developments": "Planificacion e construccion",
+    "category:proposals": "Propositions"
 }