- 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
360 lines
12 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|