From 4503c3c07ae43f393f86f2fbe2044783e643c403 Mon Sep 17 00:00:00 2001
From: Pieter Vander Vennet <pietervdvn@posteo.net>
Date: Fri, 16 Aug 2024 02:06:42 +0200
Subject: [PATCH] Chore: translation sync, lint themes and layer files

---
 assets/layers/aerialway/aerialway.json        |  15 +-
 assets/layers/artwork/artwork.json            |   9 +-
 .../assisted_repair/assisted_repair.json      | 100 +++----
 assets/layers/bbq/bbq.json                    |   4 +-
 .../charging_station/charging_station.json    | 252 +++++++++---------
 assets/layers/climbing_gym/climbing_gym.json  |   6 +-
 assets/layers/dentist/dentist.json            |   3 +-
 assets/layers/firepit/firepit.json            |   4 +-
 assets/layers/food/food.json                  |   9 +-
 assets/layers/grave/grave.json                |  72 ++---
 assets/layers/id_presets/id_presets.json      |   2 +-
 assets/layers/lighthouse/lighthouse.json      |  54 ++--
 .../mountain_rescue/mountain_rescue.json      |   3 +-
 assets/layers/playground/playground.json      |   3 +-
 .../playground_equipment.json                 |   4 +-
 assets/layers/questions/questions.json        |   9 +-
 assets/layers/tool_library/tool_library.json  |  79 +++---
 .../layers/tourism_accomodation/apartment.svg |  44 +++
 .../apartment.svg.license                     |   2 +
 .../tourism_accomodation/guest_house.svg      |  34 +++
 .../guest_house.svg.license                   |   2 +
 .../tourism_accomodation/license_info.json    |  30 +++
 assets/layers/tourism_accomodation/motel.svg  |  63 +++++
 .../tourism_accomodation/motel.svg.license    |   2 +
 assets/layers/usersettings/usersettings.json  |   9 +-
 .../circular_economy/circular_economy.json    |   2 +-
 assets/themes/grb/grb.json                    |   4 +-
 assets/themes/lighthouses/lighthouses.json    |   5 +-
 28 files changed, 510 insertions(+), 315 deletions(-)
 create mode 100644 assets/layers/tourism_accomodation/apartment.svg
 create mode 100644 assets/layers/tourism_accomodation/apartment.svg.license
 create mode 100644 assets/layers/tourism_accomodation/guest_house.svg
 create mode 100644 assets/layers/tourism_accomodation/guest_house.svg.license
 create mode 100644 assets/layers/tourism_accomodation/motel.svg
 create mode 100644 assets/layers/tourism_accomodation/motel.svg.license

diff --git a/assets/layers/aerialway/aerialway.json b/assets/layers/aerialway/aerialway.json
index 61d0f72ae..224da3c32 100644
--- a/assets/layers/aerialway/aerialway.json
+++ b/assets/layers/aerialway/aerialway.json
@@ -48,7 +48,8 @@
           "en": "{name}",
           "de": "{name}",
           "fr": "{name}",
-          "pl": "{name}"
+          "pl": "{name}",
+          "es": "{name}"
         },
         "condition": "name~*",
         "classes": "bg-white p-1 px-2 rounded"
@@ -177,13 +178,15 @@
         "en": "How long takes a single journey with this elevator?",
         "de": "Wie lange dauert eine Fahrt mit diesem Aufzug?",
         "fr": "Combien de temps dure le trajet dans cet ascenseur ?",
