diff --git a/web/public/locales/pl/common.json b/web/public/locales/pl/common.json index 0ac1208b0..0c68e1813 100644 --- a/web/public/locales/pl/common.json +++ b/web/public/locales/pl/common.json @@ -87,7 +87,10 @@ "formattedTimestampMonthDayYear": { "12hour": "d MMMM yyyy", "24hour": "d MMMM yyyy" - } + }, + "inProgress": "W trakcie", + "invalidStartTime": "Nieprawidłowy czas rozpoczęcia", + "invalidEndTime": "Nieprawidłowy czas zakończenia" }, "unit": { "speed": { @@ -97,10 +100,23 @@ "length": { "feet": "stopy", "meters": "metry" + }, + "data": { + "kbps": "kB/s", + "mbps": "MB/s", + "gbps": "GB/s", + "kbph": "kB/godz.", + "mbph": "MB/godz.", + "gbph": "GB/godz." } }, "label": { - "back": "Wróć" + "back": "Wróć", + "hide": "Ukryj {{item}}", + "show": "Pokaż {{item}}", + "ID": "ID", + "none": "Brak", + "all": "Wszystko" }, "button": { "apply": "Zastosuj", @@ -137,7 +153,8 @@ "cameraAudio": "Dźwięk kamery", "off": "WYŁĄCZ", "edit": "Edytuj", - "copyCoordinates": "Kopiuj współrzędne" + "copyCoordinates": "Kopiuj współrzędne", + "continue": "Kontynuuj" }, "menu": { "system": "System", @@ -239,7 +256,8 @@ "configurationEditor": "Edytor konfiguracji", "help": "Pomoc", "settings": "Ustawienia", - "export": "Eksportuj" + "export": "Eksportuj", + "classification": "Klasyfikacja" }, "role": { "viewer": "Przeglądający", @@ -283,5 +301,9 @@ "readTheDocumentation": "Przeczytaj dokumentację", "information": { "pixels": "{{area}}px" + }, + "list": { + "two": "{{0}} i {{1}}", + "many": "{{items}}, oraz {{last}}" } } diff --git a/web/public/locales/pl/views/classificationModel.json b/web/public/locales/pl/views/classificationModel.json index c9befbdc2..fa0ef03ee 100644 --- a/web/public/locales/pl/views/classificationModel.json +++ b/web/public/locales/pl/views/classificationModel.json @@ -3,7 +3,7 @@ "button": { "deleteClassificationAttempts": "Usuń obrazy klasyfikacyjne", "renameCategory": "Zmień nazwę klasy", - "deleteCategory": "Usuń klasę", + "deleteCategory": "Usuń klasyfikację", "deleteImages": "Usuń obrazy", "trainModel": "Przeszkol model", "addClassification": "Dodaj klasyfikację", @@ -39,7 +39,9 @@ }, "deleteCategory": { "title": "Usuń klasę", - "desc": "Czy na pewno chcesz usunąć klasę {{name}}? Spowoduje to trawałe usunięcie wszystkich powiązanych obrazków i konieczność ponownego trenowania modelu." + "desc": "Czy na pewno chcesz usunąć klasę {{name}}? Spowoduje to trawałe usunięcie wszystkich powiązanych obrazków i konieczność ponownego trenowania modelu.", + "minClassesTitle": "Nie można usunąć kategorii", + "minClassesDesc": "Model klasyfikacyjny musi posiadać co najmniej dwie kategorie. Dodaj inną kategorię aby możliwe było usunięcie tej kategorii." }, "deleteModel": { "title": "Usuń model klasyfikacji", @@ -49,10 +51,29 @@ "desc_many": "Czy na pewno chcesz usunąć {{count}} modeli? Spowoduje to trwałe usunięcie wszystkich powiązanych danych, włącznie z obrazami i danymi treningowymi. Nie można cofnąć tej operacji." }, "edit": { - "title": "Edytuj model klasyfikacji" + "title": "Edytuj model klasyfikacji", + "descriptionObject": "Zmień typ obiektu i kryteria dla tego modelu klasyfikacji.", + "stateClassesInfo": "Uwaga: Zmiana typu klasyfikacji wymaga treningu nowego modelu." }, "tooltip": { "trainingInProgress": "Trwa trenowanie modelu", - "modelNotReady": "Mode nie jest gotowy do trenowania" + "modelNotReady": "Mode nie jest gotowy do trenowania", + "noChanges": "Brak zmian w zbiorze danych od czasu ostatniego treningu." + }, + "deleteDatasetImages": { + "title": "Usuń obrazy z puli danych" + }, + "renameCategory": { + "title": "Zmień nazwę klasy", + "desc": "Wprowadź nową nazwę dla {{name}}. Zastosowanie tej zmiany wymagać będzie treningu nowego modelu." + }, + "description": { + "invalidName": "Niepoprawna nazwa. Nazwy mogą zawierać tylko: litery, cyfry, spacje, cudzysłowy, podkreślniniki i myślniki." + }, + "train": { + "title": "Ostatnie Klasyfikacje" + }, + "createCategory": { + "new": "Stwórz nową klasyfikację" } } diff --git a/web/public/locales/pl/views/events.json b/web/public/locales/pl/views/events.json index 92adee328..f1fd1b4f5 100644 --- a/web/public/locales/pl/views/events.json +++ b/web/public/locales/pl/views/events.json @@ -43,8 +43,8 @@ "label": "Szczegóły", "noDataFound": "Brak szczegółów do przejrzenia", "aria": "Przełącz widok szczegółów", - "trackedObject_one": "obiekt", - "trackedObject_other": "obiekty", + "trackedObject_one": "{{count}} obiekt", + "trackedObject_other": "{{count}} obiekty", "noObjectDetailData": "Brak danych szczegółowych dla obiektu.", "settings": "Ustawienia widoku szczegółów", "alwaysExpandActive": { @@ -55,5 +55,6 @@ "objectTrack": { "trackedPoint": "Śledzony punkt", "clickToSeek": "Kliknij aby przewinąć do tego miejsca" - } + }, + "needsReview": "Wymaga manualnego sprawdzenia" } diff --git a/web/public/locales/pl/views/explore.json b/web/public/locales/pl/views/explore.json index e5fcae355..2443a4fc9 100644 --- a/web/public/locales/pl/views/explore.json +++ b/web/public/locales/pl/views/explore.json @@ -160,7 +160,8 @@ "snapshot": "zrzut ekranu", "video": "wideo", "object_lifecycle": "cykl życia obiektu", - "thumbnail": "miniaturka" + "thumbnail": "miniaturka", + "tracking_details": "szczegóły śledzenia" }, "itemMenu": { "downloadSnapshot": { @@ -232,6 +233,29 @@ "createObjectMask": "Utwórz maskę obiektu", "adjustAnnotationSettings": "Dostosuj ustawienia adnotacji", "scrollViewTips": "Kliknij, aby zobaczyć najważniejsze momenty cyklu życia tego obiektu.", - "count": "{{first}} z {{second}}" + "count": "{{first}} z {{second}}", + "autoTrackingTips": "Pozycja znacznika obiektu jest niedokładna dla kamer z automatycznym śledzeniem.", + "lifecycleItemDesc": { + "visible": "Wykryto {{label}}", + "entered_zone": "{{label}} pojawił się w {{zones}}", + "active": "{{label}} poruszył się", + "stationary": "{{label}} zatrzymał się", + "attribute": { + "faceOrLicense_plate": "Wykryto {{attribute}} dla obiektu {{label}}", + "other": "{{label}} został rozpoznany jako {{attribute}}" + }, + "gone": "Utracono śledzenie dla {{label}}", + "external": "Wykryto {{label}}", + "header": { + "zones": "Strefy" + } + }, + "annotationSettings": { + "title": "Ustawienia adnotacji", + "showAllZones": { + "title": "Pokaż wszystkie strefy", + "desc": "Pokazuj linie stref w momencie wejścia obiektu w strefę." + } + } } } diff --git a/web/public/locales/pl/views/faceLibrary.json b/web/public/locales/pl/views/faceLibrary.json index ec13f5f11..0f9ef5e7b 100644 --- a/web/public/locales/pl/views/faceLibrary.json +++ b/web/public/locales/pl/views/faceLibrary.json @@ -3,7 +3,7 @@ "description": { "addFace": "Dodaj nową kolekcję do biblioteki twarzy, przesyłając swoje pierwsze zdjęcie.", "placeholder": "Wprowadź nazwę tej kolekcji", - "invalidName": "Nieprawidłowa nazwa. Nazwy mogą zawierać tylko litery, cyfry, spacje, apostrofy, podkreślenia oraz myślniki." + "invalidName": "Niepoprawna nazwa. Nazwy mogą zawierać tylko: litery, cyfry, spacje, cudzysłowy, podkreślniniki i myślniki." }, "details": { "person": "Osoba", diff --git a/web/public/locales/pl/views/live.json b/web/public/locales/pl/views/live.json index 805e49efa..417354f63 100644 --- a/web/public/locales/pl/views/live.json +++ b/web/public/locales/pl/views/live.json @@ -67,7 +67,7 @@ }, "manualRecording": { "title": "Nagrywanie na żądanie", - "tips": "Rozpocznij ręczne zdarzenie w oparciu o ustawienia przechowywania nagrań tej kamery.", + "tips": "Ręcznie rozpocznij zdarzenie w oparciu o ustawienia przechowywania nagrań tej kamery.", "playInBackground": { "label": "Odtwarzaj w tle", "desc": "Włącz tę opcję, aby kontynuować transmisję, gdy odtwarzacz jest ukryty." @@ -173,7 +173,17 @@ }, "noCameras": { "buttonText": "Dodaj kamerę", - "description": "Zacznij od podłączenia kamery.", - "title": "Nie ustawiono żadnej kamery" + "description": "Zacznij od podłączenia kamery do Frigate.", + "title": "Nie skonfigurowano żadnej kamery", + "restricted": { + "title": "Brak dostępnych kamer", + "description": "Nie masz uprawnień aby przeglądać kamery w tej grupie." + } + }, + "snapshot": { + "takeSnapshot": "Pobierz miniaturę", + "captureFailed": "Nie udało się wykonać migawki.", + "downloadStarted": "Pobieranie migawki rozpoczęte.", + "noVideoSource": "Brak źródeł video dostępnych do wykonania migawki." } } diff --git a/web/public/locales/pl/views/settings.json b/web/public/locales/pl/views/settings.json index 7f2cfee18..956eb5f02 100644 --- a/web/public/locales/pl/views/settings.json +++ b/web/public/locales/pl/views/settings.json @@ -13,7 +13,7 @@ "triggers": "Wyzwalacze", "roles": "Role", "cameraManagement": "Zarządzanie", - "cameraReview": "Przejrzyj" + "cameraReview": "Przegląd" }, "dialog": { "unsavedChanges": { @@ -26,7 +26,7 @@ "noCamera": "Brak Kamery" }, "general": { - "title": "Ustawienia Ogólne", + "title": "Ustawienia interfejsu użytkownika", "storedLayouts": { "title": "Zapisane Układy", "clearAll": "Wyczyść Wszystkie Układy", @@ -50,6 +50,14 @@ "playAlertVideos": { "label": "Odtwarzaj Filmy Alarmowe", "desc": "Domyślnie, ostatnie alerty na panelu Na Żywo są odtwarzane jako małe zapętlone filmy. Wyłącz tę opcję, aby pokazywać tylko statyczny obraz ostatnich alertów na tym urządzeniu/przeglądarce." + }, + "displayCameraNames": { + "label": "Zawsze pokazuj nazwy kamer", + "desc": "Zawsze pokazuj nazwę kamery w widoku wielu kamer." + }, + "liveFallbackTimeout": { + "label": "Przekroczono czas oczekiwania dla strumienia", + "desc": "W wypadku utraty strumienia wysokiej jakości, użyj trybu niskiej przepustowości po X sekund od utracenia połączenia. Sugerowana wartość: 3." } }, "cameraGroupStreaming": { @@ -906,5 +914,222 @@ "title": "Wyszukiwanie semantyczne jest zablokowane", "desc": "Wyszukiwanie semantyczne musi być włączone, aby korzystać z triggerów." } + }, + "cameraWizard": { + "title": "Dodaj kamerę", + "steps": { + "streamConfiguration": "Konfiguracja strumienia", + "nameAndConnection": "Nazwa i połączenie", + "probeOrSnapshot": "Sonda lub migawka", + "validationAndTesting": "Walidacja i testowanie" + }, + "save": { + "success": "Zapisano ustawienia nowej kamery {{cameraName}}.", + "failure": "Błąd zapisu {{cameraName}}." + }, + "testResultLabels": { + "resolution": "Rozdzielczość", + "fps": "kl./s", + "video": "Wideo", + "audio": "Audio" + }, + "commonErrors": { + "noUrl": "Podaj poprawny adres URL", + "testFailed": "Negatywny wynik testu strumienia: {{error}}" + }, + "step1": { + "cameraName": "Nazwa kamery", + "cameraNamePlaceholder": "np. drzwi_frontowe lub Ogród", + "host": "Host/Adres IP", + "port": "Port", + "username": "Nazwa użytkownika", + "usernamePlaceholder": "Opcjonalne", + "password": "Hasło", + "passwordPlaceholder": "Opcjonalne", + "selectTransport": "Wybierz protokół warstwy transportowej", + "cameraBrand": "Marka Kamery", + "selectBrand": "Wybierz markę kamery aby dostosować wzór adresu URL", + "customUrl": "Niestandardowy adres URL strumienia", + "brandInformation": "Informacje o marce", + "brandUrlFormat": "Dla kamer z formatem RTSP, formatuj URL jako: {{exampleUrl}}", + "customUrlPlaceholder": "rtsp://nazwa_użytkownika:hasło@host:port/scieżka", + "connectionSettings": "Ustawienia Połączenia", + "detectionMethod": "Metoda wykrywania strumienia", + "onvifPort": "Port ONVIF", + "manualMode": "Ręczny wybór", + "onvifPortDescription": "Dla kamer wspierających protokół ONVIF, port to zazwyczaj 80 lub 8080.", + "errors": { + "brandOrCustomUrlRequired": "Wybierz markę kamery oraz host/adres IP lub wybierz 'Inny' i podaj niestandardowy adres URL", + "nameRequired": "Wymagana nazwa kamery", + "nameLength": "Nazwa kamery musi mieć 64 lub mniej znaków", + "invalidCharacters": "Nazwa kamery zawiera niepoprawne znaki", + "nameExists": "Nazwa kamery jest już zajęta", + "customUrlRtspRequired": "Niestandardowe adresy URL muszą zaczynać się od \"rtsp://\". Ręczna konfiguracja wymagana jest dla strumieniów innych niż RTSP." + }, + "description": "Wprowadź szczegóły kamery i wybierz autodetekcję lub ręcznie wybierz firmę.", + "probeMode": "Wykryj kamerę", + "detectionMethodDescription": "Wykryj kamerę za pomocą ONVIF (jeśli wspierane) by znaleźć adresy strumieni lub wybierz ręcznie markę kamery by wybrać predefiniowane adresy. By wpisać własny adres strumienia RTSP użyj ręcznej metody i wybierz \"Inne\".", + "useDigestAuth": "Użyj przesyłania skrótu autentykacji", + "useDigestAuthDescription": "Użyj przesyłania skrótu logowania HTTP dla ONVIF. Niektóre kamery mogą wymagać dedykowanego użytkownika i hasła ONVIF zamiast standardowego konta admin." + }, + "step2": { + "testSuccess": "Test połączenia udany!", + "testFailed": "Test połączenia nieudany. Sprawdź adres źródła obrazu i spróbuj ponownie.", + "testFailedTitle": "Test Nieudany", + "streamDetails": "Szczegóły Strumienia", + "testing": { + "fetchingSnapshot": "Przygotowywanie migawki kamery...", + "probingMetadata": "Wykrywanie metadanych kamery..." + }, + "deviceInfo": "Informacje o urządzeniu", + "manufacturer": "Producent", + "model": "Model", + "firmware": "Firmware", + "profiles": "Profile", + "ptzSupport": "Wsparcie PTZ", + "autotrackingSupport": "Wsparcie auto-śledzenia", + "uriCopy": "Kopiuj", + "uriCopied": "Adres URL skopiowano do schowka", + "testConnection": "Przetestuj połączenie", + "errors": { + "hostRequired": "Wymagany jest Host/Adres IP" + }, + "description": "Wykryj dostępne strumienie kamery lub skonfiguruj ręcznie ustawienia na podstawie wybranej metody detekcji.", + "probing": "Wykrywanie kamery...", + "retry": "Ponów", + "probeFailed": "Błąd wykrywania kamery: {{error}}", + "probingDevice": "Wykrywanie urządzenia...", + "probeSuccessful": "Wykrywanie udane", + "probeError": "Błąd wykrywania", + "probeNoSuccess": "Niepowodzenie wykrywania", + "presets": "Ustawienia wstępne" + }, + "step3": { + "streamTitle": "Strumień numer: {{number}}", + "streamUrl": "URL strumienia", + "streamUrlPlaceholder": "rtsp://nazwa_użytkownika:hasło@host:port/scieżka", + "selectStream": "Wybierz strumień", + "noStreamFound": "Nie znaleziono żadnego strumienia", + "url": "adres URL", + "resolution": "Rozdzielczość", + "selectResolution": "Wybierz rozdzielczość", + "quality": "Jakość", + "selectQuality": "wybierz jakość", + "roles": "Role", + "roleLabels": { + "detect": "Wykrywanie obiektów", + "record": "Nagrywanie", + "audio": "Dźwięk" + }, + "testStream": "Przetestuj połączenie", + "testSuccess": "Test strumienia udany!", + "testFailed": "Test strumienia nieudany", + "testFailedTitle": "Test nieudany", + "connected": "Połączono", + "notConnected": "Nie połączono", + "featuresTitle": "Funkcje", + "go2rtc": "Ogranicz połączenia do kamery", + "detectRoleWarning": "Przynajmniej jeden strumień musi mieć rolę \"detect\".", + "rolesPopover": { + "title": "Role strumienia", + "detect": "Główny strumień służący do wykrywania obiektów." + }, + "featuresPopover": { + "title": "Funkcje strumienia" + } + }, + "step4": { + "description": "Końcowa walidacja i analiza przed zapisaniem ustawień nowej kamery. Połącz się z każdym strumieniem przed zapisaniem.", + "validationTitle": "Walidacja strumienia", + "reconnectionSuccess": "Ponowna próba połączenia udana.", + "streamUnavailable": "Podgląd strumienia niedostępny", + "connecting": "Łączenie...", + "streamTitle": "Strumień numer: {{number}}", + "valid": "Poprawny", + "connectingStream": "Łączenie", + "disconnectStream": "Rozłącz", + "estimatedBandwidth": "Przewidywana przepustowość", + "roles": "Role", + "ffmpegModuleDescription": "Jeżeli po kilku próbach strumień nadal nie ładuje się, uruchom ten tryb. Gdy włączony jest ten tryb Frigate będzie używać modułu ffmpeg z go2rtc. Może to zapewnić lepszą kompatybilność z niektórymi typami strumieniów.", + "none": "Brak", + "error": "Błąd", + "streamValidated": "Strumień numer: {{number}} przeszedł test pozytywnie.", + "streamValidationFailed": "Strumień numer: {{number}} test nieudany", + "saveAndApply": "Zapisz nową kamerę", + "saveError": "Nieprawidłowa konfiguracja. Sprawdź ustawienia.", + "issues": { + "title": "Walidacja strumienia", + "audioCodecGood": "Kodek dźwięku to {{codec}}.", + "resolutionHigh": "Rozdzielczość {{resolution}} może spowodować większe zużycie zasobów.", + "resolutionLow": "Rozdzielczość {{resolution}} może okazać się za mała aby poprawnie wykrywać małe obiekty.", + "noAudioWarning": "Nie wykryto dźwięku dla tego strumienia, nagrania również nie będą zawierać dźwięku.", + "audioCodecRecordError": "Kodek AAC jest wymagany aby uwzględnić dźwięk w nagraniach.", + "audioCodecRequired": "Strumień audio jest wymagany aby umożliwić wykrywanie dźwięku.", + "restreamingWarning": "Ograniczenie ilości połączeń do strumienia nagrań może delikatnie zwiększyć użycie procesora", + "brands": { + "reolink-rtsp": "Strumień RTSP dla kamer firmy Reolink nie jest rekomendowany. Uruchom strumień HTTP w oprogramowaniu kamery i uruchom kreator jeszcze raz." + } + } + }, + "description": "Wykonaj poniższe kroki aby dodać nową kamerę do Frigate." + }, + "cameraManagement": { + "title": "Zarządzaj kamerami", + "addCamera": "Dodaj nową kamerę", + "editCamera": "Edytuj kamerę:", + "selectCamera": "Wybierz kamerę", + "backToSettings": "Powrót do ustawień kamery", + "streams": { + "title": "Włącz / Wyłącz kamery" + }, + "cameraConfig": { + "add": "Dodaj kamerę", + "edit": "Edytuj kamerę", + "description": "Skonfiguruj ustawienia kamery, wliczając strumienie wejściowe i ich role.", + "name": "Nazwa kamery", + "nameRequired": "Wymagana nazwa kamery", + "nameLength": "Nazwa kamery musi mieć 64 lub mniej znaków.", + "namePlaceholder": "np. drzwi_frontowe lub Ogród", + "enabled": "Włączone", + "ffmpeg": { + "inputs": "Strumienie wejściowe", + "path": "Ścieżka strumienia", + "pathRequired": "Ścieżka strumienia jest wymagana", + "pathPlaceholder": "rtsp://...", + "roles": "Role", + "rolesRequired": "Wymagana jest przynajmniej jedna rola", + "rolesUnique": "Każda rola ('audio', 'detect', 'record') może zostać przypisana tylko raz", + "addInput": "Dodaj strumień wejściowy", + "removeInput": "Usuń strumień wejściowy", + "inputsRequired": "Wymagany jest przynajmniej jeden strumień wejściowy" + }, + "go2rtcStreams": "Strumienie go2rtc", + "streamUrls": "Adresy URL strumieni", + "addUrl": "Dodaj adres URL", + "addGo2rtcStream": "Dodaj strumień go2rtc", + "toast": { + "success": "Zapisano poprawnie kamerę {{cameraName}}" + } + } + }, + "cameraReview": { + "review": { + "alerts": "Alerty ", + "detections": "Wykrycia " + }, + "reviewClassification": { + "title": "Przegląd klasyfikacji", + "noDefinedZones": "Nie zdefiniowano żadnych stref dla tej kamery.", + "objectDetectionsTips": "Wszystkie obiekty w kategorii {{detectionsLabels}} wykryte przez kamerę {{cameraName}} będą wyświetlane jako Wykrycia niezależnie od strefy w której zostały wykryte.", + "zoneObjectDetectionsTips": { + "text": "Wszystkie obiekty w kategorii {{detectionsLabels}} nieskategoryzowane w strefie {{zone}} kamery {{cameraName}} będą wyświetlane jako Wykrycia.", + "notSelectDetections": "Wszystkie obiekty w kategorii {{detectionsLabels}} wykryte w strefie {{zone}} kamery {{cameraName}} nieskategoryzowane jako Alerty będą wyświetlane jako Wykrycia, niezależnie w której strefie zostaną wykryte.", + "regardlessOfZoneObjectDetectionsTips": "Wszystkie obiekty w kategorii {{detectionsLabels}} nieskategoryzowane dla kamery {{cameraName}} będą wyświetlane jako Wykrycia niezależnie w której strefie zostaną wykryte." + }, + "unsavedChanges": "Niezapisane ustawienia klasyfikacji przeglądu dla kamery {{camera}}", + "selectAlertsZones": "Wybierz strefę dla Alertów", + "selectDetectionsZones": "Wybierz strefę dla Wykryć", + "limitDetections": "Ogranicz detekcje do konkretnych stref" + } } } diff --git a/web/public/locales/pl/views/system.json b/web/public/locales/pl/views/system.json index 1100ddbc7..ba82ea97d 100644 --- a/web/public/locales/pl/views/system.json +++ b/web/public/locales/pl/views/system.json @@ -42,7 +42,11 @@ "gpuMemory": "Pamięć GPU", "gpuUsage": "Użycie GPU", "npuUsage": "Użycie NPU", - "npuMemory": "Pamięć NPU" + "npuMemory": "Pamięć NPU", + "intelGpuWarning": { + "message": "Statystyki układu graficznego niedostępne", + "description": "W narzędziach telemetrii i statystyki układów graficznych firmy Intel (intel_gpu_top) znajduje się znany błąd powodujący raportowanie użycia układu graficznego wynoszące 0%, nawet gdy akceleracja sprzętowa i wykrywanie obiektów działa prawidłowo korzystając ze zintegrowanego układu graficznego. To nie jest błąd oprogramowania Frigate. Restart hosta może chwilowo rozwiązać problem i pozwolić na weryfikację działania układu graficznego. Ten bład nie wpływa na wydajność systemu," + } }, "title": "Ogólne", "detector": {