mAi: #6 - Revive knuth: i18n + AI/KI-Disclosure auf alle Sites

Merge mai/knuth/ai-ki-disclosure-footer (3 commits vom 2026-04-01) nach diesem
Branch. Bringt:
- i18n-Annotations (data-de/data-en) + Footer-Toggle auf 54 Custom-Sites
- shared/ai-disclosure.js (3 Tones: playful/serious/minimal, KI/AI nach lang)
- Template-Infrastruktur in render.sh + base.html (title_i18n, sections,
  ai-disclosure-Tag mit disclosure_tone)

Konflikt-Auflösung (Issue #6):
- shared/impressum.js: main behalten (theme-aware + msbls-alias aus #4)
- 10 Sites mit Marken-Setup aus #3 + #5: main's Brand-Konfiguration
  behalten, nur knuth's i18n-Annotations und ai-disclosure/i18n-Scripts
  übernommen.
  - heygoldi, lexsiebels, mai-otto: <script impressum.js data-owner=flexsiebels>
  - martinsiebels: <script impressum.js data-owner=martinsiebels>
  - 9 Satire (kilibri/kilitaer/killegal/killionaer/killions/killuminati/
    killusion/paragraphenraiter/patentonkel): KEIN impressum.js, dafür
    statischer onepager-msbls-link Footer.
- billableaua, smartin3, clemensplassmann: main's neuere Prosa/Struktur
  behalten (durch #1, #5, #7 nachträglich umgeschrieben). Knuth's i18n-
  Annotations dort verworfen, da auf altem Text. Toggle/Scripts kommen
  trotzdem rein (auto-merged), Re-Annotation später möglich.

QA: ./build.sh -> 59 sites OK. Smoke-Tests heygoldi/kilibri/ichbinotto:
korrekte Brand-Setup, ai-disclosure + i18n.js geladen, Footer-Toggle da.
This commit is contained in:
mAi
2026-04-27 20:17:24 +02:00
66 changed files with 2052 additions and 1466 deletions

View File

@@ -447,8 +447,8 @@
</p>
<div class="cta-group">
<a href="#kontakt" class="btn btn-primary">Projekt anfragen</a>
<a href="#services" class="btn btn-ghost">Leistungen</a>
<a href="#kontakt" class="btn btn-primary" data-de="Projekt anfragen" data-en="Request project">Projekt anfragen</a>
<a href="#services" class="btn btn-ghost" data-de="Leistungen" data-en="Services">Leistungen</a>
</div>
</div>
</section>
@@ -467,8 +467,8 @@
<div class="services-grid">
<div class="service-card">
<div class="service-icon">🔩</div>
<h3>Prototypen</h3>
<p>Von der Idee zum Anfassen. Schnelle Iterationen, funktionale Tests, Design-Validierung.</p>
<h3 data-de="Prototypen" data-en="Prototypes">Prototypen</h3>
<p data-de="Von der Idee zum Anfassen. Schnelle Iterationen, funktionale Tests, Design-Validierung." data-en="From idea to touchable reality. Fast iterations, functional tests, design validation.">Von der Idee zum Anfassen. Schnelle Iterationen, funktionale Tests, Design-Validierung.</p>
</div>
<div class="service-card">
@@ -485,20 +485,20 @@
<div class="service-card">
<div class="service-icon">🎨</div>
<h3>Design-Objekte</h3>
<p>Architekturmodelle, Figuren, Kunst. Detailreich und in verschiedenen Materialien.</p>
<h3 data-de="Design-Objekte" data-en="Design objects">Design-Objekte</h3>
<p data-de="Architekturmodelle, Figuren, Kunst. Detailreich und in verschiedenen Materialien." data-en="Architectural models, figurines, art. Detailed and in various materials.">Architekturmodelle, Figuren, Kunst. Detailreich und in verschiedenen Materialien.</p>
</div>
<div class="service-card">
<div class="service-icon">🔧</div>
<h3>Ersatzteile</h3>
<p>Das Teil gibt's nicht mehr? Wir drucken es nach. Reverse Engineering inklusive.</p>
<h3 data-de="Ersatzteile" data-en="Spare parts">Ersatzteile</h3>
<p data-de="Das Teil gibt's nicht mehr? Wir drucken es nach. Reverse Engineering inklusive." data-en="Part no longer available? We print it. Reverse engineering included.">Das Teil gibt's nicht mehr? Wir drucken es nach. Reverse Engineering inklusive.</p>
</div>
<div class="service-card">
<div class="service-icon">💡</div>
<h3>Beratung</h3>
<p>Welches Material? Welches Verfahren? Wir helfen bei der Entscheidung — bevor gedruckt wird.</p>
<h3 data-de="Beratung" data-en="Consulting">Beratung</h3>
<p data-de="Welches Material? Welches Verfahren? Wir helfen bei der Entscheidung — bevor gedruckt wird." data-en="Which material? Which process? We help with the decision — before printing begins.">Welches Material? Welches Verfahren? Wir helfen bei der Entscheidung — bevor gedruckt wird.</p>
</div>
</div>
</div>
@@ -564,9 +564,9 @@
<section>
<div class="container">
<div class="section-label">Prozess</div>
<h2>In 4 Schritten zum Teil.</h2>
<div class="section-desc">
<div class="section-label" data-de="Prozess" data-en="Process">Prozess</div>
<h2 data-de="In 4 Schritten zum Teil." data-en="4 steps to your part.">In 4 Schritten zum Teil.</h2>
<div class="section-desc" data-de="Kein komplizierter Bestellprozess. Schick uns dein Modell oder deine Idee — wir kuemmern uns um den Rest." data-en="No complicated ordering process. Send us your model or your idea — we take care of the rest.">
Kein komplizierter Bestellprozess. Schick uns dein Modell oder deine Idee —
wir kümmern uns um den Rest.
</div>
@@ -574,13 +574,13 @@
<div class="process-steps">
<div class="process-step">
<div class="process-num">01</div>
<h3>Anfrage</h3>
<p>3D-Datei oder Skizze schicken. Wir beraten bei Material und Verfahren.</p>
<h3 data-de="Anfrage" data-en="Request">Anfrage</h3>
<p data-de="3D-Datei oder Skizze schicken. Wir beraten bei Material und Verfahren." data-en="Send a 3D file or sketch. We advise on material and process.">3D-Datei oder Skizze schicken. Wir beraten bei Material und Verfahren.</p>
</div>
<div class="process-step">
<div class="process-num">02</div>
<h3>Angebot</h3>
<p>Transparente Preise. Keine versteckten Kosten. Innerhalb von 24h.</p>
<h3 data-de="Angebot" data-en="Quote">Angebot</h3>
<p data-de="Transparente Preise. Keine versteckten Kosten. Innerhalb von 24h." data-en="Transparent prices. No hidden costs. Within 24 hours.">Transparente Preise. Keine versteckten Kosten. Innerhalb von 24h.</p>
</div>
<div class="process-step">
<div class="process-num">03</div>
@@ -589,8 +589,8 @@
</div>
<div class="process-step">
<div class="process-num">04</div>
<h3>Versand</h3>
<p>Sicher verpackt, schnell geliefert. Oder Abholung vor Ort.</p>
<h3 data-de="Versand" data-en="Shipping">Versand</h3>
<p data-de="Sicher verpackt, schnell geliefert. Oder Abholung vor Ort." data-en="Securely packed, delivered quickly. Or pick up on site.">Sicher verpackt, schnell geliefert. Oder Abholung vor Ort.</p>
</div>
</div>
</div>
@@ -610,7 +610,7 @@
<span class="material-tag">PLA</span>
<span class="material-tag">PETG</span>
<span class="material-tag">ABS</span>
<span class="material-tag">TPU (flexibel)</span>
<span class="material-tag" data-de="TPU (flexibel)" data-en="TPU (flexible)">TPU (flexibel)</span>
<span class="material-tag">Nylon</span>
<span class="material-tag">ASA (UV-beständig)</span>
<span class="material-tag">Carbon-Verbund</span>
@@ -623,9 +623,9 @@
<section id="kontakt" class="cta-section">
<div class="container">
<div class="section-label">Kontakt</div>
<h2>Idee? Her damit.</h2>
<div class="section-desc">
<div class="section-label" data-de="Kontakt" data-en="Contact">Kontakt</div>
<h2 data-de="Idee? Her damit." data-en="Got an idea? Let's hear it.">Idee? Her damit.</h2>
<div class="section-desc" data-de="Schick uns dein 3D-Modell, eine Skizze oder einfach eine Beschreibung. Wir melden uns innerhalb von 24 Stunden." data-en="Send us your 3D model, a sketch, or just a description. We'll get back to you within 24 hours.">
Schick uns dein 3D-Modell, eine Skizze oder einfach eine Beschreibung.
Wir melden uns innerhalb von 24 Stunden.
</div>