-        "pl": "Jak długo trwa pojedynczy przejazd tą windą?"
+        "pl": "Jak długo trwa pojedynczy przejazd tą windą?",
+        "es": "¿Cuánto dura un viaje en este ascensor?"
       },
       "questionHint": {
         "en": "This excludes the waiting time.",
         "de": "Dies schließt die Wartezeit aus.",
         "fr": "Cela n'inclut pas le temps d'attente.",
-        "pl": "To nie włącza czasu oczekiwania."
+        "pl": "To nie włącza czasu oczekiwania.",
+        "es": "Esto elimina el tiempo de espera."
       },
       "freeform": {
         "key": "duration"
@@ -192,7 +195,8 @@
         "en": "A single journey takes {duration} minutes",
         "de": "Eine Fahrt dauert {duration} Minuten",
         "fr": "Un aller simple dure {duration} minutes",
-        "pl": "Pojedynczy przejazd trwa {duration} minut"
+        "pl": "Pojedynczy przejazd trwa {duration} minut",
+        "es": "Un viaje dura {duration} minutos"
       }
     },
     {
@@ -203,7 +207,8 @@
       "question": {
         "en": "How many people fit a single carriage?",
         "de": "Wie viele Leute passen in eine Kabine?",
-        "pl": "Ile osób może pomieścić jeden wagon?"
+        "pl": "Ile osób może pomieścić jeden wagon?",
+        "es": "¿Cuál es la capacidad de la cabina?"
       },
       "render": {
         "en": "{aerialway:occupancy} people fit a single carriage",
diff --git a/assets/layers/artwork/artwork.json b/assets/layers/artwork/artwork.json
index 2e8449e76..94040a791 100644
--- a/assets/layers/artwork/artwork.json
+++ b/assets/layers/artwork/artwork.json
@@ -792,20 +792,23 @@
     {
       "id": "doubles_as_memorial",
       "question": {
-        "en": "Does this artwork serve as a memorial?"
+        "en": "Does this artwork serve as a memorial?",
+        "de": "Dient dieses Kunstwerk als Mahnmal?"
       },
       "mappings": [
         {
           "if": "historic=memorial",
           "then": {
-            "en": "This artwork also serves as a memorial"
+            "en": "This artwork also serves as a memorial",
+            "de": "Dieses Kunstwerk dient auch als Mahnmal"
           }
         },
         {
           "if": "historic=",
           "alsoShowIf": "historic!=memorial",
           "then": {
-            "en": "This artwork does not serve as a bench"
+            "en": "This artwork does not serve as a bench",
+            "de": "Dieses Kunstwerk dient nicht als Sitzbank"
           }
         }
       ]
diff --git a/assets/layers/assisted_repair/assisted_repair.json b/assets/layers/assisted_repair/assisted_repair.json
index 512c045ee..6bc82cf1b 100644
--- a/assets/layers/assisted_repair/assisted_repair.json
+++ b/assets/layers/assisted_repair/assisted_repair.json
@@ -1,5 +1,32 @@
 {
+  "id": "assisted_repair",
+  "name": {
+    "en": "Repair cafés and assisted repair workshops",
+    "de": "Repair-Cafés und unterstützte Reparaturwerkstätten"
+  },
+  "description": {
+    "en": "A self-assisted workshop is a location where people can come and repair their goods with help of volunteers and with the tools available at the given location.  A repair café is a type of event organized regularly along the same principles.",
+    "de": "Eine Selbsthilfewerkstatt ist ein Ort, an dem Menschen ihre Gegenstände mit Hilfe von Freiwilligen und den vor Ort verfügbaren Werkzeugen reparieren können. Ein Repair-Café ist eine Art von Veranstaltung, die regelmäßig nach denselben Prinzipien organisiert wird."
+  },
+  "source": {
+    "osmTags": "repair=assisted_self_service"
+  },
   "minzoom": 1,
+  "title": {
+    "render": {
+      "en": "Workshop for assisted repair",
+      "de": "Werkstatt für unterstützte Reparaturen"
+    },
+    "mappings": [
+      {
+        "if": "name~*",
+        "then": {
+          "en": "{name}",
+          "de": "{name}"
+        }
+      }
+    ]
+  },
   "pointRendering": [
     {
       "location": [
@@ -30,6 +57,28 @@
       ]
     }
   ],
+  "lineRendering": [
+    {
+      "width": 1,
+      "color": "blue"
+    }
+  ],
+  "presets": [
+    {
+      "title": {
+        "en": "an assisted repair workshop",
+        "de": "Eine unterstützte Reparaturwerkstatt"
+      },
+      "tags": [
+        "amenity=workshop",
+        "repair=assisted_self_service"
+      ],
+      "description": {
+        "en": "A location with a permanent workshop where people can come to repair items with the help of volunteers.",
+        "de": "Ein Ort mit einer festen Werkstatt, in der Menschen mit Hilfe von Freiwilligen Gegenstände reparieren können."
+      }
+    }
+  ],
   "tagRenderings": [
     "images",
     "preset_description",
@@ -137,55 +186,6 @@
       "multiAnswer": true
     }
   ],
-  "lineRendering": [
-    {
-      "width": 1,
-      "color": "blue"
-    }
-  ],
-  "id": "assisted_repair",
-  "name": {
-    "en": "Repair cafés and assisted repair workshops",
-    "de": "Repair-Cafés und unterstützte Reparaturwerkstätten"
-  },
-  "description": {
-    "en": "A self-assisted workshop is a location where people can come and repair their goods with help of volunteers and with the tools available at the given location.  A repair café is a type of event organized regularly along the same principles.",
-    "de": "Eine Selbsthilfewerkstatt ist ein Ort, an dem Menschen ihre Gegenstände mit Hilfe von Freiwilligen und den vor Ort verfügbaren Werkzeugen reparieren können. Ein Repair-Café ist eine Art von Veranstaltung, die regelmäßig nach denselben Prinzipien organisiert wird."
-  },
-  "source": {
-    "osmTags": "repair=assisted_self_service"
-  },
-  "title": {
-    "render": {
-      "en": "Workshop for assisted repair",
-      "de": "Werkstatt für unterstützte Reparaturen"
-    },
-    "mappings": [
-      {
-        "if": "name~*",
-        "then": {
-          "en": "{name}",
-          "de": "{name}"
-        }
-      }
-    ]
-  },
   "deletion": {},
-  "allowMove": true,
-  "presets": [
-    {
-      "title": {
-        "en": "an assisted repair workshop",
-        "de": "Eine unterstützte Reparaturwerkstatt"
-      },
-      "tags": [
-        "amenity=workshop",
-        "repair=assisted_self_service"
-      ],
-      "description": {
-        "en": "A location with a permanent workshop where people can come to repair items with the help of volunteers.",
-        "de": "Ein Ort mit einer festen Werkstatt, in der Menschen mit Hilfe von Freiwilligen Gegenstände reparieren können."
-      }
-    }
-  ]
+  "allowMove": true
 }
diff --git a/assets/layers/bbq/bbq.json b/assets/layers/bbq/bbq.json
index 44928885e..03fc7442b 100644
--- a/assets/layers/bbq/bbq.json
+++ b/assets/layers/bbq/bbq.json
@@ -166,9 +166,9 @@
       ]
     }
   ],
+  "deletion": true,
   "allowMove": {
     "enableRelocation": false,
     "enableImproveAccuracy": true
-  },
-  "deletion": true
+  }
 }
diff --git a/assets/layers/charging_station/charging_station.json b/assets/layers/charging_station/charging_station.json
index 1d5bccb6d..132a6710e 100644
--- a/assets/layers/charging_station/charging_station.json
+++ b/assets/layers/charging_station/charging_station.json
@@ -5,7 +5,13 @@
     "nl": "Oplaadpunten",
     "de": "Ladestationen"
   },
