signal-batch/frontend/src/i18n/en.ts
htlee 5e6fdff787 feat: DataPipeline 일별 차트 시각화 개선 — Stacked Bar + Duration Bar
- 백엔드 daily-stats SQL 재설계: Job별 writeCount, execCount, avgDuration 반환
- vesselJobs 항상 0 버그 수정 (vesselAggregation 매칭 실패 → Job별 분리 구조)
- BarChart 다중 Series 지원 (stacked/grouped) + yFormatter
- DataPipeline: LineChart 1개 → Stacked Bar(처리건수) + Grouped Bar(소요시간) 2열 grid
- formatDuration null/undefined 가드 추가 (NaNh 표시 버그 수정)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 12:27:52 +09:00

185 lines
6.1 KiB
TypeScript

const en = {
// Navigation
'nav.dashboard': 'Dashboard',
'nav.jobs': 'Job Monitor',
'nav.pipeline': 'Pipeline',
'nav.apiExplorer': 'API Explorer',
'nav.abnormal': 'Abnormal',
'nav.areaStats': 'Area Stats',
'nav.metrics': 'Metrics',
// Common
'common.loading': 'Loading...',
'common.noData': 'No data available',
'common.close': 'Close',
'common.prev': 'Prev',
'common.next': 'Next',
'common.items': '',
'common.of': 'of',
'common.day': 'd',
'common.min': 'min',
'common.sec': 'sec',
'common.themeToggle': 'Toggle theme',
'common.langToggle': 'Switch language',
// Dashboard
'dashboard.title': 'Dashboard',
'dashboard.totalExec': 'Total Executions',
'dashboard.successRate': 'Success Rate',
'dashboard.avgDuration': 'Avg Duration',
'dashboard.totalProcessed': 'Total Processed',
'dashboard.periodBasis': 'd basis',
'dashboard.avgPerJob': '/job avg',
'dashboard.runningJobs': 'Running Jobs',
'dashboard.noRunningJobs': 'No running jobs',
'dashboard.delay': 'Processing Delay',
'dashboard.delayMin': 'min delay',
'dashboard.aisLatest': 'AIS Latest',
'dashboard.processLatest': 'Process Latest',
'dashboard.aisReceived': 'AIS Received',
'dashboard.vesselsProcessed': 'Vessels Processed',
'dashboard.systemMetrics': 'System Metrics',
'dashboard.memory': 'Memory',
'dashboard.threads': 'Threads',
'dashboard.dbConn': 'DB Connections',
'dashboard.recordsSec': 'Records/sec',
'dashboard.cacheStatus': 'Cache Status',
'dashboard.hitRate': 'Hit Rate',
'dashboard.size': 'Size',
'dashboard.hits': 'Hits',
'dashboard.misses': 'Misses',
'dashboard.dailyVolume': 'Daily Processing Volume',
// Job Monitor
'jobs.title': 'Job Monitor',
'jobs.all': 'All',
'jobs.track5min': 'Track (5min)',
'jobs.hourly': 'Hourly',
'jobs.daily': 'Daily',
'jobs.status': 'Status',
'jobs.job': 'Job',
'jobs.id': 'ID',
'jobs.start': 'Start',
'jobs.duration': 'Duration',
'jobs.read': 'Read',
'jobs.write': 'Write',
'jobs.skip': 'Skip',
'jobs.stepDetails': 'Step Details',
'jobs.step': 'Step',
'jobs.commits': 'Commits',
'jobs.errors': 'Errors',
// Pipeline
'pipeline.title': 'Data Pipeline',
'pipeline.flowTitle': 'Processing Flow',
'pipeline.collect1min': '1min Collect',
'pipeline.aggregate5min': '5min Aggregate',
'pipeline.mergeHourly': 'Hourly Merge',
'pipeline.mergeDaily': 'Daily Merge',
'pipeline.executions': ' executions',
'pipeline.totalTime': 'total time',
'pipeline.processingDelay': 'Processing Delay',
'pipeline.delayMin': 'min delay',
'pipeline.aisLatest': 'AIS Latest',
'pipeline.processLatest': 'Process Latest',
'pipeline.cacheOverview': 'Cache Overview',
'pipeline.cachedDays': ' days cached',
'pipeline.totalHitRate': 'Total Hit Rate',
'pipeline.writeByJob': 'Write Count by Job',
'pipeline.durationByJob': 'Avg Duration by Job',
'pipeline.recentJobs': 'Recent Executions',
'pipeline.totalExec': 'Total Executions',
'pipeline.totalRecords': 'Total Records',
'pipeline.avgDuration': 'Avg Duration',
'pipeline.successRate': 'success rate',
// Area Stats
'area.title': 'Area Statistics',
'area.activeHaegu': 'Active Areas',
'area.activeHaeguDesc': 'Areas with vessels',
'area.totalVessels': 'Total Vessels',
'area.dataQuality': 'Data Quality',
'area.avgDensity': 'Avg Density',
'area.haeguStats': 'Area Status',
'area.haeguNo': 'Area No.',
'area.haeguName': 'Area Name',
'area.currentVessels': 'Vessels',
'area.avgSpeed': 'Avg Speed',
'area.avgDensityCol': 'Avg Density',
'area.lastUpdate': 'Last Update',
'area.throughput': 'Throughput',
'area.vesselsPerMin': 'vessels/min',
'area.vesselsPerHour': 'vessels/hour',
'area.tableSizes': 'Table Sizes',
'area.dataQualityTitle': 'Data Quality Check',
'area.duplicates': 'Duplicate Tracks',
'area.stalePositions': 'Stale Positions',
'area.checkedAt': 'Checked at',
'area.haeguMap': 'Vessel Distribution by Area',
'area.mapLegend': 'Vessels',
'area.vessels': ' vessels',
// API Explorer
'explorer.title': 'API Explorer',
'explorer.apiType': 'API Type',
'explorer.recentPositions': 'Recent Positions',
'explorer.vesselTracks': 'Vessel Tracks',
'explorer.viewportReplay': 'Viewport Replay',
'explorer.areaSearch': 'Area Track Analysis',
'explorer.stsAnalysis': 'STS Contact Analysis',
'explorer.parameters': 'Parameters',
'explorer.positionsDesc': 'Fetches vessels with position updates within 10 minutes.',
'explorer.vesselDesc': 'Fetches tracks for specific vessels by MMSI list.',
// Abnormal Tracks
'abnormal.title': 'Abnormal Tracks',
'abnormal.totalDetected': 'Total Detected',
'abnormal.last7days': 'Last 7 days',
'abnormal.affectedVessels': 'Affected Vessels',
'abnormal.typeCount': 'Type Count',
'abnormal.maxSpeed': 'Max Speed',
'abnormal.byType': 'By Type',
'abnormal.allTypes': 'All',
'abnormal.vessels': ' vessels',
'abnormal.dailyTrend': 'Daily Trend',
'abnormal.recentList': 'Recent Detections',
'abnormal.type': 'Type',
'abnormal.time': 'Time',
'abnormal.distance': 'Distance',
'abnormal.avgSpeedCol': 'Avg Speed',
'abnormal.maxSpeedCol': 'Max Speed',
'abnormal.points': 'Points',
// Metrics
'metrics.title': 'System Metrics',
'metrics.heapMemory': 'Heap Memory',
'metrics.threads': 'Threads',
'metrics.dbActive': 'DB Active Conn.',
'metrics.recordsPerSec': 'Records/sec',
'metrics.cacheDetail': 'Cache Details',
'metrics.cacheLayer': 'Cache Layer',
'metrics.size': 'Size',
'metrics.maxSize': 'Max',
'metrics.utilization': 'Utilization',
'metrics.hitRate': 'Hit Rate',
'metrics.processingDelay': 'Processing Delay',
'metrics.delayMinutes': 'Delay',
'metrics.aisCount': 'AIS Received',
'metrics.processedVessels': 'Processed',
'metrics.status': 'Status',
'metrics.cacheHitSummary': 'Cache Hit Summary',
'metrics.hits': 'Hits',
'metrics.misses': 'Misses',
'metrics.dbMetricsPlaceholder': 'API/WS History Metrics (Coming Soon)',
'metrics.dbMetricsDesc': 'REST/WebSocket request history, response sizes, latency DB storage + query',
// Time Range
'range.1d': '1D',
'range.3d': '3D',
'range.7d': '7D',
'range.14d': '14D',
'range.30d': '30D',
} as const
export default en