Changeset bbf9d1a in Klonkt for src/views/pages/admin-stats.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-stats.ejs

    r929d98d rbbf9d1a  
    11<div class="container stats-page">
    22  <p><a href="/admin" class="btn">&larr; Beheer</a></p>
    3   <h1>Statistieken</h1>
    4   <p class="stats-note">Cookievrij gemeten — geen tracking-cookies, geen toestemmingsbanner.
    5     Bezoekers worden per dag geteld via een dagelijks roterende, anonieme hash (IP/browser worden
    6     niet bewaard). Je eigen beheerder-bezoeken en bekende bots/crawlers tellen niet mee.</p>
     3  <h1><%= t('astat.title') %></h1>
     4  <p class="stats-note"><%= t('astat.intro') %></p>
    75
    86  <% var s = stats; var _max = Math.max(1, ...s.series.map(function(d){ return d.pageviews; })); %>
    97
    108  <div class="stats-cards">
    11     <div class="stat-card"><div class="stat-num"><%= s.totals.visitors %></div><div class="stat-label">Bezoeker-dagen (<%= s.days %>d)</div></div>
    12     <div class="stat-card"><div class="stat-num"><%= s.totals.pageviews %></div><div class="stat-label">Weergaven (<%= s.days %>d)</div></div>
    13     <div class="stat-card"><div class="stat-num"><%= s.totals.plays %></div><div class="stat-label">Plays (totaal)</div></div>
    14     <div class="stat-card"><div class="stat-num"><%= s.totals.postViews %></div><div class="stat-label">Post-weergaven (totaal)</div></div>
     9    <div class="stat-card"><div class="stat-num"><%= s.totals.visitors %></div><div class="stat-label"><%= t('astat.visitor_days', { n: s.days }) %></div></div>
     10    <div class="stat-card"><div class="stat-num"><%= s.totals.pageviews %></div><div class="stat-label"><%= t('astat.pageviews_days', { n: s.days }) %></div></div>
     11    <div class="stat-card"><div class="stat-num"><%= s.totals.plays %></div><div class="stat-label"><%= t('astat.plays_total') %></div></div>
     12    <div class="stat-card"><div class="stat-num"><%= s.totals.postViews %></div><div class="stat-label"><%= t('astat.postviews_total') %></div></div>
    1513  </div>
    1614
    1715  <% if (typeof s.allTime !== 'undefined') { %>
    18     <p class="stats-note">All-time: <strong><%= s.allTime.pageviews %></strong> weergaven · <strong><%= s.allTime.visitorDays %></strong> bezoeker-dagen.</p>
     16    <p class="stats-note"><%= t('astat.alltime_pre') %> <strong><%= s.allTime.pageviews %></strong> <%= t('astat.alltime_mid') %> · <strong><%= s.allTime.visitorDays %></strong> <%= t('astat.alltime_post') %></p>
    1917  <% } %>
    2018
    2119  <details class="stats-help">
    22     <summary>Wat betekenen deze cijfers?</summary>
     20    <summary><%= t('astat.help_summary') %></summary>
    2321    <ul>
    24       <li><strong>Bezoeker-dagen</strong> — het aantal unieke bezoekers <em>per dag, bij elkaar opgeteld</em>. Eén persoon die 5 dagen langskomt = 5 bezoeker-dagen. Cookieloos kan er niet over dagen heen geteld worden, dus dit is géén aantal unieke personen — het echte aantal mensen ligt (vaak fors) lager.</li>
    25       <li><strong>Weergaven</strong> — hoe vaak de home/feed of een post geladen is (ook bij klikken binnen de site). Andere pagina's (agenda, downloads, links) tellen hier niet in mee.</li>
    26       <li><strong>Plays</strong> — totaal aantal keren dat een track is gestart.</li>
    27       <li><strong>Post-weergaven</strong> — totaal over alle posts samen.</li>
     22      <li><strong><%= t('astat.help_vd_term') %></strong> — <%= t('astat.help_vd_a') %> <em><%= t('astat.help_vd_em') %></em><%= t('astat.help_vd_b') %></li>
     23      <li><strong><%= t('astat.help_pv_term') %></strong> — <%= t('astat.help_pv') %></li>
     24      <li><strong><%= t('astat.help_plays_term') %></strong> — <%= t('astat.help_plays') %></li>
     25      <li><strong><%= t('astat.help_postviews_term') %></strong> — <%= t('astat.help_postviews') %></li>
    2826    </ul>
    29     <p>Beheerder-bezoeken en bekende bots/crawlers worden overgeslagen. Het ruwe IP wordt nooit bewaard. Goed voor trends; neem absolute aantallen met een korrel zout.</p>
     27    <p><%= t('astat.help_footer') %></p>
    3028  </details>
    3129
    3230  <div class="stats-period">
    33     Periode:
     31    <%= t('astat.period') %>
    3432    <% [7,14,30,90].forEach(function(n){ %>
    3533      <a href="/admin/stats?days=<%= n %>" class="<%= s.days === n ? 'is-on' : '' %>"><%= n %>d</a>
     
    3937  <section class="stats-chart-wrap">
    4038    <div class="stats-chart-head">
    41       <h2>Laatste <%= s.days %> dagen</h2>
     39      <h2><%= t('astat.last_n_days', { n: s.days }) %></h2>
    4240      <div class="stats-legend">
    43         <span class="lg lg-vis">Bezoeker-dagen</span>
    44         <span class="lg lg-pv">Weergaven</span>
     41        <span class="lg lg-vis"><%= t('astat.lg_visitor_days') %></span>
     42        <span class="lg lg-pv"><%= t('astat.lg_pageviews') %></span>
    4543      </div>
    4644    </div>
     
    5149           var visPct = Math.round(d.visitors / _max * 100);
    5250      %>
    53         <div class="sc-col" title="<%= d.day %> — <%= d.pageviews %> weergaven, <%= d.visitors %> bezoeker-dagen">
     51        <div class="sc-col" title="<%= t('astat.bar_title', { day: d.day, pv: d.pageviews, vd: d.visitors }) %>">
    5452          <div class="sc-bar">
    5553            <span class="sc-pv" style="height: <%= pvPct %>%"></span>
     
    6462  <div class="stats-tops">
    6563    <section class="stats-top">
    66       <h2>Populairste posts</h2>
     64      <h2><%= t('astat.top_posts') %></h2>
    6765      <% if (!s.topPosts.length || s.topPosts[0].views === 0) { %>
    68         <p class="stats-empty">Nog geen weergaven.</p>
     66        <p class="stats-empty"><%= t('astat.no_views') %></p>
    6967      <% } else { %>
    7068        <ol>
     
    7674    </section>
    7775    <section class="stats-top">
    78       <h2>Meest geluisterd</h2>
     76      <h2><%= t('astat.most_played') %></h2>
    7977      <% if (!s.topTracks.length || s.topTracks[0].plays === 0) { %>
    80         <p class="stats-empty">Nog geen plays.</p>
     78        <p class="stats-empty"><%= t('astat.no_plays') %></p>
    8179      <% } else { %>
    8280        <ol>
     
    9189  <% if (typeof s.referrers !== 'undefined' && s.referrers.length) { %>
    9290    <section class="stats-top" style="margin-top:1.2rem">
    93       <h2>🌐 Bronnen (waar bezoekers vandaan komen)</h2>
     91      <h2>🌐 <%= t('astat.sources') %></h2>
    9492      <ol>
    9593        <% s.referrers.forEach(function(r){ %>
     
    102100  <% if (typeof linkClicks !== 'undefined' && linkClicks.length) { %>
    103101    <section class="stats-top" style="margin-top:1.2rem">
    104       <h2>🔗 Link-in-bio klikken</h2>
     102      <h2>🔗 <%= t('astat.linkbio_clicks') %></h2>
    105103      <ol>
    106104        <% linkClicks.forEach(function(l){ %>
Note: See TracChangeset for help on using the changeset viewer.