-  "minzoom": 10,
+  "description": {
+    "en": "A charging station",
+    "nl": "Oplaadpunten",
+    "ca": "Una estació de càrrega",
+    "de": "Eine Ladestation",
+    "fr": "Une station de recharge"
+  },
   "source": {
     "osmTags": {
       "and": [
@@ -20,6 +26,7 @@
       ]
     }
   },
+  "minzoom": 10,
   "title": {
     "render": {
       "en": "Charging station",
@@ -65,14 +72,109 @@
       }
     ]
   },
-  "description": {
-    "en": "A charging station",
-    "nl": "Oplaadpunten",
-    "ca": "Una estació de càrrega",
-    "de": "Eine Ladestation",
-    "fr": "Une station de recharge"
-  },
-  "#": "no-question-hint-check",
+  "pointRendering": [
+    {
+      "location": [
+        "point",
+        "centroid"
+      ],
+      "marker": [
+        {
+          "icon": "pin",
+          "color": "#fff"
+        },
+        {
+          "icon": {
+            "render": "./assets/themes/charging_stations/plug.svg",
+            "mappings": [
+              {
+                "if": "bicycle=yes",
+                "then": "./assets/themes/charging_stations/bicycle.svg"
+              },
+              {
+                "if": {
+                  "or": [
+                    "car=yes",
+                    "motorcar=yes"
+                  ]
+                },
+                "then": "./assets/themes/charging_stations/car.svg"
+              }
+            ]
+          }
+        }
+      ],
+      "iconBadges": [
+        {
+          "if": {
+            "or": [
+              "disused:amenity=charging_station",
+              "operational_status=broken"
+            ]
+          },
+          "then": "close:#c22;"
+        },
+        {
+          "if": {
+            "or": [
+              "proposed:amenity=charging_station",
+              "planned:amenity=charging_station"
+            ]
+          },
+          "then": "./assets/layers/charging_station/under_construction.svg"
+        },
+        {
+          "if": {
+            "and": [
+              "bicycle=yes",
+              {
+                "or": [
+                  "motorcar=yes",
+                  "car=yes"
+                ]
+              }
+            ]
+          },
+          "then": "circle:#fff;./assets/themes/charging_stations/car.svg"
+        }
+      ],
+      "anchor": "bottom",
+      "iconSize": "50,50"
+    }
+  ],
+  "lineRendering": [
+    {
+      "color": "black",
+      "width": 2,
+      "fillColor": "#80808080"
+    }
+  ],
+  "presets": [
+    {
+      "tags": [
+        "amenity=charging_station",
+        "motorcar=no",
+        "bicycle=yes"
+      ],
+      "title": {
+        "en": "charging station for electrical bikes",
+        "nl": "oplaadpunt voor elektrische fietsen",
+        "de": "Ladestation für Elektrofahrräder"
+      }
+    },
+    {
+      "tags": [
+        "amenity=charging_station",
+        "motorcar=yes",
+        "bicycle=no"
+      ],
+      "title": {
+        "en": "charging station for cars",
+        "nl": "oplaadstation voor elektrische auto's",
+        "de": "Ladestation für Autos"
+      }
+    }
+  ],
   "tagRenderings": [
     "images",
     {
@@ -2778,109 +2880,6 @@
       }
     }
   ],
-  "lineRendering": [
-    {
-      "color": "black",
-      "width": 2,
-      "fillColor": "#80808080"
-    }
-  ],
-  "pointRendering": [
-    {
-      "location": [
-        "point",
-        "centroid"
-      ],
-      "marker": [
-        {
-          "icon": "pin",
-          "color": "#fff"
-        },
-        {
-          "icon": {
-            "render": "./assets/themes/charging_stations/plug.svg",
-            "mappings": [
-              {
-                "if": "bicycle=yes",
-                "then": "./assets/themes/charging_stations/bicycle.svg"
-              },
-              {
-                "if": {
-                  "or": [
-                    "car=yes",
-                    "motorcar=yes"
-                  ]
-                },
-                "then": "./assets/themes/charging_stations/car.svg"
-              }
-            ]
-          }
-        }
-      ],
-      "iconBadges": [
-        {
-          "if": {
-            "or": [
-              "disused:amenity=charging_station",
-              "operational_status=broken"
-            ]
-          },
-          "then": "close:#c22;"
-        },
-        {
-          "if": {
-            "or": [
-              "proposed:amenity=charging_station",
-              "planned:amenity=charging_station"
-            ]
-          },
-          "then": "./assets/layers/charging_station/under_construction.svg"
-        },
-        {
-          "if": {
-            "and": [
-              "bicycle=yes",
-              {
-                "or": [
-                  "motorcar=yes",
-                  "car=yes"
-                ]
-              }
-            ]
-          },
-          "then": "circle:#fff;./assets/themes/charging_stations/car.svg"
-        }
-      ],
-      "anchor": "bottom",
-      "iconSize": "50,50"
-    }
-  ],
-  "presets": [
-    {
-      "tags": [
-        "amenity=charging_station",
-        "motorcar=no",
-        "bicycle=yes"
-      ],
-      "title": {
-        "en": "charging station for electrical bikes",
-        "nl": "oplaadpunt voor elektrische fietsen",
-        "de": "Ladestation für Elektrofahrräder"
-      }
-    },
-    {
-      "tags": [
-        "amenity=charging_station",
-        "motorcar=yes",
-        "bicycle=no"
-      ],
-      "title": {
-        "en": "charging station for cars",
-        "nl": "oplaadstation voor elektrische auto's",
-        "de": "Ladestation für Autos"
-      }
-    }
-  ],
   "filter": [
     {
       "id": "vehicle-type",
@@ -3128,6 +3127,19 @@
       ]
     }
   ],
