Index: src/assets/js/mod/lib.js
===================================================================
--- src/assets/js/mod/lib.js	(revision 54ee51c15ca8fabdc52a492b077cbd642c57fc87)
+++ src/assets/js/mod/lib.js	(revision fb9a8adb168b27c6c9889fd210cf584eaabbc3a2)
@@ -33,2 +33,16 @@
   return (d && Object.prototype.hasOwnProperty.call(d, key)) ? d[key] : fallback;
 }
+
+/**
+ * Een tekst veilig in HTML zetten.
+ *
+ * De modules bouwen op sommige plekken HTML met stringplakwerk. Vroeger ging een
+ * vertaling daar door de escapende EJS-tag heen; nu niet meer. Zonder deze functie
+ * breekt een apostrof in een vertaling het attribuut af waar hij in staat -- het
+ * soort fout dat pas in een andere taal opvalt.
+ */
+export function esc(s) {
+  return String(s == null ? '' : s).replace(/[&<>"']/g, function (c) {
+    return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c];
+  });
+}
