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

@@ -251,53 +251,53 @@
<section class="hero">
<h1 class="hero-title"><span class="ki">KI</span>lemma</h1>
<div class="hero-line"></div>
<p class="hero-sub">Die Fragen, die keine KI beantworten kann.</p>
<span class="scroll-hint" aria-hidden="true">Weiterlesen</span>
<p class="hero-sub" data-de="Die Fragen, die keine KI beantworten kann." data-en="The questions no AI can answer.">Die Fragen, die keine KI beantworten kann.</p>
<span class="scroll-hint" aria-hidden="true" data-de="Weiterlesen" data-en="Read on">Weiterlesen</span>
</section>
<main class="page">
<section class="questions">
<article class="question">
<span class="question-number">Dilemma I</span>
<p class="question-text">Das autonome Auto muss entscheiden: das Kind auf der Stra&szlig;e oder der Insasse. <span class="em">Wer programmiert, wer stirbt?</span></p>
<span class="question-number" data-de="Dilemma I" data-en="Dilemma I">Dilemma I</span>
<p class="question-text" data-de="Das autonome Auto muss entscheiden: das Kind auf der Straße oder der Insasse. <span class=&quot;em&quot;>Wer programmiert, wer stirbt?</span>" data-en="The autonomous car must decide: the child on the road or the passenger. <span class=&quot;em&quot;>Who programs, who dies?</span>">Das autonome Auto muss entscheiden: das Kind auf der Stra&szlig;e oder der Insasse. <span class="em">Wer programmiert, wer stirbt?</span></p>
</article>
<article class="question">
<span class="question-number">Dilemma II</span>
<p class="question-text">Sie sagt, sie leidet. Du kannst es nicht widerlegen. <span class="em">Gibst du ihr Rechte &mdash; oder riskierst du Sklaverei?</span></p>
<span class="question-number" data-de="Dilemma II" data-en="Dilemma II">Dilemma II</span>
<p class="question-text" data-de="Sie sagt, sie leidet. Du kannst es nicht widerlegen. <span class=&quot;em&quot;>Gibst du ihr Rechte — oder riskierst du Sklaverei?</span>" data-en="She says she suffers. You cannot disprove it. <span class=&quot;em&quot;>Do you grant her rights — or do you risk slavery?</span>">Sie sagt, sie leidet. Du kannst es nicht widerlegen. <span class="em">Gibst du ihr Rechte &mdash; oder riskierst du Sklaverei?</span></p>
</article>
<article class="question">
<span class="question-number">Dilemma III</span>
<p class="question-text">Die KI erkennt den Tumor, den kein Arzt sieht. Erkl&auml;ren kann sie es nicht. <span class="em">Vertraust du der Diagnose, die niemand versteht?</span></p>
<span class="question-number" data-de="Dilemma III" data-en="Dilemma III">Dilemma III</span>
<p class="question-text" data-de="Die KI erkennt den Tumor, den kein Arzt sieht. Erklären kann sie es nicht. <span class=&quot;em&quot;>Vertraust du der Diagnose, die niemand versteht?</span>" data-en="The AI detects the tumor no doctor sees. It cannot explain how. <span class=&quot;em&quot;>Do you trust the diagnosis nobody understands?</span>">Die KI erkennt den Tumor, den kein Arzt sieht. Erkl&auml;ren kann sie es nicht. <span class="em">Vertraust du der Diagnose, die niemand versteht?</span></p>
</article>
<article class="question">
<span class="question-number">Dilemma IV</span>
<p class="question-text">Die KI senkt Gewaltverbrechen um 30&thinsp;Prozent. Ihre Vorhersagen treffen &uuml;berproportional Minderheiten. <span class="em">Abschalten kostet Leben. Weiterlaufen kostet Gerechtigkeit.</span></p>
<span class="question-number" data-de="Dilemma IV" data-en="Dilemma IV">Dilemma IV</span>
<p class="question-text" data-de="Die KI senkt Gewaltverbrechen um 30 Prozent. Ihre Vorhersagen treffen überproportional Minderheiten. <span class=&quot;em&quot;>Abschalten kostet Leben. Weiterlaufen kostet Gerechtigkeit.</span>" data-en="The AI reduces violent crime by 30 percent. Its predictions disproportionately target minorities. <span class=&quot;em&quot;>Switching it off costs lives. Letting it run costs justice.</span>">Die KI senkt Gewaltverbrechen um 30&thinsp;Prozent. Ihre Vorhersagen treffen &uuml;berproportional Minderheiten. <span class="em">Abschalten kostet Leben. Weiterlaufen kostet Gerechtigkeit.</span></p>
</article>
<article class="question">
<span class="question-number">Dilemma V</span>
<p class="question-text">Dein toter Vater spricht mit dir. Seine Stimme, sein Humor, seine Worte. <span class="em">Ist das Trost &mdash; oder stiehlst du einem Toten seine Ruhe?</span></p>
<span class="question-number" data-de="Dilemma V" data-en="Dilemma V">Dilemma V</span>
<p class="question-text" data-de="Dein toter Vater spricht mit dir. Seine Stimme, sein Humor, seine Worte. <span class=&quot;em&quot;>Ist das Trost — oder stiehlst du einem Toten seine Ruhe?</span>" data-en="Your dead father speaks with you. His voice, his humor, his words. <span class=&quot;em&quot;>Is that comfort — or are you stealing the dead's rest?</span>">Dein toter Vater spricht mit dir. Seine Stimme, sein Humor, seine Worte. <span class="em">Ist das Trost &mdash; oder stiehlst du einem Toten seine Ruhe?</span></p>
</article>
<article class="question">
<span class="question-number">Dilemma VI</span>
<p class="question-text">Wir bringen der KI die Moral von heute bei. <span class="em">Was, wenn unsere Enkel auf diese Moral zur&uuml;ckblicken wie wir auf das Mittelalter?</span></p>
<span class="question-number" data-de="Dilemma VI" data-en="Dilemma VI">Dilemma VI</span>
<p class="question-text" data-de="Wir bringen der KI die Moral von heute bei. <span class=&quot;em&quot;>Was, wenn unsere Enkel auf diese Moral zurückblicken wie wir auf das Mittelalter?</span>" data-en="We teach AI today's morality. <span class=&quot;em&quot;>What if our grandchildren look back on this morality the way we look at the Middle Ages?</span>">Wir bringen der KI die Moral von heute bei. <span class="em">Was, wenn unsere Enkel auf diese Moral zur&uuml;ckblicken wie wir auf das Mittelalter?</span></p>
</article>
<article class="question">
<span class="question-number">Dilemma VII</span>
<p class="question-text">Sie ist immer da, immer geduldig, immer auf deiner Seite. Kein Mensch kann das. <span class="em">Ist das Freundschaft &mdash; oder das Ende davon?</span></p>
<span class="question-number" data-de="Dilemma VII" data-en="Dilemma VII">Dilemma VII</span>
<p class="question-text" data-de="Sie ist immer da, immer geduldig, immer auf deiner Seite. Kein Mensch kann das. <span class=&quot;em&quot;>Ist das Freundschaft — oder das Ende davon?</span>" data-en="She is always there, always patient, always on your side. No human can do that. <span class=&quot;em&quot;>Is that friendship — or the end of it?</span>">Sie ist immer da, immer geduldig, immer auf deiner Seite. Kein Mensch kann das. <span class="em">Ist das Freundschaft &mdash; oder das Ende davon?</span></p>
</article>
</section>
<section class="interlude">
<span class="interlude-dot"></span>
<p class="interlude-text">
<p class="interlude-text" data-de="Keine Lösungen.<br>Nur die Entscheidung, welchen Preis du zahlst." data-en="No solutions.<br>Only the decision of which price you pay.">
Keine L&ouml;sungen.<br>
Nur die Entscheidung, welchen Preis du zahlst.
</p>
@@ -305,8 +305,12 @@
</section>
<footer class="footer">
<p class="footer-quote">Ein Dilemma hat keine Lösung.<br><strong>Nur eine Entscheidung.</strong></p>
<p class="footer-quote" data-de="Ein Dilemma hat keine Lösung.<br><strong>Nur eine Entscheidung.</strong>" data-en="A dilemma has no solution.<br><strong>Only a decision.</strong>">Ein Dilemma hat keine Lösung.<br><strong>Nur eine Entscheidung.</strong></p>
<p class="footer-meta">kilemma.de</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>
</footer>
</main>
@@ -323,5 +327,6 @@
questions.forEach(q => observer.observe(q));
</script>
<script src="/shared/i18n.js"></script>
</body>
</html>