+  "deletion": {
+    "softDeletionTags": {
+      "and": [
+        "amenity=",
+        "disused:amenity=charging_station"
+      ]
+    },
+    "neededChangesets": 10
+  },
+  "allowMove": {
+    "enableRelocation": false,
+    "enableImproveAccuracy": true
+  },
   "units": [
     {
       "maxstay": {
@@ -3322,17 +3334,5 @@
       }
     }
   ],
-  "allowMove": {
-    "enableRelocation": false,
-    "enableImproveAccuracy": true
-  },
-  "deletion": {
-    "softDeletionTags": {
-      "and": [
-        "amenity=",
-        "disused:amenity=charging_station"
-      ]
-    },
-    "neededChangesets": 10
-  }
-}
\ No newline at end of file
+  "#": "no-question-hint-check"
+}
diff --git a/assets/layers/climbing_gym/climbing_gym.json b/assets/layers/climbing_gym/climbing_gym.json
index 7e62511bc..5c2271a9c 100644
--- a/assets/layers/climbing_gym/climbing_gym.json
+++ b/assets/layers/climbing_gym/climbing_gym.json
@@ -57,6 +57,9 @@
       }
     ]
   },
+  "titleIcons": [
+    "icons.defaults"
+  ],
   "pointRendering": [
     {
       "iconBadges": [
@@ -87,9 +90,6 @@
     }
   ],
   "lineRendering": [],
-  "titleIcons": [
-    "icons.defaults"
-  ],
   "presets": [
     {
       "title": {
diff --git a/assets/layers/dentist/dentist.json b/assets/layers/dentist/dentist.json
index f14e2efa2..448e8778c 100644
--- a/assets/layers/dentist/dentist.json
+++ b/assets/layers/dentist/dentist.json
@@ -54,7 +54,8 @@
           {
             "if": "name~*",
             "then": {
-              "en": "{name}"
+              "en": "{name}",
+              "de": "{name}"
             }
           }
         ]
diff --git a/assets/layers/firepit/firepit.json b/assets/layers/firepit/firepit.json
index a0cd27170..eebc2d0ac 100644
--- a/assets/layers/firepit/firepit.json
+++ b/assets/layers/firepit/firepit.json
@@ -119,9 +119,9 @@
       }
     }
   ],
+  "deletion": true,
   "allowMove": {
     "enableRelocation": false,
     "enableImproveAccuracy": true
-  },
-  "deletion": true
+  }
 }
diff --git a/assets/layers/food/food.json b/assets/layers/food/food.json
index ee2131924..b9f9e3ef4 100644
--- a/assets/layers/food/food.json
+++ b/assets/layers/food/food.json
@@ -537,7 +537,8 @@
           "image-key": "image:menu",
           "label": {
             "en": "Add an image from the menu",
-            "nl": "Voeg een foto van het menu toe"
+            "nl": "Voeg een foto van het menu toe",
+            "de": "Ein Bild aus dem Menü hinzufügen"
           }
         }
       }
@@ -545,14 +546,16 @@
     {
       "id": "menu-website",
       "question": {
-        "en": "On what webpage is the menu published?"
+        "en": "On what webpage is the menu published?",
+        "de": "Auf welcher Webseite wird das Menü veröffentlicht?"
       },
       "render": {
         "special": {
           "type": "link",
           "href": "{website:menu}",
           "text": {
-            "en": "Consult the menu"
+            "en": "Consult the menu",
+            "de": "Das Menü einsehen"
           }
         }
       },
diff --git a/assets/layers/grave/grave.json b/assets/layers/grave/grave.json
index 437b55287..0e04a30fa 100644
--- a/assets/layers/grave/grave.json
+++ b/assets/layers/grave/grave.json
@@ -1,6 +1,23 @@
 {
-  "credits": "Built for Wegspotter on the meetup",
+  "id": "grave",
+  "name": {
+    "en": "Gravestones",
+    "de": "Grabsteine"
+  },
+  "description": {
+    "en": "Tombstones (and graves) indicate where a person was buried. On this map, those can be recorded and a link to Wikipedia can be made",
+    "de": "Grabsteine (und Gräber) zeigen an, wo eine Person begraben wurde. Auf dieser Karte können diese aufgezeichnet werden und ein Wikipedialink erstellt werden"
+  },
+  "source": {
+    "osmTags": "historic=tomb"
+  },
   "minzoom": 15,
+  "title": {
+    "render": {
+      "en": "Tombstone",
+      "de": "Grabstein"
+    }
+  },
   "pointRendering": [
     {
       "location": [
@@ -17,6 +34,22 @@
       "labelCssClasses": "bg-white rounded px-2"
     }
   ],
+  "lineRendering": [],
+  "presets": [
+    {
+      "title": {
+        "en": "a tombstone",
+        "de": "ein Grabstein"
+      },
+      "tags": [
+        "historic=tomb"
+      ],
+      "description": {
+        "en": "A tombstone is a physical object which indicates that one or more persons are buried here. It generally has the name, birth date and death date of the person or persons as inscription.",
+        "de": "Ein Grabstein ist ein physischer Gegenstand, der anzeigt, dass eine oder mehrere Personen hier begraben sind. Er trägt in der Regel den Namen, das Geburts- und das Sterbedatum der Person oder Personen als Inschrift."
+      }
+    }
+  ],
   "tagRenderings": [
     "images",
     {
@@ -49,40 +82,6 @@
       }
     }
   ],
-  "lineRendering": [],
-  "id": "grave",
-  "name": {
-    "en": "Gravestones",
-    "de": "Grabsteine"
-  },
-  "description": {
-    "en": "Tombstones (and graves) indicate where a person was buried. On this map, those can be recorded and a link to Wikipedia can be made",
-    "de": "Grabsteine (und Gräber) zeigen an, wo eine Person begraben wurde. Auf dieser Karte können diese aufgezeichnet werden und ein Wikipedialink erstellt werden"
-  },
-  "source": {
-    "osmTags": "historic=tomb"
-  },
-  "title": {
-    "render": {
-      "en": "Tombstone",
-      "de": "Grabstein"
-    }
-  },
-  "presets": [
-    {
-      "title": {
-        "en": "a tombstone",
-        "de": "ein Grabstein"
-      },
-      "tags": [
-        "historic=tomb"
-      ],
-      "description": {
-        "en": "A tombstone is a physical object which indicates that one or more persons are buried here. It generally has the name, birth date and death date of the person or persons as inscription.",
-        "de": "Ein Grabstein ist ein physischer Gegenstand, der anzeigt, dass eine oder mehrere Personen hier begraben sind. Er trägt in der Regel den Namen, das Geburts- und das Sterbedatum der Person oder Personen als Inschrift."
-      }
-    }
-  ],
   "filter": [
     {
       "id": "has_wikidata",
@@ -109,5 +108,6 @@
         }
       ]
     }
-  ]
+  ],
+  "credits": "Built for Wegspotter on the meetup"
 }
