i18n: Sprachumschalter DE/EN und englische Seiten unter /en/

- Neuer .lang-switcher Komponente in css/lang-switcher.css, Variante
  fuer dunkle Lagebild-Seiten enthalten
- Sprachumschalter im Header und Mobile-Menue aller DE-Seiten
  (index, impressum, datenschutz, lagen/*)
- Englische Seiten unter /en/index.html, /en/legal-notice.html und
  /en/privacy.html mit kompletter Uebersetzung; rechtliche Texte mit
  Hinweis "German version shall prevail"
- hreflang-Tags (de/en/x-default) auf Hauptseite und rechtlichen
  Seiten; Lagen-Seiten ohne hreflang bis EN-Versionen existieren
- og:locale + og:locale:alternate gesetzt, Schema.org bleibt
- Sitemap mit xhtml:link Alternates fuer beide Sprachen ergaenzt
- DE-Lagen-Toggle zeigt vorerst auf /en/ (EN-Lagen folgen Phase 3)
- Cookie-Banner liest <html lang> bereits selbststaendig, daher
  englisch auf EN-Seiten ohne weitere Aenderung

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
2026-05-06 22:12:19 +02:00
Ursprung 3905e90467
Commit 3229c6b1ea
12 geänderte Dateien mit 1184 neuen und 13 gelöschten Zeilen

73
css/lang-switcher.css Normale Datei
Datei anzeigen

@@ -0,0 +1,73 @@
/* Language switcher (DE/EN)
Used on every page in the site header and inside the mobile menu.
Active language is non-clickable, inactive language is a link to the
counterpart URL. Pendant URL is hardcoded per page so the switch works
without JavaScript. */
.lang-switcher {
display: inline-flex;
align-items: center;
gap: 0.4em;
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
font-size: 0.9rem;
font-weight: 600;
letter-spacing: 0.04em;
user-select: none;
line-height: 1;
}
.lang-switcher .lang-active {
color: #C8A851;
cursor: default;
}
.lang-switcher .lang-link {
color: #5A6478;
text-decoration: none;
transition: color 0.2s ease;
padding: 0.15em 0;
}
.lang-switcher .lang-link:hover,
.lang-switcher .lang-link:focus-visible {
color: #C8A851;
outline: none;
}
.lang-switcher .lang-sep {
color: #5A6478;
opacity: 0.4;
}
/* Dark variant for the lagebild pages (dark navbar) */
.lagebild-page .lang-switcher .lang-link,
.lang-switcher.lang-switcher-dark .lang-link {
color: rgba(255, 255, 255, 0.7);
}
.lagebild-page .lang-switcher .lang-link:hover,
.lagebild-page .lang-switcher .lang-link:focus-visible,
.lang-switcher.lang-switcher-dark .lang-link:hover,
.lang-switcher.lang-switcher-dark .lang-link:focus-visible {
color: #C8A851;
}
.lagebild-page .lang-switcher .lang-sep,
.lang-switcher.lang-switcher-dark .lang-sep {
color: rgba(255, 255, 255, 0.5);
}
/* Inside mobile menus: full-width row with separator on top */
.mobile-menu .lang-switcher,
.nav-menu-mobile .lang-switcher {
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid rgba(0, 0, 0, 0.08);
font-size: 1rem;
justify-content: center;
width: 100%;
}
.lagebild-page .nav-menu-mobile .lang-switcher {
border-top-color: rgba(255, 255, 255, 0.12);
}