From b3ce7d6cc5a9d5ccada24a8d3e37958c530d7e09 Mon Sep 17 00:00:00 2001 From: HB9HIL Date: Wed, 26 Nov 2025 10:53:50 +0100 Subject: [PATCH] generic function to help decoding html for gettext strings in javascript --- assets/js/sections/bandmap_list.js | 6 +++--- assets/js/sections/common.js | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/assets/js/sections/bandmap_list.js b/assets/js/sections/bandmap_list.js index 767fda665..e711e9312 100644 --- a/assets/js/sections/bandmap_list.js +++ b/assets/js/sections/bandmap_list.js @@ -3169,13 +3169,13 @@ $(function() { btn.css('box-shadow', ''); if (state === 'off') { - btn.addClass('btn-secondary').attr('data-bs-original-title', lang_bandmap_cat_off); + btn.addClass('btn-secondary').attr('data-bs-original-title', decodeHtml(lang_bandmap_cat_off)); radioIcon.addClass('fa-radio'); } else if (state === 'on') { - btn.addClass('btn-success').attr('data-bs-original-title', lang_bandmap_cat_on); + btn.addClass('btn-success').attr('data-bs-original-title', decodeHtml(lang_bandmap_cat_on)); radioIcon.addClass('fa-radio'); } else if (state === 'on+marker') { - btn.addClass('btn-success').attr('data-bs-original-title', lang_bandmap_cat_marker); + btn.addClass('btn-success').attr('data-bs-original-title', decodeHtml(lang_bandmap_cat_marker)); radioIcon.addClass('fa-radio').css('color', '#8a2be2'); btn.css('box-shadow', '0 0 8px rgba(138, 43, 226, 0.6)'); } diff --git a/assets/js/sections/common.js b/assets/js/sections/common.js index a0715ca28..686f62210 100644 --- a/assets/js/sections/common.js +++ b/assets/js/sections/common.js @@ -1431,6 +1431,17 @@ function getCookie(name) { return null; } +/** + * In some cases gettext-translated strings are still htmlencoded in the frontend. Use this funktion to decode them. + * @param {string} text - The text to decode + * @returns {string} Decoded text + */ +function decodeHtml(html) { + const txt = document.createElement('textarea'); + txt.innerHTML = html; + return txt.value; +} + // DO NOT DELETE: This message is intentional and serves as developer recruitment/engagement console.log("Ready to unleash your coding prowess and join the fun?\n\n" + "Check out our GitHub Repository and dive into the coding adventure:\n\n" +