i18n: stimmen, streamplan, team-modis, team-scouts, werte — alle 5 Sprachen

Vollständige data-i18n-Abdeckung + Wörterbücher (de, de-CH echter Dialekt,
en, fr, pt) für 5 weitere der ~22 noch fehlenden Seiten. Dynamisch aus
data-modis.js/data-scouts.js gerenderte Personendaten bleiben bewusst
Deutsch, JS-Template-Strings (team-scouts.html) über
window.dogiUebersetzen() gelöst.
This commit is contained in:
2026-08-02 10:10:01 +02:00
parent 7594c7eea4
commit c1e83bfd5a
10 changed files with 476 additions and 72 deletions
+20 -12
View File
@@ -29,9 +29,9 @@
<section class="hero page-bg">
<div class="hero-banner"><img src="/assets/img/bg-scouts.jpg" alt="" loading="eager" /></div>
<div class="container">
<span class="eyebrow">Manager DogFather — Spicy Media</span>
<h1>Mein Scout-Team</h1>
<p class="lead worlds">Sie finden und begleiten neue Talente für Dogi.</p>
<span class="eyebrow" data-i18n="ts_eyebrow">Manager DogFather — Spicy Media</span>
<h1 data-i18n="ts_h1">Mein Scout-Team</h1>
<p class="lead worlds" data-i18n="ts_lead">Sie finden und begleiten neue Talente für Dogi.</p>
</div>
</section>
@@ -40,7 +40,7 @@
<div id="scouts-grid" class="grid grid-4"></div>
<!-- TODO: Dogi liefert die vollständige, aktuelle Scout-Liste per Text nach — assets/js/data-scouts.js ist so gebaut, dass neue Scouts einfach als Objekt ergänzt werden können, ohne dass diese Seite verändert werden muss. -->
<div class="btn-row" style="justify-content:center;">
<a class="btn btn-primary" href="bewerben-scout.html">Als Scout bewerben</a>
<a class="btn btn-primary" href="bewerben-scout.html" data-i18n="ts_bewerben_btn">Als Scout bewerben</a>
</div>
</div>
</section>
@@ -48,19 +48,27 @@
<div id="site-footer"></div>
<script src="assets/js/data-scouts.js"></script>
<script src="assets/js/i18n-team-scouts.js"></script>
<script src="assets/js/main.js"></script>
<script>
document.addEventListener("DOMContentLoaded", () => {
const grid = document.getElementById("scouts-grid");
if (!grid || !window.SCOUTS) return;
grid.innerHTML = window.SCOUTS.map((s) => `
<a class="profile-card" href="profil.html?p=${s.slug}">
<div class="avatar">${(s.avatar || s.photo) ? `<img src="${s.avatar || s.photo}" alt="${s.name}" loading="lazy">` : `<span class="avatar-initial">${s.name.charAt(0).toUpperCase()}</span>`}</div>
<h3>${s.name}</h3>
<div class="role">${s.role}</div>
${s.quote ? `<p class="quote">„${s.quote}"</p>` : `<p class="small muted">Zitat folgt</p>`}
<span class="btn btn-outline" style="margin-top:.7rem;pointer-events:none;">Profil ansehen</span>
</a>`).join("");
const t = (schluessel) => (window.dogiUebersetzen ? window.dogiUebersetzen(schluessel) : schluessel);
const renderScouts = () => {
grid.innerHTML = window.SCOUTS.map((s) => `
<a class="profile-card" href="profil.html?p=${s.slug}">
<div class="avatar">${(s.avatar || s.photo) ? `<img src="${s.avatar || s.photo}" alt="${s.name}" loading="lazy">` : `<span class="avatar-initial">${s.name.charAt(0).toUpperCase()}</span>`}</div>
<h3>${s.name}</h3>
<div class="role">${s.role}</div>
${s.quote ? `<p class="quote">„${s.quote}"</p>` : `<p class="small muted">${t("ts_zitat_folgt")}</p>`}
<span class="btn btn-outline" style="margin-top:.7rem;pointer-events:none;">${t("ts_profil_ansehen")}</span>
</a>`).join("");
};
renderScouts();
document.addEventListener("dogi-sprache-geaendert", renderScouts);
});
</script>
</body>