Changeset 5e61b17 in Klonkt for src/views/pages/account.ejs


Ignore:
Timestamp:
06/21/2026 03:16:51 PM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
11b3ba5
Parents:
4885eab
Message:

feat(i18n): admin-configurable language — personal + default for visitors

  • users.lang column: personal interface language per account (follows across devices/sessions). Switcher (/lang/:code) and Account select both write it.
  • app_setting default_lang: admin picks the default language for visitors in Admin → Settings (overrides env/browser; empty = automatic).
  • resolveLang priority: session choice → users.lang → default_lang (DB) → env KLONKT_DEFAULT_LANG → browser → nl.
  • Account: language select; admin-settings: default language select. NL/EN/DE keys.

Co-Authored-By: Claude <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/account.ejs

    r4885eab r5e61b17  
    9090  </section>
    9191
     92  <%# ── PERSOONLIJKE TAAL ───────────────────────────────────── %>
     93  <% if (canMutate) { %>
     94  <section class="ax-card">
     95    <div class="ax-card-title"><%= t('acct.lang_label') %></div>
     96    <form action="/account/lang" method="post" class="ax-form">
     97      <label class="ax-field">
     98        <span><%= t('acct.lang_label') %> <small><%= t('acct.lang_hint') %></small></span>
     99        <select name="lang">
     100          <% langs.forEach(function(l){ var sel = (account && account.lang) ? (account.lang === l.code) : l.active; %>
     101            <option value="<%= l.code %>"<%= sel ? ' selected' : '' %>><%= l.name %></option>
     102          <% }); %>
     103        </select>
     104      </label>
     105      <div class="ax-form-actions">
     106        <button type="submit" class="ax-btn ax-btn-primary"><%= t('acct.save') %></button>
     107      </div>
     108    </form>
     109  </section>
     110  <% } %>
     111
    92112  <%# ── SITE (eigenaar mag de naam van z'n site aanpassen) ── %>
    93113  <% if (typeof editableSite !== 'undefined' && editableSite && canMutate) { %>
Note: See TracChangeset for help on using the changeset viewer.