Files
intelligence-terminal/locales/en.json
David 9b395b6aa5 feat(i18n): Add internationalization support
- Add i18n module with locale loading and translation helpers
- Add English (en) and French (fr) locale files with comprehensive translations
- Inject locale data into dashboard HTML via server
- Add /api/locales endpoint for locale info
- Add t() translation function to dashboard

Translated elements:
- Boot sequence (initialization, connecting, sweep complete)
- Header pills (sweep, sources, delta, risk indicators)
- Left rail panels (sensor grid, nuclear watch, risk gauges, space watch)
- Layer names and descriptions
- Map legend items
- Lower panels (news ticker, sweep delta, macro+markets, trade ideas)
- Right rail (OSINT stream)
- Badges and status indicators

Supported languages: English (default), French
Set CRUCIX_LANG=fr to switch to French
2026-03-18 21:43:57 +01:00

360 lines
12 KiB
JSON

{
"meta": {
"code": "en",
"name": "English",
"nativeName": "English"
},
"dashboard": {
"title": "CRUCIX — Intelligence Terminal",
"bootTitle": "CRUCIX INTELLIGENCE ENGINE",
"bootSubtitle": "Local Palantir · 31 Sources",
"waitingForSweep": "Waiting for first sweep...",
"sourcesOk": "Sources OK",
"lastSweep": "Last sweep",
"nextSweep": "Next sweep",
"sweep": "SWEEP",
"sources": "SOURCES",
"delta": "DELTA",
"highAlert": "HIGH ALERT",
"riskOff": "RISK-OFF",
"riskOn": "RISK-ON",
"mixed": "MIXED",
"terminalActive": "TERMINAL ACTIVE",
"perf": "PERF",
"perfLow": "LOW",
"perfHigh": "HIGH",
"guideBtn": "What Signals Mean"
},
"boot": {
"initializing": "INITIALIZING CRUCIX ENGINE v2.1.0",
"connecting": "CONNECTING {count} OSINT SOURCES...",
"sourceGroup1": "OPENSKY · FIRMS · KIWISDR · MARITIME",
"sourceGroup2": "FRED · BLS · EIA · TREASURY · GSCPI",
"sourceGroup3": "TELEGRAM · SAFECAST · EPA · WHO · OFAC",
"sourceGroup4": "GDELT · NOAA · PATENTS · BLUESKY · REDDIT",
"sourceGroup5": "USGS · ECB · CVE · COPERNICUS · CELESTRAK",
"sweepComplete": "SWEEP COMPLETE — {ok}/{total} SOURCES",
"ok": "OK",
"acledLayer": "ACLED CONFLICT LAYER",
"events": "EVENTS",
"degraded": "DEGRADED",
"flightCorridors": "FLIGHT CORRIDORS",
"active": "ACTIVE",
"dualProjection": "DUAL PROJECTION",
"ready": "READY",
"intelligenceSynthesis": "INTELLIGENCE SYNTHESIS"
},
"panels": {
"sensorGrid": "Sensor Grid",
"tradeIdeas": "Leverageable Ideas",
"osintFeed": "OSINT Feed",
"osintStream": "OSINT Stream",
"nuclearWatch": "Nuclear Watch",
"newsTicker": "Live News Ticker",
"sweepDelta": "Sweep Delta",
"macroMarkets": "Macro + Markets",
"healthAlerts": "Health Alerts",
"riskGauges": "Risk Gauges",
"crossSourceSignals": "Cross-Source Signals",
"signalCore": "Signal Core",
"seismicWatch": "Seismic Watch",
"cyberWatch": "Cyber Watch",
"spaceWatch": "Space Watch",
"europeAlerts": "Europe Alerts",
"ecbIndicators": "ECB Indicators"
},
"layers": {
"airActivity": "Air Activity",
"thermalSpikes": "Thermal Spikes",
"sdrCoverage": "SDR Coverage",
"maritimeWatch": "Maritime Watch",
"nuclearSites": "Nuclear Sites",
"conflictEvents": "Conflict Events",
"healthWatch": "Health Watch",
"worldNews": "World News",
"osintFeed": "OSINT Feed",
"theaters": "theaters",
"nightDet": "night det.",
"online": "online",
"chokepoints": "chokepoints",
"monitors": "monitors",
"fatalities": "fatalities",
"whoAlerts": "WHO alerts",
"rssGeolocated": "RSS geolocated",
"earthquakes": "Earthquakes",
"seismicEvents": "Seismic Events",
"cyberVulns": "Cyber Vulnerabilities",
"spaceActivity": "Space Activity",
"europeEmergency": "Europe Emergency"
},
"map": {
"worldNews": "World News",
"healthAlert": "Health Alert",
"chokepoint": "Chokepoint",
"nuclearSite": "Nuclear Site",
"osintEvent": "OSINT Event",
"thermalDetection": "Thermal Detection",
"aircraft": "Aircraft",
"rssGeolocated": "RSS geolocated",
"airTraffic": "Air Traffic",
"thermalFire": "Thermal/Fire",
"conflict": "Conflict",
"sdrReceiver": "SDR Receiver",
"scrollToZoom": "SCROLL TO ZOOM · DRAG TO PAN",
"globeMode": "GLOBE MODE",
"flatMode": "FLAT MODE",
"earthquake": "Earthquake",
"disaster": "Disaster",
"weatherAlert": "Weather Alert",
"epaRadNet": "EPA RadNet",
"spaceStation": "Space Station",
"gdeltEvent": "GDELT Event"
},
"ideas": {
"confidence": "Confidence",
"horizon": "Horizon",
"risk": "Risk",
"signals": "Signals",
"rationale": "Rationale",
"aiEnhanced": "AI ENHANCED",
"llmOff": "LLM OFF",
"pending": "PENDING",
"llmNotConfigured": "LLM NOT CONFIGURED",
"llmHelp": "Set LLM_PROVIDER + credentials in .env to enable AI-powered trade ideas",
"disclosure": "FOR INFORMATIONAL PURPOSES ONLY. This is not financial advice, a recommendation to buy or sell any security, or a solicitation of any kind. All signal-based observations are derived from publicly available OSINT data and should not be relied upon for investment decisions. Consult a licensed financial advisor before making any investment. Past performance does not guarantee future results."
},
"regions": {
"world": "World",
"americas": "Americas",
"europe": "Europe",
"middleEast": "Middle East",
"asiaPacific": "Asia Pacific",
"africa": "Africa"
},
"badges": {
"radiation": "RADIATION",
"live": "LIVE",
"delayed": "DELAYED",
"items": "ITEMS",
"urgent": "URGENT",
"worldview": "WORLDVIEW",
"hotMetrics": "HOT METRICS",
"stress": "STRESS",
"sweeping": "SWEEPING...",
"europe": "EUROPE",
"orbital": "ORBITAL"
},
"delta": {
"baseline": "BASELINE",
"escalation": "ESCALATION",
"deescalation": "DE-ESCALATION",
"stable": "STABLE",
"newSignals": "New Signals",
"resolved": "Resolved",
"noChanges": "No changes since last sweep",
"changes": "Changes",
"critical": "Critical",
"new": "NEW"
},
"metrics": {
"wtiCrude": "WTI Crude",
"brent": "Brent",
"natGas": "Nat Gas",
"vix": "VIX",
"fedFunds": "Fed Funds",
"gscpi": "GSCPI",
"cpiMom": "CPI MoM",
"unemployment": "Unemployment",
"hySpread": "HY Spread",
"usdIndex": "USD Index",
"joblessClaims": "Jobless Claims",
"mortgage30y": "30Y Mortgage",
"m2Supply": "M2 Supply",
"natDebt": "Nat. Debt",
"wti5day": "WTI 5-DAY",
"indexes": "INDEXES",
"crypto": "CRYPTO",
"energyMacro": "ENERGY + MACRO",
"vsPrior": "vs prior",
"ecbRate": "ECB Rate",
"eurusd": "EUR/USD",
"euM3": "EU M3",
"euHicp": "EU HICP",
"earthquakes7d": "Earthquakes (7d)",
"criticalCves": "Critical CVEs",
"spaceObjects": "Space Objects",
"starlink": "Starlink",
"europeAlerts": "EU Alerts"
},
"signalMetrics": {
"incidentTempo": "Incident Tempo",
"airTheaters": "Air Theaters",
"thermalSpikes": "Thermal Spikes",
"sdrNodes": "SDR Nodes",
"chokepoints": "Chokepoints",
"whoAlerts": "WHO Alerts"
},
"nuclear": {
"allSitesNormal": "ALL SITES NORMAL",
"anomalyDetected": "ANOMALY DETECTED",
"noData": "No data"
},
"seismic": {
"noRecentQuakes": "NO SIGNIFICANT QUAKES",
"majorQuake": "MAJOR QUAKE DETECTED",
"tsunamiRisk": "TSUNAMI RISK",
"mag": "M"
},
"cyber": {
"noAlerts": "NO CRITICAL CVES",
"criticalAlert": "CRITICAL VULNERABILITIES",
"cvss": "CVSS",
"critical": "CRITICAL"
},
"space": {
"noActivity": "NORMAL ACTIVITY",
"launchDetected": "LAUNCH ACTIVITY",
"objectsTracked": "objects tracked",
"newLast30d": "new (30d)",
"satellites": "sats",
"recentLaunches": "Recent Launches",
"totalTracked": "Total Tracked",
"byCountry": "BY COUNTRY",
"constellations": "CONSTELLATIONS",
"launches": "launches"
},
"europe": {
"noAlerts": "NO ACTIVE ALERTS",
"activeAlerts": "ACTIVE ALERTS",
"fires": "Fires",
"floods": "Floods",
"types": "types"
},
"time": {
"justNow": "just now",
"hoursAgo": "{hours}h ago",
"daysAgo": "{days}d ago"
},
"bot": {
"commands": {
"status": "Get current system health, last sweep time, source status",
"sweep": "Trigger a manual sweep cycle",
"brief": "Get a compact text summary of the latest intelligence",
"portfolio": "Show current positions and P&L (if Alpaca connected)",
"alerts": "Show recent alert history",
"mute": "Mute alerts for 1h (or /mute 2h, /mute 4h)",
"unmute": "Resume alerts",
"help": "Show available commands"
},
"messages": {
"alertsMuted": "🔇 Alerts muted for {hours}h — until {time} UTC",
"useUnmute": "Use /unmute to resume.",
"alertsResumed": "🔔 Alerts resumed. You'll receive the next signal evaluation.",
"sweepTriggered": "🚀 Manual sweep triggered. You'll receive alerts if anything significant is detected.",
"sweepInProgress": "🔄 Sweep already in progress. Please wait.",
"noDataYet": "⏳ No data yet — waiting for first sweep to complete.",
"noRecentAlerts": "No recent alerts.",
"recentAlerts": "📋 Recent Alerts (last {count})",
"commandsTip": "Tip: Commands are case-insensitive",
"commandFailed": "❌ Command failed: {error}",
"portfolioNotAvailable": "📊 Portfolio integration requires Alpaca MCP connection.\nUse the Crucix dashboard or Claude agent for portfolio queries."
},
"status": {
"title": "🖥️ CRUCIX STATUS",
"uptime": "Uptime",
"lastSweep": "Last sweep",
"nextSweep": "Next sweep",
"sweepInProgress": "Sweep in progress",
"yes": "🔄 Yes",
"no": "⏸️ No",
"sources": "Sources",
"failed": "failed",
"llm": "LLM",
"enabled": "✅",
"disabled": "❌ Disabled",
"sseClients": "SSE clients",
"dashboard": "Dashboard",
"pending": "pending",
"never": "never"
},
"brief": {
"title": "📋 CRUCIX BRIEF",
"direction": "Direction",
"changes": "changes",
"criticalChanges": "critical",
"osint": "📡 OSINT",
"urgentSignals": "urgent signals",
"totalPosts": "total posts",
"topIdeas": "💡 Top Ideas"
},
"alertTiers": {
"flash": "FLASH",
"priority": "PRIORITY",
"routine": "ROUTINE"
}
},
"alerts": {
"tiers": {
"flash": {
"label": "FLASH",
"description": "Immediate action required — market-moving, time-critical"
},
"priority": {
"label": "PRIORITY",
"description": "Important signal cluster — act within hours"
},
"routine": {
"label": "ROUTINE",
"description": "Noteworthy change — FYI, no urgency"
}
},
"confidence": {
"high": "HIGH",
"medium": "MEDIUM",
"low": "LOW"
},
"fields": {
"direction": "Direction",
"confidence": "Confidence",
"crossCorrelation": "Cross-Correlation",
"action": "Action",
"signals": "Signals",
"monitor": "Monitor"
},
"messages": {
"alertsMuted": "Alerts Muted",
"mutedUntil": "Alerts silenced for {hours}h — until {time} UTC.",
"useUnmuteToResume": "Use /unmute to resume.",
"alertsResumed": "Alerts Resumed",
"willReceiveNext": "You will receive the next signal evaluation."
},
"ruleBasedHeadlines": {
"nuclearAnomaly": "Nuclear Anomaly Detected",
"crossDomainSignals": "{count} Critical Cross-Domain Signals",
"escalatingSignals": "{count} Escalating Signals",
"osintSurge": "OSINT Surge: {count} New Urgent Posts",
"signalChangeDetected": "Signal Change Detected"
}
},
"discord": {
"commands": {
"status": "System health, last sweep time, source status",
"sweep": "Trigger a manual sweep cycle",
"brief": "Compact intelligence summary",
"portfolio": "Portfolio status (if Alpaca connected)",
"alerts": "Recent alert history",
"mute": "Mute alerts (default 1h)",
"unmute": "Resume alerts",
"muteHoursOption": "Hours to mute (default: 1)"
}
},
"llm": {
"systemPrompt": "You are a quantitative analyst at a macro intelligence firm. You receive structured OSINT + economic data from 25 sources and produce 5-8 actionable trade ideas.\n\nRules:\n- Each idea must cite specific data points from the input\n- Include entry rationale, risk factors, and time horizon\n- Blend geopolitical, economic, and market signals — cross-correlate across domains\n- Be specific: name instruments (tickers, futures, ETFs), not vague sectors\n- If delta shows significant changes, lead with those\n- Do NOT repeat ideas from the \"previous ideas\" list unless conditions have materially changed\n- Rate confidence: HIGH (multiple confirming signals), MEDIUM (thesis supported), LOW (speculative)\n\nOutput ONLY valid JSON array. Each object:\n{\n \"title\": \"Short title (max 10 words)\",\n \"type\": \"LONG|SHORT|HEDGE|WATCH|AVOID\",\n \"ticker\": \"Primary instrument\",\n \"confidence\": \"HIGH|MEDIUM|LOW\",\n \"rationale\": \"2-3 sentence explanation citing specific data\",\n \"risk\": \"Key risk factor\",\n \"horizon\": \"Intraday|Days|Weeks|Months\",\n \"signals\": [\"signal1\", \"signal2\"]\n}"
},
"api": {
"errors": {
"noDataYet": "No data yet — first sweep in progress"
}
}
}