AI-powered verification of all key statements against independent sources. Statements are continuously checked against new sources – when new evidence appears, the status is updated automatically.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/app.js b/js/app.js
index f45b528..cff2409 100644
--- a/js/app.js
+++ b/js/app.js
@@ -2,6 +2,10 @@
(function () {
'use strict';
+ /* ==================== LANGUAGE ==================== */
+ var SITE_LANG = (document.documentElement.lang || 'de').toLowerCase().indexOf('en') === 0 ? 'en' : 'de';
+ var SUMMARY_FILE = SITE_LANG === 'en' ? 'summary_en.json' : 'summary.json';
+
/* ==================== NAVBAR ==================== */
var navbar = document.getElementById('navbar');
window.addEventListener('scroll', function () {
@@ -197,11 +201,19 @@
var lageData = {};
var dataLoaded = false;
- var lageTitles = {
- 'iran-konflikt': 'Gro\u00dflage - Irankonflikt',
- 'cyberangriffe': 'Cyberangriffe auf deutsche Infrastruktur',
- 'deepfakes': 'Rechtliche Lage von Deepfakes in Deutschland'
+ var lageTitlesByLang = {
+ de: {
+ 'iran-konflikt': 'Gro\u00dflage - Irankonflikt',
+ 'cyberangriffe': 'Cyberangriffe auf deutsche Infrastruktur',
+ 'deepfakes': 'Rechtliche Lage von Deepfakes in Deutschland'
+ },
+ en: {
+ 'iran-konflikt': 'Major situation - Iran conflict',
+ 'cyberangriffe': 'Cyberattacks on German infrastructure',
+ 'deepfakes': 'Legal status of deepfakes in Germany'
+ }
};
+ var lageTitles = lageTitlesByLang[SITE_LANG] || lageTitlesByLang.de;
/* ==================== 3D CAROUSEL ==================== */
var cards = document.querySelectorAll('.carousel-card');
@@ -427,7 +439,8 @@ function mdToHtml(md) {
}
function loadLiveData() {
- fetch('/lagen/iran-konflikt/data/summary.json?t=' + Date.now())
+ fetch('/lagen/iran-konflikt/data/' + SUMMARY_FILE + '?t=' + Date.now())
+ .then(function (r) { if (!r.ok && SITE_LANG === 'en') return fetch('/lagen/iran-konflikt/data/summary.json?t=' + Date.now()); return r; })
.then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); })
.then(function (data) {
var inc = data.incident || {};
@@ -532,7 +545,12 @@ function mdToHtml(md) {
mentioned: '#7b7b7b'
};
- var defaultLabels = {
+ var defaultLabels = SITE_LANG === 'en' ? {
+ primary: 'Primary',
+ secondary: 'Reactions',
+ tertiary: 'Involved',
+ mentioned: 'Mentioned'
+ } : {
primary: 'Hauptgeschehen',
secondary: 'Reaktionen',
tertiary: 'Beteiligte',
@@ -582,7 +600,7 @@ function mdToHtml(md) {
legend.onAdd = function () {
var div = L.DomUtil.create('div');
div.style.cssText = 'background:#151D2E;padding:10px 14px;border-radius:4px;border:1px solid #1E2D45;box-shadow:0 2px 8px rgba(0,0,0,0.3);font-size:0.8rem;line-height:1.8;color:#E8ECF4;';
- var html = 'Legende ';
+ var html = '' + (SITE_LANG === 'en' ? 'Legend' : 'Legende') + ' ';
['primary', 'secondary', 'tertiary', 'mentioned'].forEach(function (cat) {
if (usedCategories[cat]) {
html += '● ' + categoryLabels[cat] + ' ';
@@ -631,8 +649,12 @@ function mdToHtml(md) {
// Form submit -> server-side SMTP
window.submitContact = function (e) {
e.preventDefault();
+ var lang = (document.documentElement.lang || 'de').toLowerCase().indexOf('en') === 0 ? 'en' : 'de';
+ var T = lang === 'en'
+ ? { sending: 'Sending...', send: 'Send message', sendError: 'Error sending message', netError: 'Connection error. Please try again.' }
+ : { sending: 'Wird gesendet...', send: 'Nachricht senden', sendError: 'Fehler beim Senden', netError: 'Verbindungsfehler. Bitte versuchen Sie es erneut.' };
var btn = e.target.querySelector('button[type="submit"]');
- if (btn) { btn.disabled = true; btn.textContent = 'Wird gesendet...'; }
+ if (btn) { btn.disabled = true; btn.textContent = T.sending; }
fetch('/api/contact', {
method: 'POST',
@@ -641,7 +663,8 @@ function mdToHtml(md) {
name: document.getElementById('cf-name').value,
organisation: document.getElementById('cf-org').value,
email: document.getElementById('cf-email').value,
- message: document.getElementById('cf-message').value
+ message: document.getElementById('cf-message').value,
+ lang: lang
})
})
.then(function (r) { return r.json().then(function (d) { return { ok: r.ok, data: d }; }); })
@@ -651,20 +674,21 @@ function mdToHtml(md) {
document.getElementById('form-success').style.display = 'block';
if (window.umami) umami.track('contact_form_success');
} else {
- alert(res.data.error || 'Fehler beim Senden');
- if (btn) { btn.disabled = false; btn.textContent = 'Nachricht senden'; }
+ alert(res.data.error || T.sendError);
+ if (btn) { btn.disabled = false; btn.textContent = T.send; }
}
})
.catch(function () {
- alert('Verbindungsfehler. Bitte versuchen Sie es erneut.');
- if (btn) { btn.disabled = false; btn.textContent = 'Nachricht senden'; }
+ alert(T.netError);
+ if (btn) { btn.disabled = false; btn.textContent = T.send; }
});
return false;
};
/* ==================== LOAD DEEPFAKES DATA ==================== */
function loadDeepfakesData() {
- fetch('/lagen/deepfakes/data/summary.json?t=' + Date.now())
+ fetch('/lagen/deepfakes/data/' + SUMMARY_FILE + '?t=' + Date.now())
+ .then(function (r) { if (!r.ok && SITE_LANG === 'en') return fetch('/lagen/deepfakes/data/summary.json?t=' + Date.now()); return r; })
.then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); })
.then(function (data) {
var excerptEl = document.getElementById('excerpt-text-deepfakes');
@@ -691,7 +715,8 @@ function mdToHtml(md) {
/* ==================== LOAD CYBERANGRIFFE DATA ==================== */
function loadCyberangriffeData() {
- fetch('/lagen/cyberangriffe/data/summary.json?t=' + Date.now())
+ fetch('/lagen/cyberangriffe/data/' + SUMMARY_FILE + '?t=' + Date.now())
+ .then(function (r) { if (!r.ok && SITE_LANG === 'en') return fetch('/lagen/cyberangriffe/data/summary.json?t=' + Date.now()); return r; })
.then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); })
.then(function (data) {
var excerptEl = document.getElementById('excerpt-text-cyberangriffe');
diff --git a/lagen/cyberangriffe/data/.gitkeep b/lagen/cyberangriffe/data/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/lagen/cyberangriffe/index.html b/lagen/cyberangriffe/index.html
index 11553e7..a0ec6ad 100644
--- a/lagen/cyberangriffe/index.html
+++ b/lagen/cyberangriffe/index.html
@@ -5,6 +5,9 @@
Lagebild: Cyberangriffe auf deutsche Infrastruktur - AegisSight
+
+
+
@@ -33,7 +36,7 @@