feat: i18n annotations — data-de/data-en + toggle for all 54 custom sites

Phase 2 of i18n rollout:
- All 54 static custom sites now have data-de/data-en attributes on
  visible text elements with English translations
- i18n.js script tag injected into all sites
- Language toggle button with machine-translation disclaimer added
  to every site's footer area
- Brand names / domain wordplay preserved unchanged in both languages
- 2 dynamic sites (dasbes.de, dumusst.com) skipped — no static HTML
This commit is contained in:
m
2026-04-01 13:19:40 +02:00
parent 846fc04444
commit 5c92a7b021
53 changed files with 1850 additions and 1475 deletions

View File

@@ -216,7 +216,7 @@
<section class="numbers">
<div class="wrap">
<p class="reveal">
<p class="reveal" data-de="&lt;span class=&quot;num&quot;&gt;2.400&lt;/span&gt; Stunden pro Jahr.&lt;br&gt; &lt;span class=&quot;num&quot;&gt;6,5&lt;/span&gt; Stunden pro Tag, die du &amp;bdquo;verkaufst&amp;ldquo;.&lt;br&gt; Jede Minute dokumentiert.&lt;br&gt; Jede Pause ein Verlust." data-en="&lt;span class=&quot;num&quot;&gt;2,400&lt;/span&gt; hours per year.&lt;br&gt; &lt;span class=&quot;num&quot;&gt;6.5&lt;/span&gt; hours per day you &amp;ldquo;sell&amp;rdquo;.&lt;br&gt; Every minute documented.&lt;br&gt; Every break a loss.">
<span class="num">2.400</span> Stunden pro Jahr.<br>
<span class="num">6,5</span> Stunden pro Tag, die du &bdquo;verkaufst&ldquo;.<br>
Jede Minute dokumentiert.<br>
@@ -231,23 +231,23 @@
<div class="wrap">
<div class="kritik-item reveal">
<p>Du wirst nach Zeit bezahlt, <span class="dim">nicht nach Ergebnis.</span></p>
<p data-de="Du wirst nach Zeit bezahlt, &lt;span class=&quot;dim&quot;&gt;nicht nach Ergebnis.&lt;/span&gt;" data-en="You are paid for time, &lt;span class=&quot;dim&quot;&gt;not for results.&lt;/span&gt;">Du wirst nach Zeit bezahlt, <span class="dim">nicht nach Ergebnis.</span></p>
</div>
<div class="kritik-item reveal">
<p>Effizienz wird bestraft. <span class="dim">Wer schneller arbeitet, verdient weniger.</span></p>
<p data-de="Effizienz wird bestraft. &lt;span class=&quot;dim&quot;&gt;Wer schneller arbeitet, verdient weniger.&lt;/span&gt;" data-en="Efficiency is punished. &lt;span class=&quot;dim&quot;&gt;Whoever works faster earns less.&lt;/span&gt;">Effizienz wird bestraft. <span class="dim">Wer schneller arbeitet, verdient weniger.</span></p>
</div>
<div class="kritik-item reveal">
<p>Der Mandant zahlt <span class="dim">für deine Lernkurve.</span></p>
<p data-de="Der Mandant zahlt &lt;span class=&quot;dim&quot;&gt;für deine Lernkurve.&lt;/span&gt;" data-en="The client pays &lt;span class=&quot;dim&quot;&gt;for your learning curve.&lt;/span&gt;">Der Mandant zahlt <span class="dim">für deine Lernkurve.</span></p>
</div>
<div class="kritik-item reveal">
<p><span class="num">8</span> Stunden Arbeit = <span class="num">6,5</span> billable. <span class="dim">Die restlichen 1,5? Dein Problem.</span></p>
<p data-de="&lt;span class=&quot;num&quot;&gt;8&lt;/span&gt; Stunden Arbeit = &lt;span class=&quot;num&quot;&gt;6,5&lt;/span&gt; billable. &lt;span class=&quot;dim&quot;&gt;Die restlichen 1,5? Dein Problem.&lt;/span&gt;" data-en="&lt;span class=&quot;num&quot;&gt;8&lt;/span&gt; hours work = &lt;span class=&quot;num&quot;&gt;6.5&lt;/span&gt; billable. &lt;span class=&quot;dim&quot;&gt;The remaining 1.5? Your problem.&lt;/span&gt;"><span class="num">8</span> Stunden Arbeit = <span class="num">6,5</span> billable. <span class="dim">Die restlichen 1,5? Dein Problem.</span></p>
</div>
<div class="kritik-item reveal">
<p>Partnertrack heißt: <span class="dim"><span class="num">10</span> Jahre beweisen, dass du leidensfähig bist.</span></p>
<p data-de="Partnertrack heißt: &lt;span class=&quot;dim&quot;&gt;&lt;span class=&quot;num&quot;&gt;10&lt;/span&gt; Jahre beweisen, dass du leidensfähig bist.&lt;/span&gt;" data-en="Partner track means: &lt;span class=&quot;dim&quot;&gt;&lt;span class=&quot;num&quot;&gt;10&lt;/span&gt; years proving you can endure.&lt;/span&gt;">Partnertrack heißt: <span class="dim"><span class="num">10</span> Jahre beweisen, dass du leidensfähig bist.</span></p>
</div>
</div>
@@ -257,13 +257,17 @@
<section class="silence">
<div class="wrap">
<p class="reveal">Kein Kontakt. Kein Newsletter. Kein Impressum.</p>
<p class="reveal" data-de="Kein Kontakt. Kein Newsletter. Kein Impressum." data-en="No contact. No newsletter. No imprint.">Kein Kontakt. Kein Newsletter. Kein Impressum.</p>
</div>
</section>
<footer>
<div class="wrap">
<p>billableaua.de &mdash; 2026</p>
<div style="text-align:center;margin-top:16px;">
<button data-i18n-toggle title="Maschinell übersetzt / Machine-translated — German is the original." style="background:none;border:1px solid var(--text-muted,#444);color:var(--text-muted,#444);font-size:0.65rem;letter-spacing:0.1em;padding:4px 12px;border-radius:4px;cursor:pointer;">EN</button>
<br><small data-de="Maschinell übersetzt" data-en="Machine-translated" style="color:var(--text-muted,#444);font-size:0.6rem;opacity:0.5;">Maschinell übersetzt</small>
</div>
</div>
</footer>
@@ -279,5 +283,6 @@
document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
</script>
<script src="/shared/i18n.js"></script>
</body>
</html>