diff --git a/application/src/translations/index.ts b/application/src/translations/index.ts
index 8dd32234..92a01ba6 100644
--- a/application/src/translations/index.ts
+++ b/application/src/translations/index.ts
@@ -1,14 +1,16 @@
import enTranslations from './en';
+import plTranslations from './pl';
import kmTranslations from './km';
import deTranslations from './de';
import koTranslations from './ko';
import jaTranslations from './ja';
import zhcnTranslations from './zhcn';
-export type Language = "en" | "km" | "de" | "ko" | "ja" | "zhcn";
+export type Language = "en" | "pl" | "km" | "de" | "ko" | "ja" | "zhcn";
export const translations = {
en: enTranslations,
+ pl: plTranslations,
km: kmTranslations,
de: deTranslations,
ko: koTranslations,
diff --git a/application/src/translations/pl/about.ts b/application/src/translations/pl/about.ts
new file mode 100644
index 00000000..d03d0f7c
--- /dev/null
+++ b/application/src/translations/pl/about.ts
@@ -0,0 +1,34 @@
+
+import { AboutTranslations } from '../types/about';
+
+export const aboutTranslations: AboutTranslations = {
+ aboutCheckCle: "O Checkcle",
+ systemDescription: "Checkcle to oprogramowanie monitorujące o otwartym kodzie źródłowym, oferują wgląd w czasie rzeczywistym w stan serwerów i usług, zarządzanie incydentami oraz przejrzystość operacyjną. Udostępniony na licencji MIT.",
+ systemVersion: "Wersja systemu",
+ license: "Licencja",
+ mitLicense: "MIT License",
+ links: "Linki",
+ viewOnGithub: "Zobacz projekt na GitHub",
+ viewDocumentation: "Zobacz dokumentację",
+ followOnX: "Obserwuj na X",
+ joinDiscord: "Dołącz do Discord-a",
+ quickActions: "Szybkie Akcje",
+ quickActionsDescription: "Szybki dostęp do typowych operacji i funkcji monitorowania. Wybierz działanie poniżej, aby rozpocząć.",
+ quickTips: "Szybkie wskazówki",
+ releasedOn: "Wydano dnia",
+ updateSchema: "Aktualizuj schemat",
+ updateSchemaDesc: "Schemat automatycznego importowania kolekcji",
+ mergeFieldsLabel: "Scalanie pól z istniejącymi zbiorami (bezpieczne – zachowuje dane)",
+ importing: "Importowanie...",
+ clickToUpdateSchema: "Kliknij, aby zaktualizować schemat",
+ importSuccessful: "Import zakończony sukcesem",
+ importFailed: "Import nie powiódł się",
+ instructions: "Instrukcje",
+ mergeFields: "Połącz pola",
+ instructionsMergeFields: "Bezpieczne dodawanie nowych pól do istniejących kolekcji, z zachowaniem wszystkich danych",
+ instructionsCollections: "Kolekcje systemowe (rozpoczynające się od _) i kolekcja użytkowników zostaną automatycznie pominięte",
+ instructionsImportAuth: "Tylko uwierzytelnieni administratorzy mogą wykonywać importy schematów",
+ collectionsUpdatedCount: "Utworzono {count} kolekcje",
+ collectionsCreatedCount: "Utworzono {count} kolekcje",
+ collectionsSkippedCount: "Utworzono {count} kolekcje",
+};
diff --git a/application/src/translations/pl/common.ts b/application/src/translations/pl/common.ts
new file mode 100644
index 00000000..b98c7f9a
--- /dev/null
+++ b/application/src/translations/pl/common.ts
@@ -0,0 +1,32 @@
+
+import { CommonTranslations } from '../types/common';
+
+export const commonTranslations: CommonTranslations = {
+ welcome: "Witamy",
+ logout: "Wyloguj",
+ language: "Język",
+ english: "Angielski",
+ khmer: "Khmerski",
+ german: "Niemiecki",
+ korean: "Koreański",
+ japanese: "Japoński",
+ simplifiedChinese: "Chiński prosty",
+ goodMorning: "Dzień dobry",
+ goodAfternoon: "Dzień dobry",
+ goodEvening: "Dobry wieczór",
+ profile: "Profile",
+ settings: "Ustawienia",
+ documentation: "Dokumentacja",
+ notifications: "Powiadomienia",
+ close: "Zamknij",
+ cancel: "Anuluj",
+ view: "Pogląd",
+ edit: "Edytuj",
+ delete: "Usuń",
+ status: "Status",
+ time: "Czas",
+ title: "Tytuł",
+ description: "Opis",
+ success: "Sukces",
+ error: "Błąd",
+};
diff --git a/application/src/translations/pl/docker.ts b/application/src/translations/pl/docker.ts
new file mode 100644
index 00000000..7b171734
--- /dev/null
+++ b/application/src/translations/pl/docker.ts
@@ -0,0 +1,69 @@
+import { DockerTranslations } from '../types/docker';
+
+export const dockerTranslations: DockerTranslations = {
+ dockerContainers: "Kontenery Dockerowe",
+ container: "Kontener",
+ status: "Status",
+ cpuUsage: "Wykorzystanie procesora",
+ memory: "Pamięć",
+ disk: "Dysk",
+ uptime: "Czas pracy",
+ lastChecked: "Ostatnio sprawdzono",
+ actions: "Akcje",
+ searchContainersPlaceholder: "Wyszukaj kontenery...",
+ refresh: "Odświeżać",
+ openMenu: "Otwórz menu",
+ viewMetrics: "Wyświetl metryki",
+ viewDetails: "Zobacz szczegóły",
+
+ running: "Działa",
+ stopped: "Zatrzymano",
+ warning: "Ostrzeżenie",
+ unknown: "Nieznany",
+ totalContainers: "Łączna liczba kontenerów",
+ containersLabel: "Kontenery",
+
+ noContainersFound: "Nie znaleziono kontenerów",
+ noContainersRunning: "Brak uruchomionych kontenerów",
+ tryAdjustSearch: "Spróbuj zmienić frazę wyszukiwane.",
+ startSomeContainers: "Utwórz kilka kontenerów, aby je zobaczyć tutaj.",
+
+ containerMetricsTitle: "Metryki kontenera: {name}",
+ dockerId: "Docker ID",
+ loadingMetrics: "Ładowanie metryk...",
+ errorLoadingMetrics: "Błąd ładowania metryk",
+ noMetricsAvailable: "Brak dostępnych danych metrycznych dla tego kontenera",
+
+ minutes60: "60 minut",
+ day1: "1 dzień",
+ days7: "7 dni",
+ month1: "1 miesiąc",
+ months3: "3 miesiące",
+
+ used: "Używany:",
+ free: "Bezpłatny:",
+ total: "Całkowity:",
+ usage: "Zużycie:",
+ cpu: "Procesor",
+ memoryTitle: "Pamięć",
+ diskTitle: "Dysk",
+ network: "Sieć",
+
+ cpuUsagePct: "Wykorzystanie procesora (%)",
+ cpuUsageVsAvailable: "Wykorzystanie procesora w porównaniu z dostępną mocą",
+ cpuAvailablePct: "Dostępny zasoby procesora (%)",
+ ramUsagePct: "Wykorzystanie pamięci RAM (%)",
+ memoryUsageBytes: "Wykorzystanie pamięci (Bytes)",
+ usedMemory: "Wykorzystanie pamięci",
+ totalMemory: "Całkowita pamięć",
+ diskUsagePct: "Wykorzystanie dysku (%)",
+ diskUsageBytes: "Wykorzystanie dysku (Bytes)",
+ usedDisk: "Wykorzystanie dysku",
+ totalDisk: "Wielość dysk",
+ networkTraffic: "Ruch sieciowy",
+ networkSpeedKbs: "Prędkość sieci (KB/s)",
+ rxBytes: "Bajty RX",
+ txBytes: "Bajty TX",
+ rxSpeedKbs: "Prędkość RX (KB/s)",
+ txSpeedKbs: "Prędkość TX (KB/s)",
+};
\ No newline at end of file
diff --git a/application/src/translations/pl/incident.ts b/application/src/translations/pl/incident.ts
new file mode 100644
index 00000000..d0442ed8
--- /dev/null
+++ b/application/src/translations/pl/incident.ts
@@ -0,0 +1,65 @@
+
+import { IncidentTranslations } from '../types/incident';
+
+export const incidentTranslations: IncidentTranslations = {
+ incidentManagement: 'Zarządzanie incydentami',
+ incidentsManagementDesc: 'Śledź i zarządzaj incydentami serwisowymi oraz ich rozwiązaniami',
+ unresolvedIncidents: 'Nie rozwiązane',
+ resolvedIncidents: 'Rozwiązane',
+ activeIncidents: 'Aktywne incydenty',
+ criticalIssues: 'Krytyczne problemy',
+ avgResolutionTime: 'Średni czas rozwiązania',
+ noIncidents: 'Brak aktywnych incydentów',
+ createIncident: 'Utwórz incydent',
+ investigating: 'Badanie',
+ identified: 'Zidentyfikowano',
+ monitoring: 'Monitorowanie',
+ resolved: 'Rozwiązane',
+ scheduleIncidentManagement: 'Zarządzanie harmonogramem i incydentami',
+ incidentName: 'Nazwa incydentu',
+ incidentStatus: 'Status incydentu',
+ highPriority: 'Wysoki priorytet',
+ configurationSettings: 'Ustawienia konfiguracji',
+ incidentCreatedSuccess: 'Incydent utworzony pomyślnie',
+ basicInfo: 'Informacje podstawowe',
+ serviceId: 'ID usługi',
+ assignedTo: 'Przypisany do',
+ unassigned: 'Nieprzypisane',
+ timeline: 'Oś czasu',
+ incidentTime: 'Czas zdarzenia',
+ resolutionTime: 'Czas rozwiązania',
+ systems: 'Systems',
+ noSystems: 'Brak wpływu na systemy',
+ impactAnalysis: 'Analiza wpływu',
+ rootCause: 'Przyczyna główna',
+ resolutionSteps: 'Kroki rozwiązania',
+ lessonsLearned: 'Wyciągnięte wnioski',
+ resolutionDetails: 'Szczegóły rozwiązania',
+ assignment: 'Przypisano do',
+ download: 'Pobierz',
+ downloadPdf: 'Pobierz PDF',
+ print: 'Wydrukuj',
+ confidentialNote: 'Niniejszy dokument jest poufny i przeznaczony wyłącznie do użytku wewnętrznego.',
+ generatedOn: 'Wygenerowano w dniu',
+ enterResolutionSteps: 'Wprowadź kroki podjęte w celu rozwiązania incydentu',
+ enterLessonsLearned: 'Wyciągnij wnioski z tego incydentu',
+ editIncident: 'Edytuj incydent',
+ editIncidentDesc: 'Zaktualizuj szczegóły tego incydentu',
+ updating: 'Aktualizowanie...',
+ update: 'Aktualizuj',
+ create: 'Utwórz',
+ creating: 'Tworzenie...',
+ configuration: 'Konfiguracja',
+ failedToUpdateStatus: 'Nie udało się zaktualizować statusu',
+ inProgress: 'W toku',
+ enterRootCause: 'Wprowadź przyczynę źródłową',
+ enterIncidentTitle: 'Wprowadź tytuł zdarzenia',
+ enterIncidentDescription: 'Wprowadź opis zdarzenia',
+ enterServiceId: 'Wprowadź identyfikatory usług rozdzielone przecinkami',
+ selectAssignedUser: 'Wybierz przypisanego użytkownika',
+ noAssignedUser: 'Incydent nie jest obecnie przypisany żadnemu użytkownikowi',
+ affectedSystems: 'Dotknięte systemy',
+ enterAffectedSystems: 'Wejdź do systemów dotkniętych problemem',
+ separateSystemsWithComma: 'Wprowadź nazwy systemów, których to dotyczy, rozdzielone przecinkami',
+ createIncidentDesc: 'Utwórz nowy incydent',
+};
diff --git a/application/src/translations/pl/index.ts b/application/src/translations/pl/index.ts
new file mode 100644
index 00000000..07052d61
--- /dev/null
+++ b/application/src/translations/pl/index.ts
@@ -0,0 +1,35 @@
+
+import { Translations } from '../types';
+import { commonTranslations } from './common';
+import { menuTranslations } from './menu';
+import { loginTranslations } from './login';
+import { aboutTranslations } from './about';
+import { servicesTranslations } from './services';
+import { maintenanceTranslations } from './maintenance';
+import { incidentTranslations } from './incident';
+import { sslTranslations } from './ssl';
+import { settingsTranslations } from './settings';
+import { instanceTranslations } from './instance';
+import { operationTranslations } from './operation';
+import { regionTranslations } from './region';
+import { dockerTranslations } from './docker';
+import { publicTranslations } from './public';
+
+const plTranslations: Translations = {
+ common: commonTranslations,
+ menu: menuTranslations,
+ login: loginTranslations,
+ about: aboutTranslations,
+ services: servicesTranslations,
+ maintenance: maintenanceTranslations,
+ incident: incidentTranslations,
+ ssl: sslTranslations,
+ settings: settingsTranslations,
+ instance: instanceTranslations,
+ operation: operationTranslations,
+ region: regionTranslations,
+ docker: dockerTranslations,
+ public: publicTranslations
+};
+
+export default plTranslations;
\ No newline at end of file
diff --git a/application/src/translations/pl/instance.ts b/application/src/translations/pl/instance.ts
new file mode 100644
index 00000000..603cd795
--- /dev/null
+++ b/application/src/translations/pl/instance.ts
@@ -0,0 +1,176 @@
+
+import { InstanceTranslations } from '../types/instance';
+
+export const instanceTranslations: InstanceTranslations = {
+
+ // InstanceMonitoring.tsx
+ instanceMonitoring: "Monitorowanie instancji",
+ describeMonitorInstance: "Monitoruj i zarządzaj instancjami serwera w czasie rzeczywistym",
+ addServerAgent: "Dodaj agenta serwera",
+ errorLoadingServers: "Błąd ładowania serwerów",
+ unableToFetchServerData: "Nie można pobrać danych z serwera. Sprawdź połączenie i spróbuj ponownie.",
+ retry: "Spróbój ponownie",
+
+
+
+ // ServerTable.tsx
+ servers: "Serwery",
+ loadingServers: "Ładowanie serwerów...",
+ searchServersPlaceholder: "Wyszukiwanie serwerów...",
+ noServersFound: "Nie znaleziono serwerów",
+ deleteSelected: "Usuń zaznaczone",
+ deleteSelectedConfirmTitle: "Usunąć zaznaczone serwery?",
+ deleteSelectedConfirmDesc: "Tej akcji nie można cofnąć. Spowoduje to trwałe usunięcie {count} serwerów i wszystkich ich danych monitorowania.",
+ selectedCount: "{count} zaznaczonych",
+ serversDeleted: "Serwery usunięto",
+ serversDeletedDesc: "{count} serwerów zostało usuniętych.",
+ partialSuccess: "Częściowy sukces",
+ name: "Nazwa",
+ status: "Status",
+ OS: "System",
+ IPAddress: " Adres IP",
+ CPU: "Procesor",
+ memory: "Pamięć",
+ disk: "Dysk",
+ uptime: "Czas działania",
+ lastChecked: "Ostatnio sprawdzono",
+ actions: "Akcje",
+ viewServerDetail: "Wyświetl szczegóły serwera",
+ containerMonitoring: "Monitorowanie kontenerów",
+ resumeMonitoring: "Wznów monitorowanie",
+ pauseMonitoring: "Wstrzymaj monitorowanie",
+ editServer: "Edytuj serwer",
+ deleteServer: "Usuń serwer",
+ deleteServerConfirmTitle: "Czy na pewno chcesz usunąć ten serwer?",
+ deleteServerConfirmDesc: "Tej czynności nie można cofnąć. Spowoduje to trwałe usunięcie {name} i wszystkich jego danych monitorujących.",
+ cancel: "Anuluj",
+ deleting: "Usuwanie...",
+ delete: "Usuń",
+ serverDeleted: "Serwer usunięty",
+ serverDeletedDesc: "{name} został pomyślnie usunięty.",
+ error: "Błąd",
+ deleteServerError: "Nie udało się usunąć serwera. Spróbuj ponownie.",
+ serverPaused: "Serwer wstrzymany",
+ serverResumed: "Serwer wznowiony",
+ monitoringPaused: "Monitorowanie wstrzymane dla {name}",
+ monitoringResumed: "Wznowiono monitorowanie dla {name}",
+ pauseServerError: "Nie udało się wstrzymać monitorowania serwera. Spróbuj ponownie.",
+ resumeServerError: "Nie udało się wznowić monitorowania serwera. Spróbuj ponownie.",
+
+ // server cards
+ totalServers: "ŁĄCZNA LICZBA SERWERÓW",
+ onlineServers: "SERWERY ONLINE",
+ offlineServers: "SERWERY OFFLINE",
+ warningServers: "SERWERY Z OSTRZEŻENIAMI",
+
+ // AddServerAgentDialog.tsx
+ addServerMonitoringAgent: "Dodaj agenta monitorującego serwer",
+ configureAgentDesc: "Skonfiguruj nowego agenta monitorującego serwer, aby śledzić metryki i wydajność systemu.",
+ configureAgent: "Konfiguruj agenta",
+ oneClickInstall: "Instalacja jednym kliknięciem",
+ dockerOneClick: "Docker One-Click",
+ manualInstallation: "Instalacja ręczna",
+ validationError: "Błąd walidacji",
+ fillRequiredFields: "Proszę wypełnić wszystkie wymagane pola.",
+ serverAgentCreated: "Utworzono agenta serwera",
+ serverAgentCreatedDesc: "Agent monitorujący dla {name} został pomyślnie skonfigurowany.",
+ failedToCreateAgent: "Nie udało się utworzyć agenta monitorującego serwer.",
+
+ // ServerAgentConfigForm.tsx
+ serverName: "Nazwa serwera",
+ serverNamePlaceholder: "np.: web-server-01",
+ serverNameDesc: "Jaka jest nazwa lub etykieta używana jako identyfikator",
+ serverAgentId: "Identyfikator agenta serwera",
+ serverAgentIdDesc: "Automatycznie generowany unikalny identyfikator",
+ operatingSystem: "System operacyjny",
+ checkInterval: "Interwał sprawdzania",
+ selectInterval: "Wybierz interwał",
+ interval30s: "30 sekund",
+ interval1m: "1 minuta",
+ interval2m: "2 minuty",
+ interval5m: "5 minut",
+ checkIntervalDesc: "Jak często sprawdzać stan serwera i metryk",
+ retryAttempts: "Ponowne próby",
+ selectRetryAttempts: "Wybierz ilość prób ponowiania",
+ attempt1: "1 próba",
+ attempt2: "2 próby",
+ attempt3: "3 próby",
+ attempt5: "5 prób",
+ retryAttemptsDesc: "Liczba prób ponownego uruchomienia przed oznaczeniem jako wyłączony",
+ serverToken: "Token serwera",
+ serverTokenDesc: "Automatycznie generowany token uwierzytelniania",
+ systemUrl: "Adres URL systemu",
+ systemUrlDesc: "Aktualny adres URL API systemu",
+ creatingAgent: "Tworzenie agenta...",
+ createServerAgent: "Utwórz agenta dla serwera"
+
+
+ ,
+
+ // EditServerDialog.tsx
+ editServerConfiguration: "Edit Server Configuration",
+ serverNameLabel: "Server Name *",
+ enterServerNamePlaceholder: "Enter server name",
+ checkIntervalLabel: "Check Interval",
+ interval10m: "10 minutes",
+ maxRetriesLabel: "Max Retries",
+ selectMaxRetries: "Select max retries",
+ retry1: "1 retry",
+ retry2: "2 retries",
+ retry3: "3 retries",
+ retry5: "5 retries",
+ retry10: "10 retries",
+ dockerMonitoring: "Docker Monitoring",
+ enabled: "Enabled",
+ disabled: "Disabled",
+ enableNotifications: "Enable Notifications",
+ notificationSettings: "Notification Settings",
+ notificationChannels: "Notification Channels",
+ loadingChannels: "Loading channels...",
+ noChannelsAvailable: "No notification channels available",
+ selectedChannels: "Selected Channels:",
+ serverSetThreshold: "Server Set Threshold",
+ loadingThresholds: "Loading thresholds...",
+ selectServerThreshold: "Select server threshold",
+ noThreshold: "No threshold (use default)",
+ thresholdDetails: "Threshold Details",
+ cpuThresholdPct: "CPU Threshold (%)",
+ ramThresholdPct: "RAM Threshold (%)",
+ diskThresholdPct: "Disk Threshold (%)",
+ networkThresholdPct: "Network Threshold (%)",
+ serverTemplate: "Server Template",
+ loadingTemplates: "Loading templates...",
+ selectServerTemplate: "Select server template",
+ noTemplate: "No template (use default)",
+ templateDetails: "Template Details",
+ ramMessage: "RAM Message",
+ cpuMessage: "CPU Message",
+ diskMessage: "Disk Message",
+ networkMessage: "Network Message",
+ upMessage: "Up Message",
+ downMessage: "Down Message",
+ noMessageDefined: "No {name} message defined",
+ serverUpdated: "Server updated",
+ serverUpdatedDesc: "{name} has been updated successfully.",
+ updating: "Updating...",
+ updateServer: "Update Server",
+ failedToLoadChannels: "Failed to load notification channels",
+ failedToLoadTemplates: "Failed to load templates",
+ failedToLoadThresholds: "Failed to load server thresholds",
+ warning: "Warning",
+ serverUpdatedButThresholdFailed: "Server updated but failed to update threshold values.",
+ failedToUpdateServer: "Failed to update server. Please try again.",
+
+ // ServerHistoryCharts.tsx
+ historicalPerformance: "Historical Performance",
+ loading: "Loading...",
+ errorLoadingChartData: "Error loading chart data",
+ noHistoricalData: "No historical data available for {{timeRange}}",
+ rawMetricsCount: "Raw metrics count: {{count}}",
+ serverIdTimeRange: "Server ID: {{serverId}} • Time Range: {{timeRange}}",
+ dataExistsOutsideRange: "Data exists but may be outside selected time range",
+ noMetricsDataFound: "No metrics data found",
+ dataPointsTimeRange: "{{count}} data points • {{timeRange}}",
+ // updating: "Updating...",
+
+};
diff --git a/application/src/translations/pl/login.ts b/application/src/translations/pl/login.ts
new file mode 100644
index 00000000..87b0278b
--- /dev/null
+++ b/application/src/translations/pl/login.ts
@@ -0,0 +1,24 @@
+
+import { LoginTranslations } from '../types/login';
+
+export const loginTranslations: LoginTranslations = {
+ signInToYourAccount: "Sign in to your account",
+ dontHaveAccount: "Don't have an account?",
+ createOne: "Create one",
+ signInWithGoogle: "Sign in with Google",
+ orContinueWith: "OR",
+ email: "Email",
+ password: "Password",
+ forgot: "Forgot?",
+ signIn: "Sign In",
+ signingIn: "Signing in...",
+ loginSuccessful: "Login successful",
+ loginSuccessMessage: "You have been logged in successfully.",
+ loginFailed: "Login failed",
+ authenticationFailed: "Authentication failed",
+ invalidCredentials: "Invalid email or password",
+ bySigningIn: "By signing in, you agree to our",
+ termsAndConditions: "Terms & Conditions",
+ and: "and",
+ privacyPolicy: "Privacy Policy",
+};
diff --git a/application/src/translations/pl/maintenance.ts b/application/src/translations/pl/maintenance.ts
new file mode 100644
index 00000000..a4a4413d
--- /dev/null
+++ b/application/src/translations/pl/maintenance.ts
@@ -0,0 +1,89 @@
+
+import { MaintenanceTranslations } from '../types/maintenance';
+
+export const maintenanceTranslations: MaintenanceTranslations = {
+ scheduledMaintenance: 'Scheduled Maintenance',
+ scheduledMaintenanceDesc: 'View and manage planned maintenance windows for your systems and services',
+ upcomingMaintenance: 'Upcoming',
+ ongoingMaintenance: 'Ongoing',
+ completedMaintenance: 'Completed',
+ createMaintenanceWindow: 'Create Maintenance',
+ totalScheduledHours: 'Total Scheduled Hours',
+ maintenanceName: 'Maintenance Name',
+ maintenanceStatus: 'Status',
+ scheduledStart: 'Scheduled Start',
+ scheduledEnd: 'Scheduled End',
+ affectedServices: 'Affected Services',
+ impact: 'Impact',
+ minor: 'Minor',
+ major: 'Major',
+ critical: 'Critical',
+ none: 'None',
+ actions: 'Actions',
+ scheduled: 'Scheduled',
+ inprogress: 'In Progress',
+ completed: 'Completed',
+ cancelled: 'Cancelled',
+ markAsInProgress: 'Mark as In Progress',
+ markAsCompleted: 'Mark as Completed',
+ markAsCancelled: 'Mark as Cancelled',
+ confirmDelete: 'Confirm Delete',
+ deleteMaintenanceConfirmation: 'Are you sure you want to delete this maintenance window?',
+ thisActionCannotBeUndone: 'This action cannot be undone.',
+ maintenanceDeleted: 'Maintenance Deleted',
+ maintenanceDeletedDesc: 'The maintenance window has been deleted successfully.',
+ errorDeletingMaintenance: 'There was an error deleting the maintenance window.',
+ statusUpdated: 'Status Updated',
+ maintenanceStatusUpdated: 'Maintenance status has been updated successfully.',
+ errorUpdatingMaintenanceStatus: 'There was an error updating the maintenance status.',
+ createMaintenance: 'Create Maintenance',
+ createMaintenanceDesc: 'Schedule a new maintenance window for your services',
+ enterTitle: 'Enter maintenance title',
+ enterDescription: 'Enter detailed description of the maintenance',
+ startTime: 'Start Time',
+ endTime: 'End Time',
+ selectDate: 'Select a date',
+ enterAffectedServices: 'Enter affected services',
+ separateServicesWithComma: 'Separate multiple services with commas',
+ priority: 'Priority',
+ selectPriority: 'Select priority',
+ selectStatus: 'Select status',
+ selectImpact: 'Select impact',
+ notifySubscribers: 'Notify Subscribers',
+ notifySubscribersDesc: 'Send notifications to all subscribers when this maintenance starts',
+ maintenanceCreated: 'Maintenance Created',
+ maintenanceCreatedDesc: 'The maintenance window has been scheduled successfully.',
+ errorCreatingMaintenance: 'There was an error creating the maintenance window.',
+ errorFetchingMaintenanceData: 'There was an error fetching maintenance data.',
+ low: 'Low',
+ medium: 'Medium',
+ high: 'High',
+ created: 'Created',
+ lastUpdated: 'Last Updated',
+ subscribersWillBeNotified: 'Subscribers will be notified when maintenance begins',
+ noNotifications: 'No notifications will be sent',
+ noScheduledMaintenance: 'No Scheduled Maintenance',
+ noMaintenanceWindows: 'There are no maintenance windows for this period. Create one by clicking the "Create Maintenance" button.',
+ maintenanceCreatedSuccess: 'Maintenance window created successfully',
+ editMaintenanceWindow: 'Edit Maintenance',
+ editMaintenanceDesc: 'Edit maintenance details',
+ priorityDescription: 'Select maintenance priority',
+ statusDescription: 'Select maintenance status',
+ impactLevel: 'Impact Level',
+ impactLevelDescription: 'Select impact level',
+ selectAssignedUsers: 'Select Assigned Users',
+ assignedPersonnelDescription: 'Currently assigned users',
+ mutedNotifications: 'Notifications disabled',
+ notificationsAreMuted: 'Notifications are currently muted for this maintenance',
+ selectNotificationChannel: 'Add a notification channel',
+ enableNotificationsFirst: 'Enable notifications first to select channel',
+ updateMaintenance: 'Update Maintenance',
+ loginToViewProfile: 'Please login to view your profile',
+ goToLogin: 'Go to Login',
+ loadingUserData: 'Loading user data...',
+ retry: 'Retry',
+ loadingServerData: 'Loading server data...',
+ retrievingYourInformation: 'Please wait while we retrieve your information...',
+ servicesPagination: '{startItem}-{endItem} of {totalItems} services',
+ servicesPaginationNoService: '0 services',
+};
diff --git a/application/src/translations/pl/menu.ts b/application/src/translations/pl/menu.ts
new file mode 100644
index 00000000..2f8e1293
--- /dev/null
+++ b/application/src/translations/pl/menu.ts
@@ -0,0 +1,21 @@
+
+import { MenuTranslations } from '../types/menu';
+
+export const menuTranslations: MenuTranslations = {
+ uptimeMonitoring: "Uptime Monitoring",
+ instanceMonitoring: "Instance Monitoring",
+ sslDomain: "SSL & Domain",
+ scheduleIncident: "Schedule & Incident",
+ operationalPage: "Operational Page",
+ reports: "Reports",
+ regionalMonitoring: "Regional Monitoring",
+ settingPanel: "Setting Panel",
+ generalSettings: "General Settings",
+ userManagement: "User Management",
+ notificationSettings: "Notification Settings",
+ alertsTemplates: "Alerts Templates",
+ rolesManagement: "Roles Management",
+ dataRetention: "Data Retention",
+ backupSettings: "Backup Settings",
+ aboutSystem: "About System",
+};
diff --git a/application/src/translations/pl/operation.ts b/application/src/translations/pl/operation.ts
new file mode 100644
index 00000000..3bb768c7
--- /dev/null
+++ b/application/src/translations/pl/operation.ts
@@ -0,0 +1,87 @@
+
+import { OperationTranslations } from '../types/operation';
+
+export const operationTranslations: OperationTranslations = {
+
+ // OperationalPageContent.tsx
+ failedToLoadOperationalPages: "Failed to load operational pages",
+ loadingoperationalPages: "There was an error loading your operational pages. Please try again.",
+ tryagain: "Try Again",
+ operationalPages: "Operational Pages",
+ describeOperation: "Manage your public status pages and monitor service health",
+ refresh: "Refresh",
+ noOperationalPagesFound: "No operational pages found",
+ createYourFirstOperationalPage: "Create your first operational page to start monitoring your services and communicate status to your users.",
+ totalPages: "Total Pages",
+ publicPages: "Public Pages",
+ operational: "Operational",
+ deleteOperationalPage: "Delete Operational Page",
+ deleteOperationalPageConfirm: 'Are you sure you want to delete "{title}"? This action cannot be undone and will permanently remove the operational page and all its components.',
+ cancel: "Cancel",
+ delete: "Delete",
+ deleting: "Deleting...",
+
+ // EditOperationalPageDialog.tsx
+ editOperationalPage: "Edit Operational Page",
+ updateYourOperationalPage: "Update your operational status page settings and manage components.",
+ title: "Title",
+ myServiceStatusPlaceholder: "My Service Status",
+ slug: "Slug",
+ myServiceStatusSlugPlaceholder: "my-service-status",
+ description: "Description",
+ operationalPageDescriptionPlaceholder: "A brief description of your operational page",
+ theme: "Theme",
+ selectTheme: "Select theme",
+ themeDefault: "Default",
+ themeDark: "Dark",
+ themeLight: "Light",
+ status: "Status",
+ selectStatus: "Select status",
+ statusOperational: "Operational",
+ statusDegraded: "Degraded Performance",
+ statusMaintenance: "Under Maintenance",
+ statusMajorOutage: "Major Outage",
+ publicPage: "Public Page",
+ makePagePublic: "Make this page publicly accessible",
+ customDomainOptional: "Custom Domain (Optional)",
+ customDomainPlaceholder: "status.yourdomain.com",
+ customDomainDescription: "Custom domain for your status page",
+ cancelUpdate: "Cancel",
+ updating: "Updating...",
+ updatePage: "Update Page",
+
+ // ComponentsSelector.tsx
+ statusPageComponents: "Status Page Components",
+ addMonitoringComponentsDesc: "Add monitoring components like uptime services, SSL certificates, and incident tracking",
+ selectedComponents: "Selected Components",
+ service: "Service",
+ server: "Server",
+ addComponent: "Add Component",
+ componentName: "Component Name",
+ componentNamePlaceholder: "e.g., Main Website",
+ displayOrder: "Display Order",
+ descriptionOptional: "Description (Optional)",
+ descriptionPlaceholder: "Brief description of this component",
+ uptimeServiceOptional: "Uptime Service (Optional)",
+ selectUptimeService: "Select an uptime service",
+ serverIdOptional: "Server ID (Optional)",
+ serverIdPlaceholder: "server_456",
+ cancelComponent: "Cancel",
+
+ // OperationalPageCard.tsx
+ public: "Public",
+ yes: "Yes",
+ no: "No",
+ updated: "Updated",
+ view: "View",
+ edit: "Edit",
+
+ // CreateOperationalPageDialog.tsx
+ createOperationalPage: "Create Operational Page",
+ createOperationalPageDesc: "Create a new operational status page to monitor your services and components.",
+ createPage: "Create Page",
+ creating: "Creating...",
+ initialStatus: "Initial Status",
+
+
+};
\ No newline at end of file
diff --git a/application/src/translations/pl/public.ts b/application/src/translations/pl/public.ts
new file mode 100644
index 00000000..2b5a2a9d
--- /dev/null
+++ b/application/src/translations/pl/public.ts
@@ -0,0 +1,23 @@
+import { PublicTranslations } from '../types/public';
+
+export const publicTranslations: PublicTranslations = {
+ systemStatus: "System Status",
+ allOperational: "All systems are operational",
+ degradedPerformance: "Some systems are experiencing degraded performance",
+ underMaintenance: "Systems are currently under maintenance",
+ majorOutage: "We are experiencing a major service outage",
+ statusUnknown: "Status unknown",
+ autoUpdatedByHealth: "Status automatically updated based on component health",
+ lastUpdatedAt: "Last updated: {time} UTC",
+ liveStatusMonitoring: "Live status monitoring",
+
+ loadingStatusPage: "Loading Status Page",
+ fetchingRealtimeStatus: "Fetching real-time system status...",
+ slugLabel: "Slug",
+ statusPageNotFound: "Status Page Not Found",
+ notFoundDescription: "The requested status page could not be found or is not publicly accessible.",
+ goBack: "Go Back",
+ retry: "Retry",
+};
+
+
diff --git a/application/src/translations/pl/region.ts b/application/src/translations/pl/region.ts
new file mode 100644
index 00000000..6bb66ad8
--- /dev/null
+++ b/application/src/translations/pl/region.ts
@@ -0,0 +1,95 @@
+
+import { RegionTranslations } from '../types/region';
+
+export const regionTranslations: RegionTranslations = {
+
+ //RegionalMonitoringContent.tsx
+ regionalmonitoring: "Regional Monitoring",
+ descriptRegionPage: "Monitor your infrastructure from multiple regions for better reliability.",
+ addRegionalAgent: "Add Regional Agent",
+ totalAgents: "Total Agents",
+ regionalMonitoringAgents: "Regional monitoring agents",
+ onlineAgents: "Online Agents",
+ currentlyConnected: "Currently connected",
+ offlineAgents: "Offline Agents",
+ disconnectedAgents: "Disconnected agents",
+ regionalAgents: "Regional Agents",
+ noRegionalAgents: "No Regional Agents",
+ getStartedAddAgent: "Get started by adding your first regional monitoring agent to extend your monitoring coverage.",
+ addFirstAgent: "Add First Agent",
+ agentRemoved: "Agent Removed",
+ agentRemovedDesc: "The regional monitoring agent has been removed.",
+ regionalAgentAdded: "Regional Agent Added",
+ regionalAgentAddedDesc: "The regional monitoring agent has been successfully configured.",
+ error: "Error",
+ failedToRemoveAgent: "Failed to remove the regional monitoring agent.",
+
+ //AddRegionalAgentDialog.tsx
+ addRegionalMonitoringAgent: "Add Regional Monitoring Agent",
+ deployRegionalMonitoringAgent: "Deploy a regional monitoring agent with automatic one-click installation.",
+ regionName: "Region Name",
+ regionNamePlaceholder: "e.g., us-east-1, europe-west-1, asia-pacific-1",
+ agentServerIpAddress: "Agent Server IP Address",
+ agentIpPlaceholder: "e.g., 192.168.1.100 or your-server.example.com",
+ cancel: "Cancel",
+ generateInstallation: "Generate Installation",
+ generating: "Generating...",
+ agentConfigurationReady: "Agent Configuration Ready!",
+ oneClickInstallScriptGenerated: "One-click installation script generated with automatic configuration.",
+ oneClickInstallTab: "One-Click Install",
+ agentDetailsTab: "Agent Details",
+ manualInstallTab: "Manual Install",
+ oneClickAutomaticInstallation: "One-Click Automatic Installation",
+ completeInstallationDescription: "Complete installation, configuration, and service startup in one command",
+ whatThisScriptDoes: "What this script does automatically:",
+ scriptActionDownload: "Downloads the latest .deb package",
+ scriptActionInstall: "Installs the regional monitoring agent",
+ scriptActionConfigure: "Creates configuration file with your settings",
+ scriptActionStart: "Starts and enables the service",
+ scriptActionHealthChecks: "Runs health checks",
+ runCommandOnServer: "Run this command on your target server:",
+ downloadCompleteScript: "Download Complete Script",
+ copyFullScript: "Copy Full Script",
+ localDevelopmentNotice: "Local Development Notice: If clipboard copying fails, this is normal in local development. You can use the 'Download Complete Script' button instead or manually copy the text.",
+ generatedAgentConfiguration: "Generated Agent Configuration",
+ autoConfiguredDuringInstallation: "These values will be automatically configured during installation",
+ agentId: "Agent ID",
+ regionNameDetail: "Region Name",
+ serverIp: "Server IP",
+ apiEndpoint: "API Endpoint",
+ authenticationToken: "Server Token",
+ createAgent: "Create Agent",
+ configurationFileLocation: "Configuration file location: /etc/regional-check-agent/regional-check-agent.env",
+ manualInstallationSteps: "Manual Installation Steps",
+ stepByStepManualInstallation: "Step-by-step manual installation process",
+ step1DownloadPackage: "Step 1: Download Package",
+ downloadAmd64Notice: "✅ If you’re using the amd64 architecture, please download this package.",
+ downloadArm64Notice: "✅ If you’re using the arm64 architecture, please download this package.",
+ step2InstallPackage: "Step 2: Install Package",
+ step3ConfigureAgent: "Step 3: Configure Agent",
+ copySampleConfiguration: "Copy sample configuration from https://github.com/operacle/Distributed-Regional-Monitoring/blob/main/packaging/regional-check-agent.conf",
+ addConfigurationValues: "Add the configuration values shown in the Agent Details tab",
+ step4StartService: "Step 4: Start Service",
+ step5VerifyInstallation: "Step 5: Verify Installation",
+ addAnotherAgent: "Add Another Agent",
+ completeSetup: "Complete Setup",
+ copied: "Copied!",
+ copiedDescription: "{description} copied to clipboard.",
+ copyFailed: "Copy failed",
+ copyFailedDescription: "Failed to copy to clipboard.",
+ copyFailedLocalhost: "This is common in local development. Please manually copy the text.",
+ copyFailedChrome: "Try using HTTPS or enable clipboard permissions.",
+ downloaded: "Downloaded!",
+ downloadedDescription: "Installation script downloaded successfully.",
+ failedToCreateAgent: "Failed to create regional agent configuration.",
+
+ //RegionalAgentCard.tsx
+ defaultBadge: "Default",
+ copyAgentId: "Copy Agent ID",
+ removeAgent: "Remove Agent",
+ online: "Online",
+ offline: "Offline",
+ lastUpdated: "Last Updated:",
+ activeMonitoring: "Active monitoring",
+ connectionLost: "Connection lost",
+};
\ No newline at end of file
diff --git a/application/src/translations/pl/services.ts b/application/src/translations/pl/services.ts
new file mode 100644
index 00000000..9efc5b16
--- /dev/null
+++ b/application/src/translations/pl/services.ts
@@ -0,0 +1,201 @@
+
+import { ServicesTranslations } from '../types/services';
+
+export const servicesTranslations: ServicesTranslations = {
+ serviceStatus: "Service Status",
+ uptime: "Uptime",
+ lastChecked: "Last Checked",
+ noServices: "No services match your filter criteria.",
+ currentlyMonitoring: "Currently Monitoring",
+ retry: "Retry",
+ overview: "Overview",
+ newService: "NewService",
+ rowsPerPage: "Rows Per Page",
+ search: "Search",
+ allTypes: "All Types",
+ createNewService: "Create New Service",
+ createNewServiceDesc: "Fill in the details to create a new service to monitor.",
+
+ // ServiceBasicFields.tsx
+ serviceName: "Service Name",
+ serviceNameDesc: "Enter a descriptive name for your service",
+
+ // ServiceConfigFields.tsx
+ checkInterval: "Check Interval",
+ seconds: "seconds",
+ minute: "minute",
+ minutes: "minutes",
+ hour: "hour",
+ hours: "hours",
+ custom: "Custom",
+ checkIntervalPlaceholder: "Enter interval in seconds",
+ backToPresets: "Back to presets",
+ checkIntervalDesc: "How often to check the service status",
+ checkIntervalDescCustom: "Enter custom interval in seconds (minimum 10 seconds)",
+ retryAttempts: "Retry Attempts",
+ attempt: "attempt",
+ attempts: "attempts",
+ retryAttemptsDesc: "Number of retry attempts before marking as down",
+
+ // ServiceForm.tsx
+ updateService: "Update Service",
+ createService: "Create Service",
+
+ // ServiceNotificationFields.tsx
+ enableNotifications: "Enable Notifications",
+ enableNotificationsDesc: "Enable or disable notifications for this service",
+ notificationChannels: "Notification Channels",
+ notificationChannelsEnabledDesc: "Select notification channels for this service",
+ notificationChannelsDesc: "Enable notifications first to select channels",
+ notificationChannelsPlaceholder: "Add a notification channel",
+ alertTemplate: "Alert Template",
+ alertTemplateLoading: "Loading templates...",
+ alertTemplatePlaceholder: "Select an alert template",
+ alertTemplateEnabledDesc: "Choose a template for alert messages",
+ alertTemplateDesc: "Enable notifications first to select template",
+
+ // ServiceTypeField.tsx
+ serviceType: "Service Type",
+ serviceTypeHTTPDesc: "Monitor websites and REST APIs with HTTP/HTTPS Protocol",
+ serviceTypePINGDesc: "Monitor host availability with PING Protocol",
+ serviceTypeTCPDesc: "Monitor TCP port connectivity with TCP Protocol",
+ serviceTypeDNSDesc: "Monitor DNS resolution",
+
+ // ServiceRegionalFields.tsx
+ regionalMonitoring: "Regional Monitoring",
+ regionalMonitoringDesc: "Assign this service to regional monitoring agents for distributed monitoring",
+ regionalAgents: "Regional Agents",
+ regionalAgentsLoading: "Loading agents...",
+ regionalAgentsAvailablePlaceholder: "Select additional regional agents...",
+ regionalAgentsAllSelected: "All available agents selected",
+ regionalAgentsNoAvailable: "No regional agents available",
+ regionalAgentsNoOnlineAvailable: "No online regional agents available",
+ regionalAgentsNotFoundMessage: "No online regional agents found. Services will use default monitoring.",
+ regionalAgentsNotSelectedMessage: "No regional agents selected. Service will use default monitoring.",
+
+ // ServiceUrlField.tsx
+ targetDefault: "Target URL/Host",
+ targetDNS: "Domain Name",
+ targetHTTPDesc: "Enter the full URL including protocol (http:// or https://)",
+ targetPINGDesc: "Enter hostname or IP address to ping",
+ targetTCPDesc: "Enter hostname or IP address for TCP connection test",
+ targetTCPPortDesc: "Enter the port number for TCP connection test",
+ targetDNSDesc: "Enter domain name for DNS record monitoring (A, AAAA, MX, etc.)",
+ targetDefaultDesc: "Enter the target URL or hostname for monitoring",
+ targetDefaultPlaceholder: "Enter URL or hostname",
+
+ // types.ts
+ serviceNameRequired: "Service name is required",
+ urlDomainHostRequired: "URL/Domain/Host is required",
+ enterValidUrlHostnameDomain: "Please enter a valid URL, hostname, or domain",
+ spacesNotAllowed: "Spaces are not allowed",
+
+ // Dashboard
+ upServices: "UP SERVICES",
+ downServices: "DOWN SERVICES",
+ pausedServices: "PAUSED SERVICES",
+ warningServices: "WARNING SERVICES",
+
+ // ServiceRowActions.tsx
+ viewDetail: "View Detail",
+ resumeMonitoring: "Resume Monitoring",
+ pauseMonitoring: "Pause Monitoring",
+
+
+ //IncidentTable.tsx
+ responseTime: "Response Time",
+ errorMessage: "Error Message",
+ details: "Details",
+ unmuteAlerts: "Unmute Alerts",
+ muteAlerts: "Mute Alerts",
+
+ //LastCheckedTime.tsx
+ pausedAt: "Paused at ",
+ lastCheckDetails: "Last Check Details",
+ checkedAt: "Checked at ",
+ monitoringPaused: "Monitoring Paused",
+ noAutomaticChecks: "No automatic checks",
+
+ //ServiveEditDialog.tsx
+ editService: "Edit Service",
+ editServiceDesc: "Update the details of your monitored service.",
+
+ //ServiceStatsCards.tsx
+ lastCheckedAt: "Last checked at {datetime}",
+ avg: "Avg",
+ lastUpChecksCount: "last {count} up checks",
+ basedOnlastChecksCount: "Based on last {count} checks",
+ totalUptime: "Total Uptime",
+ totalDowntime: "Total Downtime",
+ monitoringSettings: "Monitoring Settings",
+ monitoringSettingsInterval: "Checked every {interval} seconds",
+ monitoringSettingsType: "monitoring",
+ upStatusDuration: "Up for {duration}",
+ downStatusDuration: "Down for {duration}",
+
+ incidentHistory: "Incident History",
+ processing: "Processing",
+ back: "Back",
+ last20Checks: "Last 20 checks",
+
+ //OneClickInstallTab.tsx
+ oneClickInstallTitle: "One-Click Install (Recommended)",
+ oneClickInstallDesc: "Copy and paste this single command to install the monitoring agent instantly",
+ quickInstallCommand: "Quick Install Command",
+ copy: "Copy",
+ runCommandOnServer: "Simply run this command on your server:",
+ sshIntoServer: "SSH into your target server",
+ pasteAndRun: "Paste and run the command above",
+ agentInstalled: "The agent will be installed and started automatically",
+ done: "Done",
+
+ // DockerOneClickTab.tsx
+ dockerOneClickTitle: "Docker One-Click Install",
+ dockerOneClickDesc: "Automated Docker container installation with system monitoring capabilities",
+ dockerOneClickCommand: "Docker One-Click Command",
+ dockerScriptWill: "This script will automatically:",
+ dockerScriptStep1: "Download and setup the Docker monitoring agent",
+ dockerScriptStep2: "Configure all required environment variables",
+ dockerScriptStep3: "Start the container with proper system access",
+ dockerScriptStep4: "Setup monitoring data persistence",
+ directDockerTitle: "Direct Docker Run Command",
+ directDockerDesc: "If you prefer to run the Docker container directly without the script",
+ dockerRunCommand: "Docker Run Command",
+ dockerPrerequisites: "Prerequisites for direct Docker run:",
+ dockerPrereqStep1: "Docker must be installed and running",
+ dockerPrereqStep2: "The operacle/checkcle-server-agent image must be available",
+ dockerPrereqStep3: "Run as root or with sudo privileges",
+
+ // ManualInstallTab.tsx
+ manualInstallTitle: "Manual Installation Steps",
+ manualInstallDesc: "Step-by-step installation process",
+ serverName: "Server Name",
+ agentId: "Agent ID",
+ osType: "OS Type",
+ downloadScript: "Download the installation script",
+ makeExecutable: "Make the script executable",
+ runInstall: "Run the installation with your configuration",
+ prerequisites: "Prerequisites:",
+ prereqRoot: "Ensure you have root/sudo access on the target server",
+ prereqCurl: "Make sure curl is installed for downloading files",
+ prereqInternet: "Internet connection required for downloading script",
+ afterInstall: "After Installation:",
+ agentWillStart: "The agent will start automatically and appear in your dashboard within a few minutes.",
+
+ // ServerDetail.tsx
+ errorLoadingServer: "Error loading server",
+ unableToFetchServerData: "Unable to fetch server data. Please check your connection and try again.",
+ backToServers: "Back to Servers",
+ loadingServerDetails: "Loading server details...",
+ serverDetail: "Server Detail",
+ monitorServerMetrics: "Monitor server performance metrics and system health",
+ serverHostnameIpOs: "{hostname} • {ip_address} • {os_type}",
+
+ // ContainerMonitoring.tsx
+ errorLoadingContainers: "Error loading containers",
+ unableToFetchContainerData: "Unable to fetch container data. Please check your connection and try again.",
+ errorUnknown: "Unknown error",
+ containerMonitoring: "Container Monitoring",
+ monitorAndManageContainers: "Monitor and manage your Docker containers in real-time",
+ serverIdLabel: "Server ID",
+};
\ No newline at end of file
diff --git a/application/src/translations/pl/settings.ts b/application/src/translations/pl/settings.ts
new file mode 100644
index 00000000..917e6097
--- /dev/null
+++ b/application/src/translations/pl/settings.ts
@@ -0,0 +1,177 @@
+
+import { SettingsTranslations } from '../types/settings';
+
+export const settingsTranslations: SettingsTranslations = {
+ // General Settings - Tabs
+ systemSettings: "System Settings",
+ mailSettings: "Mail Settings",
+
+ // General Settings - System Settings
+ appName: "Application Name",
+ appURL: "Application URL",
+ senderName: "Sender Name",
+ senderEmail: "Sender Email Address",
+ hideControls: "Hide Controls",
+
+ // General Settings - Mail Settings
+ smtpSettings: "SMTP Configuration",
+ smtpEnabled: "Enable SMTP",
+ smtpHost: "SMTP Host",
+ smtpPort: "SMTP Port",
+ smtpUsername: "SMTP Username",
+ smtpPassword: "SMTP Password",
+ smtpAuthMethod: "Authentication Method",
+ enableTLS: "Enable TLS",
+ localName: "Local Name",
+
+ // General Settings - Test Email
+ testEmail: "Test Email",
+ sendTestEmail: "Send test email",
+ emailTemplate: "Email template",
+ verification: "Verification",
+ passwordReset: "Password reset",
+ confirmEmailChange: "Confirm email change",
+ otp: "OTP",
+ loginAlert: "Login alert",
+ authCollection: "Auth collection",
+ selectCollection: "Select collection",
+ toEmailAddress: "To email address",
+ enterEmailAddress: "Enter email address",
+ send: "Send",
+ sending: "Sending...",
+ testEmailSettings: "Test Email Settings",
+ testEmailDescription: "Test whether the current Email Settings are available",
+ testEmailAlert: "This will send a test email using your configured SMTP settings. Make sure SMTP is properly configured first.",
+
+ // General Settings - Actions and status
+ save: "Save Changes",
+ saving: "Saving...",
+ settingsUpdated: "Settings updated successfully",
+ errorSavingSettings: "Error saving settings",
+ errorFetchingSettings: "Error loading settings",
+ testConnection: "Test Connection",
+ testingConnection: "Testing Connection...",
+ connectionSuccess: "Connection successful",
+ connectionFailed: "Connection failed",
+
+ // User Management
+ addUser: "Add User",
+ permissionNotice: "Permission Notice:",
+ permissionNoticeAddUser: "As an admin user, you do not have access to view or modify system and mail settings. These settings can only be accessed and modified by Super Admins. Contact your Super Admin if you need to make changes to system configuration or mail settings.",
+ loadingSettings: "Loading settings...",
+ loadingSettingsError: "Error loading settings",
+
+ //NotificationSettings.ts
+ titleNotification: "Notification Settings",
+ descriptionChannelsServices: "Configure notification channels for your services",
+ addChannel: "Add Channel",
+ all: "All Channels",
+ telegram: "Telegram",
+ discord: "Discord",
+ slack: "Slack",
+ signal: "Signal",
+ googleChat: "Google Chat",
+ email: "Email",
+ webhook: "Webhook",
+ matrix: "Matrix",
+
+ // NotificationChannelDialog.tsx
+ editChannel: "Edit Notification Channel",
+ addChannelDialog: "Add Notification Channel",
+ channelName: "Channel Name",
+ channelNameDesc: "A name to identify this notification channel",
+ channelType: "Channel Type",
+ selectType: "Select notification type",
+ enabled: "Enabled",
+ enabledDesc: "Enable or disable this notification channel",
+ cancel: "Cancel",
+ updateChannel: "Update Channel",
+ createChannel: "Create Channel",
+ payloadTemplates: "Payload Templates",
+ availablePlaceholders: "Available Placeholders:",
+ server: "Server",
+ service: "Service",
+ ssl: "SSL",
+ common: "Common",
+ webhookUrl: "Webhook URL",
+ webhookUrlDesc: "The URL where webhook notifications will be sent",
+ payloadTemplate: "Payload Template (Optional)",
+ payloadTemplateDesc: "JSON template for the webhook payload. Leave empty to use default template.",
+ telegramChatId: "Chat ID",
+ telegramChatIdDesc: "The Telegram chat ID to send notifications to",
+ botToken: "Bot Token",
+ botTokenDesc: "Your Telegram bot token from @BotFather",
+ discordWebhookUrl: "Webhook URL",
+ discordWebhookUrlDesc: "Discord webhook URL from your server settings",
+ slackWebhookUrl: "Webhook URL",
+ slackWebhookUrlDesc: "Slack incoming webhook URL",
+ signalNumber: "Signal Number",
+ signalNumberDesc: "Signal phone number to send notifications to",
+ signalApiEndpoint: "Signal API Endpoint",
+ signalApiEndpointDesc: "The Rest API endpoint for your Signal service",
+ googleChatWebhookUrl: "Google Chat Webhook URL",
+ googleChatWebhookUrlDesc: "Google Chat webhook URL from your Google Chat space",
+ emailAddress: "Email Address",
+ emailAddressDesc: "Email address to send notifications to",
+ emailSenderName: "Sender Name",
+ emailSenderNameDesc: "Display name for outgoing emails",
+ smtpServer: "SMTP Server",
+ // smtpPort: "SMTP Port",
+ // smtpPassword: "SMTP Password",
+ smtpPasswordDesc: "Password for authenticating with the SMTP server",
+ ntfyEndpoint: "NTFY Endpoint",
+ ntfyEndpointDesc: "The NTFY endpoint URL including your topic (e.g., https://ntfy.sh/checkcle)",
+ apiToken: "API Token",
+ apiTokenOptional: "API Token (Optional)",
+ apiTokenDesc: "Optional API token for authentication with NTFY server",
+ pushoverUserKey: "User Key",
+ pushoverUserKeyDesc: "Your Pushover user key (or group key)",
+ notifiarrChannelId: "Channel ID",
+ notifiarrChannelIdDesc: "The Discord channel ID where notifications will be sent",
+ gotifyServerUrl: "Server URL",
+ gotifyServerUrlDesc: "The URL of your Gotify server",
+ matrixHomeserver: "Homeserver URL",
+ matrixHomeserverDesc: "The URL of your Matrix homeserver (e.g. https://matrix.org)",
+ matrixRoomId: "Room ID",
+ matrixRoomIdDesc: "The Matrix room ID to send notifications to (e.g. !abc123:matrix.org)",
+ matrixAccessToken: "Access Token",
+ matrixAccessTokenDesc: "The access token of your Matrix bot account",
+ errorSaveChannel: "Failed to save notification channel",
+
+ channelNamePlaceholder: "My Notification Channel",
+ telegramChatIdPlaceholder: "Telegram Chat ID",
+ botTokenPlaceholder: "Telegram Bot Token",
+ discordWebhookUrlPlaceholder: "https://discord.com/api/webhooks/...",
+ slackWebhookUrlPlaceholder: "https://hooks.slack.com/services/...",
+ signalNumberPlaceholder: "+1234567890",
+ signalApiEndpointPlaceholder: "https://your-signal-api.com/v2/send",
+ googleChatWebhookUrlPlaceholder: "https://chat.googleapis.com/v1/spaces/...",
+ emailAddressPlaceholder: "notifications@example.com",
+ emailSenderNamePlaceholder: "Alert System",
+ smtpServerPlaceholder: "smtp.gmail.com",
+ smtpPortPlaceholder: "587",
+ smtpPasswordPlaceholder: "Enter your SMTP password",
+ ntfyEndpointPlaceholder: "https://ntfy.sh/your-topic",
+ apiTokenPlaceholder: "Enter API token",
+ pushoverUserKeyPlaceholder: "Your Pushover user key",
+ notifiarrChannelIdPlaceholder: "Discord Channel ID",
+ gotifyServerUrlPlaceholder: "https://your-gotify-server.com",
+ webhookUrlPlaceholder: "https://api.example.com/webhook",
+ matrixHomeserverPlaceholder: "https://matrix.org",
+ matrixRoomIdPlaceholder: "!roomid:matrix.org",
+ matrixAccessTokenPlaceholder: "syt_...",
+
+ // DataRetentionSettings.tsx
+ // permissionNotice: "Permission Notice:",
+ permissionNoticeDataRetention: "As an admin user, you do not have access to data retention settings. These settings can only be accessed and modified by Super Admins.",
+ loadingRetentionSettings: "Loading retention settings...",
+ dataRetention: "Data Retention Settings",
+ dataRetentionDescription: "Configure how long monitoring data is kept in the system",
+ uptimeRetentionLabel: "Uptime Monitoring Retention (days)",
+ uptimeRetentionHelp: "Service uptime and incident data older than this will be automatically deleted",
+ serverRetentionLabel: "Server Monitoring Retention (days)",
+ serverRetentionHelp: "Server metrics and process data older than this will be automatically deleted",
+ lastCleanup: "Last automatic cleanup",
+ // save: "Save Changes"
+
+};
\ No newline at end of file
diff --git a/application/src/translations/pl/ssl.ts b/application/src/translations/pl/ssl.ts
new file mode 100644
index 00000000..4cc13d88
--- /dev/null
+++ b/application/src/translations/pl/ssl.ts
@@ -0,0 +1,117 @@
+
+import { SSLTranslations } from '../types/ssl';
+
+export const sslTranslations: SSLTranslations = {
+ // Page and section titles
+ sslDomainManagement: "SSL & Domain Management",
+ monitorSSLCertificates: "Monitor and manage SSL certificates for your domains",
+ addSSLCertificate: "Add SSL Certificate",
+ editSSLCertificate: "Edit SSL Certificate",
+ deleteSSLCertificate: "Delete SSL Certificate",
+ sslCertificateDetails: "SSL Certificate Details",
+ detailedInfo: "Detailed information for",
+ viewDetailedInformation: "View detailed information for",
+
+ // Status related
+ valid: "Valid",
+ expiringSoon: "Expiring Soon",
+ expired: "Expired",
+ pending: "Pending",
+
+ // Statistics and cards
+ validCertificates: "Valid Certificates",
+ expiringSoonCertificates: "Expiring Soon",
+ expiredCertificates: "Expired Certificates",
+
+ // Form fields
+ domain: "Domain",
+ domainName: "Domain Name",
+ domainCannotChange: "Domain cannot be changed after creation",
+ warningThreshold: "Warning Threshold",
+ warningThresholdDays: "Warning Threshold (Days)",
+ expiryThreshold: "Expiry Threshold",
+ expiryThresholdDays: "Expiry Threshold (Days)",
+ notificationChannel: "Notification Channel",
+ chooseChannel: "Choose a notification channel",
+ whereToSend: "Where to send notifications",
+ daysBeforeExpiration: "Days before expiration to receive warnings",
+ daysBeforeCritical: "Days before expiration to receive critical alerts",
+ getNotifiedExpiration: "Get notified when certificate is about to expire",
+ getNotifiedCritical: "Get notified when certificate is critically close to expiration",
+
+ // Table headers and fields
+ issuer: "Issuer",
+ expirationDate: "Expiration Date",
+ daysLeft: "Days Left",
+ status: "Status",
+ lastNotified: "Last Notified",
+ actions: "Actions",
+ validFrom: "Valid From",
+ validUntil: "Valid Until",
+ validityDays: "Validity Days",
+ validityPeriod: "Validity Period",
+ organization: "Organization",
+ commonName: "Common Name",
+ serialNumber: "Serial Number",
+ algorithm: "Algorithm",
+ subjectAltNames: "Subject Alternative Names",
+ subjectAlternativeNames: "Subject Alternative Names",
+ resolvedIP: "Resolved IP",
+ issuedTo: "Issued To",
+ days: "days",
+
+ // Buttons and actions
+ addDomain: "Add Domain",
+ refreshAll: "Refresh All",
+ cancel: "Cancel",
+ addCertificate: "Add Certificate",
+ check: "Check",
+ view: "View",
+ edit: "Edit",
+ delete: "Delete",
+ close: "Close",
+ saveChanges: "Save Changes",
+ updating: "Updating",
+
+ // Sections in detail view
+ basicInformation: "Basic Information",
+ validity: "Validity",
+ issuerInfo: "Issuer Information",
+ technicalDetails: "Technical Details",
+ technicalInformation: "Technical Information",
+ monitoringConfig: "Monitoring Configuration",
+ monitoringConfiguration: "Monitoring Configuration",
+ recordInfo: "Record Information",
+ certificateDetails: "Certificate Details",
+
+ // Notifications and messages
+ sslCertificateAdded: "SSL Certificate added successfully",
+ sslCertificateUpdated: "SSL Certificate updated successfully",
+ sslCertificateDeleted: "SSL Certificate deleted successfully",
+ sslCertificateRefreshed: "SSL Certificate for {domain} refreshed successfully",
+ allCertificatesRefreshed: "All {count} certificates refreshed successfully",
+ someCertificatesFailed: "{success} certificates refreshed, {failed} failed",
+ failedToAddCertificate: "Failed to add SSL certificate",
+ failedToLoadCertificates: "Failed to load SSL certificates",
+ failedToUpdateCertificate: "Failed to update SSL certificate",
+ failedToDeleteCertificate: "Failed to delete SSL certificate",
+ failedToCheckCertificate: "Failed to check SSL certificate",
+ noCertificatesToRefresh: "No certificates to refresh",
+ startingRefreshAll: "Starting refresh of {count} certificates",
+ checkingSSLCertificate: "Checking SSL certificate...",
+ deleteConfirmation: "Are you sure you want to delete the certificate for",
+ deleteWarning: "This action cannot be undone. This will permanently delete the certificate.",
+
+ // Misc
+ unknown: "Unknown",
+ never: "Never",
+ none: "None",
+ loadingChannels: "Loading channels...",
+ noChannelsFound: "No notification channels found",
+ noSSLCertificates: "No SSL certificates found",
+ created: "Created",
+ lastUpdated: "Last Updated",
+ lastNotification: "Last Notification",
+ collectionId: "Collection ID",
+ noCertificatesFound: "No Certificates Found",
+};