Index: src/middleware/render.js
===================================================================
--- src/middleware/render.js	(revision 68b27a4b33dc8f60a508ec37fb3f43a747195eec)
+++ src/middleware/render.js	(revision 66cfbaaea019cc496240b846411f4f3f92aced8a)
@@ -20,4 +20,5 @@
 import { isPremium as isPremiumInstance, premiumEnabled, premiumUnlocked } from '../services/PatreonService.js';
 import { PLATFORMS as PLATFORMS_CATALOG } from '../services/PlatformIcons.js';
+import { t as i18nT, resolveLang, SUPPORTED as LANGS, LANG_NAMES } from '../services/i18n.js';
 
 const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -77,7 +78,13 @@
   const canSeeBeheer = !!(_u && (_role === 'god' || _role === 'admin' || _role === 'kijker' || userOwnsSite));
 
+  // Interface-taal (bezoeker-instelbaar): sessie-keuze → browser-taal → nl.
+  const _lang = resolveLang(req);
+
   // Common locals
   const locals = {
     user: _u,
+    lang: _lang,
+    t: (key, vars) => i18nT(_lang, key, vars),
+    langs: LANGS.map((c) => ({ code: c, name: LANG_NAMES[c], active: c === _lang })),
     userOwnsSite,
     canSeeBeheer,
