From 4cfb632b5e7e32d8298a3be327fc37d3180b8a7e Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 29 Mar 2023 16:11:21 +0100 Subject: [PATCH] Rework the map attribution to avoid raw html in translations. --- app/assets/javascripts/leaflet.map.js | 56 +++++++++++++++++++++++---- config/locales/en.yml | 20 ++++++---- 2 files changed, 62 insertions(+), 14 deletions(-) diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index 44aa530d9..88d16bc8e 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -15,13 +15,55 @@ L.OSM.Map = L.Map.extend({ initialize: function (id, options) { L.Map.prototype.initialize.call(this, id, options); - var copyright = I18n.t("javascripts.map.copyright", { copyright_url: "/copyright" }); - var donate = I18n.t("javascripts.map.donate_link_text", { donate_url: "https://donate.openstreetmap.org" }); - var terms = I18n.t("javascripts.map.terms", { terms_url: "https://wiki.osmfoundation.org/wiki/Terms_of_Use" }); - var cyclosm = I18n.t("javascripts.map.cyclosm", { cyclosm_url: "https://www.cyclosm.org", osmfrance_url: "https://openstreetmap.fr/" }); - var thunderforest = I18n.t("javascripts.map.thunderforest", { thunderforest_url: "https://www.thunderforest.com/" }); - var memomaps = I18n.t("javascripts.map.opnvkarte", { memomaps_url: "https://memomaps.de/" }); - var hotosm = I18n.t("javascripts.map.hotosm", { hotosm_url: "https://www.hotosm.org/", osmfrance_url: "https://openstreetmap.fr/" }); + var copyright_link = $("", { + href: "/copyright", + text: I18n.t("javascripts.map.openstreetmap_contributors") + }).prop("outerHTML"); + var copyright = I18n.t("javascripts.map.copyright_text", { copyright_link: copyright_link }); + + var donate = $("", { + "href": "https://donate.openstreetmap.org", + "class": "donate-attr", + "text": I18n.t("javascripts.map.make_a_donation") + }).prop("outerHTML"); + + var terms = $("", { + href: "https://wiki.osmfoundation.org/wiki/Terms_of_Use", + text: I18n.t("javascripts.map.website_and_api_terms") + }).prop("outerHTML"); + + var cyclosm_link = $("", { + href: "https://www.cyclosm.org", + target: "_blank", + text: I18n.t("javascripts.map.cyclosm_name") + }).prop("outerHTML"); + var osm_france_link = $("", { + href: "https://openstreetmap.fr/", + target: "_blank", + text: I18n.t("javascripts.map.osm_france") + }).prop("outerHTML"); + var cyclosm = I18n.t("javascripts.map.cyclosm_credit", { cyclosm_link: cyclosm_link, osm_france_link: osm_france_link }); + + var thunderforest_link = $("", { + href: "https://www.thunderforest.com/", + target: "_blank", + text: I18n.t("javascripts.map.andy_allan") + }).prop("outerHTML"); + var thunderforest = I18n.t("javascripts.map.thunderforest_credit", { thunderforest_link: thunderforest_link }); + + var memomaps_link = $("", { + href: "https://memomaps.de/", + target: "_blank", + text: I18n.t("javascripts.map.memomaps") + }).prop("outerHTML"); + var memomaps = I18n.t("javascripts.map.opnvkarte_credit", { memomaps_link: memomaps_link }); + + var hotosm_link = $("", { + href: "https://www.hotosm.org/", + target: "_blank", + text: I18n.t("javascripts.map.hotosm_name") + }).prop("outerHTML"); + var hotosm = I18n.t("javascripts.map.hotosm_credit", { hotosm_link: hotosm_link, osm_france_link: osm_france_link }); this.baseLayers = []; diff --git a/config/locales/en.yml b/config/locales/en.yml index 68bd5b641..d64c11782 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2956,13 +2956,19 @@ en: gps: Public GPS Traces overlays: Enable overlays for troubleshooting the map title: "Layers" - copyright: "© OpenStreetMap contributors" - donate_link_text: "" - terms: "Website and API terms" - cyclosm: "Tiles style by CyclOSM hosted by OpenStreetMap France" - thunderforest: "Tiles courtesy of Andy Allan" - opnvkarte: "Tiles courtesy of MeMoMaps" - hotosm: "Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France" + copyright_text: "© %{copyright_link}" + openstreetmap_contributors: "OpenStreetMap contributors" + make_a_donation: Make a Donation + website_and_api_terms: Website and API terms + cyclosm_credit: "Tiles style by %{cyclosm_link} hosted by %{osm_france_link}" + cyclosm_name: CyclOSM + osm_france: OpenStreetMap France + thunderforest_credit: "Tiles courtesy of %{thunderforest_link}" + andy_allan: Andy Allan + opnvkarte_credit: "Tiles courtesy of %{memomaps_link}" + memomaps: MeMoMaps + hotosm_credit: "Tiles style by %{hotosm_link} hosted by %{osm_france_link}" + hotosm_name: Humanitarian OpenStreetMap Team site: edit_tooltip: Edit the map edit_disabled_tooltip: Zoom in to edit the map -- 2.39.5