i18n: EN-Lagen-Seiten + zweisprachiges Kontaktformular (Phase 3+4)

Phase 3 - Englische Lagebild-Seiten:
- /en/situations/iran-conflict/, /en/situations/cyber-attacks/,
  /en/situations/deepfakes/ erstellt (Mirror der DE-Lagen mit
  englischer UI)
- lagebild.js: curLang() liest jetzt direkt <html lang>; neuer
  dataBase()-Helper, damit EN-Seiten die JSON-Daten aus dem
  DE-Pfad nachladen koennen (window.LAGEBILD_DATA_BASE pro Seite)
- 4 zuvor hardcodierte DE-Strings (emptyDevelopments, emptySummary,
  Quelle-Tooltip, Schliessen-Aria) ueber t() und das vorhandene
  lang.de/lang.en-Dictionary uebersetzt
- DE-Lagen-Seiten: hreflang-Tags wieder aktiv, Toggle zeigt nun
  korrekt auf das EN-Pendant statt /en/
- en/index.html Karussell-Buttons zeigen auf EN-Lagen
- Sitemap mit hreflang-Alternativen fuer alle Lagen ergaenzt

Phase 4 - Kontaktformular zweisprachig (Frontend):
- js/app.js submitContact() liest <html lang>, sendet lang im POST
  und zeigt Sende-/Fehler-Texte in der jeweiligen Sprache
- Backend (contact-form.py) wird separat ausgerollt, ist aber
  abwaertskompatibel: bei fehlendem lang-Param defaultet es auf de

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
2026-05-06 23:28:05 +02:00
Ursprung 8c8130509a
Commit 645fb33898
10 geänderte Dateien mit 691 neuen und 26 gelöschten Zeilen

Datei anzeigen

@@ -21,16 +21,49 @@
<loc>https://aegis-sight.de/lagen/iran-konflikt/</loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="de" href="https://aegis-sight.de/lagen/iran-konflikt/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://aegis-sight.de/en/situations/iran-conflict/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://aegis-sight.de/lagen/iran-konflikt/"/>
</url>
<url>
<loc>https://aegis-sight.de/en/situations/iran-conflict/</loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="de" href="https://aegis-sight.de/lagen/iran-konflikt/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://aegis-sight.de/en/situations/iran-conflict/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://aegis-sight.de/lagen/iran-konflikt/"/>
</url>
<url>
<loc>https://aegis-sight.de/lagen/cyberangriffe/</loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="de" href="https://aegis-sight.de/lagen/cyberangriffe/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://aegis-sight.de/en/situations/cyber-attacks/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://aegis-sight.de/lagen/cyberangriffe/"/>
</url>
<url>
<loc>https://aegis-sight.de/en/situations/cyber-attacks/</loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="de" href="https://aegis-sight.de/lagen/cyberangriffe/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://aegis-sight.de/en/situations/cyber-attacks/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://aegis-sight.de/lagen/cyberangriffe/"/>
</url>
<url>
<loc>https://aegis-sight.de/lagen/deepfakes/</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
<xhtml:link rel="alternate" hreflang="de" href="https://aegis-sight.de/lagen/deepfakes/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://aegis-sight.de/en/situations/deepfakes/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://aegis-sight.de/lagen/deepfakes/"/>
</url>
<url>
<loc>https://aegis-sight.de/en/situations/deepfakes/</loc>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
<xhtml:link rel="alternate" hreflang="de" href="https://aegis-sight.de/lagen/deepfakes/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://aegis-sight.de/en/situations/deepfakes/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://aegis-sight.de/lagen/deepfakes/"/>
</url>
<url>
<loc>https://aegis-sight.de/impressum.html</loc>