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:
@@ -439,28 +439,28 @@
|
||||
|
||||
<section class="hero">
|
||||
<div class="hero-content">
|
||||
<div class="gamertag">// player profile</div>
|
||||
<div class="gamertag" data-de="// Spielerprofil" data-en="// player profile">// player profile</div>
|
||||
<h1>JULIETENSITY</h1>
|
||||
<div class="subtitle">Beyond All Reason</div>
|
||||
<div class="subtitle" data-de="Beyond All Reason" data-en="Beyond All Reason">Beyond All Reason</div>
|
||||
|
||||
<div class="stats-bar">
|
||||
<div class="stat">
|
||||
<div class="stat-value">BAR</div>
|
||||
<div class="stat-label">Main Game</div>
|
||||
<div class="stat-label" data-de="Hauptspiel" data-en="Main Game">Main Game</div>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<div class="stat-value">RTS</div>
|
||||
<div class="stat-label">Genre</div>
|
||||
<div class="stat-label" data-de="Genre" data-en="Genre">Genre</div>
|
||||
</div>
|
||||
<div class="stat">
|
||||
<div class="stat-value">DE</div>
|
||||
<div class="stat-label">Region</div>
|
||||
<div class="stat-label" data-de="Region" data-en="Region">Region</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="game-badge">
|
||||
<span class="dot"></span>
|
||||
Online
|
||||
<span data-de="Online" data-en="Online">Online</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -469,9 +469,9 @@
|
||||
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="section-label">// loadout</div>
|
||||
<h2>Play Style</h2>
|
||||
<div class="section-desc">
|
||||
<div class="section-label" data-de="// Ausrüstung" data-en="// loadout">// loadout</div>
|
||||
<h2 data-de="Spielstil" data-en="Play Style">Play Style</h2>
|
||||
<div class="section-desc" data-de="Beyond All Reason ist kein Spiel für Ungeduldige. Es belohnt die, die vorausdenken, sich schnell anpassen und nie aufhören sich zu bewegen." data-en="Beyond All Reason is not a game for the impatient. It rewards those who think ahead, adapt fast, and never stop moving.">
|
||||
Beyond All Reason is not a game for the impatient.
|
||||
It rewards those who think ahead, adapt fast, and never stop moving.
|
||||
</div>
|
||||
@@ -479,32 +479,32 @@
|
||||
<div class="card-grid">
|
||||
<div class="card">
|
||||
<div class="card-icon">⚡</div>
|
||||
<h3>Rush & Panic</h3>
|
||||
<p>Map control? Eher Map confusion. Erst expandieren, dann vergessen wo die eigene Base war. Klassiker.</p>
|
||||
<h3 data-de="Rush & Panic" data-en="Rush & Panic">Rush & Panic</h3>
|
||||
<p data-de="Map control? Eher Map confusion. Erst expandieren, dann vergessen wo die eigene Base war. Klassiker." data-en="Map control? More like map confusion. First expand, then forget where your own base was. Classic.">Map control? Eher Map confusion. Erst expandieren, dann vergessen wo die eigene Base war. Klassiker.</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-icon">🔧</div>
|
||||
<h3>"Eco Engine"</h3>
|
||||
<p>Metal und Energy sind alles. Leider ist beides meistens bei Null. Aber die Absicht zaehlt.</p>
|
||||
<h3 data-de=""Eco Engine"" data-en=""Eco Engine"">"Eco Engine"</h3>
|
||||
<p data-de="Metal und Energy sind alles. Leider ist beides meistens bei Null. Aber die Absicht zaehlt." data-en="Metal and energy are everything. Unfortunately both are usually at zero. But the intention counts.">Metal und Energy sind alles. Leider ist beides meistens bei Null. Aber die Absicht zaehlt.</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-icon">🎯</div>
|
||||
<h3>Micro... naja</h3>
|
||||
<p>Unit Control trennt gut von grossartig. Julietensity trennt Units voneinander. Versehentlich. Im eigenen Gebiet.</p>
|
||||
<h3 data-de="Micro... naja" data-en="Micro... well">Micro... naja</h3>
|
||||
<p data-de="Unit Control trennt gut von grossartig. Julietensity trennt Units voneinander. Versehentlich. Im eigenen Gebiet." data-en="Unit control separates good from great. Julietensity separates units from each other. Accidentally. In friendly territory.">Unit Control trennt gut von grossartig. Julietensity trennt Units voneinander. Versehentlich. Im eigenen Gebiet.</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-icon">💥</div>
|
||||
<h3>Commander Yolo</h3>
|
||||
<p>Warum den Commander schuetzen wenn man ihn auch direkt in die feindliche Armee laufen lassen kann? Intimidation-Taktik. Oder Unfall.</p>
|
||||
<h3 data-de="Commander Yolo" data-en="Commander Yolo">Commander Yolo</h3>
|
||||
<p data-de="Warum den Commander schuetzen wenn man ihn auch direkt in die feindliche Armee laufen lassen kann? Intimidation-Taktik. Oder Unfall." data-en="Why protect the commander when you can just walk him straight into the enemy army? Intimidation tactic. Or accident.">Warum den Commander schuetzen wenn man ihn auch direkt in die feindliche Armee laufen lassen kann? Intimidation-Taktik. Oder Unfall.</p>
|
||||
</div>
|
||||
|
||||
<div class="card" style="grid-column: 1 / -1; border-color: var(--pink); background: linear-gradient(135deg, var(--bg-card), rgba(255,45,120,0.03));">
|
||||
<div class="card-icon">🔫</div>
|
||||
<h3>D-Gun Status: ERROR</h3>
|
||||
<p>Die D-Gun — die maechtigste Waffe im Spiel. Ein Schuss, alles weg. Theoretisch. Bei Julietensity ist die D-Gun eher ein Mythos. Sie existiert, sie ist da, aber sie geht einfach nicht. Falsche Taste? Falscher Moment? Falsche Dimension? Niemand weiss es. Gegner stehen direkt vor dem Commander und die D-Gun macht... nichts. Manche sagen es ist ein Bug. Julie sagt es ist ein Feature.</p>
|
||||
<h3 data-de="D-Gun Status: FEHLER" data-en="D-Gun Status: ERROR">D-Gun Status: ERROR</h3>
|
||||
<p data-de="Die D-Gun — die maechtigste Waffe im Spiel. Ein Schuss, alles weg. Theoretisch. Bei Julietensity ist die D-Gun eher ein Mythos. Sie existiert, sie ist da, aber sie geht einfach nicht. Falsche Taste? Falscher Moment? Falsche Dimension? Niemand weiss es. Gegner stehen direkt vor dem Commander und die D-Gun macht... nichts. Manche sagen es ist ein Bug. Julie sagt es ist ein Feature." data-en="The D-Gun — the most powerful weapon in the game. One shot, everything gone. Theoretically. For Julietensity the D-Gun is more of a myth. It exists, it's there, but it just doesn't fire. Wrong key? Wrong moment? Wrong dimension? Nobody knows. Enemies stand right in front of the commander and the D-Gun does... nothing. Some say it's a bug. Julie says it's a feature.">Die D-Gun — die maechtigste Waffe im Spiel. Ein Schuss, alles weg. Theoretisch. Bei Julietensity ist die D-Gun eher ein Mythos. Sie existiert, sie ist da, aber sie geht einfach nicht. Falsche Taste? Falscher Moment? Falsche Dimension? Niemand weiss es. Gegner stehen direkt vor dem Commander und die D-Gun macht... nichts. Manche sagen es ist ein Bug. Julie sagt es ist ein Feature.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -514,25 +514,25 @@
|
||||
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="section-label">// about</div>
|
||||
<h2>The Player</h2>
|
||||
<div class="section-label" data-de="// über" data-en="// about">// about</div>
|
||||
<h2 data-de="Die Spielerin" data-en="The Player">The Player</h2>
|
||||
|
||||
<div class="about-content">
|
||||
<div class="about-text">
|
||||
<p>
|
||||
<p data-de="<span class="highlight">Julietensity</span> — wenn Juliane zockt, dann... naja, sagen wir mal: mit Leidenschaft. Beyond All Reason ist kein Casual Game. Es ist Echtzeit-Strategie in Reinform: hunderte Units, riesige Maps, permanenter Druck." data-en="<span class="highlight">Julietensity</span> — when Juliane plays, then... well, let's say: with passion. Beyond All Reason is not a casual game. It is real-time strategy in its purest form: hundreds of units, huge maps, constant pressure.">
|
||||
<span class="highlight">Julietensity</span> — wenn Juliane zockt,
|
||||
dann... naja, sagen wir mal: mit Leidenschaft.
|
||||
Beyond All Reason ist kein Casual Game.
|
||||
Es ist Echtzeit-Strategie in Reinform: hunderte Units,
|
||||
riesige Maps, permanenter Druck.
|
||||
</p>
|
||||
<p>
|
||||
<p data-de="Der Commander? Eher ein Vorschlag als ein Werkzeug. Manchmal steht er vorne. Manchmal ganz weit vorne. Direkt im gegnerischen Feuer. Absichtlich? Natuerlich. "Strategie" nennt man das." data-en="The commander? More of a suggestion than a tool. Sometimes up front. Sometimes way up front. Right in enemy fire. Intentional? Of course. That's called 'strategy'.">
|
||||
Der Commander? Eher ein Vorschlag als ein Werkzeug.
|
||||
Manchmal steht er vorne. Manchmal ganz weit vorne.
|
||||
Direkt im gegnerischen Feuer. Absichtlich? Natuerlich.
|
||||
"Strategie" nennt man das.
|
||||
</p>
|
||||
<p>
|
||||
<p data-de="Abends auf dem Schlachtfeld — mit dem festen Willen, irgendwann auch mal zu gewinnen. Die perfekte Balance zwischen Ehrgeiz und kreativem Scheitern." data-en="Evenings on the battlefield — with the firm intention of winning at some point. The perfect balance between ambition and creative failure.">
|
||||
Abends auf dem Schlachtfeld — mit dem festen Willen,
|
||||
irgendwann auch mal zu gewinnen. Die perfekte Balance
|
||||
zwischen Ehrgeiz und kreativem Scheitern.
|
||||
@@ -540,24 +540,24 @@
|
||||
</div>
|
||||
<div class="detail-list">
|
||||
<div class="detail-item">
|
||||
<div class="detail-item-label">Game</div>
|
||||
<div class="detail-item-label" data-de="Spiel" data-en="Game">Game</div>
|
||||
<div class="detail-item-value">Beyond All Reason (BAR)</div>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<div class="detail-item-label">Genre</div>
|
||||
<div class="detail-item-label" data-de="Genre" data-en="Genre">Genre</div>
|
||||
<div class="detail-item-value">Real-Time Strategy (RTS)</div>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<div class="detail-item-label">Engine</div>
|
||||
<div class="detail-item-label" data-de="Engine" data-en="Engine">Engine</div>
|
||||
<div class="detail-item-value">Recoil (Spring Engine Fork)</div>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<div class="detail-item-label">Inspiration</div>
|
||||
<div class="detail-item-label" data-de="Inspiration" data-en="Inspiration">Inspiration</div>
|
||||
<div class="detail-item-value">Total Annihilation / Supreme Commander</div>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<div class="detail-item-label">Price</div>
|
||||
<div class="detail-item-value">Free & Open Source</div>
|
||||
<div class="detail-item-label" data-de="Preis" data-en="Price">Price</div>
|
||||
<div class="detail-item-value" data-de="Kostenlos & Open Source" data-en="Free & Open Source">Free & Open Source</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -568,12 +568,12 @@
|
||||
|
||||
<section class="cta-section">
|
||||
<div class="container">
|
||||
<div class="section-label">// join the fight</div>
|
||||
<div class="section-label" data-de="// in den Kampf" data-en="// join the fight">// join the fight</div>
|
||||
<h2>GG?</h2>
|
||||
<div class="section-desc" style="margin: 0 auto 40px;">
|
||||
<div class="section-desc" style="margin: 0 auto 40px;" data-de="Beyond All Reason ist kostenlos. Keine Ausreden." data-en="Beyond All Reason is free. No excuses.">
|
||||
Beyond All Reason is free. No excuses.
|
||||
</div>
|
||||
<a href="https://www.beyondallreason.info/" target="_blank" class="cta-btn">
|
||||
<a href="https://www.beyondallreason.info/" target="_blank" class="cta-btn" data-de="BAR herunterladen" data-en="Download BAR">
|
||||
Download BAR
|
||||
</a>
|
||||
</div>
|
||||
@@ -582,8 +582,13 @@
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>julietensity.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;">DE</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>
|
||||
|
||||
<script src="/shared/i18n.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user