Englisch als zweite Sprache fuer die oeffentlichen Seiten
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

Hub und Bot-Produktseite lassen sich jetzt auf Englisch umstellen. Die Wahl
haengt am Browser (Deutsch nur, wenn der Browser es will) und bleibt im
localStorage stehen.

- src/i18n.jsx: Context mit t(), tOr(), Datums- und Zahlenformat der Sprache.
  Keine Bibliothek, die Woerterbuecher werden mitgebaut — kein Nachlade-Blitzer.
- Platzhalter im %s-Stil, dieselbe Schreibweise wie in den Bot-Texten.
- Umschalter in der Navigation, zusaetzlich im Schubladen-Menue: .auth ist auf
  schmalen Schirmen ausgeblendet, sonst waere der Wechsel dort unerreichbar.
- Datums- und Zahlenformat folgen mit (31.07.2026 / 31/07/2026, 45.231 / 45,231).
- Die Funktionsliste kommt weiter deutsch vom Server; englische Modulnamen
  liegen unter feat.<id> im Woerterbuch. Fehlt einer, bleibt der Servertext
  stehen — ein neues Modul verschwindet nie von der Seite.

Das Config-Panel und die Discord-Texte bleiben deutsch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 22:41:32 +02:00
co-authored by Claude Fable 5
parent 570e45fe60
commit 5360c8229f
19 changed files with 1084 additions and 329 deletions
+27
View File
@@ -1736,6 +1736,33 @@ label.toggle {
.srv-checked { font-family: var(--mono); font-size: .62rem; color: var(--muted2); margin-top: .8rem; }
/* ── AUDIT-LOG ─────────────────────────────────────── */
/* ── SPRACHUMSCHALTER ──────────────────────────────── */
.lang-switch {
display: inline-flex;
border: 1px solid rgba(255, 255, 255, .1);
border-radius: 999px;
overflow: hidden;
margin-right: .6rem;
}
.lang-btn {
font-family: var(--mono);
font-size: .62rem; letter-spacing: .12em;
padding: .3rem .55rem;
background: transparent; border: none;
color: var(--muted2); cursor: pointer;
transition: color .15s ease, background .15s ease;
}
.lang-btn:hover { color: var(--text); }
.lang-btn.on {
background: color-mix(in srgb, var(--neon) 14%, transparent);
color: var(--neon);
}
/* Im Schubladen-Menü steht er allein in einer Zeile */
.drawer-lang { padding: .6rem 0 0; }
.drawer-lang .lang-switch { margin-right: 0; }
.drawer-lang .lang-btn { padding: .4rem .8rem; font-size: .7rem; }
/* ── TEAM & PROTOKOLL ──────────────────────────────── */
.tm-list {
display: flex; flex-direction: column;