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:
@@ -373,15 +373,15 @@
|
||||
<h1 class="hero-title">
|
||||
Commander<span class="ki">KI</span>n<span class="cursor-blink"></span>
|
||||
</h1>
|
||||
<p class="hero-sub">Level 1: <span class="ki-text">KI</span> Loading<span class="loading-dots"></span></p>
|
||||
<p class="hero-sub" data-de="Level 1: <span class="ki-text">KI</span> Loading" data-en="Level 1: <span class="ki-text">AI</span> Loading">Level 1: <span class="ki-text">KI</span> Loading<span class="loading-dots"></span></p>
|
||||
|
||||
<div class="boot-text" id="bootSequence">
|
||||
<span style="animation-delay:0.3s">C:\COMMANDERKIN> boot_sequence.exe</span><br>
|
||||
<span style="animation-delay:0.8s">Initializing neural_network.dll ........ OK</span><br>
|
||||
<span style="animation-delay:1.3s">Loading retro_vibes.dat ................ OK</span><br>
|
||||
<span style="animation-delay:1.8s">Calibrating pixel_cannon.sys ........... OK</span><br>
|
||||
<span style="animation-delay:2.3s">Mounting galaxy_drive D:\ .............. OK</span><br>
|
||||
<span style="animation-delay:2.8s" style="color:var(--green)">SYSTEM READY. PRESS START.</span>
|
||||
<span style="animation-delay:0.8s" data-de="Initializing neural_network.dll ........ OK" data-en="Initializing neural_network.dll ........ OK">Initializing neural_network.dll ........ OK</span><br>
|
||||
<span style="animation-delay:1.3s" data-de="Loading retro_vibes.dat ................ OK" data-en="Loading retro_vibes.dat ................ OK">Loading retro_vibes.dat ................ OK</span><br>
|
||||
<span style="animation-delay:1.8s" data-de="Calibrating pixel_cannon.sys ........... OK" data-en="Calibrating pixel_cannon.sys ........... OK">Calibrating pixel_cannon.sys ........... OK</span><br>
|
||||
<span style="animation-delay:2.3s" data-de="Mounting galaxy_drive D:\ .............. OK" data-en="Mounting galaxy_drive D:\ .............. OK">Mounting galaxy_drive D:\ .............. OK</span><br>
|
||||
<span style="animation-delay:2.8s" style="color:var(--green)" data-de="SYSTEM READY. PRESS START." data-en="SYSTEM READY. PRESS START.">SYSTEM READY. PRESS START.</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -389,7 +389,7 @@
|
||||
<!-- ===== CONCEPT ===== -->
|
||||
<div class="section-divider">- - - - - - - - - -</div>
|
||||
<section class="concept container reveal">
|
||||
<p class="concept-text">
|
||||
<p class="concept-text" data-de="Wie Commander Keen die Galaxie rettete, rettet <em>CommanderKIn</em> deine Daten.<br><br>Old-School Vibes. New-School <em>AI</em>." data-en="Like Commander Keen saved the galaxy, <em>CommanderKIn</em> saves your data.<br><br>Old-School Vibes. New-School <em>AI</em>.">
|
||||
Wie Commander Keen die Galaxie rettete, rettet <em>CommanderKIn</em> deine Daten.<br><br>
|
||||
Old-School Vibes. New-School <em>AI</em>.
|
||||
</p>
|
||||
@@ -401,15 +401,15 @@
|
||||
<div class="stats-grid">
|
||||
<div class="stat">
|
||||
<div class="stat-val">9001</div>
|
||||
<div class="stat-label">Bugs vernichtet</div>
|
||||
<div class="stat-label" data-de="Bugs vernichtet" data-en="Bugs destroyed">Bugs vernichtet</div>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<div class="stat-val">256</div>
|
||||
<div class="stat-label">Deploys überlebt</div>
|
||||
<div class="stat-label" data-de="Deploys überlebt" data-en="Deploys survived">Deploys überlebt</div>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<div class="stat-val">1UP</div>
|
||||
<div class="stat-label">Extra-Leben dank KI</div>
|
||||
<div class="stat-label" data-de="Extra-Leben dank KI" data-en="Extra life thanks to AI">Extra-Leben dank KI</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -417,13 +417,13 @@
|
||||
<!-- ===== LEVELS ===== -->
|
||||
<div class="section-divider">SELECT YOUR LEVEL</div>
|
||||
<section class="levels container">
|
||||
<h2 class="levels-title">// MISSION SELECT //</h2>
|
||||
<h2 class="levels-title" data-de="// MISSION SELECT //" data-en="// MISSION SELECT //">// MISSION SELECT //</h2>
|
||||
|
||||
<div class="level reveal">
|
||||
<div class="level-badge">LVL 1</div>
|
||||
<div>
|
||||
<div class="level-name">Data Rescue</div>
|
||||
<div class="level-desc">Verschollene Daten aus den Tiefen korrupter Datenbanken bergen. Kein Byte bleibt zurück.</div>
|
||||
<div class="level-desc" data-de="Verschollene Daten aus den Tiefen korrupter Datenbanken bergen. Kein Byte bleibt zurück." data-en="Recovering lost data from the depths of corrupt databases. No byte left behind.">Verschollene Daten aus den Tiefen korrupter Datenbanken bergen. Kein Byte bleibt zurück.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -431,7 +431,7 @@
|
||||
<div class="level-badge">LVL 2</div>
|
||||
<div>
|
||||
<div class="level-name">Code Crusade</div>
|
||||
<div class="level-desc">Legacy-Code durchforsten, Spaghetti entwirren. Der Kreuzzug gegen technische Schulden.</div>
|
||||
<div class="level-desc" data-de="Legacy-Code durchforsten, Spaghetti entwirren. Der Kreuzzug gegen technische Schulden." data-en="Scouring legacy code, untangling spaghetti. The crusade against technical debt.">Legacy-Code durchforsten, Spaghetti entwirren. Der Kreuzzug gegen technische Schulden.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -439,7 +439,7 @@
|
||||
<div class="level-badge">LVL 3</div>
|
||||
<div>
|
||||
<div class="level-name">Bug Blaster</div>
|
||||
<div class="level-desc">Bugs jagen im Pixel-Dschungel. Jeder Stacktrace ein Hinweis, jeder Fix ein Power-Up.</div>
|
||||
<div class="level-desc" data-de="Bugs jagen im Pixel-Dschungel. Jeder Stacktrace ein Hinweis, jeder Fix ein Power-Up." data-en="Bug hunting in the pixel jungle. Every stacktrace a clue, every fix a power-up.">Bugs jagen im Pixel-Dschungel. Jeder Stacktrace ein Hinweis, jeder Fix ein Power-Up.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -447,7 +447,7 @@
|
||||
<div class="level-badge">LVL 4</div>
|
||||
<div>
|
||||
<div class="level-name">Deploy Dynasty</div>
|
||||
<div class="level-desc">CI/CD-Pipelines bauen, Container orchestrieren. Von der Garage ins Rechenzentrum.</div>
|
||||
<div class="level-desc" data-de="CI/CD-Pipelines bauen, Container orchestrieren. Von der Garage ins Rechenzentrum." data-en="Building CI/CD pipelines, orchestrating containers. From the garage to the data center.">CI/CD-Pipelines bauen, Container orchestrieren. Von der Garage ins Rechenzentrum.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -455,7 +455,7 @@
|
||||
<div class="level-badge">BOSS</div>
|
||||
<div>
|
||||
<div class="level-name">Production</div>
|
||||
<div class="level-desc">Der finale Boss. Freitag, 17:00 Uhr. "Können wir das noch schnell deployen?" — Nein. Doch. Ohhh!</div>
|
||||
<div class="level-desc" data-de="Der finale Boss. Freitag, 17:00 Uhr. "Können wir das noch schnell deployen?" — Nein. Doch. Ohhh!" data-en="The final boss. Friday, 5pm. "Can we quickly deploy that?" — No. Yes. Ohhh!">Der finale Boss. Freitag, 17:00 Uhr. "Können wir das noch schnell deployen?" — Nein. Doch. Ohhh!</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -472,15 +472,19 @@
|
||||
|
||||
<!-- ===== CTA ===== -->
|
||||
<section class="cta container reveal">
|
||||
<p class="cta-label">~ PLAYER 1 READY ~</p>
|
||||
<a href="mailto:commanderkin@msbls.de" class="btn-start">Press START</a>
|
||||
<p class="cta-label" data-de="~ PLAYER 1 READY ~" data-en="~ PLAYER 1 READY ~">~ PLAYER 1 READY ~</p>
|
||||
<a href="mailto:commanderkin@msbls.de" class="btn-start" data-de="Press START" data-en="Press START">Press START</a>
|
||||
</section>
|
||||
|
||||
<!-- ===== FOOTER ===== -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="insert-coin">INSERT COIN TO CONTINUE</p>
|
||||
<p class="footer-sub">© 2026 CommanderKIn — Powered by Pixel & KI</p>
|
||||
<p class="insert-coin" data-de="INSERT COIN TO CONTINUE" data-en="INSERT COIN TO CONTINUE">INSERT COIN TO CONTINUE</p>
|
||||
<p class="footer-sub" data-de="© 2026 CommanderKIn — Powered by Pixel & KI" data-en="© 2026 CommanderKIn — Powered by Pixel & AI">© 2026 CommanderKIn — Powered by Pixel & KI</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 #333;color:#333;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:#333;font-size:0.6rem;opacity:0.5;">Maschinell übersetzt</small>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@@ -510,5 +514,6 @@ document.addEventListener('keydown', (e) => {
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="/shared/i18n.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user