diff --git a/assets/layers/id_presets/id_presets.json b/assets/layers/id_presets/id_presets.json
index bfe9e6de8..a5b3f8b8e 100644
--- a/assets/layers/id_presets/id_presets.json
+++ b/assets/layers/id_presets/id_presets.json
@@ -23685,4 +23685,4 @@
     }
   ],
   "#dont-translate": "*"
-}
\ No newline at end of file
+}
diff --git a/assets/layers/lighthouse/lighthouse.json b/assets/layers/lighthouse/lighthouse.json
index 3a546b83e..89ca98db5 100644
--- a/assets/layers/lighthouse/lighthouse.json
+++ b/assets/layers/lighthouse/lighthouse.json
@@ -23,6 +23,32 @@
       }
     ]
   },
+  "pointRendering": [
+    {
+      "location": [
+        "point",
+        "centroid"
+      ],
+      "marker": [
+        {
+          "icon": "./assets/themes/lighthouses/lighthouse.svg"
+        }
+      ],
+      "anchor": "bottom"
+    }
+  ],
+  "lineRendering": [],
+  "presets": [
+    {
+      "tags": [
+        "man_made=lighthouse"
+      ],
+      "title": {
+        "en": "a lighthouse",
+        "de": "ein Leuchtturm"
+      }
+    }
+  ],
   "tagRenderings": [
     "images",
     "wikipedia",
@@ -42,32 +68,6 @@
       "id": "lighthouse-height"
     }
   ],
-  "presets": [
-    {
-      "tags": [
-        "man_made=lighthouse"
-      ],
-      "title": {
-        "en": "a lighthouse",
-        "de": "ein Leuchtturm"
-      }
-    }
-  ],
-  "pointRendering": [
-    {
-      "location": [
-        "point",
-        "centroid"
-      ],
-      "marker": [
-        {
-          "icon": "./assets/themes/lighthouses/lighthouse.svg"
-        }
-      ],
-      "anchor": "bottom"
-    }
-  ],
-  "lineRendering": [],
   "units": [
     {
       "height": {
@@ -78,4 +78,4 @@
       }
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/assets/layers/mountain_rescue/mountain_rescue.json b/assets/layers/mountain_rescue/mountain_rescue.json
index 2de153cdc..160869ce8 100644
--- a/assets/layers/mountain_rescue/mountain_rescue.json
+++ b/assets/layers/mountain_rescue/mountain_rescue.json
@@ -66,6 +66,5 @@
   "deletion": true,
   "allowMove": {
     "enableRelocation": false
-  },
-  "credits": "Not logged in"
+  }
 }
diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json
index 2bd288d50..0e3950630 100644
--- a/assets/layers/playground/playground.json
+++ b/assets/layers/playground/playground.json
@@ -294,7 +294,8 @@
           "if": "surface=fine_gravel",
           "then": {
             "en": "The surface is <b>fine gravel</b> (less then 2 cm per stone)",
-            "nl": "De ondergrond bestaat uit <b>kleine grindsteentjes</b> (steentjes kleiner dan 2 cm)"
+            "nl": "De ondergrond bestaat uit <b>kleine grindsteentjes</b> (steentjes kleiner dan 2 cm)",
+            "de": "Die Oberfläche ist <b>feiner Kies</b> (weniger als 2 cm pro Stein)"
           }
         }
       ],
diff --git a/assets/layers/playground_equipment/playground_equipment.json b/assets/layers/playground_equipment/playground_equipment.json
index ca23caef1..882c4dd4e 100644
--- a/assets/layers/playground_equipment/playground_equipment.json
+++ b/assets/layers/playground_equipment/playground_equipment.json
@@ -371,8 +371,8 @@
       }
     }
   ],
-  "allowMove": true,
   "deletion": {
     "neededChangesets": 0
-  }
+  },
+  "allowMove": true
 }
