Changeset bbf9d1a in Klonkt for src/views/pages/admin-circle.ejs


Ignore:
Timestamp:
06/21/2026 02:32:39 PM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
4885eab
Parents:
929d98d
Message:

feat(i18n phase 5): all admin sub-pages translated (NL/EN/DE)

settings, site-edit, seo, google, audio, stats, playlists, users, sites,
comments, circle, shows, newsletter, updates, epk, help. ~520 new keys
per language. Loop-shadowing of t() resolved by fetching before the loop. 709
view-keys cross-checked against the dictionary (0 missing).

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/admin-circle.ejs

    r929d98d rbbf9d1a  
    11<div class="container admin-page">
    2   <h1>Cirkel</h1>
    3   <p><a href="/admin/settings" class="btn">&larr; Instellingen</a></p>
     2  <h1><%= t('acir.title') %></h1>
     3  <p><a href="/admin/settings" class="btn">&larr; <%= t('acir.back_settings') %></a></p>
    44
    55  <% if (success) { %><div class="alert alert-success"><%= success %></div><% } %>
     
    88  <% if (tenancy !== 'circle') { %>
    99    <section class="set-card">
    10       <p class="set-help">De modus staat niet op <strong>Cirkels</strong>. Zet 'm aan bij
    11         <a href="/admin/settings">Instellingen</a> om je cirkel-feed te tonen op <code>/cirkel</code>.
    12         Je kunt hieronder al wel bronnen klaarzetten.</p>
     10      <p class="set-help"><%= t('acir.mode_off_1') %> <strong><%= t('acir.circles') %></strong>. <%= t('acir.mode_off_2') %>
     11        <a href="/admin/settings"><%= t('acir.settings') %></a> <%= t('acir.mode_off_3') %> <code>/cirkel</code>.
     12        <%= t('acir.mode_off_4') %></p>
    1313    </section>
    1414  <% } %>
    1515
    1616  <section class="set-card" style="margin-top:1rem">
    17     <h2>Mijn zichtbaarheid</h2>
    18     <p class="set-help">Doe je mee aan cirkels? Dit maakt je <strong>al-publieke</strong> posts
    19       ophaalbaar voor andere Klonkt-sites via een ondertekende feed
    20       (<code>/.klonkt/outbox.json</code>). Het is een deelname-keuze, geen privacy-slot:
    21       je posts blijven sowieso openbaar op je site, ook als dit uit staat. Wil je iets
    22       afschermen, maak die post dan niet-publiek.</p>
     17    <h2><%= t('acir.visibility_title') %></h2>
     18    <p class="set-help"><%= t('acir.visibility_help_1') %> <strong><%= t('acir.all_public') %></strong> <%= t('acir.visibility_help_2') %>
     19      (<code>/.klonkt/outbox.json</code>). <%= t('acir.visibility_help_3') %></p>
    2320    <form method="post" action="/admin/circle/allow" class="set-form">
    2421      <label class="set-opt" style="align-items:center">
    2522        <input type="checkbox" name="allow_circle" value="on" <%= allowCircle ? 'checked' : '' %>>
    26         <span><strong>Toon mijn site in cirkels van anderen</strong></span>
     23        <span><strong><%= t('acir.show_in_circles') %></strong></span>
    2724      </label>
    28       <button type="submit" class="btn btn-primary">Opslaan</button>
     25      <button type="submit" class="btn btn-primary"><%= t('acir.save') %></button>
    2926    </form>
    3027  </section>
    3128
    3229  <section class="set-card" style="margin-top:1rem">
    33     <h2>Klonkt-site toevoegen</h2>
    34     <p class="set-help">Plak de basis-URL van een andere Klonkt-site. Asymmetrisch: jij toont
    35       hen, los van of zij jou tonen.</p>
     30    <h2><%= t('acir.add_title') %></h2>
     31    <p class="set-help"><%= t('acir.add_help') %></p>
    3632    <form method="post" action="/admin/circle/add" class="set-form">
    3733      <label class="set-field">
    38         <span>URL</span>
     34        <span><%= t('acir.url') %></span>
    3935        <input type="url" name="remote_url" placeholder="https://artiest.klonkt.com" required>
    4036      </label>
    4137      <label class="set-field">
    42         <span>Label <small style="font-weight:400">— optioneel</small></span>
    43         <input type="text" name="label" maxlength="80" placeholder="bijv. Joost Klein">
     38        <span><%= t('acir.label') %> <small style="font-weight:400">— <%= t('acir.optional') %></small></span>
     39        <input type="text" name="label" maxlength="80" placeholder="<%= t('acir.label_ph') %>">
    4440      </label>
    45       <button type="submit" class="btn btn-primary">Toevoegen</button>
     41      <button type="submit" class="btn btn-primary"><%= t('acir.add') %></button>
    4642    </form>
    4743  </section>
    4844
    4945  <section class="set-card" style="margin-top:1rem">
    50     <h2>In mijn cirkel (<%= links.length %>)</h2>
     46    <h2><%= t('acir.in_circle', { n: links.length }) %></h2>
    5147    <% if (!links.length) { %>
    52       <p class="set-help">Nog geen bronnen. Voeg er hierboven een toe.</p>
     48      <p class="set-help"><%= t('acir.no_sources') %></p>
    5349    <% } else { %>
    5450      <form method="post" action="/admin/circle/sync-all" style="margin:0 0 .9rem">
    55         <button type="submit" class="btn">&#8635; Alles nu synchroniseren</button>
     51        <button type="submit" class="btn">&#8635; <%= t('acir.sync_all') %></button>
    5652      </form>
     53      <%
     54        var _cActive = t('acir.st_active');
     55        var _cPosts = t('acir.posts');
     56        var _cLast = t('acir.last');
     57        var _cMismatch = t('acir.st_mismatch');
     58        var _cMismatchReason = t('acir.mismatch_reason');
     59        var _cError = t('acir.st_error');
     60        var _cPaused = t('acir.st_paused');
     61        var _cRefresh = t('acir.refresh');
     62        var _cRemove = t('acir.remove');
     63        var _cRemoveConfirm = t('acir.remove_confirm');
     64      %>
    5765      <ul class="circ-list">
    5866        <% links.forEach(function(l){ %>
     
    6371              <div class="circ-status">
    6472                <% if (l.status === 'active') { %>
    65                   <span class="circ-badge ok">&#10003; actief</span>
    66                   <span class="circ-meta"><%= counts[l.id] || 0 %> posts<% if (l.last_synced) { %> &middot; laatst: <%= l.last_synced %><% } %></span>
     73                  <span class="circ-badge ok">&#10003; <%= _cActive %></span>
     74                  <span class="circ-meta"><%= counts[l.id] || 0 %> <%= _cPosts %><% if (l.last_synced) { %> &middot; <%= _cLast %>: <%= l.last_synced %><% } %></span>
    6775                <% } else if (l.status === 'outdated') { %>
    68                   <span class="circ-badge err">&#8635; versie-mismatch</span>
    69                   <div class="circ-reason"><%= l.last_error || 'Deze site draait een andere Klonkt-protocolversie — bijwerken nodig om te federeren.' %></div>
     76                  <span class="circ-badge err">&#8635; <%= _cMismatch %></span>
     77                  <div class="circ-reason"><%= l.last_error || _cMismatchReason %></div>
    7078                <% } else if (l.status === 'error') { %>
    71                   <span class="circ-badge err">&#9888; fout</span>
     79                  <span class="circ-badge err">&#9888; <%= _cError %></span>
    7280                  <% if (l.last_error) { %><div class="circ-reason"><%= l.last_error %></div><% } %>
    7381                <% } else if (l.status === 'paused') { %>
    74                   <span class="circ-badge">&#9208; gepauzeerd</span>
     82                  <span class="circ-badge">&#9208; <%= _cPaused %></span>
    7583                <% } else { %>
    7684                  <%# Onbekende status: toon 'm rauw + eventuele reden i.p.v. stil "gepauzeerd". %>
     
    8290            <div class="circ-actions">
    8391              <form method="post" action="/admin/circle/<%= l.id %>/sync" style="display:inline">
    84                 <button type="submit" class="btn">Verversen</button>
     92                <button type="submit" class="btn"><%= _cRefresh %></button>
    8593              </form>
    8694              <form method="post" action="/admin/circle/<%= l.id %>/remove" style="display:inline"
    87                     onsubmit="return confirm('Verwijderen uit je cirkel?')">
    88                 <button type="submit" class="btn btn-danger">Verwijder</button>
     95                    onsubmit="return confirm('<%= _cRemoveConfirm %>')">
     96                <button type="submit" class="btn btn-danger"><%= _cRemove %></button>
    8997              </form>
    9098            </div>
Note: See TracChangeset for help on using the changeset viewer.