{
  "brand": {
    "title": "S H A D O W  B R O K E R",
    "subtitle": "GLOBAL THREAT INTERCEPT",
    "systemMetrics": "OPTIC VIS:113 SRC:180 DENS:1.42 0.8ms"
  },
  "nav": {
    "layers": "LAYERS",
    "intel": "INTEL",
    "markets": "MARKETS",
    "dataLayers": "DATA LAYERS",
    "prioritizingMapFeeds": "PRIORITIZING MAP FEEDS",
    "restoreUi": "RESTORE UI"
  },
  "controls": {
    "updates": "UPDATES",
    "checking": "CHECKING...",
    "upToDate": "UP TO DATE",
    "checkFailed": "CHECK FAILED",
    "node": "NODE",
    "terminal": "TERMINAL",
    "coordinates": "COORDINATES",
    "location": "LOCATION",
    "style": "STYLE",
    "solar": "SOLAR",
    "hoverMap": "Hover over map...",
    "na": "N/A"
  },
  "update": {
    "downloadInstaller": "DOWNLOAD INSTALLER",
    "installUpdate": "INSTALL UPDATE",
    "autoUpdate": "AUTO UPDATE",
    "viewRelease": "VIEW RELEASE",
    "manualDownload": "MANUAL DOWNLOAD",
    "cancel": "CANCEL",
    "tryAgain": "TRY AGAIN",
    "downloadingUpdate": "DOWNLOADING UPDATE...",
    "restarting": "RESTARTING...",
    "updateFailed": "UPDATE FAILED",
    "dockerUpdate": "DOCKER UPDATE",
    "dockerUpdateDetail": "Docker containers must be updated by pulling new images.\n            Run this on your host machine:"
  },
  "node": {
    "activateNode": "ACTIVATE NODE",
    "activatingNode": "ACTIVATING NODE",
    "nodeActivated": "NODE ACTIVATED",
    "stipulations": "STIPULATIONS",
    "yes": "YES",
    "no": "NO",
    "agree": "AGREE",
    "disagree": "DISAGREE",
    "turnOff": "TURN OFF",
    "keepOn": "KEEP ON",
    "turningOff": "TURNING OFF...",
    "activating": "ACTIVATING...",
    "nodeOnline": "NODE ONLINE",
    "generatingIdentity": "Generating identity...",
    "identityReady": "Identity ready",
    "preparingTransport": "Preparing onion transport...",
    "findingPeers": "Finding bootstrap peers...",
    "peersReady": "Bootstrap peers ready",
    "syncingChain": "Syncing chain...",
    "soloNodeReady": "Solo node ready",
    "synced": "Synced",
    "events": "events",
    "peers": "peers",
    "close": "CLOSE",
    "activatePrompt": "Do you want to activate a node on this install?",
    "activateDetail": "This turns on your local participant node and syncs Infonet only through available Wormhole onion/RNS peers. Clearnet bootstrap is disabled by default.",
    "keepSyncing": "Your node keeps syncing as long as the backend is running — you can close this browser tab. To run a headless node without the dashboard, use",
    "termsTitle": "BY CONTINUING YOU AGREE:",
    "term1": "This install can keep a local copy of the public Infonet chain.",
    "term2": "Fresh installs do not use a clearnet Infonet seed.",
    "term3": "Participant-node sync requires an onion/RNS peer through Wormhole.",
    "term4": "Your backend may sync with configured private bootstrap peers in the background.",
    "term5": "Wormhole keeps Infonet, gates, Dead Drop, and DM traffic on the obfuscated lane.",
    "syncTakingLong": "Sync is taking longer than expected. Your node is active and will continue syncing in the background."
  },
  "terminal": {
    "infonetTerminal": "INFONET TERMINAL",
    "privateLaneReady": "PRIVATE LANE READY",
    "privateLaneStarting": "PRIVATE LANE STARTING",
    "privateLaneOffline": "PRIVATE LANE OFFLINE",
    "enterTerminal": "Enter the Wormhole-facing terminal and sync with the obfuscated Infonet commons?",
    "terminalDetail": "The terminal runs through Wormhole for obfuscated gates, inbox, and experimental comms.",
    "identityReady": "Your obfuscated identity is already provisioned. Entering now keeps the obfuscated lane separate from the public node sync path.",
    "identityNotReady": "This turns Wormhole on and opens the obfuscated lane. If you already have a Wormhole identity, it reuses it. If you do not, it bootstraps one once and then keeps using it.",
    "beforeYouEnter": "BEFORE YOU ENTER:",
    "termTerminal1": "The terminal is for Wormhole gates (transitional private lane) and Dead Drop / DM (stronger private lane).",
    "termTerminal2": "Your participant node can stay active separately without changing this obfuscated identity lane.",
    "termTerminal3": "Mesh remains the public perimeter. Wormhole is the obfuscated commons.",
    "wormholeCleanup": "WORMHOLE CLEANUP:",
    "cleanupDetail": "Closing the Infonet terminal will shut down Wormhole automatically. If you force-close the browser or the shutdown fails, Wormhole may keep running in the background. Run",
    "cleanupFromRoot": "from the project root to ensure it is fully stopped.",
    "enterWormhole": "ENTER WORMHOLE",
    "activateWormhole": "ACTIVATE WORMHOLE",
    "entering": "ENTERING...",
    "goToMesh": "GO TO MESH"
  },
  "status": {
    "off": "OFF",
    "solo": "SOLO",
    "connected": "CONNECTED",
    "syncing": "SYNCING",
    "forkStop": "FORK STOP",
    "syncIssue": "SYNC ISSUE",
    "active": "ACTIVE",
    "participant": "participant",
    "nodeOff": "node • off",
    "bootstrapWarning": "node • bootstrap warning"
  },
  "backend": {
    "offline": "BACKEND OFFLINE — Cannot reach backend server. Check that the backend container is running and BACKEND_URL is correct."
  },
  "settings": {
    "title": "Settings",
    "close": "Close",
    "general": "General",
    "feeds": "Feeds",
    "shodan": "Shodan",
    "sar": "SAR",
    "infonet": "Infonet",
    "about": "About"
  },
  "legend": {
    "title": "Legend",
    "close": "Close"
  },
  "onboarding": {
    "welcome": "Welcome to ShadowBroker",
    "getStarted": "Get Started"
  },
  "news": {
    "title": "News Intel",
    "noResults": "No results",
    "searchPlaceholder": "Search news..."
  },
  "filters": {
    "title": "Data Filters",
    "clear": "Clear",
    "all": "All"
  },
  "map": {
    "findLocate": "Find / Locate",
    "searchPlaceholder": "Search coordinates, place, or callsign...",
    "measure": "Measure",
    "clearMeasure": "Clear measurement"
  },
  "layers": {
    "aircraft": "Aircraft",
    "commercialFlights": "Commercial Flights",
    "privateAircraft": "Private Aircraft",
    "privateJets": "Private Jets",
    "militaryFlights": "Military Flights",
    "trackedAircraft": "Tracked Aircraft",
    "gpsJamming": "GPS Jamming",
    "maritime": "Maritime",
    "militaryVessels": "Military Vessels",
    "cargoShips": "Cargo Ships",
    "civilianShips": "Civilian Ships",
    "passengerShips": "Passenger Ships",
    "trackedYachts": "Tracked Yachts",
    "fishingActivity": "Fishing Activity",
    "space": "Space",
    "satellites": "Satellites",
    "gibsImagery": "GIBS Imagery",
    "highresSatellite": "High-Res Satellite",
    "sentinelHub": "Sentinel Hub",
    "viirsNightlights": "VIIRS Nightlights",
    "hazards": "Hazards",
    "earthquakes": "Earthquakes",
    "fires": "Fires",
    "ukraineAlerts": "Ukraine Alerts",
    "weatherAlerts": "Weather Alerts",
    "volcanoes": "Volcanoes",
    "airQuality": "Air Quality",
    "infrastructure": "Infrastructure",
    "cctv": "CCTV",
    "datacenters": "Datacenters",
    "internetOutages": "Internet Outages",
    "powerPlants": "Power Plants",
    "militaryBases": "Military Bases",
    "trains": "Trains",
    "sigint": "SIGINT",
    "kiwisdr": "KiwiSDR",
    "pskReporter": "PSK Reporter",
    "satnogs": "SatNOGS",
    "tinygs": "TinyGS",
    "scanners": "Scanners",
    "meshtastic": "Meshtastic",
    "aprs": "APRS",
    "overlays": "Overlays",
    "ukraineFrontline": "Ukraine Frontline",
    "globalIncidents": "Global Incidents",
    "dayNight": "Day/Night",
    "correlations": "Correlations",
    "contradictions": "Contradictions",
    "uapSightings": "UAP Sightings",
    "biosurveillance": "Biosurveillance",
    "wastewater": "Wastewater",
    "crowdThreat": "CrowdThreat",
    "shodanOverlay": "Shodan Overlay",
    "aiIntel": "AI Intel",
    "sar": "SAR",
    "roadCorridorTrends": "Road Freight Trends",
    "roadCorridorSource": "Copernicus S-2 · trends not live",
    "submarineCables": "Submarine Cables",
    "malwareC2": "Malware C2",
    "scmSuppliers": "SCM Suppliers",
    "cyberThreats": "Cyber Threats",
    "telegramOsint": "Telegram OSINT",
    "strategicRisk": "Strategic Risk Heatmap",
    "derivedOsint": "Derived OSINT (Strategic Risk)",
    "derivedOsintSource": "Experimental · off by default"
  },
  "gtLean": {
    "title": "Enable Derived OSINT on a lean node?",
    "message": "Shadowbroker detected a 1 vCPU cap on this node. Turning on the Strategic Risk map layer is safe for display, but enabling the backend engine (GT_ANALYTICS_ENABLED) may slow Telegram, GDELT, and other OSINT fetches. Use OpenClaw watchdog alerts without the full engine on fleet nodes.",
    "confirm": "Turn on layer anyway",
    "cancel": "Cancel"
  },
  "gtHud": {
    "title": "GT ANALYTICS",
    "dragHint": "drag to move",
    "collapse": "Collapse panel",
    "expand": "Expand panel"
  },
  "gtAlerts": {
    "title": "TOP ALERTS",
    "counts": "{plotted} on map · {tracked} tracked (max {max})",
    "empty": "No plottable regions yet — need geotagged intel (Telegram/GDELT/news).",
    "ignition": "IGNITE",
    "line": "risk {risk} · conflict {conflict}",
    "hint": "500 = max tracked regions, not individual events. Click to fly there."
  },
  "gtRisk": {
    "popupTitle": "STRATEGIC RISK",
    "region": "REGION",
    "composite": "POSTERIOR RISK",
    "financial": "FIN",
    "unrest": "UNREST",
    "conflict": "CONFLICT",
    "contagion": "CONTAGION",
    "costlySignals": "COSTLY SIGNALS",
    "loadingSignals": "Loading feed matches…",
    "noSignals": "No costly-signal text matched in recent Telegram/GDELT/news for this region. Scores can rise from domain priors or nearby contagion.",
    "unknownSource": "unknown source"
  },
  "gtBacktest": {
    "title": "GT Backtest",
    "layerOff": "Off — enable Strategic Risk Heatmap in Data Layers.",
    "disabled": "GT analytics disabled (set GT_ANALYTICS_ENABLED=true).",
    "loading": "Running historical validation…",
    "refresh": "Refresh backtest",
    "accuracy": "ACCURACY",
    "confidence": "WILSON 95% LB",
    "cases": "{count} labeled cases",
    "threshold": "alert ≥ {value}",
    "target": "target {value}",
    "pass": "PASS",
    "fail": "FAIL",
    "collecting": "COLLECTING",
    "meetsTarget": "Meets confidence target",
    "belowTarget": "Below confidence target",
    "misclassified": "{count} misclassified",
    "tabBenchmark": "Benchmark",
    "tabOperational": "Operational",
    "benchmarkNote": "Static labeled corpus — regression test, not live forecasting.",
    "operationalLoading": "Loading rolling operational trend…",
    "operationalEmpty": "No weekly snapshots yet — freeze runs Mondays 00:05 UTC or via OpenClaw.",
    "operationalWeeks": "{stored} weeks stored · {scorable} scorable",
    "operationalLabeled": "{labeled} labeled · {pending} pending",
    "operationalTrend": "Week-over-week accuracy",
    "operationalImproving": "Improving vs prior scorable week",
    "operationalFlat": "Flat or down vs prior scorable week",
    "operationalMinLabels": "Need ≥{count} labels/week to score",
    "microTitle": "3-day micro",
    "microWindow": "{days}-day rolling avg · ignition Δ ≥ {delta}",
    "microIgnitions": "{count} ignition(s)",
    "microAlerted3d": "{count} above threshold on 3d avg",
    "microEmpty": "Collecting daily readings — refreshes with GT ingest.",
    "microRegionLine": "{region}: spot {spot} · 3d {avg} · Δ {delta}",
    "microIgnitionBadge": "IGNITION"
  },
  "roadCorridor": {
    "analyzeHere": "ANALYZE HERE",
    "analyzing": "Analyzing…",
    "hintTrends": "Satellite truck-volume trends on major highways (~5 day revisit)",
    "missingDeps": "Install backend road-corridor extras to analyze",
    "missingCreds": "Add Sentinel creds in Settings → Imagery",
    "panMapFirst": "Pan the map to choose an area",
    "analyzeFailed": "Analysis failed"
  },
  "recon": {
    "title": "Recon Toolkit",
    "proxyNote": "Server-side proxy · local operator only"
  },
  "scm": {
    "title": "Supply Chain",
    "allClear": "No elevated risk at monitored Tier 1/2 nodes.",
    "layerOff": "Off — enable Supply Chain in Data Layers to monitor fabs."
  },
  "shodan": {
    "title": "Shodan Connector",
    "searchPlaceholder": "Search devices...",
    "apiKeyRequired": "API Key Required",
    "results": "results"
  },
  "ai": {
    "title": "AI Intel Panel",
    "connected": "Connected",
    "disconnected": "Disconnected"
  },
  "meshChat": {
    "title": "Meshtastic Chat",
    "infonet": "Infonet",
    "meshtastic": "Meshtastic",
    "deadDrop": "Dead Drop",
    "sendMessage": "Send message",
    "placeholder": "Type a message..."
  },
  "watchlist": {
    "title": "Watchlist",
    "empty": "No items watched",
    "clear": "Clear"
  },
  "timeline": {
    "title": "Event Timeline",
    "noEvents": "No events"
  },
  "sar": {
    "title": "SAR Ground-Change Detection",
    "modeA": "Catalog Mode",
    "modeB": "Anomaly Mode",
    "aoiEditor": "AOI Editor",
    "addAoi": "Add AOI",
    "groundDeformation": "Ground Deformation",
    "waterChange": "Water Change",
    "vegetation": "Vegetation Disturbance",
    "damage": "Damage Assessment",
    "coherence": "Coherence Change"
  },
  "telegram": {
    "disclaimer": "WARNING: Content below is loaded from public Telegram channels. Shadowbroker does not host, verify, or endorse it. What you view is entirely at your own risk and has nothing to do with Shadowbroker.",
    "loadMedia": "VIEW MEDIA (TELEGRAM)",
    "openOriginal": "OPEN ON TELEGRAM →",
    "embedTitle": "Telegram post embed",
    "postsAtLocation": "{count} posts at this location — scroll for more",
    "translatedFrom": "Translated from {lang}",
    "showOriginal": "SHOW ORIGINAL ({lang})",
    "showTranslation": "SHOW TRANSLATION"
  }
}