diff --git a/assets/layers/questions/questions.json b/assets/layers/questions/questions.json
index 0f190af93..d5d4551f7 100644
--- a/assets/layers/questions/questions.json
+++ b/assets/layers/questions/questions.json
@@ -2906,10 +2906,12 @@
     {
       "id": "brand",
       "question": {
-        "en": "Is {title()} part of a bigger brand?"
+        "en": "Is {title()} part of a bigger brand?",
+        "de": "Ist {title()} Teil einer großen Marke?"
       },
       "render": {
-        "en": "Part of {brand}"
+        "en": "Part of {brand}",
+        "de": "Teil von {brand}"
       },
       "freeform": {
         "key": "brand",
@@ -2925,7 +2927,8 @@
             "brand:wikidata="
           ],
           "then": {
-            "en": "Not part of a bigger brand"
+            "en": "Not part of a bigger brand",
+            "de": "Nicht Teil einer großen Marke"
           }
         }
       ]
diff --git a/assets/layers/tool_library/tool_library.json b/assets/layers/tool_library/tool_library.json
index fc5e35375..ff6e72d7f 100644
--- a/assets/layers/tool_library/tool_library.json
+++ b/assets/layers/tool_library/tool_library.json
@@ -1,6 +1,23 @@
 {
-  "credits": "Not logged in",
+  "id": "tool_library",
+  "name": {
+    "en": "Tool libraries",
+    "de": "Werkzeugbibliothek"
+  },
+  "description": {
+    "en": "A tool library is a place where people from the general public can borrow tools",
+    "de": "Eine Werkzeugbibliothek ist ein Ort, an dem Menschen aus der Öffentlichkeit Werkzeuge ausleihen können"
+  },
+  "source": {
+    "osmTags": "amenity=tool_library"
+  },
   "minzoom": 3,
+  "title": {
+    "render": {
+      "en": "Tool library {name}",
+      "de": "Werkzeugbibliothek {name}"
+    }
+  },
   "pointRendering": [
     {
       "location": [
@@ -31,6 +48,27 @@
       "labelCssClasses": "bg-white rounded px-2"
     }
   ],
+  "lineRendering": [
+    {
+      "width": 1,
+      "color": "blue"
+    }
+  ],
+  "presets": [
+    {
+      "title": {
+        "en": "a tool library",
+        "de": "Eine Werkzeugbibliothek"
+      },
+      "tags": [
+        "amenity=tool_library"
+      ],
+      "description": {
+        "en": "A tool library is a place where people from the general public can borrow tools",
+        "de": "Eine Werkzeugbibliothek ist ein Ort, an dem Menschen aus der Öffentlichkeit Werkzeuge ausleihen können"
+      }
+    }
+  ],
   "tagRenderings": [
     "images",
     "contact",
@@ -135,45 +173,6 @@
       }
     }
   ],
