feat(i18n): grosser Sweep -- Toasts, Confirms, Notification-Center, Map, Empty-States, Lizenz-Hinweise

29 Stellen im Frontend lokalisiert (Toasts: Lage aktualisiert/geloescht/
archiviert/wiederhergestellt, Recherche abgebrochen, Daten aktualisiert,
Quelle hinzugefuegt/aktualisiert, Bericht heruntergeladen, kein RSS;
Confirms: Lage loeschen, Recherche abbrechen; Button-States: Wird
gestartet/abgebrochen/erstellt/gesendet, Suche Feeds, Quelle speichern;
Lizenz: abgelaufen/keine/Org-deaktiviert -- Nur Lesezugriff;
Notification-Center: Titel, Alle gelesen, Keine Benachrichtigungen;
Empty-States: Kein Vorfall ausgewaehlt; Map: Orte einlesen + Tooltip,
Keine Orte erkannt; Modal-Hint: Nur deutschsprachige Quellen). 30+
neue i18n-Keys. Cache-Buster app.js auf v=20260514c.
Dieser Commit ist enthalten in:
Claude Code
2026-05-13 22:16:42 +00:00
Ursprung 4fc3212e2c
Commit ea630cd31b
4 geänderte Dateien mit 4257 neuen und 4191 gelöschten Zeilen

Datei anzeigen

@@ -144,8 +144,8 @@
<main class="main-content" id="main-content"> <main class="main-content" id="main-content">
<div class="empty-state" id="empty-state"> <div class="empty-state" id="empty-state">
<div class="empty-state-icon">&#9737;</div> <div class="empty-state-icon">&#9737;</div>
<div class="empty-state-title">Kein Vorfall ausgewählt</div> <div class="empty-state-title" data-i18n="empty.no_incident_title">Kein Vorfall ausgewählt</div>
<div class="empty-state-text">Erstelle einen neuen Fall oder wähle einen bestehenden aus der Seitenleiste.</div> <div class="empty-state-text" data-i18n="empty.no_incident_text">Erstelle einen neuen Fall oder wähle einen bestehenden aus der Seitenleiste.</div>
</div> </div>
@@ -270,11 +270,11 @@
<div class="card-title" data-i18n="card.map">Geografische Verteilung</div> <div class="card-title" data-i18n="card.map">Geografische Verteilung</div>
<span class="map-stats" id="map-stats"></span> <span class="map-stats" id="map-stats"></span>
<div class="card-header-actions"> <div class="card-header-actions">
<button class="btn btn-secondary btn-small" id="geoparse-btn" onclick="App.triggerGeoparse()" title="Orte aus Artikeln einlesen">Orte einlesen</button> <button class="btn btn-secondary btn-small" id="geoparse-btn" onclick="App.triggerGeoparse()" title="Orte aus Artikeln einlesen" data-i18n="map.import_locations" data-i18n-attr="title:map.import_locations_title">Orte einlesen</button>
</div> </div>
</div> </div>
<div class="map-container" id="map-container"> <div class="map-container" id="map-container">
<div class="map-empty" id="map-empty">Keine Orte erkannt</div> <div class="map-empty" id="map-empty" data-i18n="map.empty">Keine Orte erkannt</div>
</div> </div>
</div> </div>
</div> </div>
@@ -729,7 +729,7 @@
<script src="/static/js/components.js?v=20260513d"></script> <script src="/static/js/components.js?v=20260513d"></script>
<script src="/static/js/layout.js?v=20260513f"></script> <script src="/static/js/layout.js?v=20260513f"></script>
<script src="/static/js/pipeline.js?v=20260513d"></script> <script src="/static/js/pipeline.js?v=20260513d"></script>
<script src="/static/js/app.js?v=20260514b"></script> <script src="/static/js/app.js?v=20260514c"></script>
<script src="/static/js/cluster-data.js?v=20260322f"></script> <script src="/static/js/cluster-data.js?v=20260322f"></script>
<script src="/static/js/tutorial.js?v=20260316z"></script> <script src="/static/js/tutorial.js?v=20260316z"></script>
<script src="/static/js/chat.js?v=20260422a"></script> <script src="/static/js/chat.js?v=20260422a"></script>

Datei anzeigen

