Files
drone-detector/client/src/utils/tempTranslations.js
2025-09-19 14:35:02 +02:00

707 lines
23 KiB
JavaScript

// Temporary translation system until Docker rebuild
const translations = {
en: {
navigation: {
dashboard: 'Dashboard',
detections: 'Detections',
devices: 'Devices',
alerts: 'Alerts',
settings: 'Settings',
logout: 'Logout',
map: 'Map View'
},
dashboard: {
title: 'System Overview',
online: 'Online',
offline: 'Offline',
inactive: 'Inactive',
recentDetections: 'Recent Detections',
systemHealth: 'System Health',
connectedDevices: 'Connected Devices',
activeAlerts: 'Active Alerts',
totalDetections: 'Total Detections',
noData: 'No data available',
loading: 'Loading...',
refreshData: 'Refresh Data',
notificationsEnabled: 'Notifications Enabled',
notificationsDisabled: 'Notifications Disabled',
detectionHistory: 'Detection History',
deviceStatus: 'Device Status',
deviceActivity: 'Device Activity',
deviceActivity24h: 'Device Activity (24h)',
detectionsTimeline24h: 'Detections Timeline (24h)',
lastHour: 'Last Hour',
last24Hours: 'Last 24 Hours',
thisWeek: 'This Week',
connected: 'Connected',
disconnected: 'Disconnected',
healthy: 'Healthy',
warning: 'Warning',
critical: 'Critical',
operational: 'Operational',
maintenance: 'Maintenance',
failed: 'Failed',
pending: 'Pending',
approved: 'Approved',
rejected: 'Rejected',
active: 'Active',
disabled: 'Disabled',
statistics: 'Statistics',
overview: 'Overview',
summary: 'Summary',
quickStats: 'Quick Statistics',
systemOverview: 'System Overview',
recentActivity: 'Recent Activity',
liveDetections: 'Live Detections',
live: 'Live',
noRecentActivity: 'No recent activity',
noRecentDetections: 'No recent detections',
droneDetected: 'Drone detected',
heartbeatFrom: 'Heartbeat from',
movementTracking: 'Movement Tracking',
criticalAlerts: 'Critical Alerts',
veryCloseApproaches: 'Very close approaches',
highPriority: 'High Priority',
approachingDrones: 'Approaching drones',
mediumPriority: 'Medium Priority',
movementChanges: 'Movement changes',
totalTracked: 'Total Tracked',
events: 'events',
lastAlert: 'Last Alert',
none: 'None'
},
detections: {
title: 'Drone Detections',
description: 'History of all drone detections from your devices',
noDetections: 'No detections found',
loading: 'Loading detections...',
timestamp: 'Timestamp',
type: 'Type',
confidence: 'Confidence',
location: 'Location',
device: 'Device',
actions: 'Actions',
searchPlaceholder: 'Search detections...',
filterByType: 'Filter by type',
filterByDevice: 'Filter by device',
exportData: 'Export Data',
viewDetails: 'View Details',
showOnMap: 'Show on Map',
highConfidence: 'High Confidence',
mediumConfidence: 'Medium Confidence',
lowConfidence: 'Low Confidence'
},
devices: {
title: 'All Devices',
description: 'Manage your UAM-ILS detection devices',
noDevices: 'No devices',
noDevicesDescription: 'Get started by adding your first drone detection device.',
loading: 'Loading devices...',
name: 'Name',
status: 'Status',
lastSeen: 'Last Seen',
location: 'Location',
actions: 'Actions',
addDevice: 'Add Device',
editDevice: 'Edit Device',
deleteDevice: 'Delete Device',
deviceDetails: 'Device Details',
batteryLevel: 'Battery Level',
signalStrength: 'Signal Strength',
firmware: 'Firmware',
ipAddress: 'IP Address',
macAddress: 'MAC Address',
approved: 'Approved',
pending: 'Pending',
pendingApproval: 'pending approval',
allDevices: 'All Devices',
pendingApprovalTab: 'Pending Approval',
needsApproval: 'Needs Approval',
approval: 'Approval',
deviceId: 'Device ID',
coordinates: 'Coordinates',
signal: 'Signal',
detections24h: 'Detections (24h)',
approveDevice: 'Approve Device',
reject: 'Reject',
viewDetails: 'View Details',
viewOnMap: 'View on Map',
noDevicesFiltered: 'No devices match the current filter.',
noDevicesPending: 'No devices are currently pending approval.',
noDevicesApproved: 'No devices have been approved yet.',
device: 'Device',
unknown: 'Unknown',
online: 'Online',
offline: 'Offline',
inactive: 'Inactive',
confirmReject: 'Are you sure you want to reject this device?',
errorRejecting: 'Error rejecting device:',
errorDeleting: 'Error deleting device:',
confirmDelete: 'Are you sure you want to delete this device? This action cannot be undone.',
signalStrong: 'Strong',
signalGood: 'Good',
signalWeak: 'Weak',
signalLost: 'Lost'
},
alerts: {
title: 'Alert Management',
description: 'Configure and manage detection alerts',
noAlerts: 'No alerts found',
loading: 'Loading alerts...',
type: 'Type',
priority: 'Priority',
status: 'Status',
created: 'Created',
actions: 'Actions',
createAlert: 'Create Alert',
editAlert: 'Edit Alert',
deleteAlert: 'Delete Alert',
alertName: 'Alert Name',
alertDescription: 'Description',
triggerConditions: 'Trigger Conditions',
notificationSettings: 'Notification Settings',
emailNotifications: 'Email Notifications',
smsNotifications: 'SMS Notifications',
webhookUrl: 'Webhook URL',
highPriority: 'High Priority',
mediumPriority: 'Medium Priority',
lowPriority: 'Low Priority',
active: 'Active',
inactive: 'Inactive',
totalAlerts24h: 'Total Alerts (24h)',
sentSuccessfully: 'Sent Successfully',
failed: 'Failed',
pending: 'Pending',
alertRules: 'Alert Rules',
alertLogs: 'Alert Logs',
noAlertRules: 'No alert rules',
noAlertRulesDescription: 'Get started by creating your first alert rule.',
createAlertRule: 'Create Alert Rule',
noAlertLogs: 'No alert logs',
noAlertLogsDescription: 'Alert logs will appear here when alerts are triggered.',
name: 'Name',
channels: 'Channels',
conditions: 'Conditions',
edit: 'Edit',
delete: 'Delete',
recipient: 'Recipient',
rule: 'Rule',
detection: 'Detection',
message: 'Message',
sentAt: 'Sent At',
viewDetails: 'View Details',
unknownRule: 'Unknown Rule',
na: 'N/A',
minDetections: 'Min detections',
timeWindow: 'Time window',
cooldown: 'Cooldown',
minThreat: 'Min threat',
droneTypes: 'Drone types',
consumer: 'Consumer',
orlan: 'Orlan',
professional: 'Professional',
racing: 'Racing',
unknown: 'Unknown',
critical: 'Critical',
high: 'High',
medium: 'Medium',
low: 'Low'
},
settings: {
title: 'Settings',
description: 'Configure your account and system preferences',
profile: 'Profile',
notifications: 'Notifications',
system: 'System',
account: 'Account Settings',
security: 'Security Settings',
preferences: 'Preferences',
language: 'Language',
timezone: 'Timezone',
emailSettings: 'Email Settings',
passwordSettings: 'Password Settings',
twoFactorAuth: 'Two-Factor Authentication',
apiKeys: 'API Keys',
dataRetention: 'Data Retention',
exportData: 'Export Data',
deleteAccount: 'Delete Account',
loading: 'Loading settings...',
accessDenied: 'Access Denied',
accessDeniedMessage: "You don't have permission to access tenant settings.",
general: 'General',
branding: 'Branding',
authentication: 'Authentication',
users: 'Users',
generalInformation: 'General Information',
tenantName: 'Tenant Name',
tenantId: 'Tenant ID',
authenticationProvider: 'Authentication Provider',
companyName: 'Company Name',
logoUrl: 'Or enter logo URL manually',
primaryColor: 'Primary Color',
secondaryColor: 'Secondary Color',
save: 'Save',
saving: 'Saving...',
saveBranding: 'Save Branding',
saveChanges: 'Save Changes',
brandingUpdated: 'Branding updated successfully',
brandingUpdateFailed: 'Failed to update branding',
securityUpdated: 'Security settings updated successfully',
securityUpdateFailed: 'Failed to update security settings'
},
auth: {
login: 'Login',
logout: 'Logout',
username: 'Username',
password: 'Password',
email: 'Email',
confirmPassword: 'Confirm Password',
forgotPassword: 'Forgot Password?',
signIn: 'Sign In',
signUp: 'Sign Up',
register: 'Register',
signingIn: 'Signing in...',
registering: 'Creating account...',
rememberMe: 'Remember me',
createAccount: 'Create Account',
alreadyHaveAccount: 'Already have an account?',
dontHaveAccount: "Don't have an account?",
resetPassword: 'Reset Password',
backToLogin: 'Back to Login'
},
map: {
title: 'Map View',
description: 'Real-time detection locations and device status',
loading: 'Loading map...',
noDetections: 'No detections to display',
deviceLocation: 'Device Location',
detectionLocation: 'Detection Location',
lastDetection: 'Last Detection',
deviceOnline: 'Device Online',
deviceOffline: 'Device Offline',
zoomToLocation: 'Zoom to Location',
showAllDevices: 'Show All Devices',
showDetections: 'Show Detections',
filterByTime: 'Filter by Time',
realTimeUpdates: 'Real-time Updates'
},
app: {
title: 'UAM-ILS Drone Detection System',
subtitle: 'Real-time Drone Monitoring',
connectionStatus: 'Connection Status',
connected: 'Connected',
disconnected: 'Disconnected',
systemStatus: 'System Status',
online: 'Online',
offline: 'Offline'
},
common: {
loading: 'Loading...',
error: 'Error',
success: 'Success',
warning: 'Warning',
info: 'Information',
cancel: 'Cancel',
save: 'Save',
delete: 'Delete',
edit: 'Edit',
view: 'View',
close: 'Close',
refresh: 'Refresh',
search: 'Search',
filter: 'Filter',
export: 'Export',
import: 'Import',
add: 'Add',
remove: 'Remove',
update: 'Update',
confirm: 'Confirm',
yes: 'Yes',
no: 'No',
ok: 'OK',
apply: 'Apply',
reset: 'Reset',
clear: 'Clear',
all: 'All',
none: 'None',
selected: 'Selected',
total: 'Total',
page: 'Page',
of: 'of',
previous: 'Previous',
next: 'Next',
first: 'First',
last: 'Last',
date: 'Date',
time: 'Time',
status: 'Status',
type: 'Type',
name: 'Name',
description: 'Description',
actions: 'Actions'
}
},
sv: {
navigation: {
dashboard: 'Översikt',
detections: 'Detekteringar',
devices: 'Enheter',
alerts: 'Larm',
settings: 'Inställningar',
logout: 'Logga ut',
map: 'Kartvy'
},
dashboard: {
title: 'Systemöversikt',
online: 'Online',
offline: 'Offline',
inactive: 'Inaktiv',
recentDetections: 'Senaste detekteringar',
systemHealth: 'Systemhälsa',
connectedDevices: 'Anslutna enheter',
activeAlerts: 'Aktiva larm',
totalDetections: 'Totala detekteringar',
noData: 'Ingen data tillgänglig',
loading: 'Laddar...',
refreshData: 'Uppdatera data',
notificationsEnabled: 'Aviseringar aktiverade',
notificationsDisabled: 'Aviseringar inaktiverade',
detectionHistory: 'Detekteringshistorik',
deviceStatus: 'Enhetsstatus',
deviceActivity: 'Enhetsaktivitet',
deviceActivity24h: 'Enhetsaktivitet (24h)',
detectionsTimeline24h: 'Detekteringshistorik (24h)',
lastHour: 'Senaste timmen',
last24Hours: 'Senaste 24 timmarna',
thisWeek: 'Denna vecka',
connected: 'Ansluten',
disconnected: 'Frånkopplad',
healthy: 'Frisk',
warning: 'Varning',
critical: 'Kritisk',
operational: 'Operativ',
maintenance: 'Underhåll',
failed: 'Misslyckad',
pending: 'Väntar',
approved: 'Godkänd',
rejected: 'Avvisad',
active: 'Aktiv',
disabled: 'Inaktiverad',
statistics: 'Statistik',
overview: 'Översikt',
summary: 'Sammanfattning',
quickStats: 'Snabbstatistik',
systemOverview: 'Systemöversikt',
recentActivity: 'Senaste aktivitet',
liveDetections: 'Live-detekteringar',
live: 'Live',
noRecentActivity: 'Ingen senaste aktivitet',
noRecentDetections: 'Inga senaste detekteringar',
droneDetected: 'Drönare detekterad',
heartbeatFrom: 'Heartbeat från',
movementTracking: 'Rörelsespårning',
criticalAlerts: 'Kritiska larm',
veryCloseApproaches: 'Mycket nära närmanden',
highPriority: 'Hög prioritet',
approachingDrones: 'Närmande drönare',
mediumPriority: 'Medel prioritet',
movementChanges: 'Rörelseförändringar',
totalTracked: 'Totalt spårade',
events: 'händelser',
lastAlert: 'Senaste larm',
none: 'Ingen'
},
detections: {
title: 'Drönaredetekteringar',
description: 'Historik över alla drönaredetekteringar från dina enheter',
noDetections: 'Inga detekteringar hittades',
loading: 'Laddar detekteringar...',
timestamp: 'Tidsstämpel',
type: 'Typ',
confidence: 'Säkerhet',
location: 'Plats',
device: 'Enhet',
actions: 'Åtgärder',
searchPlaceholder: 'Sök detekteringar...',
filterByType: 'Filtrera efter typ',
filterByDevice: 'Filtrera efter enhet',
exportData: 'Exportera data',
viewDetails: 'Visa detaljer',
showOnMap: 'Visa på karta',
highConfidence: 'Hög säkerhet',
mediumConfidence: 'Medel säkerhet',
lowConfidence: 'Låg säkerhet'
},
devices: {
title: 'Alla enheter',
description: 'Hantera dina UAM-ILS detekteringsenheter',
noDevices: 'Inga enheter',
noDevicesDescription: 'Kom igång genom att lägga till din första drönaredetekteringsenhet.',
loading: 'Laddar enheter...',
name: 'Namn',
status: 'Status',
lastSeen: 'Senast sedd',
location: 'Plats',
actions: 'Åtgärder',
addDevice: 'Lägg till enhet',
editDevice: 'Redigera enhet',
deleteDevice: 'Ta bort enhet',
deviceDetails: 'Enhetsdetaljer',
batteryLevel: 'Batterinivå',
signalStrength: 'Signalstyrka',
firmware: 'Firmware',
ipAddress: 'IP-adress',
macAddress: 'MAC-adress',
approved: 'Godkänd',
pending: 'Väntande',
pendingApproval: 'väntande godkännande',
allDevices: 'Alla enheter',
pendingApprovalTab: 'Väntande godkännande',
needsApproval: 'Behöver godkännande',
approval: 'Godkännande',
deviceId: 'Enhets-ID',
coordinates: 'Koordinater',
signal: 'Signal',
detections24h: 'Detekteringar (24h)',
approveDevice: 'Godkänn enhet',
reject: 'Avvisa',
viewDetails: 'Visa detaljer',
viewOnMap: 'Visa på karta',
noDevicesFiltered: 'Inga enheter matchar det aktuella filtret.',
noDevicesPending: 'Inga enheter väntar för närvarande på godkännande.',
noDevicesApproved: 'Inga enheter har godkänts än.',
device: 'Enhet',
unknown: 'Okänd',
online: 'Online',
offline: 'Offline',
inactive: 'Inaktiv',
confirmReject: 'Är du säker på att du vill avvisa denna enhet?',
errorRejecting: 'Fel vid avvisning av enhet:',
errorDeleting: 'Fel vid borttagning av enhet:',
confirmDelete: 'Är du säker på att du vill ta bort denna enhet? Denna åtgärd kan inte ångras.',
signalStrong: 'Stark',
signalGood: 'Bra',
signalWeak: 'Svag',
signalLost: 'Förlorad'
},
alerts: {
title: 'Larmhantering',
description: 'Konfigurera och hantera detekteringslarm',
noAlerts: 'Inga larm hittades',
loading: 'Laddar larm...',
type: 'Typ',
priority: 'Prioritet',
status: 'Status',
created: 'Skapad',
actions: 'Åtgärder',
createAlert: 'Skapa larm',
editAlert: 'Redigera larm',
deleteAlert: 'Ta bort larm',
alertName: 'Larmnamn',
alertDescription: 'Beskrivning',
triggerConditions: 'Utlösningsvillkor',
notificationSettings: 'Aviseringsinställningar',
emailNotifications: 'E-postaviseringar',
smsNotifications: 'SMS-aviseringar',
webhookUrl: 'Webhook URL',
highPriority: 'Hög prioritet',
mediumPriority: 'Medel prioritet',
lowPriority: 'Låg prioritet',
active: 'Aktiv',
inactive: 'Inaktiv',
totalAlerts24h: 'Totalt larm (24h)',
sentSuccessfully: 'Skickade framgångsrikt',
failed: 'Misslyckades',
pending: 'Väntande',
alertRules: 'Larmregler',
alertLogs: 'Larmloggar',
noAlertRules: 'Inga larmregler',
noAlertRulesDescription: 'Kom igång genom att skapa din första larmregel.',
createAlertRule: 'Skapa larmregel',
noAlertLogs: 'Inga larmloggar',
noAlertLogsDescription: 'Larmloggar kommer att visas här när larm utlöses.',
name: 'Namn',
channels: 'Kanaler',
conditions: 'Villkor',
edit: 'Redigera',
delete: 'Ta bort',
recipient: 'Mottagare',
rule: 'Regel',
detection: 'Detektion',
message: 'Meddelande',
sentAt: 'Skickat vid',
viewDetails: 'Visa detaljer',
unknownRule: 'Okänd regel',
na: 'Ej tillämpligt',
minDetections: 'Min detekteringar',
timeWindow: 'Tidsfönster',
cooldown: 'Nedkylning',
minThreat: 'Min hot',
droneTypes: 'Drönartyper',
consumer: 'Konsument',
orlan: 'Orlan',
professional: 'Professionell',
racing: 'Racing',
unknown: 'Okänd',
critical: 'Kritisk',
high: 'Hög',
medium: 'Medel',
low: 'Låg'
},
settings: {
title: 'Inställningar',
description: 'Konfigurera ditt konto och systempreferenser',
profile: 'Profil',
notifications: 'Aviseringar',
system: 'System',
account: 'Kontoinställningar',
security: 'Säkerhetsinställningar',
preferences: 'Preferenser',
language: 'Språk',
timezone: 'Tidszon',
emailSettings: 'E-postinställningar',
passwordSettings: 'Lösenordsinställningar',
twoFactorAuth: 'Tvåfaktorsautentisering',
apiKeys: 'API-nycklar',
dataRetention: 'Datalagring',
exportData: 'Exportera data',
deleteAccount: 'Ta bort konto',
loading: 'Laddar inställningar...',
accessDenied: 'Åtkomst nekad',
accessDeniedMessage: 'Du har inte behörighet att komma åt tenant-inställningar.',
general: 'Allmänt',
branding: 'Varumärke',
authentication: 'Autentisering',
users: 'Användare',
generalInformation: 'Allmän information',
tenantName: 'Tenant-namn',
tenantId: 'Tenant-ID',
authenticationProvider: 'Autentiseringsleverantör',
companyName: 'Företagsnamn',
logoUrl: 'Eller ange logotyp-URL manuellt',
primaryColor: 'Primärfärg',
secondaryColor: 'Sekundär färg',
save: 'Spara',
saving: 'Sparar...',
saveBranding: 'Spara varumärke',
saveChanges: 'Spara ändringar',
brandingUpdated: 'Varumärke uppdaterat framgångsrikt',
brandingUpdateFailed: 'Misslyckades med att uppdatera varumärke',
securityUpdated: 'Säkerhetsinställningar uppdaterade framgångsrikt',
securityUpdateFailed: 'Misslyckades med att uppdatera säkerhetsinställningar'
},
auth: {
login: 'Logga in',
logout: 'Logga ut',
username: 'Användarnamn',
password: 'Lösenord',
email: 'E-post',
confirmPassword: 'Bekräfta lösenord',
forgotPassword: 'Glömt lösenord?',
signIn: 'Logga in',
signUp: 'Registrera',
register: 'Registrera',
signingIn: 'Loggar in...',
registering: 'Skapar konto...',
rememberMe: 'Kom ihåg mig',
createAccount: 'Skapa konto',
alreadyHaveAccount: 'Har du redan ett konto?',
dontHaveAccount: 'Har du inget konto?',
resetPassword: 'Återställ lösenord',
backToLogin: 'Tillbaka till inloggning'
},
map: {
title: 'Kartvy',
description: 'Realtidsdetekteringsplatser och enhetsstatus',
loading: 'Laddar karta...',
noDetections: 'Inga detekteringar att visa',
deviceLocation: 'Enhetsplats',
detectionLocation: 'Detekteringsplats',
lastDetection: 'Senaste detektion',
deviceOnline: 'Enhet online',
deviceOffline: 'Enhet offline',
zoomToLocation: 'Zooma till plats',
showAllDevices: 'Visa alla enheter',
showDetections: 'Visa detekteringar',
filterByTime: 'Filtrera efter tid',
realTimeUpdates: 'Realtidsuppdateringar'
},
app: {
title: 'UAM-ILS Drönardetekteringssystem',
subtitle: 'Realtids drönarövervakning',
connectionStatus: 'Anslutningsstatus',
connected: 'Ansluten',
disconnected: 'Frånkopplad',
systemStatus: 'Systemstatus',
online: 'Online',
offline: 'Offline'
},
common: {
loading: 'Laddar...',
error: 'Fel',
success: 'Framgång',
warning: 'Varning',
info: 'Information',
cancel: 'Avbryt',
save: 'Spara',
delete: 'Ta bort',
edit: 'Redigera',
view: 'Visa',
close: 'Stäng',
refresh: 'Uppdatera',
search: 'Sök',
filter: 'Filtrera',
export: 'Exportera',
import: 'Importera',
add: 'Lägg till',
remove: 'Ta bort',
update: 'Uppdatera',
confirm: 'Bekräfta',
yes: 'Ja',
no: 'Nej',
ok: 'OK',
apply: 'Tillämpa',
reset: 'Återställ',
clear: 'Rensa',
all: 'Alla',
none: 'Inga',
selected: 'Valda',
total: 'Totalt',
page: 'Sida',
of: 'av',
previous: 'Föregående',
next: 'Nästa',
first: 'Första',
last: 'Sista',
date: 'Datum',
time: 'Tid',
status: 'Status',
type: 'Typ',
name: 'Namn',
description: 'Beskrivning',
actions: 'Åtgärder'
}
}
};
let currentLanguage = localStorage.getItem('language') || 'en';
export const t = (key) => {
const keys = key.split('.');
let value = translations[currentLanguage];
for (const k of keys) {
value = value?.[k];
}
return value || key;
};
export const changeLanguage = (lang) => {
currentLanguage = lang;
localStorage.setItem('language', lang);
// Trigger a page refresh to update all components
window.location.reload();
};
export const getCurrentLanguage = () => currentLanguage;