-  "lineRendering": [
-    {
-      "width": 1,
-      "color": "blue"
-    }
-  ],
-  "id": "tool_library",
-  "name": {
-    "en": "Tool libraries",
-    "de": "Werkzeugbibliothek"
-  },
-  "description": {
-    "en": "A tool library is a place where people from the general public can borrow tools",
-    "de": "Eine Werkzeugbibliothek ist ein Ort, an dem Menschen aus der Öffentlichkeit Werkzeuge ausleihen können"
-  },
-  "source": {
-    "osmTags": "amenity=tool_library"
-  },
-  "title": {
-    "render": {
-      "en": "Tool library {name}",
-      "de": "Werkzeugbibliothek {name}"
-    }
-  },
-  "presets": [
-    {
-      "title": {
-        "en": "a tool library",
-        "de": "Eine Werkzeugbibliothek"
-      },
-      "tags": [
-        "amenity=tool_library"
-      ],
-      "description": {
-        "en": "A tool library is a place where people from the general public can borrow tools",
-        "de": "Eine Werkzeugbibliothek ist ein Ort, an dem Menschen aus der Öffentlichkeit Werkzeuge ausleihen können"
-      }
-    }
-  ],
   "deletion": true,
   "allowMove": true,
   "units": [
diff --git a/assets/layers/tourism_accomodation/apartment.svg b/assets/layers/tourism_accomodation/apartment.svg
new file mode 100644
index 000000000..a6602c4cb
--- /dev/null
+++ b/assets/layers/tourism_accomodation/apartment.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   xml:space="preserve"
+   enable-background="new 0 0 14 14"
+   viewBox="0 0 14 14"
+   height="14px"
+   width="14px"
+   y="0px"
+   x="0px"
+   id="tourism_apartment"
+   version="1.1"><metadata
+   id="metadata13"><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><defs
+   id="defs11" />
+<rect
+   height="14"
+   width="14"
+   fill="none"
+   display="none"
+   id="canvas" />
+
+
+
+<path
+   id="hotel"
+   d="M 0.5,3 C 0.223,3 0,3.223 0,3.5 V 4 8 9 9.5 11 H 1 V 9.5 9 H 13 V 10.5 11 H 13.5 14 V 10.5 9 8 6 5.5 C 14,5.223 13.777,5 13.5,5 13.223,5 13,5.223 13,5.5 V 6 8 H 1 V 4 3.5 C 1,3.223 0.777,3 0.5,3 Z m 3,1 C 2.671573,4 2,4.671573 2,5.5 2,6.328427 2.671573,7 3.5,7 4.328427,7 5,6.328427 5,5.5 5,4.671573 4.328427,4 3.5,4 Z M 6,5 v 2 h 6 C 12,6 10.963825,5 10,5 Z" style="fill:#0092da" /><rect
+   y="0"
+   x="2.220446e-016"
+   height="2"
+   width="14"
+   id="rect825"
+   style="opacity:0.5;fill:#0092da;fill-opacity:1;stroke:none;stroke-width:0.07990667;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" /><rect
+   y="12"
+   x="0"
+   height="2"
+   width="14"
+   id="rect825-2"
+   style="opacity:0.5;fill:#0092da;fill-opacity:1;stroke:none;stroke-width:0.07990667;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" /></svg>
\ No newline at end of file
diff --git a/assets/layers/tourism_accomodation/apartment.svg.license b/assets/layers/tourism_accomodation/apartment.svg.license
new file mode 100644
index 000000000..f752f0ddd
--- /dev/null
+++ b/assets/layers/tourism_accomodation/apartment.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: OSM-Carto
+SPDX-License-Identifier: CC0-1.0
\ No newline at end of file
diff --git a/assets/layers/tourism_accomodation/guest_house.svg b/assets/layers/tourism_accomodation/guest_house.svg
new file mode 100644
index 000000000..681d42142
--- /dev/null
+++ b/assets/layers/tourism_accomodation/guest_house.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   viewBox="0 0 14 14"
+   height="14"
+   width="14"
+   id="svg2"
+   version="1.1">
+  <metadata
+     id="metadata8">
+    <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>
+  <defs
+     id="defs6" />
+  <path
+     id="polygon4-1"
+     d="M 6.9999997,0.85331316 1,5 h 2 v 8 H 6 V 8 h 2 v 5 h 3 V 5 h 2 z"
+     style="opacity:0.9;fill:#0092da;fill-opacity:0.3;stroke-width:0.01526906" />
+  <path
+     id="hotel"
+     d="m 0.5,6.0000004 c -0.277,0 -0.5,0.223 -0.5,0.5 v 0.5 V 11 12 12.5 14 H 1 V 12.5 12 H 13 V 13.5 14 H 13.5 14 V 13.5 12 11 9.0000004 v -0.5 c 0,-0.277 -0.223,-0.5 -0.5,-0.5 -0.277,0 -0.5,0.223 -0.5,0.5 v 0.5 V 11 H 1 v -3.9999996 -0.5 c 0,-0.277 -0.223,-0.5 -0.5,-0.5 z m 3,1 c -0.828427,0 -1.5,0.671573 -1.5,1.5 C 2,9.3284274 2.671573,10 3.5,10 4.328427,10 5,9.3284274 5,8.5000004 c 0,-0.828427 -0.671573,-1.5 -1.5,-1.5 z m 2.5,1 V 10 h 6 C 12,9.0000004 10.963825,8.0000004 10,8.0000004 Z" style="fill:#0092da"/>
+</svg>
diff --git a/assets/layers/tourism_accomodation/guest_house.svg.license b/assets/layers/tourism_accomodation/guest_house.svg.license
new file mode 100644
index 000000000..281557b34
--- /dev/null
+++ b/assets/layers/tourism_accomodation/guest_house.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 	Geozeisig 
+SPDX-License-Identifier: CC0-1.0
\ No newline at end of file
diff --git a/assets/layers/tourism_accomodation/license_info.json b/assets/layers/tourism_accomodation/license_info.json
index fe996b6f7..196d80c27 100644
--- a/assets/layers/tourism_accomodation/license_info.json
+++ b/assets/layers/tourism_accomodation/license_info.json
@@ -1,4 +1,24 @@
 [
+  {
+    "path": "apartment.svg",
+    "license": "CC0-1.0",
+    "authors": [
+      "OSM-Carto"
+    ],
+    "sources": [
+      "https://wiki.openstreetmap.org/wiki/File:Apartment.svg"
+    ]
+  },
+  {
+    "path": "guest_house.svg",
+    "license": "CC0-1.0",
+    "authors": [
+      "\tGeozeisig "
+    ],
+    "sources": [
+      "https://wiki.openstreetmap.org/wiki/File:Tourism_guest_house.svg"
+    ]
+  },
   {
     "path": "hostel.svg",
     "license": "CC0-1.0",
@@ -21,5 +41,15 @@
     "sources": [
       "https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/tourism/hotel.svg"
     ]
+  },
+  {
+    "path": "motel.svg",
+    "license": "CC0-1.0",
+    "authors": [
+      "gmgeo"
+    ],
+    "sources": [
+      "https://wiki.openstreetmap.org/wiki/File:Motel-16.svg"
+    ]
   }
 ]
\ No newline at end of file
diff --git a/assets/layers/tourism_accomodation/motel.svg b/assets/layers/tourism_accomodation/motel.svg
new file mode 100644
index 000000000..cab5d5af7
--- /dev/null
+++ b/assets/layers/tourism_accomodation/motel.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.1"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg2"
+   sodipodi:docname="motel.svg"
+   inkscape:version="0.92.2 5c3e80d, 2017-08-06">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="935"
+     inkscape:window-height="540"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="16.857143"
+     inkscape:cx="7"
+     inkscape:cy="7"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <metadata
+     id="metadata8">
+    <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>
+  <defs
+     id="defs6" />
+  <rect
+     width="14"
+     height="14"
+     x="0"
+     y="2"
+     id="canvas"
+     style="visibility:hidden;fill:none;stroke:none" />
+  <path
+     d="M 0.57142857,0 C 0.25485714,0 0,0.25485714 0,0.57142857 V 1.1428571 6.8571429 H 1.1428571 V 5.7142857 H 14.857143 V 6.8571429 H 16 V 2.2857143 1.7142857 c 0,-0.3165714 -0.254857,-0.5714286 -0.571429,-0.5714286 -0.316571,0 -0.571428,0.2548572 -0.571428,0.5714286 V 2.2857143 4.5714286 H 1.1428571 V 1.1428571 0.57142857 C 1.1428571,0.25485714 0.888,0 0.57142857,0 Z M 4,0 C 3.0532263,0 2.2857143,0.767512 2.2857143,1.7142857 c 0,0.9467737 0.767512,1.7142857 1.7142857,1.7142857 0.9467737,0 1.7142857,-0.767512 1.7142857,-1.7142857 C 5.7142857,0.767512 4.9467737,0 4,0 Z m 2.8571429,1.1428571 v 2.2857143 h 6.8571431 c 0,-1.1428571 -1.1842,-2.2857143 -2.285715,-2.2857143 z M 4.5714286,6.8571429 3.4285714,10.285714 c -0.5401897,0 -1.1428571,0.439195 -1.1428571,1.142857 v 3.428572 h 1.1428571 c 0,0 0,1.142857 1.1428572,1.142857 1.1428571,0 1.1428571,-1.142857 1.1428571,-1.142857 h 4.5714283 c 0,0 0,1.142857 1.142857,1.142857 1.142858,0 1.142858,-1.142857 1.142858,-1.142857 h 1.142857 v -3.428572 c 0,-0.594978 -0.520486,-1.142857 -1.142857,-1.142857 L 11.428571,6.8571429 Z M 5.7142857,8 H 10.285714 L 11,10.285714 H 5 Z m -1.1428571,3.714286 c 0.4733874,0 0.8571428,0.383755 0.8571428,0.857143 0,0.473387 -0.3837554,0.857142 -0.8571428,0.857142 -0.4733875,0 -0.8571429,-0.383755 -0.8571429,-0.857142 0,-0.473388 0.3837554,-0.857143 0.8571429,-0.857143 z m 6.8571424,0 c 0.473388,0 0.857143,0.383755 0.857143,0.857143 0,0.473387 -0.383755,0.857142 -0.857143,0.857142 -0.473387,0 -0.857142,-0.383755 -0.857142,-0.857142 0,-0.473388 0.383755,-0.857143 0.857142,-0.857143 z"
+     id="motel"
+     style="fill:#0092da;stroke-width:1.14285719"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/assets/layers/tourism_accomodation/motel.svg.license b/assets/layers/tourism_accomodation/motel.svg.license
new file mode 100644
index 000000000..634783d06
--- /dev/null
+++ b/assets/layers/tourism_accomodation/motel.svg.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: gmgeo
+SPDX-License-Identifier: CC0-1.0
\ No newline at end of file
diff --git a/assets/layers/usersettings/usersettings.json b/assets/layers/usersettings/usersettings.json
index c9f98f991..86a82b745 100644
--- a/assets/layers/usersettings/usersettings.json
+++ b/assets/layers/usersettings/usersettings.json
@@ -1009,7 +1009,8 @@
     {
       "id": "debug-title",
       "render": {
-        "en": "<h3>Debugging options</h3>"
+        "en": "<h3>Debugging options</h3>",
+        "de": "<h3>Debugging-Optionen</h3>"
       }
     },
     {
@@ -1019,11 +1020,13 @@
         "special": {
           "type": "clear_caches",
           "text": {
-            "en": "Clear caches"
+            "en": "Clear caches",
+            "de": "Caches löschen"
           }
         },
         "after": {
-          "en": "Clearing the caches will delete locally downloaded data and code. You will remain logged in and your settings will be preserved. No data should be lost"
+          "en": "Clearing the caches will delete locally downloaded data and code. You will remain logged in and your settings will be preserved. No data should be lost",
+          "de": "Wenn du die Caches löschst, werden lokal heruntergeladene Daten und Code gelöscht. Du bleibst eingeloggt und deine Einstellungen bleiben erhalten. Es sollten keine Daten verloren gehen"
         }
       }
     },