@@ -1,172 +1,205 @@
{ {
"sidebar.live_monitoring": "Live-Monitoring", "sidebar.live_monitoring": "Live-Monitoring",
"sidebar.research": "Recherchen", "sidebar.research": "Recherchen",
"sidebar.archive": "Archiv", "sidebar.archive": "Archiv",
"sidebar.sources": "Quellen", "sidebar.sources": "Quellen",
"sidebar.feedback": "Feedback", "sidebar.feedback": "Feedback",
"sidebar.manage_sources_title": "Quellen verwalten", "sidebar.manage_sources_title": "Quellen verwalten",
"sidebar.feedback_title": "Feedback senden", "sidebar.feedback_title": "Feedback senden",
"sidebar.stat.sources_suffix": "Quellen", "sidebar.stat.sources_suffix": "Quellen",
"sidebar.stat.articles_suffix": "Artikel", "sidebar.stat.articles_suffix": "Artikel",
"sidebar.empty_adhoc": "Kein Live-Monitoring", "sidebar.empty_adhoc": "Kein Live-Monitoring",
"sidebar.empty_adhoc_mine": "Kein eigenes Live-Monitoring", "sidebar.empty_adhoc_mine": "Kein eigenes Live-Monitoring",
"sidebar.empty_research": "Keine Deep-Research", "sidebar.empty_research": "Keine Deep-Research",
"sidebar.empty_research_mine": "Keine eigenen Deep-Research", "sidebar.empty_research_mine": "Keine eigenen Deep-Research",
"action.refresh": "Aktualisieren", "action.refresh": "Aktualisieren",
"action.edit": "Bearbeiten", "action.edit": "Bearbeiten",
"action.export": "Bericht exportieren", "action.export": "Bericht exportieren",
"action.archive": "Archivieren", "action.archive": "Archivieren",
"action.delete": "Löschen", "action.delete": "Löschen",
"action.refreshing": "Läuft...", "action.refreshing": "Läuft...",
"action.restore": "Wiederherstellen", "action.restore": "Wiederherstellen",
"action.budget_exceeded": "Budget aufgebraucht", "action.budget_exceeded": "Budget aufgebraucht",
"action.read_only": "Nur Lesezugriff", "action.read_only": "Nur Lesezugriff",
"action.budget_exceeded_title": "Token-Budget aufgebraucht. Bitte Verwaltung kontaktieren.", "action.budget_exceeded_title": "Token-Budget aufgebraucht. Bitte Verwaltung kontaktieren.",
"action.read_only_title": "Lizenz erlaubt keinen Schreibzugriff", "action.read_only_title": "Lizenz erlaubt keinen Schreibzugriff",
"sidebar.empty": "Keine Lagen vorhanden", "sidebar.empty": "Keine Lagen vorhanden",
"header.logout": "Abmelden", "header.logout": "Abmelden",
"header.new_incident": "+ Neuer Fall", "header.new_incident": "+ Neuer Fall",
"header.theme_toggle": "Theme wechseln", "header.theme_toggle": "Theme wechseln",
"header.notifications": "Benachrichtigungen", "header.notifications": "Benachrichtigungen",
"filter.all": "Alle", "filter.all": "Alle",
"filter.own": "Eigene", "filter.own": "Eigene",
"filter.everything": "Alles", "filter.everything": "Alles",
"common.close": "Schließen", "common.close": "Schließen",
"common.cancel": "Abbrechen", "common.cancel": "Abbrechen",
"common.save": "Speichern", "common.save": "Speichern",
"common.delete": "Löschen", "common.delete": "Löschen",
"common.edit": "Bearbeiten", "common.edit": "Bearbeiten",
"common.loading": "Lädt...", "common.loading": "Lädt...",
"common.confirm": "Bestätigen", "common.confirm": "Bestätigen",
"common.error": "Fehler", "common.error": "Fehler",
"modal.new_incident.title": "Neue Lage anlegen", "modal.new_incident.title": "Neue Lage anlegen",
"modal.new_incident.title_field": "Titel des Vorfalls", "modal.new_incident.title_field": "Titel des Vorfalls",
"modal.new_incident.description": "Beschreibung / Kontext", "modal.new_incident.description": "Beschreibung / Kontext",
"modal.new_incident.enhance": "Beschreibung generieren", "modal.new_incident.enhance": "Beschreibung generieren",
"modal.new_incident.enhance_loading": "Wird generiert...", "modal.new_incident.enhance_loading": "Wird generiert...",
"enhance.error_default": "Beschreibung konnte nicht generiert werden", "enhance.error_default": "Beschreibung konnte nicht generiert werden",
"enhance.error_unavailable": "KI-Zugang aktuell nicht verfügbar. Bitte Administrator kontaktieren.", "enhance.error_unavailable": "KI-Zugang aktuell nicht verfügbar. Bitte Administrator kontaktieren.",
"enhance.error_busy": "KI ist gerade ausgelastet. Bitte kurz warten und erneut versuchen.", "enhance.error_busy": "KI ist gerade ausgelastet. Bitte kurz warten und erneut versuchen.",
"enhance.error_timeout": "KI antwortet gerade nicht. Bitte erneut versuchen.", "enhance.error_timeout": "KI antwortet gerade nicht. Bitte erneut versuchen.",
"modal.new_incident.visibility": "Sichtbarkeit", "modal.new_incident.visibility": "Sichtbarkeit",
"modal.new_incident.visibility_public": "Öffentlich", "modal.new_incident.visibility_public": "Öffentlich",
"modal.new_incident.visibility_private": "Privat", "modal.new_incident.visibility_private": "Privat",
"modal.new_incident.submit": "Lage anlegen", "modal.new_incident.submit": "Lage anlegen",
"modal.new_incident.title2": "Neuen Fall anlegen", "modal.new_incident.title2": "Neuen Fall anlegen",
"modal.new_incident.edit_title": "Lage bearbeiten", "modal.new_incident.edit_title": "Lage bearbeiten",
"modal.placeholder.title": "z.B. Explosion in Madrid", "modal.placeholder.title": "z.B. Explosion in Madrid",
"modal.placeholder.description": "Weitere Details zum Vorfall (optional)", "modal.placeholder.description": "Weitere Details zum Vorfall (optional)",
"modal.field.type": "Art der Lage", "modal.field.type": "Art der Lage",
"modal.option.type_adhoc": "Live-Monitoring : Ereignis beobachten", "modal.option.type_adhoc": "Live-Monitoring : Ereignis beobachten",
"modal.option.type_research": "Recherche : Thema analysieren", "modal.option.type_research": "Recherche : Thema analysieren",
"modal.hint.type_adhoc": "Durchsucht laufend hunderte Nachrichtenquellen nach neuen Meldungen. Empfohlen: Automatische Aktualisierung.", "modal.hint.type_adhoc": "Durchsucht laufend hunderte Nachrichtenquellen nach neuen Meldungen. Empfohlen: Automatische Aktualisierung.",
"modal.hint.type_research": "Strukturierte Tiefenrecherche mit mehreren Durchläufen. Empfohlen: Manuell starten und bei Bedarf vertiefen.", "modal.hint.type_research": "Strukturierte Tiefenrecherche mit mehreren Durchläufen. Empfohlen: Manuell starten und bei Bedarf vertiefen.",
"modal.field.sources": "Quellen", "modal.field.sources": "Quellen",
"modal.toggle.international": "Internationale Quellen einbeziehen", "modal.toggle.international": "Internationale Quellen einbeziehen",
"modal.toggle.telegram": "Telegram-Kanäle einbeziehen", "modal.toggle.telegram": "Telegram-Kanäle einbeziehen",
"modal.toggle.visibility_public_text": "Öffentlich : für alle Nutzer sichtbar", "modal.toggle.visibility_public_text": "Öffentlich : für alle Nutzer sichtbar",
"modal.toggle.visibility_private_text": "Privat : nur für dich sichtbar", "modal.toggle.visibility_private_text": "Privat : nur für dich sichtbar",
"modal.field.refresh": "Aktualisierung", "modal.field.refresh": "Aktualisierung",
"modal.option.manual": "Manuell", "modal.option.manual": "Manuell",
"modal.option.auto": "Automatisch", "modal.option.auto": "Automatisch",
"modal.field.interval": "Intervall", "modal.field.interval": "Intervall",
"modal.unit.minutes": "Minuten", "modal.unit.minutes": "Minuten",
"modal.unit.hours": "Stunden", "modal.unit.hours": "Stunden",
"modal.unit.days": "Tage", "modal.unit.days": "Tage",
"modal.unit.weeks": "Wochen", "modal.unit.weeks": "Wochen",
"modal.field.start_time": "Erste Aktualisierung um", "modal.field.start_time": "Erste Aktualisierung um",
"modal.field.retention": "Aufbewahrung (Tage)", "modal.field.retention": "Aufbewahrung (Tage)",
"modal.placeholder.retention": "0 = Unbegrenzt", "modal.placeholder.retention": "0 = Unbegrenzt",
"modal.field.notifications": "E-Mail-Benachrichtigungen", "modal.field.notifications": "E-Mail-Benachrichtigungen",
"modal.hint.notifications": "Per E-Mail benachrichtigen bei:", "modal.hint.notifications": "Per E-Mail benachrichtigen bei:",
"modal.notify.summary": "Neues Lagebild", "modal.notify.summary": "Neues Lagebild",
"modal.notify.summary_research": "Neuer Recherchebericht", "modal.notify.summary_research": "Neuer Recherchebericht",
"modal.notify.new_articles": "Neue Artikel", "modal.notify.new_articles": "Neue Artikel",
"modal.notify.status_change": "Statusänderung Faktencheck", "modal.notify.status_change": "Statusänderung Faktencheck",
"aria.close": "Schließen", "aria.close": "Schließen",
"modal.sources.title": "Quellenverwaltung", "modal.sources.title": "Quellenverwaltung",
"modal.sources.approve_all_high": "Alle ≥ 0.85 genehmigen", "modal.sources.approve_all_high": "Alle ≥ 0.85 genehmigen",
"modal.export.title": "Bericht exportieren", "modal.export.title": "Bericht exportieren",
"modal.fc_status.title": "Statusänderung Faktencheck", "modal.fc_status.title": "Statusänderung Faktencheck",
"tile.factcheck": "Faktencheck", "tile.factcheck": "Faktencheck",
"tile.research_evaluated": "Recherche-Lagen werden mehrfach evaluiert...", "tile.research_evaluated": "Recherche-Lagen werden mehrfach evaluiert...",
"tile.summary": "Lagebild", "tile.summary": "Lagebild",
"tile.summary_research": "Recherchebericht", "tile.summary_research": "Recherchebericht",
"tile.timeline": "Zeitachse", "tile.timeline": "Zeitachse",
"tile.map": "Karte", "tile.map": "Karte",
"tile.sources": "Quellen", "tile.sources": "Quellen",
"tab.latest_developments": "Neueste Entwicklungen", "tab.latest_developments": "Neueste Entwicklungen",
"tab.summary": "Lagebild", "tab.summary": "Lagebild",
"tab.timeline": "Ereignis-Timeline", "tab.timeline": "Ereignis-Timeline",
"tab.map": "Geografische Verteilung", "tab.map": "Geografische Verteilung",
"tab.factcheck": "Faktencheck", "tab.factcheck": "Faktencheck",
"tab.pipeline": "Analysepipeline", "tab.pipeline": "Analysepipeline",
"tab.sources_overview": "Quellenübersicht", "tab.sources_overview": "Quellenübersicht",
"tab.summary_short": "Zusammenfassung", "tab.summary_short": "Zusammenfassung",
"tab.summary_report": "Recherchebericht", "tab.summary_report": "Recherchebericht",
"card.summary": "Lagebild", "card.summary": "Lagebild",
"card.timeline": "Ereignis-Timeline", "card.timeline": "Ereignis-Timeline",
"card.map": "Geografische Verteilung", "card.map": "Geografische Verteilung",
"card.pipeline": "Analysepipeline", "card.pipeline": "Analysepipeline",
"card.sources_overview": "Quellenübersicht", "card.sources_overview": "Quellenübersicht",
"fc.label.confirmed": "Bestätigt durch mehrere Quellen", "fc.label.confirmed": "Bestätigt durch mehrere Quellen",
"fc.label.unconfirmed": "Nicht unabhängig bestätigt", "fc.label.unconfirmed": "Nicht unabhängig bestätigt",
"fc.label.contradicted": "Widerlegt", "fc.label.contradicted": "Widerlegt",
"fc.label.developing": "Faktenlage noch im Fluss", "fc.label.developing": "Faktenlage noch im Fluss",
"fc.label.established": "Gesicherter Fakt (3+ Quellen)", "fc.label.established": "Gesicherter Fakt (3+ Quellen)",
"fc.label.disputed": "Umstrittener Sachverhalt", "fc.label.disputed": "Umstrittener Sachverhalt",
"fc.label.unverified": "Nicht unabhängig verifizierbar", "fc.label.unverified": "Nicht unabhängig verifizierbar",
"fc.tooltip.confirmed": "Bestätigt: Mindestens zwei unabhängige, seriöse Quellen stützen diese Aussage übereinstimmend.", "fc.tooltip.confirmed": "Bestätigt: Mindestens zwei unabhängige, seriöse Quellen stützen diese Aussage übereinstimmend.",
"fc.tooltip.established": "Gesichert: Drei oder mehr unabhängige Quellen bestätigen den Sachverhalt. Hohe Verlässlichkeit.", "fc.tooltip.established": "Gesichert: Drei oder mehr unabhängige Quellen bestätigen den Sachverhalt. Hohe Verlässlichkeit.",
"fc.tooltip.developing": "Unklar: Die Faktenlage ist noch im Fluss. Neue Informationen können das Bild verändern.", "fc.tooltip.developing": "Unklar: Die Faktenlage ist noch im Fluss. Neue Informationen können das Bild verändern.",
"fc.tooltip.unconfirmed": "Unbestätigt: Bisher nur aus einer Quelle bekannt. Eine unabhängige Bestätigung steht aus.", "fc.tooltip.unconfirmed": "Unbestätigt: Bisher nur aus einer Quelle bekannt. Eine unabhängige Bestätigung steht aus.",
"fc.tooltip.unverified": "Ungeprüft: Die Aussage konnte bisher nicht anhand verfügbarer Quellen überprüft werden.", "fc.tooltip.unverified": "Ungeprüft: Die Aussage konnte bisher nicht anhand verfügbarer Quellen überprüft werden.",
"fc.tooltip.disputed": "Umstritten: Quellen widersprechen sich. Es gibt sowohl stützende als auch widersprechende Belege.", "fc.tooltip.disputed": "Umstritten: Quellen widersprechen sich. Es gibt sowohl stützende als auch widersprechende Belege.",
"fc.tooltip.contradicted": "Widerlegt: Zuverlässige Quellen widersprechen dieser Aussage. Wahrscheinlich falsch.", "fc.tooltip.contradicted": "Widerlegt: Zuverlässige Quellen widersprechen dieser Aussage. Wahrscheinlich falsch.",
"fc.chip.confirmed": "Bestätigt", "fc.chip.confirmed": "Bestätigt",
"fc.chip.unconfirmed": "Unbestätigt", "fc.chip.unconfirmed": "Unbestätigt",
"fc.chip.contradicted": "Widerlegt", "fc.chip.contradicted": "Widerlegt",
"fc.chip.developing": "Unklar", "fc.chip.developing": "Unklar",
"fc.chip.established": "Gesichert", "fc.chip.established": "Gesichert",
"fc.chip.disputed": "Umstritten", "fc.chip.disputed": "Umstritten",
"fc.chip.unverified": "Ungeprüft", "fc.chip.unverified": "Ungeprüft",
"refresh.no_developments": "Keine neuen Entwicklungen", "refresh.no_developments": "Keine neuen Entwicklungen",
"refresh.new_articles_suffix": "neue Artikel", "refresh.new_articles_suffix": "neue Artikel",
"refresh.confirmed_suffix": "Fakten bestätigt", "refresh.confirmed_suffix": "Fakten bestätigt",
"refresh.contradicted_suffix": "widerlegt", "refresh.contradicted_suffix": "widerlegt",
"progress.status.queued": "In Warteschlange", "progress.status.queued": "In Warteschlange",
"progress.status.researching": "Recherchiert...", "progress.status.researching": "Recherchiert...",
"progress.status.deep_researching": "Tiefenrecherche...", "progress.status.deep_researching": "Tiefenrecherche...",
"progress.status.analyzing": "Analysiert...", "progress.status.analyzing": "Analysiert...",
"progress.status.factchecking": "Faktencheck...", "progress.status.factchecking": "Faktencheck...",
"progress.status.cancelling": "Wird abgebrochen...", "progress.status.cancelling": "Wird abgebrochen...",
"progress.title.first_refresh": "Erste Recherche läuft", "progress.title.first_refresh": "Erste Recherche läuft",
"progress.title.refresh": "Aktualisierung läuft", "progress.title.refresh": "Aktualisierung läuft",
"progress.title.queued": "In Warteschlange", "progress.title.queued": "In Warteschlange",
"progress.title.cancelling": "Wird abgebrochen…", "progress.title.cancelling": "Wird abgebrochen…",
"progress.factcheck_running": "Faktencheck läuft", "progress.factcheck_running": "Faktencheck läuft",
"progress.check.researching": "Quellen werden durchsucht", "progress.check.researching": "Quellen werden durchsucht",
"progress.check.analyzing": "Meldungen werden analysiert", "progress.check.analyzing": "Meldungen werden analysiert",
"pipeline.empty": "Noch nie aktualisiert. Starte den ersten Refresh.", "pipeline.empty": "Noch nie aktualisiert. Starte den ersten Refresh.",
"pipeline.load_failed": "Pipeline laden fehlgeschlagen", "pipeline.load_failed": "Pipeline laden fehlgeschlagen",
"pipeline.running": "Aktualisierung läuft...", "pipeline.running": "Aktualisierung läuft...",
"pipeline.cancelled": "abgebrochen", "pipeline.cancelled": "abgebrochen",
"pipeline.with_errors": "mit Fehler beendet", "pipeline.with_errors": "mit Fehler beendet",
"pipeline.duration_prefix": "Dauer:", "pipeline.duration_prefix": "Dauer:",
"pipeline.status.done": "erledigt", "pipeline.status.done": "erledigt",
"pipeline.status.running": "läuft...", "pipeline.status.running": "läuft...",
"pipeline.status.error": "Fehler", "pipeline.status.error": "Fehler",
"pipeline.count.sources_reviewed": "{n} Quellen geprüft", "pipeline.count.sources_reviewed": "{n} Quellen geprüft",
"pipeline.count.collected": "{n} Meldungen", "pipeline.count.collected": "{n} Meldungen",
"pipeline.count.collected_from": "{n} Meldungen aus {s} Quellen", "pipeline.count.collected_from": "{n} Meldungen aus {s} Quellen",
"time.just_now": "gerade eben", "time.just_now": "gerade eben",
"time.minutes_ago": "vor {n} Min", "time.minutes_ago": "vor {n} Min",
"time.hours_ago": "vor {n} Std", "time.hours_ago": "vor {n} Std",
"time.days_ago": "vor {n} Tagen", "time.days_ago": "vor {n} Tagen",
"time.day_ago": "vor 1 Tag", "time.day_ago": "vor 1 Tag",
"toast.incident_refreshed": "Lage aktualisiert.", "toast.incident_refreshed": "Lage aktualisiert.",
"toast.data_refreshed": "Daten aktualisiert.", "toast.data_refreshed": "Daten aktualisiert.",
"toast.source_updated": "Quelle aktualisiert.", "toast.source_updated": "Quelle aktualisiert.",
"toast.session_expires": "Session läuft in {min} Minute(n) ab. Bitte erneut anmelden.", "toast.session_expires": "Session läuft in {min} Minute(n) ab. Bitte erneut anmelden.",
"confirm.delete_incident": "Lage wirklich löschen? Alle gesammelten Daten gehen verloren." "confirm.delete_incident": "Lage wirklich löschen? Alle gesammelten Daten gehen verloren.",
} "toast.incident_updated": "Lage aktualisiert.",
"toast.refresh_started": "Aktualisierung gestartet.",
"toast.incident_deleted": "Lage gelöscht.",
"toast.incident_archived": "Lage archiviert.",
"toast.incident_restored": "Lage wiederhergestellt.",
"toast.research_cancelled": "Recherche abgebrochen.",
"toast.no_active_refresh": "Kein aktiver Refresh zum Abbrechen gefunden.",
"toast.report_downloaded": "Bericht heruntergeladen",
"toast.data_updated": "Daten aktualisiert.",
"toast.no_rss_save_as_web": "Kein RSS-Feed gefunden. Als Web-Quelle speichern?",
"toast.source_added": "Quelle hinzugefügt.",
"confirm.cancel_running_research": "Laufende Recherche abbrechen?",
"action.starting": "Wird gestartet...",
"action.cancelling": "Wird abgebrochen...",
"action.creating": "Wird erstellt...",
"action.sending": "Wird gesendet...",
"action.searching_feeds": "Suche Feeds...",
"action.save_source": "Quelle speichern",
"license.expired_readonly": "Lizenz abgelaufen – nur Lesezugriff",
"license.none_readonly": "Keine aktive Lizenz – nur Lesezugriff",
"license.org_disabled_readonly": "Organisation deaktiviert – nur Lesezugriff",
"notifications.title": "Benachrichtigungen",
"notifications.mark_all_read": "Alle gelesen",
"notifications.empty": "Keine Benachrichtigungen",
"empty.no_incident_title": "Kein Vorfall ausgewählt",
"empty.no_incident_text": "Erstelle einen neuen Fall oder wähle einen bestehenden aus der Seitenleiste.",
"map.import_locations": "Orte einlesen",
"map.import_locations_title": "Orte aus Artikeln einlesen",
"map.empty": "Keine Orte erkannt",
"source.type.rss_feed": "RSS-Feed",
"source.type.telegram": "Telegram",
"source.type.web": "Web-Quelle",
"modal.hint.sources_german_only": "Nur deutschsprachige Quellen (DE, AT, CH)"
}

Datei anzeigen

@@ -1,172 +1,205 @@
{ {
"sidebar.live_monitoring": "Live monitoring", "sidebar.live_monitoring": "Live monitoring",
"sidebar.research": "Research", "sidebar.research": "Research",
"sidebar.archive": "Archive", "sidebar.archive": "Archive",
"sidebar.sources": "Sources", "sidebar.sources": "Sources",
"sidebar.feedback": "Feedback", "sidebar.feedback": "Feedback",
"sidebar.manage_sources_title": "Manage sources", "sidebar.manage_sources_title": "Manage sources",
"sidebar.feedback_title": "Send feedback", "sidebar.feedback_title": "Send feedback",
"sidebar.stat.sources_suffix": "sources", "sidebar.stat.sources_suffix": "sources",
"sidebar.stat.articles_suffix": "articles", "sidebar.stat.articles_suffix": "articles",
"sidebar.empty_adhoc": "No live monitoring", "sidebar.empty_adhoc": "No live monitoring",
"sidebar.empty_adhoc_mine": "No own live monitoring", "sidebar.empty_adhoc_mine": "No own live monitoring",
"sidebar.empty_research": "No deep research", "sidebar.empty_research": "No deep research",
"sidebar.empty_research_mine": "No own deep research", "sidebar.empty_research_mine": "No own deep research",
"action.refresh": "Refresh", "action.refresh": "Refresh",
"action.edit": "Edit", "action.edit": "Edit",
"action.export": "Export report", "action.export": "Export report",
"action.archive": "Archive", "action.archive": "Archive",
"action.delete": "Delete", "action.delete": "Delete",
"action.refreshing": "Running...", "action.refreshing": "Running...",
"action.restore": "Restore", "action.restore": "Restore",
"action.budget_exceeded": "Budget exhausted", "action.budget_exceeded": "Budget exhausted",
"action.read_only": "Read-only", "action.read_only": "Read-only",
"action.budget_exceeded_title": "Token budget exhausted. Please contact administration.", "action.budget_exceeded_title": "Token budget exhausted. Please contact administration.",
"action.read_only_title": "License does not permit write access", "action.read_only_title": "License does not permit write access",
"sidebar.empty": "No situations yet", "sidebar.empty": "No situations yet",
"header.logout": "Sign out", "header.logout": "Sign out",
"header.new_incident": "+ New situation", "header.new_incident": "+ New situation",
"header.theme_toggle": "Toggle theme", "header.theme_toggle": "Toggle theme",
"header.notifications": "Notifications", "header.notifications": "Notifications",
"filter.all": "All", "filter.all": "All",
"filter.own": "Own", "filter.own": "Own",
"filter.everything": "Everything", "filter.everything": "Everything",
"common.close": "Close", "common.close": "Close",
"common.cancel": "Cancel", "common.cancel": "Cancel",
"common.save": "Save", "common.save": "Save",
"common.delete": "Delete", "common.delete": "Delete",
"common.edit": "Edit", "common.edit": "Edit",
"common.loading": "Loading...", "common.loading": "Loading...",
"common.confirm": "Confirm", "common.confirm": "Confirm",
"common.error": "Error", "common.error": "Error",
"modal.new_incident.title": "Create new situation", "modal.new_incident.title": "Create new situation",
"modal.new_incident.title_field": "Incident title", "modal.new_incident.title_field": "Incident title",
"modal.new_incident.description": "Description / context", "modal.new_incident.description": "Description / context",
"modal.new_incident.enhance": "Generate description", "modal.new_incident.enhance": "Generate description",
"modal.new_incident.enhance_loading": "Generating...", "modal.new_incident.enhance_loading": "Generating...",
"enhance.error_default": "Description could not be generated", "enhance.error_default": "Description could not be generated",
"enhance.error_unavailable": "AI access currently unavailable. Please contact your administrator.", "enhance.error_unavailable": "AI access currently unavailable. Please contact your administrator.",
"enhance.error_busy": "AI is currently busy. Please wait briefly and try again.", "enhance.error_busy": "AI is currently busy. Please wait briefly and try again.",
"enhance.error_timeout": "AI is not responding. Please try again.", "enhance.error_timeout": "AI is not responding. Please try again.",
"modal.new_incident.visibility": "Visibility", "modal.new_incident.visibility": "Visibility",
"modal.new_incident.visibility_public": "Public", "modal.new_incident.visibility_public": "Public",
"modal.new_incident.visibility_private": "Private", "modal.new_incident.visibility_private": "Private",
"modal.new_incident.submit": "Create situation", "modal.new_incident.submit": "Create situation",
"modal.new_incident.title2": "Create new case", "modal.new_incident.title2": "Create new case",
"modal.new_incident.edit_title": "Edit situation", "modal.new_incident.edit_title": "Edit situation",
"modal.placeholder.title": "e.g. Explosion in Madrid", "modal.placeholder.title": "e.g. Explosion in Madrid",
"modal.placeholder.description": "More details about the incident (optional)", "modal.placeholder.description": "More details about the incident (optional)",
"modal.field.type": "Type of situation", "modal.field.type": "Type of situation",
"modal.option.type_adhoc": "Live monitoring : track an event", "modal.option.type_adhoc": "Live monitoring : track an event",
"modal.option.type_research": "Research : analyse a topic", "modal.option.type_research": "Research : analyse a topic",
"modal.hint.type_adhoc": "Continuously searches hundreds of news sources for new articles. Recommended: automatic refresh.", "modal.hint.type_adhoc": "Continuously searches hundreds of news sources for new articles. Recommended: automatic refresh.",
"modal.hint.type_research": "Structured deep research with multiple passes. Recommended: start manually and deepen when needed.", "modal.hint.type_research": "Structured deep research with multiple passes. Recommended: start manually and deepen when needed.",
"modal.field.sources": "Sources", "modal.field.sources": "Sources",
"modal.toggle.international": "Include international sources", "modal.toggle.international": "Include international sources",
"modal.toggle.telegram": "Include Telegram channels", "modal.toggle.telegram": "Include Telegram channels",
"modal.toggle.visibility_public_text": "Public : visible to all users", "modal.toggle.visibility_public_text": "Public : visible to all users",
"modal.toggle.visibility_private_text": "Private : only visible to you", "modal.toggle.visibility_private_text": "Private : only visible to you",
"modal.field.refresh": "Refresh", "modal.field.refresh": "Refresh",
"modal.option.manual": "Manual", "modal.option.manual": "Manual",
"modal.option.auto": "Automatic", "modal.option.auto": "Automatic",
"modal.field.interval": "Interval", "modal.field.interval": "Interval",
"modal.unit.minutes": "Minutes", "modal.unit.minutes": "Minutes",
"modal.unit.hours": "Hours", "modal.unit.hours": "Hours",
"modal.unit.days": "Days", "modal.unit.days": "Days",
"modal.unit.weeks": "Weeks", "modal.unit.weeks": "Weeks",
"modal.field.start_time": "First refresh at", "modal.field.start_time": "First refresh at",
"modal.field.retention": "Retention (days)", "modal.field.retention": "Retention (days)",
"modal.placeholder.retention": "0 = unlimited", "modal.placeholder.retention": "0 = unlimited",
"modal.field.notifications": "Email notifications", "modal.field.notifications": "Email notifications",
"modal.hint.notifications": "Notify me by email about:", "modal.hint.notifications": "Notify me by email about:",
"modal.notify.summary": "New briefing", "modal.notify.summary": "New briefing",
"modal.notify.summary_research": "New research report", "modal.notify.summary_research": "New research report",
"modal.notify.new_articles": "New articles", "modal.notify.new_articles": "New articles",
"modal.notify.status_change": "Fact-check status change", "modal.notify.status_change": "Fact-check status change",
"aria.close": "Close", "aria.close": "Close",
"modal.sources.title": "Source management", "modal.sources.title": "Source management",
"modal.sources.approve_all_high": "Approve all ≥ 0.85", "modal.sources.approve_all_high": "Approve all ≥ 0.85",
"modal.export.title": "Export report", "modal.export.title": "Export report",
"modal.fc_status.title": "Fact-check status change", "modal.fc_status.title": "Fact-check status change",
"tile.factcheck": "Fact check", "tile.factcheck": "Fact check",
"tile.research_evaluated": "Research situations are evaluated multiple times...", "tile.research_evaluated": "Research situations are evaluated multiple times...",
"tile.summary": "Briefing", "tile.summary": "Briefing",
"tile.summary_research": "Research report", "tile.summary_research": "Research report",
"tile.timeline": "Timeline", "tile.timeline": "Timeline",
"tile.map": "Map", "tile.map": "Map",
"tile.sources": "Sources", "tile.sources": "Sources",
"tab.latest_developments": "Latest developments", "tab.latest_developments": "Latest developments",
"tab.summary": "Briefing", "tab.summary": "Briefing",
"tab.timeline": "Event timeline", "tab.timeline": "Event timeline",
"tab.map": "Geographic distribution", "tab.map": "Geographic distribution",
"tab.factcheck": "Fact check", "tab.factcheck": "Fact check",
"tab.pipeline": "Analysis pipeline", "tab.pipeline": "Analysis pipeline",
"tab.sources_overview": "Sources overview", "tab.sources_overview": "Sources overview",
"tab.summary_short": "Summary", "tab.summary_short": "Summary",
"tab.summary_report": "Research report", "tab.summary_report": "Research report",
"card.summary": "Briefing", "card.summary": "Briefing",
"card.timeline": "Event timeline", "card.timeline": "Event timeline",
"card.map": "Geographic distribution", "card.map": "Geographic distribution",
"card.pipeline": "Analysis pipeline", "card.pipeline": "Analysis pipeline",
"card.sources_overview": "Sources overview", "card.sources_overview": "Sources overview",
"fc.label.confirmed": "Confirmed by multiple sources", "fc.label.confirmed": "Confirmed by multiple sources",
"fc.label.unconfirmed": "Not independently confirmed", "fc.label.unconfirmed": "Not independently confirmed",
"fc.label.contradicted": "Contradicted", "fc.label.contradicted": "Contradicted",
"fc.label.developing": "Facts still developing", "fc.label.developing": "Facts still developing",
"fc.label.established": "Established fact (3+ sources)", "fc.label.established": "Established fact (3+ sources)",
"fc.label.disputed": "Disputed matter", "fc.label.disputed": "Disputed matter",
"fc.label.unverified": "Not independently verifiable", "fc.label.unverified": "Not independently verifiable",
"fc.tooltip.confirmed": "Confirmed: at least two independent, reputable sources support this claim consistently.", "fc.tooltip.confirmed": "Confirmed: at least two independent, reputable sources support this claim consistently.",
"fc.tooltip.established": "Established: three or more independent sources confirm the matter. High reliability.", "fc.tooltip.established": "Established: three or more independent sources confirm the matter. High reliability.",
"fc.tooltip.developing": "Developing: the facts are still in flux. New information may change the picture.", "fc.tooltip.developing": "Developing: the facts are still in flux. New information may change the picture.",
"fc.tooltip.unconfirmed": "Unconfirmed: known from only one source so far. Independent confirmation is pending.", "fc.tooltip.unconfirmed": "Unconfirmed: known from only one source so far. Independent confirmation is pending.",
"fc.tooltip.unverified": "Unverified: the claim could not yet be checked against available sources.", "fc.tooltip.unverified": "Unverified: the claim could not yet be checked against available sources.",
"fc.tooltip.disputed": "Disputed: sources disagree. There is both supporting and contradicting evidence.", "fc.tooltip.disputed": "Disputed: sources disagree. There is both supporting and contradicting evidence.",
"fc.tooltip.contradicted": "Contradicted: reliable sources contradict this claim. Likely false.", "fc.tooltip.contradicted": "Contradicted: reliable sources contradict this claim. Likely false.",
"fc.chip.confirmed": "Confirmed", "fc.chip.confirmed": "Confirmed",
"fc.chip.unconfirmed": "Unconfirmed", "fc.chip.unconfirmed": "Unconfirmed",
"fc.chip.contradicted": "Contradicted", "fc.chip.contradicted": "Contradicted",
"fc.chip.developing": "Developing", "fc.chip.developing": "Developing",
"fc.chip.established": "Established", "fc.chip.established": "Established",
"fc.chip.disputed": "Disputed", "fc.chip.disputed": "Disputed",
"fc.chip.unverified": "Unverified", "fc.chip.unverified": "Unverified",
"refresh.no_developments": "No new developments", "refresh.no_developments": "No new developments",
"refresh.new_articles_suffix": "new articles", "refresh.new_articles_suffix": "new articles",
"refresh.confirmed_suffix": "facts confirmed", "refresh.confirmed_suffix": "facts confirmed",
"refresh.contradicted_suffix": "contradicted", "refresh.contradicted_suffix": "contradicted",
"progress.status.queued": "Queued", "progress.status.queued": "Queued",
"progress.status.researching": "Researching...", "progress.status.researching": "Researching...",
"progress.status.deep_researching": "Deep research...", "progress.status.deep_researching": "Deep research...",
"progress.status.analyzing": "Analyzing...", "progress.status.analyzing": "Analyzing...",
"progress.status.factchecking": "Fact-checking...", "progress.status.factchecking": "Fact-checking...",
"progress.status.cancelling": "Cancelling...", "progress.status.cancelling": "Cancelling...",
"progress.title.first_refresh": "Initial research running", "progress.title.first_refresh": "Initial research running",
"progress.title.refresh": "Refresh running", "progress.title.refresh": "Refresh running",
"progress.title.queued": "Queued", "progress.title.queued": "Queued",
"progress.title.cancelling": "Cancelling…", "progress.title.cancelling": "Cancelling…",
"progress.factcheck_running": "Fact-check running", "progress.factcheck_running": "Fact-check running",
"progress.check.researching": "Searching sources", "progress.check.researching": "Searching sources",
"progress.check.analyzing": "Analyzing articles", "progress.check.analyzing": "Analyzing articles",
"pipeline.empty": "Never refreshed. Start the first refresh.", "pipeline.empty": "Never refreshed. Start the first refresh.",
"pipeline.load_failed": "Failed to load pipeline", "pipeline.load_failed": "Failed to load pipeline",
"pipeline.running": "Refresh running...", "pipeline.running": "Refresh running...",
"pipeline.cancelled": "cancelled", "pipeline.cancelled": "cancelled",
"pipeline.with_errors": "finished with errors", "pipeline.with_errors": "finished with errors",
"pipeline.duration_prefix": "Duration:", "pipeline.duration_prefix": "Duration:",
"pipeline.status.done": "done", "pipeline.status.done": "done",
"pipeline.status.running": "running...", "pipeline.status.running": "running...",
"pipeline.status.error": "error", "pipeline.status.error": "error",
"pipeline.count.sources_reviewed": "{n} sources checked", "pipeline.count.sources_reviewed": "{n} sources checked",
"pipeline.count.collected": "{n} articles", "pipeline.count.collected": "{n} articles",
"pipeline.count.collected_from": "{n} articles from {s} sources", "pipeline.count.collected_from": "{n} articles from {s} sources",
"time.just_now": "just now", "time.just_now": "just now",
"time.minutes_ago": "{n} min ago", "time.minutes_ago": "{n} min ago",
"time.hours_ago": "{n}h ago", "time.hours_ago": "{n}h ago",
"time.days_ago": "{n} days ago", "time.days_ago": "{n} days ago",
"time.day_ago": "1 day ago", "time.day_ago": "1 day ago",
"toast.incident_refreshed": "Situation refreshed.", "toast.incident_refreshed": "Situation refreshed.",
"toast.data_refreshed": "Data refreshed.", "toast.data_refreshed": "Data refreshed.",
"toast.source_updated": "Source updated.", "toast.source_updated": "Source updated.",
"toast.session_expires": "Session expires in {min} minute(s). Please sign in again.", "toast.session_expires": "Session expires in {min} minute(s). Please sign in again.",
"confirm.delete_incident": "Really delete this situation? All collected data will be lost." "confirm.delete_incident": "Really delete this situation? All collected data will be lost.",
} "toast.incident_updated": "Situation refreshed.",
"toast.refresh_started": "Refresh started.",
"toast.incident_deleted": "Situation deleted.",
"toast.incident_archived": "Situation archived.",
"toast.incident_restored": "Situation restored.",
"toast.research_cancelled": "Research cancelled.",
"toast.no_active_refresh": "No active refresh found to cancel.",
"toast.report_downloaded": "Report downloaded",
"toast.data_updated": "Data refreshed.",
"toast.no_rss_save_as_web": "No RSS feed found. Save as web source?",
"toast.source_added": "Source added.",
"confirm.cancel_running_research": "Cancel running research?",
"action.starting": "Starting...",
"action.cancelling": "Cancelling...",
"action.creating": "Generating...",
"action.sending": "Sending...",
"action.searching_feeds": "Searching feeds...",
"action.save_source": "Save source",
"license.expired_readonly": "License expired – read-only",
"license.none_readonly": "No active license – read-only",
"license.org_disabled_readonly": "Organization disabled – read-only",
"notifications.title": "Notifications",
"notifications.mark_all_read": "Mark all read",
"notifications.empty": "No notifications",
"empty.no_incident_title": "No situation selected",
"empty.no_incident_text": "Create a new case or pick an existing one from the sidebar.",
"map.import_locations": "Import locations",
"map.import_locations_title": "Import locations from articles",
"map.empty": "No locations detected",
"source.type.rss_feed": "RSS feed",
"source.type.telegram": "Telegram",
"source.type.web": "Web source",
"modal.hint.sources_german_only": "Primary-language sources only"
}

Datei-Diff unterdrückt, da er zu groß ist Diff laden