diff --git a/assets/themes/circular_economy/circular_economy.json b/assets/themes/circular_economy/circular_economy.json
index ab459a119..11bee0fee 100644
--- a/assets/themes/circular_economy/circular_economy.json
+++ b/assets/themes/circular_economy/circular_economy.json
@@ -4,11 +4,11 @@
     "en": "Circular economy",
     "es": "Economía circular"
   },
-  "icon": "./assets/themes/circular_economy/circular.svg",
   "description": {
     "en": "Various items which help people to share, reuse or recycle.",
     "es": "Varios elementos que ayudan a la gente a compartir, reutilizar o reciclar."
   },
+  "icon": "./assets/themes/circular_economy/circular.svg",
   "layers": [
     {
       "builtin": "public_bookcase",
diff --git a/assets/themes/grb/grb.json b/assets/themes/grb/grb.json
index 7cbace46a..20a85d809 100644
--- a/assets/themes/grb/grb.json
+++ b/assets/themes/grb/grb.json
@@ -787,6 +787,6 @@
   },
   "overpassMaxZoom": 15,
   "osmApiTileSize": 17,
-  "widenFactor": 2,
-  "enableCache": false
+  "enableCache": false,
+  "widenFactor": 2
 }
diff --git a/assets/themes/lighthouses/lighthouses.json b/assets/themes/lighthouses/lighthouses.json
index 62d1ee0f8..51625bac2 100644
--- a/assets/themes/lighthouses/lighthouses.json
+++ b/assets/themes/lighthouses/lighthouses.json
@@ -12,11 +12,12 @@
     "it": "I fari sono edifici alti con una luce in cima per guidare il traffico marittimo."
   },
   "icon": "./assets/themes/lighthouses/lighthouse.svg",
-  "startZoom": 0,
   "startLat": 51.33884,
   "startLon": 3.14154,
   "defaultBackgroundId": "protomaps.white",
-  "credits": "Seppe Santens",
+  "credits": [
+    "Seppe Santens"
+  ],
   "layers": [
     "lighthouse"
   ]