{ "integrations": { "accounting": { "dialog": { "cancel": "Anuluj", "enterPlaceholder": "Wprowadź {{field}}...", "errors": { "enterExternal": "Wprowadź {{field}}.", "invalidJson": "Nieprawidłowy format JSON dla metadanych.", "saveFailed": "Nie można zapisać mapowania.", "selectAlga": "Wybierz {{field}}.", "selectExternal": "Wybierz {{field}}." }, "manualEntryHelp": "Wprowadź identyfikator dokładnie tak, jak pojawia się w systemie księgowym.", "metadataLabel": "Metadane (JSON)", "metadataPlaceholder": "Opcjonalne metadane w formacie JSON", "realmIdLabel": "Identyfikator Realm", "saveMapping": "Zapisz mapowanie", "saving": "Zapisywanie…", "selectPlaceholder": "Wybierz {{field}}..." }, "manager": { "noModules": "Nie skonfigurowano żadnych modułów mapowania." }, "moduleView": { "actionsColumn": "Akcje", "delete": "Usuń", "edit": "Edytuj", "errors": { "deleteFailed": "Nie można usunąć mapowania.", "loadFailed": "Nie można załadować mapowań." }, "loading": "Ładowanie mapowań…", "noMappings": "Nie znaleziono mapowań.", "notAvailable": "Nd.", "openMenu": "Otwórz menu" }, "setup": { "activeConfiguration": "Aktywna konfiguracja", "badges": { "enterprise": "Enterprise" }, "comingSoon": "Wkrótce dostępne", "configure": "Konfiguruj integrację", "highlightValues": { "csv": "CSV", "instant": "Natychmiastowy", "live": "Na żywo", "manual": "Ręczny", "twoWay": "Dwukierunkowy" }, "highlights": { "delivery": "Dostarczanie", "export": "Eksport", "format": "Format", "sync": "Synchronizacja" }, "options": { "qbo": { "description": "Połącz swój realm, aby synchronizować faktury i zarządzać mapowaniami." }, "qboCsv": { "description": "Eksportuj faktury do CSV w celu ręcznego importu do QuickBooks i importuj dane podatkowe z raportów." }, "xero": { "description": "Połącz swoją organizację za pomocą poświadczeń OAuth należących do tenanta, aby uzyskać eksporty księgowe na żywo i mapowania." }, "xeroCsv": { "description": "Eksportuj faktury do CSV w celu ręcznego importu do Xero i importuj dane podatkowe z raportów Xero." } }, "selected": "Wybrano {{title}}", "unavailable": { "description": "Ta integracja nie jest jeszcze dostępna. Wybierz QuickBooks CSV lub Xero CSV, aby skonfigurować ręczne eksporty.", "title": "Konfiguracja niedostępna" } }, "modules": { "tabs": { "clients": "Klienci", "itemsServices": "Pozycje / Usługi", "taxCodes": "Kody podatkowe", "paymentTerms": "Warunki płatności" } } }, "calendar": { "enterprise": { "loading": "Ładowanie ustawień kalendarza..." } }, "csv": { "export": { "actions": { "exportCsv": "Eksportuj CSV", "generating": "Generowanie..." }, "description": "Eksportuj faktury jako plik CSV do ręcznego importu w QuickBooks.", "errors": { "configureMissingMappings": "Skonfiguruj brakujące mapowania powyżej, a następnie ponów eksport.", "failed": "Eksport nie powiódł się", "missingItemMapping": "Brak mapowania pozycji", "missingItemMappingId": "Brak mapowania pozycji ({{serviceId}})", "missingItemMappingNamed": "Brak mapowania pozycji: {{serviceName}}" }, "fields": { "dateRange": "Zakres dat (opcjonalny)", "invoiceStatuses": "Statusy faktur" }, "lockReset": { "actions": { "reset": "Zresetuj blokadę eksportu" }, "description": "Wyczyść blokady eksportu, aby umożliwić ponowny eksport faktur przez CSV.", "dialog": { "cancel": "Anuluj", "confirm": "Zresetuj blokadę", "confirmBatch": "To pozwoli Alga PSA ponownie eksportować faktury z partii {{batchId}}. Jeśli niektóre z tych faktur nadal istnieją w QuickBooks, import CSV może utworzyć duplikaty.", "confirmInvoice": "To pozwoli Alga PSA ponownie eksportować fakturę {{invoiceNumber}}. Jeśli ta faktura nadal istnieje w QuickBooks, import CSV może utworzyć duplikaty.", "resetting": "Resetowanie…", "title": "Zresetować blokadę eksportu?", "warning": "Kontynuuj tylko, jeśli masz pewność, że faktura nie została zaimportowana lub została przez Ciebie usunięta/anulowana w QuickBooks." }, "errors": { "unable": "Nie można zresetować blokady eksportu" }, "fields": { "batchId": "ID partii eksportu", "batchIdPlaceholder": "np. e793a514-34bd-4d7b-b266-9bb15f7087c4", "invoiceNumber": "Numer faktury", "invoiceNumberPlaceholder": "np. INV-1001" }, "modes": { "ariaLabel": "Tryb resetowania blokady eksportu", "batch": "Partia", "invoice": "Faktura" }, "success": { "batchCleared": "Usunięto blokady eksportu dla tej partii. Można ponownie eksportować te faktury.", "invoiceCleared": "Usunięto blokadę eksportu. Można ponownie eksportować tę fakturę.", "noBatchLocks": "Nie znaleziono blokad eksportu dla tej partii.", "noInvoiceLock": "Nie znaleziono blokady eksportu dla tej faktury." }, "title": "Ponownie eksportuj fakturę", "warnings": { "duplicates": "Może to spowodować duplikaty w QuickBooks, jeśli faktura nadal tam istnieje." } }, "success": { "one": "Wyeksportowano {{count}} fakturę do {{filename}}", "other": "Wyeksportowano {{count}} faktur do {{filename}}" }, "title": "Eksport CSV dla QuickBooks" }, "preview": { "duplicates": { "description": "Poniższe faktury pojawiają się wielokrotnie. Ich kwoty podatku zostaną zsumowane:", "title": "Duplikaty faktur ({{count}})" }, "errors": { "more": "... i {{count}} więcej błędów", "title": "Błędy ({{count}})" }, "importResults": "Wyniki importu", "importSummary": { "difference": "Różnica:", "failedUpdates": "Nieudane aktualizacje:", "importedTax": "Zaimportowany podatek:", "originalTax": "Pierwotny podatek:", "successfulUpdates": "Udane aktualizacje:", "title": "Podsumowanie importu" }, "rowLabel": "Wiersz {{row}}:", "stats": { "matchedInvoices": "Dopasowane faktury", "totalRows": "Wiersze łącznie", "uniqueInvoices": "Unikalne faktury", "validRows": "Poprawne wiersze" }, "status": { "databaseMatch": "Dopasowanie w bazie", "rowData": "Dane wiersza", "structure": "Struktura" }, "validationPassed": { "one": "Walidacja zakończona. Gotowe do importu danych podatkowych dla {{count}} faktury.", "other": "Walidacja zakończona. Gotowe do importu danych podatkowych dla {{count}} faktur." }, "validationResults": "Wyniki walidacji", "warnings": { "more": "... i {{count}} więcej ostrzeżeń", "title": "Ostrzeżenia ({{count}})" } }, "settings": { "exports": { "description": "Twórz partie eksportu, pobieraj pliki CSV, importuj raporty podatkowe i przeglądaj historię eksportu.", "managedTitle": "Zarządzane z poziomu Rozliczeń", "openButton": "Otwórz eksporty księgowe", "path": "Rozliczenia → Eksporty księgowe", "title": "Eksporty księgowe" }, "qbo": { "bullets": { "exportLabel": "Eksport", "exportText": "Generuj pliki CSV zgodne z funkcją importu faktur QuickBooks", "taxImportLabel": "Import podatków", "taxImportText": "Przy zewnętrznym obliczaniu podatku importuj kwoty podatku z raportów podatkowych QuickBooks" }, "description": "Eksportuj faktury do CSV do ręcznego importu w QuickBooks i importuj dane podatkowe z raportów QuickBooks.", "exports": { "managedPrefix": "Przejdź do", "managedSuffix": "aby wybrać faktury, wygenerować eksporty CSV QuickBooks, importować raporty podatkowe i zarządzać partiami." }, "intro": "Ta integracja zapewnia alternatywę dla łączności QuickBooks opartej na OAuth:", "mappings": { "description": "Mapuj klientów Alga, usługi, kody podatkowe i warunki płatności na identyfikatory używane w Twojej firmie QuickBooks. Te wartości są używane podczas generowania eksportu CSV.", "title": "Mapowania CSV QuickBooks" }, "note": "Uwaga: Skonfiguruj mapowania poniżej przed eksportem. Eksporty CSV i import podatków są zarządzane z poziomu Rozliczenia → Eksporty księgowe.", "title": "Integracja CSV QuickBooks" } }, "taxImport": { "actions": { "importTaxData": "Importuj dane podatkowe", "importing": "Importowanie...", "validate": "Waliduj", "validating": "Walidowanie..." }, "errors": { "importFailed": "Import nie powiódł się", "readFile": "Nie udało się odczytać pliku", "selectFile": "Wybierz plik CSV", "selectFileAndRange": "Wybierz plik i zakres dat", "templateDownloadFailed": "Nie udało się pobrać szablonu", "validationFailed": "Walidacja nie powiodła się" }, "fields": { "csvFile": "Plik CSV", "dateRangeHelp": "Tylko faktury w tym zakresie dat zostaną przetworzone.", "dateRangeRequired": "Zakres dat (wymagany)", "dropZone": "Przeciągnij i upuść plik CSV tutaj lub kliknij, aby przeglądać", "fileSize": "({{size}} KB)" }, "preview": { "alreadyImported": "{{count}} faktur(a) ma już zaimportowany podatek.", "alreadyImportedSkip": "{{count}} faktur(a) ma już zaimportowany podatek i zostanie pominięte.", "badges": { "databaseMatch": "Dopasowanie w bazie", "rowData": "Dane wiersza", "structure": "Struktura" }, "columns": { "algaInvoice": "Faktura Alga", "contact": "Kontakt", "status": "Status", "taxAmount": "Kwota podatku", "xeroInvoice": "Faktura Xero" }, "errorsTitle": "Błędy ({{count}})", "matched": "Dopasowano", "matchedInvoices": "Dopasowane faktury", "notPendingDescription": "Te faktury zostały utworzone z wewnętrznym obliczaniem podatku. Aby importować podatki z Xero, faktury muszą być skonfigurowane ze źródłem podatku „Pending External” podczas eksportu.", "notPendingSkip": "{{count}} faktur(a) nie ma oczekującego podatku zewnętrznego i zostanie pominięte.", "notPendingTitle": "{{count}} faktur(a) nie używa zewnętrznego obliczania podatku.", "showingFirst20": "Wyświetlanie pierwszych 20 z {{count}} wierszy", "taxToImport": "Podatek do zaimportowania", "title": "Wyniki walidacji", "totalRows": "Wiersze łącznie", "uniqueInvoices": "Unikalne faktury", "unmatched": "Niedopasowane", "validRows": "Poprawne wiersze", "warningsTitle": "Ostrzeżenia ({{count}})" }, "qbo": { "description": "Importuj kwoty podatku z pliku CSV raportu podatkowego QuickBooks.", "help": { "csvRequirement": "Plik CSV musi zawierać kolumny Numer faktury, Data faktury i Kwota podatku.", "downloadTemplate": "Pobierz szablon CSV", "steps": { "s1": "W QuickBooks przejdź do Reports > All Reports", "s2": "Wybierz Sales Tax Liability lub Transaction Detail by Account", "s3": "Ustaw zakres dat tak, aby pasował do Twoich wyeksportowanych faktur", "s4": "Kliknij Export i wybierz Export to Excel lub Export to CSV", "s5": "Zapisz plik i prześlij go tutaj" }, "title": "Jak eksportować dane podatkowe z QuickBooks" }, "success": { "one": "Pomyślnie zaimportowano podatek dla {{count}} faktury. Łączny zaimportowany podatek: ${{amount}}", "other": "Pomyślnie zaimportowano podatek dla {{count}} faktur. Łączny zaimportowany podatek: ${{amount}}" }, "title": "Importuj podatki z CSV QuickBooks" }, "result": { "failed": "{{count}} nieudanych.", "one": "Zaimportowano podatek dla {{count}} faktury. Łączny zaimportowany podatek: {{amount}}.", "other": "Zaimportowano podatek dla {{count}} faktur. Łączny zaimportowany podatek: {{amount}}.", "skipped": "{{count}} pominiętych." }, "unified": { "description": "Importuj kwoty podatku z eksportu CSV Twojego systemu księgowego.", "qbResult": { "one": "Pomyślnie zaimportowano podatek dla {{count}} faktury. Łączny zaimportowany podatek: {{amount}}", "other": "Pomyślnie zaimportowano podatek dla {{count}} faktur. Łączny zaimportowany podatek: {{amount}}" }, "source": { "ariaLabel": "Źródło importu CSV", "quickbooks": "QuickBooks", "xero": "Xero" }, "title": "Importuj podatki z CSV", "xeroCsvDescription": "Wyeksportowany plik CSV zawiera Numer faktury, Nazwę kontaktu, Kwotę wiersza, Kwotę podatku i kategorie śledzenia.", "xeroHelp": { "note": "Uwaga: Dopasowane zostaną tylko faktury pierwotnie wyeksportowane z Alga PSA (z śledzeniem Source System = AlgaPSA).", "s1": "W Xero przejdź do Sales > Invoices", "s2": "Wybierz zakładkę faktury, z której chcesz eksportować (np. Paid, Awaiting Payment)", "s3": "(Opcjonalnie) Kliknij Search, aby filtrować według daty początkowej, końcowej lub typu daty", "s4": "Kliknij Export", "s5": "Xero pobierze plik CSV na Twój komputer", "s6": "Prześlij ten plik CSV tutaj" }, "xeroResult": { "one": "Zaimportowano podatek dla {{count}} faktury. Łącznie: {{amount}}.", "other": "Zaimportowano podatek dla {{count}} faktur. Łącznie: {{amount}}." } }, "xero": { "description": "Importuj kwoty podatku z pliku CSV raportu Xero Invoice Details.", "dropZone": "Przeciągnij i upuść plik CSV raportu Xero Invoice Details tutaj lub kliknij, aby przeglądać", "help": { "csvRequirement": "Raport powinien zawierać kolumny Numer faktury, Nazwa kontaktu, Kwota wiersza i Kwota podatku. Faktury są dopasowywane przy użyciu pola Reference lub kategorii śledzenia ustawionych podczas eksportu.", "steps": { "s1": "W Xero przejdź do Reports > All Reports", "s2": "Wybierz Sales (Invoices and Revenue)", "s3": "Uruchom raport Invoice Details", "s4": "Ustaw zakres dat tak, aby pasował do Twoich wyeksportowanych faktur", "s5": "Kliknij Export i wybierz CSV", "s6": "Prześlij wyeksportowany plik tutaj" }, "title": "Jak eksportować dane podatkowe z Xero" }, "title": "Importuj podatki z CSV Xero" } } }, "entra": { "settings": { "actions": { "disconnect": "Rozłącz", "reconnect": "Połącz ponownie", "reconnecting": "Ponowne łączenie…", "refresh": "Odśwież", "resetFieldSync": "Resetuj", "reviewMappings": "Przejrzyj mapowania", "reviewRemap": "Przejrzyj / Zmapuj ponownie", "hideReviewRemap": "Ukryj Przejrzyj / Zmapuj ponownie", "runDiscovery": "Uruchom wykrywanie", "runDiscoveryAgain": "Uruchom wykrywanie ponownie", "runDiscoveryRunning": "Uruchamianie wykrywania…", "runInitialSync": "Uruchom początkową synchronizację", "runInitialSyncRunning": "Uruchamianie początkowej synchronizacji…", "saveFieldSync": "Zapisz ustawienia synchronizacji pól", "savingFieldSync": "Zapisywanie…", "syncAll": "Synchronizuj wszystkie tenanty teraz", "syncAllStarting": "Uruchamianie…" }, "badges": { "enterprise": "Enterprise", "reviewBeforeInitialSync": "Przejrzyj przed początkową synchronizacją" }, "connection": { "connectingSuffix": " (Łączenie...)", "details": "Szczegóły połączenia", "directCredentialSourceLabel": "Źródło poświadczeń:", "directTenantDefault": "common (multi-tenant)", "directTenantLabel": "Tenant Microsoft:", "cippServerLabel": "Serwer CIPP:", "notAvailable": "Niedostępne", "notConfigured": "Nie skonfigurowano", "notConnectedStatus": "not_connected", "optionsTitle": "Opcje połączenia", "promptDetails": "Połącz Entra, aby wypełnić szczegóły dostawcy." }, "currentStep": { "connect": { "guidance": "Wybierz opcję połączenia, aby kontynuować wdrażanie.", "title": "Krok 1: Połącz" }, "connectionsBelow": "Opcje połączenia pojawiają się poniżej.", "discover": { "guidance": "Uruchom wykrywanie, aby załadować zarządzane tenanty Entra przed mapowaniem.", "title": "Krok 2: Wykryj" }, "label": "Bieżący krok", "map": { "guidance": "Potwierdź lub dostosuj mapowania tenantów, aby odblokować początkową synchronizację.", "title": "Krok 3: Mapuj" }, "sync": { "guidance": "Rozpocznij pierwsze uruchomienie synchronizacji dla potwierdzonych mapowań.", "title": "Krok 4: Początkowa synchronizacja" } }, "description": "Skonfiguruj dostęp Entra na poziomie partnera, wykryj zarządzane tenanty, zmapuj je do klientów i uruchamiaj przepływy synchronizacji.", "disabled": { "description": "Interfejs integracji Entra jest obecnie wyłączony dla tego tenanta.", "title": "Integracja Microsoft Entra" }, "discovery": { "completed": "Wykrywanie ukończone. Wykryto {{count}} tenantów.", "completedOne": "Wykrywanie ukończone. Wykryto {{count}} tenant.", "failed": "Nie udało się uruchomić wykrywania tenantów." }, "errors": { "loadStatus": "Nie można załadować statusu połączenia Entra.", "unknown": "Nieznany błąd" }, "fieldSync": { "description": "Wybierz, które pola profilu Entra mogą nadpisywać lokalne pola kontaktów podczas synchronizacji.", "feedback": { "saveFailed": "Nie udało się zapisać ustawień synchronizacji pól.", "saved": "Zapisano ustawienia synchronizacji pól." }, "options": { "displayName": { "description": "Zezwól, aby nazwa wyświetlana Entra nadpisywała pełne imię kontaktu w powiązanych kontaktach.", "label": "Nazwa wyświetlana" }, "email": { "description": "Zezwól, aby e-mail/UPN Entra nadpisywał e-mail kontaktu w powiązanych kontaktach.", "label": "E-mail" }, "phone": { "description": "Zezwól, aby wartości telefonu Entra nadpisywały numer telefonu kontaktu w powiązanych kontaktach.", "label": "Telefon" }, "role": { "description": "Zezwól, aby tytuł stanowiska Entra nadpisywał rolę kontaktu w powiązanych kontaktach.", "label": "Rola" }, "upn": { "description": "Zezwól, aby UPN Entra nadpisywał zapisaną nazwę principal Entra w powiązanych kontaktach.", "label": "UPN" } }, "title": "Ustawienia synchronizacji pól" }, "guidedStep": { "current": "bieżący", "complete": "ukończony", "locked": "zablokowany", "stepLabel": "Krok {{number}}", "thisIsCurrent": "To jest Twój bieżący krok wdrażania." }, "initialSync": { "failed": "Nie udało się rozpocząć początkowej synchronizacji Entra.", "started": "Rozpoczęto początkową synchronizację. ID uruchomienia: {{runId}}", "startedNoId": "Żądanie rozpoczęcia początkowej synchronizacji zaakceptowane." }, "maintenance": { "description": "Początkowa konfiguracja została ukończona. Skoncentruj się tutaj na operacjach synchronizacji, kontrolach stanu i przeglądach utrzymania.", "healthDescription": "Przejrzyj stan połączenia, uruchamiaj operacje utrzymania i monitoruj aktywność synchronizacji.", "healthTitle": "Podsumowanie stanu", "title": "Tryb bieżących operacji" }, "mapping": { "description": "Przejrzyj sugerowane dopasowania, wybierz właściwego klienta dla każdego tenanta i potwierdź mapowania przed początkową synchronizacją.", "needsReviewLabel": "Wymaga przeglądu:", "savedLabel": "Zapisano:", "selectedLabel": "Wybrane:", "skippedLabel": "Pominięto:", "stepLabel": "Krok 3", "title": "Mapuj tenanty do klientów" }, "onboarding": { "description": "Ukończ każdy krok wdrażania po kolei: połącz, wykryj, mapuj, a następnie uruchom pierwszą synchronizację.", "title": "Tryb konfiguracji" }, "ongoing": { "description": "Użyj tych kontrolek do ręcznych operacji synchronizacji po ukończeniu kroków wdrażania.", "title": "Bieżące operacje" }, "overview": { "connectionLabel": "Połączenie:", "connectionTypeLabel": "Typ połączenia:", "label": "Przegląd", "mappedTenantsLabel": "Zmapowane tenanty:", "nextSyncIntervalEvery": "Co {{minutes}} minut", "nextSyncIntervalLabel": "Następny interwał synchronizacji:" }, "skipped": { "empty": "Obecnie żadne tenanty nie są oznaczone jako pominięte.", "noPrimaryDomain": "Brak domeny podstawowej", "remap": "Zmapuj ponownie", "title": "Pominięte tenanty" }, "status": { "connectionHealth": "Stan połączenia", "label": "Status" }, "syncAll": { "failed": "Nie udało się rozpocząć pełnej synchronizacji Entra.", "started": "Rozpoczęto synchronizację. ID uruchomienia: {{runId}}", "startedNoId": "Żądanie rozpoczęcia synchronizacji zaakceptowane." }, "title": "Integracja Microsoft Entra", "validation": { "label": "Walidacja i wykrywanie", "lastDiscoveryLabel": "Ostatnie wykrywanie:", "lastValidatedLabel": "Ostatnio zwalidowano:", "neverFormatted": "Nigdy", "noneValidationError": "Brak", "validationErrorLabel": "Błąd walidacji:" }, "wizard": { "connect": { "description": "Autoryzuj bezpośrednie uwierzytelnianie partnera Microsoft, aby połączyć ten tenant Entra.", "title": "Połącz" }, "discover": { "description": "Załaduj i zachowaj zarządzane tenanty Entra dla tego tenanta MSP.", "title": "Wykryj tenanty" }, "map": { "description": "Przejrzyj sugestie automatycznego dopasowywania i potwierdź mapowania.", "title": "Mapuj tenanty do klientów" }, "sync": { "description": "Rozpocznij pierwsze uruchomienie synchronizacji dla potwierdzonych mapowań.", "title": "Początkowa synchronizacja" } } }, "tenantMapping": { "actions": { "confirmSelected": "Potwierdź wybrane mapowania", "confirming": "Potwierdzanie…", "import": "Importuj jako nowego klienta", "importing": "Importowanie…", "preselectExact": "Wstępnie wybierz dokładne dopasowania", "refresh": "Odśwież podgląd", "skip": "Pomiń", "skipped": "Pominięto" }, "columns": { "actions": "Akcje", "confidence": "Pewność", "entraTenant": "Tenant Entra", "primaryDomain": "Domena podstawowa", "selectClient": "Wybierz klienta", "status": "Status", "suggestedClient": "Sugerowany klient" }, "empty": "Brak wykrytych tenantów dostępnych dla podglądu mapowania.", "errors": { "confirmFailed": "Nie udało się potwierdzić wybranych mapowań.", "importFailed": "Nie udało się zaimportować tenanta jako klienta.", "loadFailed": "Nie udało się załadować podglądu mapowania tenantów.", "selectAtLeastOne": "Wybierz co najmniej jednego klienta, aby potwierdzić mapowanie.", "skipFailed": "Nie udało się pominąć tego mapowania tenanta." }, "feedback": { "confirmed": "Potwierdzono {{count}} mapowań.", "confirmedOne": "Potwierdzono {{count}} mapowanie." }, "noSuggestion": "Brak sugestii", "picker": { "placeholder": "Wybierz klienta...", "unknownClient": "Nieznany klient" }, "reasons": { "exactDomain": "Dokładna domena", "fuzzyName": "Przybliżona nazwa", "secondaryDomain": "Domena drugorzędna" }, "states": { "autoMatched": "Automatycznie dopasowane", "imported": "Zaimportowane", "needsReview": "Wymaga przeglądu", "skipped": "Pominięte", "unmatched": "Niedopasowane" }, "title": "Podgląd mapowania tenantów" }, "cippDialog": { "actions": { "cancel": "Anuluj", "connect": "Połącz", "connecting": "Łączenie..." }, "description": "Wprowadź URL swojej instancji CIPP oraz token API, aby umożliwić Alga wykrywanie i synchronizację danych Entra.", "errors": { "missingFields": "Zarówno Base URL, jak i token API są wymagane.", "unknown": "Wystąpił nieznany błąd." }, "fields": { "apiToken": "Token API", "apiTokenPlaceholder": "Wprowadź token...", "baseUrl": "Bazowy URL CIPP", "baseUrlPlaceholder": "https://cipp.yourdomain.com" }, "title": "Połącz CIPP" }, "reconciliation": { "actions": { "refresh": "Odśwież", "resolveExisting": "Rozwiąż do istniejącego", "resolveNew": "Rozwiąż do nowego" }, "candidate": { "fallback": "kandydat", "label": "Kontakty kandydujące: {{count}}" }, "contactPicker": { "label": "Istniejący kontakt", "placeholder": "Wybierz istniejący kontakt..." }, "errors": { "enterContactId": "Wprowadź ID kontaktu, aby rozwiązać do istniejącego kontaktu.", "loadQueue": "Nie udało się załadować kolejki uzgadniania.", "resolveFailed": "Nie udało się rozwiązać elementu kolejki." }, "empty": "Żadne niejednoznaczne dopasowania nie oczekują na przegląd.", "loading": "Ładowanie kolejki…", "noEmailIdentity": "Brak tożsamości e-mail", "queuedAt": "{{identity}} · w kolejce {{time}}", "scopedToMappedClient": "Opcje istniejących kontaktów są ograniczone do tego zmapowanego klienta.", "success": { "resolvedExisting": "Rozwiązano element kolejki {{queueItemId}} do istniejącego kontaktu {{contactNameId}}.", "resolvedNew": "Rozwiązano element kolejki {{queueItemId}} przez utworzenie kontaktu {{contactNameId}}." }, "title": "Kolejka niejednoznacznych dopasowań" }, "syncHistory": { "actions": { "hideDetails": "Ukryj szczegóły", "refresh": "Odśwież", "viewDetails": "Zobacz szczegóły" }, "details": { "noResults": "Nie zarejestrowano wyników tenantów.", "stats": "utworzone {{created}}, powiązane {{linked}}, zaktualizowane {{updated}}, niejednoznaczne {{ambiguous}}, dezaktywowane {{inactivated}}", "tenantHeader": "Tenant {{tenant}} · {{status}}", "unknownTenant": "nieznany" }, "empty": "Nie znaleziono jeszcze uruchomień synchronizacji.", "errors": { "loadDetailFailed": "Nie udało się załadować szczegółów uruchomienia.", "loadFailed": "Nie udało się załadować historii synchronizacji.", "loadRunFailed": "Nie udało się załadować uruchomienia {{runId}}." }, "loading": "Ładowanie historii synchronizacji…", "run": { "header": "{{runType}} · {{status}}", "inProgress": "W toku", "tenants": "Tenanty: {{processed}}/{{total}} · Sukces: {{success}} · Nieudane: {{failed}}", "timing": "Rozpoczęto {{started}} · Ukończono {{completed}}" }, "title": "Ostatnie uruchomienia synchronizacji" } }, "google": { "settings": { "actions": { "refresh": "Odśwież", "resetProviders": "Zresetuj dostawców Google", "resetting": "Resetowanie…", "save": "Zapisz", "saving": "Zapisywanie…" }, "afterSaveNotice": "Po zapisaniu przejdź do integracji poczty przychodzącej i kalendarza oraz ponownie autoryzuj dostawców. Istniejący dostawcy Google nie są migrowani.", "consoleLink": "Google Cloud Console", "description": "Skonfiguruj poświadczenia Google Cloud należące do tenanta dla poczty przychodzącej Gmail i Google Calendar.", "errors": { "loadFailed": "Nie można załadować ustawień Google", "resetFailed": "Nie można zresetować dostawców Google", "saveFailed": "Nie można zapisać ustawień Google" }, "fields": { "projectIdHelp": "Używane do provisioningu Gmail Pub/Sub (konto usługi należące do tenanta).", "projectIdLabel": "Identyfikator projektu Google Cloud", "projectIdPlaceholder": "my-project-id" }, "loading": "Ładowanie…", "oauth": { "calendarClientId": "Calendar OAuth Client ID", "calendarClientSecret": "Calendar OAuth Client Secret", "enterSecret": "Wprowadź client secret", "gmailClientId": "Gmail OAuth Client ID", "gmailClientSecret": "Gmail OAuth Client Secret", "sectionTitle": "Aplikacja OAuth", "shareApp": "Użyj tej samej aplikacji OAuth dla Gmail i Calendar", "shareAppHelp": "Zalecane. Nadal można autoryzować oddzielne konta Google dla poszczególnych integracji.", "storedSecret": "Zapisany secret: {{secret}}" }, "redirectUrisLabel": "Redirect URI (skopiuj do klienta OAuth Google)", "scopes": "Zakresy", "scopesCalendar": "Calendar: {{scopes}}", "scopesGmail": "Gmail: {{scopes}}", "serviceAccount": { "alreadyStored": "Klucz konta usługi jest już zapisany (nie jest wyświetlany).", "description": "Wklej klucz JSON konta usługi należącego do tenanta używanego do provisioningu Pub/Sub.", "title": "Konto usługi Pub/Sub (wymagane dla Gmail)" }, "setupGuide": "Przewodnik konfiguracji", "title": "Google", "toasts": { "resetDescription": "Wszyscy dostawcy Google są teraz rozłączeni i wymagają ponownej autoryzacji.", "resetFailedTitle": "Nie udało się zresetować", "resetTitle": "Zresetowano dostawców Google", "saveFailedTitle": "Nie można zapisać ustawień Google", "savedDescription": "Konfiguracja Google tenanta została pomyślnie zaktualizowana.", "savedTitle": "Zapisano ustawienia Google", "unknownError": "Nieznany błąd" } } }, "hudu": { "clientTab": { "source": "Źródło: Hudu", "openInHudu": "Otwórz w Hudu", "refresh": "Odśwież", "loading": "Ładowanie danych Hudu...", "notConnected": "Hudu nie jest połączone. Administrator może je połączyć w sekcji Ustawienia → Integracje.", "unmapped": "Ten klient nie jest jeszcze zmapowany do firmy Hudu. Zmapuj go w sekcji Ustawienia → Integracje → Hudu.", "unreachable": "Nie udało się połączyć z Hudu. Spróbuj ponownie później.", "assetsTitle": "Zasoby", "assetsEmpty": "Brak zasobów Hudu dla tej firmy.", "articlesTitle": "Artykuły", "articlesEmpty": "Brak artykułów Hudu dla tej firmy.", "serial": "Numer seryjny", "folder": "Folder" }, "passwordsTab": { "source": "Źródło: Hudu", "openInHudu": "Otwórz w Hudu", "refresh": "Odśwież", "loading": "Ładowanie haseł Hudu...", "notConnected": "Hudu nie jest połączone. Administrator może je połączyć w sekcji Ustawienia → Integracje.", "unmapped": "Ten klient nie jest jeszcze zmapowany do firmy Hudu. Zmapuj go w sekcji Ustawienia → Integracje → Hudu.", "unreachable": "Nie udało się połączyć z Hudu. Spróbuj ponownie później.", "noPasswordAccess": "Klucz API Hudu nie ma włączonego dostępu do haseł, więc nie można wyświetlić listy haseł. Wygeneruj klucz z dostępem do haseł w panelu administracyjnym Hudu.", "title": "Hasła", "empty": "Brak haseł Hudu dla tej firmy.", "reveal": "Pokaż", "hide": "Ukryj", "copy": "Kopiuj", "revealNoAccess": "Klucz API Hudu nie ma włączonego dostępu do haseł.", "revealNotFound": "Nie znaleziono tego hasła w Hudu.", "revealFailed": "Nie udało się wyświetlić hasła. Spróbuj ponownie później." }, "assets": { "title": "Zasoby", "description": "Mapuj zasoby Hudu do zasobów AlgaPSA, importuj niedopasowane i pobieraj aktualizacje z Hudu.", "loading": "Ładowanie mapowań zasobów...", "empty": "Brak zasobów Hudu dla tej firmy.", "selectAsset": "Wybierz zasób", "serial": "Numer seryjny", "archivedLabel": "Zarchiwizowany", "excludedHint": "Nie zaimportowano (układ wykluczony)", "buttons": { "importAll": "Importuj wszystkie niedopasowane", "importingAll": "Importowanie...", "sync": "Synchronizuj z Hudu", "syncing": "Synchronizowanie...", "import": "Importuj", "importing": "Importowanie...", "save": "Zapisz mapowania", "saving": "Zapisywanie...", "discard": "Odrzuć" }, "counters": { "mapped": "zmapowane", "suggested": "sugerowane", "unmapped": "niezmapowane", "total": "łącznie" }, "table": { "huduAsset": "Zasób Hudu", "algaAsset": "Zasób AlgaPSA", "status": "Status", "actions": "Akcje" }, "status": { "mapped": "Zmapowany", "suggested": "Sugerowany", "unmapped": "Niezmapowany", "pending": "Oczekujący", "stale": "Nieaktualny" }, "suggestion": { "label": "Sugerowane", "source": { "serial": "Zgodność numeru seryjnego", "exactName": "Dokładna nazwa", "fuzzyName": "Przybliżona nazwa" } }, "rowActions": { "unmap": "Usuń mapowanie", "revert": "Cofnij zmianę", "dismiss": "Odrzuć sugestię" }, "pendingSummary": "Niezapisane zmiany: {{total}}", "sync": { "summary": "Synchronizacja zakończona: {{updated}} zaktualizowane · {{unchanged}} bez zmian · {{stale}} nieaktualne.", "rmmSkipped": "{{rmmSkipped}} zarządzane przez RMM pominięte.", "lastSynced": "Ostatnia synchronizacja: {{timestamp}}" }, "import": { "summary": "Import zakończony: {{created}} utworzone · {{skipped}} pominięte · {{failed}} nieudane." }, "success": { "saved": "Zapisano mapowania zasobów: {{total}}", "imported": "Zaimportowano „{{name}}” z Hudu." }, "errors": { "load": "Nie udało się załadować mapowań zasobów Hudu.", "save": "Nie udało się zaktualizować mapowania zasobu.", "import": "Nie udało się zaimportować zasobu Hudu.", "importAll": "Import zbiorczy nie powiódł się.", "serialConflict": "Numer seryjny jest już używany przez „{{name}}”.", "sync": "Nie udało się zsynchronizować z Hudu.", "rateLimited": "Osiągnięto limit żądań Hudu. Spróbuj ponownie później.", "unmapped": "Ten klient nie jest zmapowany do firmy Hudu.", "assetAlreadyMapped": "Ten zasób jest już zmapowany do innego zasobu Hudu. Najpierw usuń istniejące mapowanie.", "huduAssetAlreadyMapped": "Ten zasób Hudu jest już zmapowany do zasobu. Najpierw usuń istniejące mapowanie.", "mappingConflict": "To mapowanie koliduje z istniejącym. Odśwież i spróbuj ponownie.", "notFound": "Nie znaleziono mapowania. Odśwież i spróbuj ponownie." }, "toasts": { "errorTitle": "Błąd mapowania zasobów Hudu" } }, "documents": { "sectionTitle": "Dokumentacja Hudu", "loading": "Ładowanie artykułów Hudu...", "empty": "Brak artykułów Hudu", "unreachable": "Nie udało się połączyć z Hudu. Spróbuj ponownie później." }, "documentsTab": { "title": "Artykuły Hudu", "source": "Źródło: Hudu", "searchPlaceholder": "Szukaj artykułów Hudu...", "loading": "Ładowanie artykułów Hudu...", "empty": "Nie znaleziono artykułów Hudu.", "notConnected": "Hudu nie jest połączone. Administrator może je połączyć w sekcji Ustawienia → Integracje.", "unreachable": "Nie udało się połączyć z Hudu. Spróbuj ponownie później.", "articleColumn": "Artykuł", "clientColumn": "Klient", "companyColumn": "Firma Hudu", "updatedColumn": "Zaktualizowano", "unmapped": "Niezmapowany", "previous": "Poprzednia", "next": "Następna", "pageLabel": "Strona" }, "mapping": { "title": "Mapowania firm", "description": "Mapuj firmy Hudu do klientów AlgaPSA, aby wyświetlać ich dokumentację.", "loading": "Ładowanie mapowań firm...", "companyId": "ID", "idInIntegration": "ID PSA", "selectClient": "Wybierz klienta", "buttons": { "refresh": "Odśwież firmy", "refreshing": "Odświeżanie...", "save": "Zapisz mapowania", "saving": "Zapisywanie...", "discard": "Odrzuć" }, "counters": { "mapped": "zmapowane", "suggested": "sugerowane", "unmapped": "niezmapowane", "total": "łącznie" }, "table": { "huduCompany": "Firma Hudu", "algaClient": "Klient AlgaPSA", "status": "Status" }, "status": { "mapped": "Zmapowane", "suggested": "Sugerowane", "unmapped": "Niezmapowane", "pending": "Oczekujące" }, "suggestion": { "label": "Sugerowane", "source": { "integrationId": "ID integracji PSA", "exactName": "Dokładna nazwa", "fuzzyName": "Przybliżona nazwa" } }, "empty": { "title": "Nie załadowano jeszcze żadnych firm Hudu.", "hint": "Kliknij „Odśwież firmy”, aby pobrać firmy z Hudu." }, "unmappedHint": "Dokumentacja jest wyświetlana tylko dla zmapowanych klientów. Zmapuj każdą firmę Hudu do klienta AlgaPSA, aby ją włączyć.", "success": { "refreshed": "Odświeżono firmy Hudu.", "saved": "Zapisano mapowania: {{total}}" }, "errors": { "load": "Nie udało się załadować mapowań firm Hudu.", "refresh": "Nie udało się odświeżyć firm Hudu.", "save": "Nie udało się zaktualizować mapowania.", "clientAlreadyMapped": "Ten klient jest już zmapowany do innej firmy Hudu. Najpierw usuń istniejące mapowanie.", "companyAlreadyMapped": "Ta firma Hudu jest już zmapowana do innego klienta. Najpierw usuń istniejące mapowanie.", "mappingConflict": "To mapowanie koliduje z istniejącym. Odśwież i spróbuj ponownie.", "notFound": "Nie znaleziono mapowania. Odśwież i spróbuj ponownie." }, "toasts": { "errorTitle": "Błąd mapowania Hudu" }, "pendingSummary": "Niezapisane zmiany: {{total}}", "rowActions": { "unmap": "Usuń mapowanie", "revert": "Cofnij zmianę", "dismiss": "Odrzuć sugestię" } }, "layoutMap": { "title": "Układy zasobów", "description": "Wybierz, jako jaki typ zasobu AlgaPSA importowany jest każdy układ zasobów Hudu. Nieskonfigurowane układy są importowane jako Nieznany.", "loading": "Ładowanie układów zasobów...", "empty": "Nie znaleziono układów zasobów w Hudu.", "suggested": "Sugerowane", "table": { "huduLayout": "Układ Hudu", "algaAssetType": "Typ zasobu AlgaPSA" }, "types": { "workstation": "Stacja robocza", "networkDevice": "Urządzenie sieciowe", "server": "Serwer", "mobileDevice": "Urządzenie mobilne", "printer": "Drukarka", "unknown": "Nieznany" }, "excludeOption": "Nie importuj", "buttons": { "save": "Zapisz mapowanie układów", "saving": "Zapisywanie..." }, "success": { "saved": "Zapisano mapowanie układów zasobów." }, "errors": { "load": "Nie udało się załadować układów zasobów Hudu.", "save": "Nie udało się zapisać mapowania układów zasobów." }, "createType": { "button": "Utwórz typ z układu", "creating": "Tworzenie...", "success": "Utworzono typ zasobu i przypisano go do tego układu.", "errors": { "create": "Nie udało się utworzyć typu zasobu z tego układu.", "slugConflict": "Typ zasobu o tej nazwie już istnieje. Wybierz go z listy." } } }, "settings": { "title": "Hudu", "description": "Połącz swoją instancję Hudu, aby wyświetlać dokumentację i poświadczenia klientów w AlgaPSA.", "loading": "Ładowanie statusu połączenia Hudu...", "detectedInstance": "Instancja Hudu", "status": { "connected": "Połączono", "notConnected": "Nie połączono", "error": "Błąd" }, "passwordAccess": { "enabled": "Dostęp do haseł włączony", "disabled": "Dostęp do haseł nie jest włączony dla tego klucza" }, "fields": { "baseUrl": { "label": "Bazowy URL", "placeholder": "https://your-instance.huducloud.com" }, "apiKey": { "label": "Klucz API", "placeholder": "Wprowadź klucz API Hudu", "keepExisting": "Pozostaw puste, aby zachować bieżący klucz API", "writeOnlyHint": "Zapisany klucz API nigdy nie jest wyświetlany. Pozostaw to pole puste, aby nadal go używać." } }, "buttons": { "test": "Testuj połączenie", "testing": "Testowanie...", "connect": "Połącz", "connecting": "Łączenie...", "disconnect": "Rozłącz", "disconnecting": "Rozłączanie..." }, "success": { "connected": "Połączono z Hudu.", "testPassedWithPasswords": "Test połączenia Hudu powiódł się. Dostęp do haseł jest włączony dla tego klucza.", "testPassedNoPasswords": "Test połączenia Hudu powiódł się. Dostęp do haseł nie jest włączony dla tego klucza.", "disconnected": "Rozłączono połączenie z Hudu." }, "errors": { "loadStatus": "Nie można załadować statusu połączenia Hudu.", "baseUrlRequired": "Bazowy URL jest wymagany.", "baseUrlFormat": "Wprowadź poprawny URL, np. https://your-instance.huducloud.com", "invalidBaseUrl": "Pod tym bazowym URL nie znaleziono API Hudu (404). Sprawdź bazowy URL.", "unreachable": "Nie udało się połączyć z Hudu pod tym bazowym URL. Sprawdź URL i połączenie sieciowe.", "invalidKey": "Hudu odrzuciło klucz API (401). Wprowadź poprawny klucz API.", "testFailed": "Test połączenia Hudu nie powiódł się.", "connectFailed": "Nie udało się połączyć z Hudu.", "disconnectFailed": "Nie udało się rozłączyć Hudu." }, "toasts": { "errorTitle": "Błąd połączenia Hudu" } } }, "microsoft": { "settings": { "actions": { "entraLink": "Microsoft Entra", "newProfile": "Nowy profil", "openTeamsSetup": "Otwórz konfigurację Teams", "refresh": "Odśwież", "resetProviders": "Zresetuj dostawców Microsoft", "resetting": "Resetowanie…" }, "archiveDialog": { "archiving": "Archiwizowanie…", "cancel": "Zachowaj profil", "confirm": "Zarchiwizuj profil", "message": "Zarchiwizować {{name}}? Istniejące odniesienia historyczne pozostaną nienaruszone, ale profil nie będzie już dostępny dla nowych powiązań.", "title": "Zarchiwizować profil Microsoft?" }, "binding": { "bound": "Powiązany", "boundProfileLabel": "Powiązany profil", "createFirst": "Najpierw utwórz profil", "needsAttention": "Wymaga uwagi", "saving": "Zapisywanie…", "selectProfile": "Wybierz profil", "unbound": "Niepowiązany" }, "bindings": { "summaryBound": "{{consumer}} jest powiązany z {{profile}}.", "summaryNone": "Żaden profil Microsoft nie jest obecnie powiązany z {{consumer}}.", "summaryUnavailable": "{{consumer}} jest powiązany z niedostępnym profilem.", "warningArchived": "{{consumer}} nadal jest powiązany z zarchiwizowanym profilem. Powiąż go ponownie z aktywnym profilem.", "warningNoBinding": "Nie skonfigurowano jeszcze żadnego powiązania dla {{consumer}}.", "warningNotReady": "{{consumer}} jest powiązany z {{profile}}, ale ten profil nadal wymaga konfiguracji.", "warningProfileMissing": "{{consumer}} jest powiązany z profilem, który nie jest już dostępny. Powiąż go ponownie z aktywnym profilem." }, "bindingsAlertCe": "Jawne powiązania są źródłem prawdy dla wyboru profilu MSP SSO. Skonfiguruj domeny logowania osobno po wybraniu powiązanego profilu.", "bindingsAlertEe": "Jawne powiązania są źródłem prawdy dla wyboru profili MSP SSO, poczty, kalendarza i Teams.", "consumerBindings": { "descriptionCe": "Powiąż jeden profil Microsoft z MSP SSO na potrzeby logowania i używania domeny logowania.", "descriptionEe": "Powiąż jeden profil Microsoft na każdego obsługiwanego konsumenta. Przypisanie jednego konsumenta nie zmienia pozostałych.", "title": "Jawne powiązania konsumentów" }, "consumers": { "calendar": { "description": "Wybierz, który profil Microsoft powinien być używany do synchronizacji kalendarza Outlook.", "label": "Kalendarz", "reconnect": "Istniejące połączenia kalendarza Microsoft mogą wymagać ponownej autoryzacji po zmianie powiązanego profilu." }, "email": { "description": "Wybierz, który profil Microsoft powinien być używany do poczty przychodzącej Outlook.", "label": "E-mail", "reconnect": "Istniejące połączenia e-mail Outlook mogą wymagać ponownej autoryzacji po zmianie powiązanego profilu." }, "mspSso": { "description": "Wybierz, który profil Microsoft obsługuje domeny logowania MSP SSO, logowanie Microsoft i wykrywanie tenanta.", "label": "MSP SSO" }, "teams": { "description": "Wybierz, który profil Microsoft powinien być używany do instalacji Microsoft Teams i procesów uwierzytelniania.", "label": "Teams" } }, "descriptionCe": "Zarządzaj profilami Microsoft należącymi do tenanta dla MSP SSO, logowania Microsoft i wykrywania domen logowania.", "descriptionEe": "Zarządzaj profilami Microsoft należącymi do tenanta dla MSP SSO, poczty Outlook, synchronizacji kalendarza i Microsoft Teams.", "dialog": { "cancel": "Anuluj", "clientId": "Client ID", "clientSecret": "Client secret", "clientSecretPlaceholder": "Wprowadź client secret", "clientSecretPlaceholderEdit": "Pozostaw puste, aby zachować bieżący secret", "createProfile": "Utwórz profil", "createTitle": "Utwórz profil Microsoft", "descriptionCreate": "Utwórz profil Microsoft należący do tenanta, a następnie jawnie powiąż go z konsumentami Microsoft, których chcesz używać.", "descriptionEdit": "Zaktualizuj wybrany profil Microsoft. Pozostaw secret pusty, aby zachować istniejącą wartość.", "displayName": "Nazwa wyświetlana", "displayNamePlaceholder": "Tenant produkcyjny Acme", "editTitle": "Edytuj profil Microsoft", "saveChanges": "Zapisz zmiany", "saving": "Zapisywanie…", "setDefault": "Ustaw ten profil jako domyślny profil Microsoft", "setDefaultHelp": "Domyślne profile pozostają dostępne dla procesów zarządzania profilem i metadanych bezpiecznych dla migracji, a nie dla routingu konsumentów.", "storedSecretHint": "Zapisany secret: {{secret}}. Pozostaw to pole puste, aby zachować je bez zmian.", "tenantId": "Tenant ID" }, "empty": { "createButton": "Utwórz profil Microsoft", "descriptionCe": "Najpierw utwórz nazwany profil, a następnie jawnie powiąż go z procesami logowania MSP SSO i domen logowania.", "descriptionEe": "Najpierw utwórz nazwany profil, a następnie jawnie powiąż go z MSP SSO, pocztą Outlook, synchronizacją kalendarza i Teams.", "title": "Brak profili Microsoft" }, "errors": { "archive": "Nie można zarchiwizować profilu Microsoft", "loadBindings": "Nie można załadować powiązań Microsoft", "loadStatus": "Nie można załadować ustawień Microsoft", "resetProviders": "Nie można zresetować dostawców Microsoft", "saveProfile": "Nie można zapisać profilu Microsoft", "setDefault": "Nie można ustawić domyślnego profilu Microsoft", "updateBinding": "Nie można zaktualizować powiązania Microsoft" }, "guidance": { "applicationIdUri": "Application ID URI", "calendarRedirect": "Redirect URI synchronizacji kalendarza", "calendarTitle": "Wskazówki dotyczące kalendarza", "clientId": "Client ID", "currentProfileTitle": "Bieżące wartości profilu", "emailRedirect": "Redirect URI poczty przychodzącej", "emailTitle": "Wskazówki dotyczące poczty", "mspSsoTitle": "Wskazówki dotyczące MSP SSO", "notConfigured": "Nie skonfigurowano", "redirectUri": "Redirect URI", "requiresBaseUrl": "Wymaga bazowego URL i Client ID", "scopes": "Zakresy", "teamsBotRedirect": "Redirect URI bota osobistego", "teamsMessageRedirect": "Redirect URI message extension", "teamsScopes": "Zakresy Teams", "teamsTabRedirect": "Redirect URI osobistego tabu", "teamsTitle": "Wskazówki dotyczące Teams", "tenantId": "Tenant ID", "unavailable": "Niedostępne" }, "profileCard": { "activeBindings": "Aktywne powiązania", "archive": "Archiwizuj", "clientId": "Client ID", "defaultBadge": "Domyślny", "edit": "Edytuj", "guidanceSummary": "Wskazówki dotyczące rejestracji aplikacji Microsoft", "noVisibleBindings": "Brak widocznych powiązań konsumentów", "readinessTitle": "Gotowość profilu", "readyCe": "Ten profil jest gotowy do powiązania MSP SSO i procesów logowania domen.", "readyEe": "Ten profil jest gotowy do powiązań MSP SSO, poczty Outlook i kalendarza.", "readyEeTeams": "Ten profil jest gotowy do powiązań MSP SSO, poczty Outlook, synchronizacji kalendarza i Teams.", "setDefault": "Ustaw jako domyślny", "storedSecret": "Zapisany secret", "teamsAppIdUri": "Teams Application ID URI", "tenantIdLabel": "Tenant ID:", "updating": "Aktualizowanie…" }, "providerReconnect": { "description": "Użyj tego, jeśli rotujesz poświadczenia lub celowo przepinasz pocztę Outlook lub kalendarz na inny profil Microsoft.", "title": "Ponowne łączenie dostawcy" }, "readiness": { "archived": "Zarchiwizowane profile nie mogą być używane do nowych powiązań Microsoft.", "clientIdMissing": "Brak Client ID.", "clientSecretMissing": "Client secret nie został skonfigurowany.", "tenantIdMissing": "Brak Tenant ID." }, "statusBadges": { "archived": "Zarchiwizowany", "needsAttention": "Wymaga uwagi", "ready": "Gotowy" }, "title": "Microsoft", "toasts": { "archiveFailedTitle": "Nie można zarchiwizować profilu Microsoft", "archivedDescription": "{{name}} został pomyślnie zarchiwizowany.", "archivedTitle": "Zarchiwizowano profil Microsoft", "bindingFailedTitle": "Nie można zaktualizować powiązania {{consumer}}", "bindingUpdatedDescription": "{{consumer}} używa teraz {{profile}}.", "bindingUpdatedTitle": "Zaktualizowano powiązanie {{consumer}}", "defaultUpdatedDescription": "{{name}} jest teraz domyślnym rekordem profilu Microsoft.", "defaultUpdatedTitle": "Zaktualizowano domyślny profil Microsoft", "profileCreated": "Utworzono profil Microsoft", "profileCreatedDescription": "Profil Microsoft jest gotowy do powiązania z widocznymi konsumentami Microsoft.", "profileUpdated": "Zaktualizowano profil Microsoft", "profileUpdatedDescription": "Zmiany profilu Microsoft zostały pomyślnie zapisane.", "resetDescription": "Istniejące połączenia poczty Outlook i kalendarza wymagają teraz ponownej autoryzacji.", "resetFailedTitle": "Nie udało się zresetować", "resetTitle": "Zresetowano dostawców Microsoft", "saveFailedTitle": "Nie można zapisać profilu Microsoft", "selectedProfile": "wybrany profil", "setDefaultFailedTitle": "Nie można ustawić domyślnego profilu" }, "validation": { "clientIdRequired": "Microsoft OAuth Client ID jest wymagany", "clientSecretRequired": "Microsoft OAuth Client Secret jest wymagany", "displayNameRequired": "Nazwa wyświetlana profilu Microsoft jest wymagana", "tenantIdRequired": "Microsoft Tenant ID jest wymagany" } } }, "qbo": { "live": { "defaultCompany": "Połączona firma QuickBooks" }, "settings": { "actions": { "connect": "Połącz QuickBooks", "disconnect": "Rozłącz QuickBooks", "disconnecting": "Rozłączanie…", "reconnect": "Połącz ponownie QuickBooks", "refresh": "Odśwież", "saveCredentials": "Zapisz poświadczenia QuickBooks", "saving": "Zapisywanie…" }, "badges": { "connectionExpired": "Połączenie wymaga uwagi", "credentialsReady": "Poświadczenia gotowe", "credentialsRequired": "Wymagane poświadczenia", "defaultConnected": "Połączono firmę", "noCompany": "Nie połączono żadnej firmy" }, "callback": { "accessDenied": "Dostęp do QuickBooks został odmówiony przed ukończeniem połączenia.", "configMissing": "Nie można uruchomić QuickBooks OAuth, ponieważ Client ID i Client Secret nie zostały w pełni skonfigurowane.", "generic": "QuickBooks zwróciło błąd OAuth: {{code}}", "invalidState": "Stan OAuth QuickBooks był nieprawidłowy lub wygasł. Rozpocznij przepływ łączenia ponownie.", "missingParams": "W wywołaniu zwrotnym QuickBooks brakowało wymaganych parametrów. Rozpocznij przepływ łączenia ponownie.", "oauthFailed": "Wywołanie zwrotne OAuth QuickBooks nie powiodło się. Spróbuj ponownie się połączyć. Jeśli problem nadal występuje, sprawdź swój redirect URI i zakresy.", "tokenExchangeFailed": "Intuit nie zwróciło oczekiwanych tokenów. Spróbuj ponownie się połączyć." }, "clientIdLabel": "QuickBooks Client ID", "clientIdPlaceholder": "Wklej Client ID swojej aplikacji Intuit", "clientSecretLabel": "QuickBooks Client Secret", "clientSecretPlaceholder": "Wklej Client Secret swojej aplikacji Intuit", "connectSuccess": "QuickBooks połączone pomyślnie. Połączona firma jest teraz domyślnym kontekstem QuickBooks na żywo.", "connection": { "defaultCompany": "Połączona firma", "description": "Uruchom OAuth dopiero po skonfigurowaniu poświadczeń aplikacji QuickBooks. Rozłączenie usuwa zapisane tokeny dostępu QuickBooks, ale zachowuje poświadczenia aplikacji należącej do tenanta.", "notConnected": "Nie połączono jeszcze żadnej firmy QuickBooks. Zapisz poświadczenia, a następnie kliknij Połącz QuickBooks.", "realmId": "Realm ID: {{id}}", "title": "Połączenie QuickBooks na żywo", "unknown": "nieznany" }, "credentialsSaved": "Zapisano poświadczenia QuickBooks. Można teraz rozpocząć przepływ OAuth QuickBooks.", "csvAvailableMiddle": "w tej samej sekcji Księgowość i zarządzaj eksportami z", "csvAvailablePrefix": "Jeśli wolisz ręczny przepływ, nadal używaj", "csvAvailableTitle": "QuickBooks CSV pozostaje dostępne", "description": "Skonfiguruj poświadczenia OAuth QuickBooks, połącz swoją firmę QuickBooks i zachowaj QuickBooks na żywo obok ręcznego przepływu QuickBooks CSV.", "disconnectSuccess": "Zapisane połączenie QuickBooks zostało usunięte. Poświadczenia aplikacji QuickBooks należące do tenanta zostały zachowane.", "environment": "Środowisko Intuit", "environmentProduction": "Produkcja", "environmentSandbox": "Sandbox", "errors": { "disconnect": "Nie udało się rozłączyć QuickBooks.", "load": "Nie udało się załadować ustawień QuickBooks.", "saveCredentials": "Nie udało się zapisać poświadczeń QuickBooks." }, "howItWorksDescription": "Zapisz tutaj poświadczenia aplikacji QuickBooks, ukończ przepływ OAuth Intuit, a Alga PSA użyje połączonej firmy QuickBooks jako domyślnego kontekstu na żywo dla eksportów i mapowań.", "howItWorksTitle": "Jak działa QuickBooks na żywo w tej wersji", "loading": "Ładowanie ustawień QuickBooks…", "mapping": { "alert": "Pozycje QuickBooks, kody podatkowe i warunki są ładowane z połączonej firmy, aby eksporty na żywo mogły nadal używać pierwszego zapisanego połączenia QuickBooks w v1.", "descriptionPrefix": "Skonfiguruj mapowania QuickBooks na żywo dla połączonej firmy. Te mapowania są ograniczone do", "placeholderAlert": "Menedżer mapowań staje się dostępny po połączeniu pierwszej firmy QuickBooks i ustawieniu jej jako domyślnego kontekstu QuickBooks na żywo.", "placeholderDescription": "Połącz firmę QuickBooks przed skonfigurowaniem mapowań pozycji i podatków QuickBooks na żywo.", "title": "Mapowanie i konfiguracja QuickBooks na żywo" }, "noClientId": "Dla tego tenanta nie zapisano jeszcze żadnego Client ID.", "noClientSecret": "Dla tego tenanta nie zapisano jeszcze żadnego Client Secret.", "quickbooksCsv": "QuickBooks CSV", "redirectUri": "Redirect URI", "requiredScopes": "Wymagane zakresy", "storedClientId": "Zapisany Client ID: {{value}}", "storedClientSecret": "Zapisany Client Secret: {{value}}", "tenantOauthDescription": "Wklej poświadczenia aplikacji Intuit zarejestrowane dla tego tenanta lub pozostaw puste, aby użyć QuickBooks na poziomie aplikacji, jeśli jest skonfigurowane. Wartości secret nigdy nie są zwracane do przeglądarki po zapisaniu.", "tenantOauthTitle": "Aplikacja OAuth należąca do tenanta", "title": "QuickBooks Online" }, "sync": { "healthCardTitle": "Stan synchronizacji", "healthCardDescription": "Stan i ustawienia synchronizacji księgowej QuickBooks. Uruchamiana co 15 minut.", "lastCycleTitle": "Ostatni cykl synchronizacji", "lastCycleStatus": "Status", "lastCycleFinishedAt": "Zakończono", "lastCycleStats": "Wyniki", "statOpsProcessed": "Przetworzone operacje: {{count}}", "statDriftFound": "Rozbieżności: {{count}}", "statPaymentsApplied": "Zastosowane płatności: {{count}}", "noLastCycle": "Nie uruchomiono jeszcze żadnego cyklu synchronizacji.", "nextRunHint": "Uruchamiana automatycznie co 15 minut, gdy automatyczna synchronizacja jest włączona.", "pendingOps": "Operacje oczekujące", "erroredOps": "Operacje z błędami", "driftCount": "Rozbieżności", "openExceptions": "Otwarte wyjątki", "refreshTokenExpiry": "Token QuickBooks wygasa {{date}}", "refreshTokenExpired": "Token QuickBooks wygasł — połącz ponownie, aby wznowić synchronizację.", "autoSyncLabel": "Automatyczna synchronizacja włączona", "syncNowButton": "Synchronizuj teraz", "syncNowRunning": "Synchronizowanie…", "syncNowSuccess": "Synchronizacja zakończona pomyślnie.", "syncNowSkipped": "Pominięto synchronizację: {{reason}}", "syncNowError": "Synchronizacja nie powiodła się: {{error}}", "viewExceptionsLink": "Zobacz wyjątki", "autoApplyCreditsWarning": "QuickBooks jest ustawiony na automatyczne stosowanie kredytów, co koliduje z aplikowaniem kredytów sterowanym z Alga: QuickBooks może zastosować wyeksportowane noty kredytowe do innej faktury przed synchronizacją. W QuickBooks przejdź do „Account and Settings → Advanced → Automation” i wyłącz opcję „Automatically apply credits”.", "configTitle": "Konfiguracja synchronizacji", "connectedCompanies": "Połączone firmy", "defaultClass": "Klasa domyślna", "defaultDepartment": "Dział domyślny", "defaultRealm": "Domyślny", "depositAccount": "Konto wpłat", "makeDefault": "Ustaw jako domyślne", "noDefault": "Brak domyślnego", "saving": "Zapisywanie…", "undepositedFunds": "Środki niezdeponowane (domyślnie)" } }, "rmm": { "ninjaOne": { "loading": "Ładowanie ustawień integracji NinjaOne...", "card": { "title": "NinjaOne RMM Integration", "description": "Connect your NinjaOne account to synchronize devices, receive alerts, and enable remote access capabilities.", "skeletonDescription": "Loading NinjaOne integration..." }, "status": { "checking": "Checking NinjaOne connection...", "notConnected": { "title": "Not connected to NinjaOne", "description": "Connect your NinjaOne account to sync devices, receive alerts, and enable remote access." }, "connected": "Connected to NinjaOne", "connectedWithErrors": "NinjaOne connected with sync errors", "instanceLabel": "Instance:", "organizations": "{{count}} organizations", "devices": "{{count}} devices", "activeAlerts": "{{count}} active alerts", "lastSynced": "Ostatnia synchronizacja: {{time}}" }, "setup": { "title": "Setup Instructions", "steps": { "login": "Log into your NinjaOne dashboard", "navigate": "Navigate to Administration → Apps → API", "addClient": "Click \"+ Add client app\" to create a new API application", "platform": "Set Application Platform to \"Web (PHP, Java, .Net Core, etc.)\"", "name": "Enter a Name (e.g., \"Alga PSA\")", "redirectUri": "Add the redirect URI:", "scopes": "Under \"Scopes\", check \"Monitoring\" and \"Management\"", "grantTypes": "Under \"Allowed grant types\", check \"Authorization code\", \"Client credentials\", and \"Refresh token\"", "addAndCopy": "Click \"Add\" and copy the Client ID and Client Secret below" }, "docsPrefix": "For detailed setup instructions, see", "docsSection": "Section 10.15", "docsSuffix": "in the documentation.", "openApiSettings": "Open NinjaOne API Settings" }, "credentials": { "title": "API Credentials", "saved": "Credentials saved", "clientIdLabel": "Client ID", "clientIdPlaceholder": "Enter your NinjaOne Client ID", "clientSecretLabel": "Client Secret", "clientSecretPlaceholder": "Enter your NinjaOne Client Secret", "clientSecretUpdatePlaceholder": "Enter new secret to update", "secretMaskedLabel": "Secret", "saving": "Saving...", "save": "Save Credentials" }, "region": { "hint": "Select your NinjaOne region, then click ‘Connect to NinjaOne’ to authorize access.", "label": "Region:" }, "actions": { "refreshing": "Refreshing...", "refreshStatus": "Refresh Status", "syncing": "Syncing...", "syncOrganizations": "Sync Organizations", "syncingDevices": "Syncing Devices...", "syncDevices": "Sync Devices", "disconnecting": "Disconnecting...", "disconnect": "Disconnect", "connect": "Connect to NinjaOne" }, "disconnectModal": { "title": "Disconnect NinjaOne", "description": "Are you sure you want to disconnect NinjaOne? This will stop device synchronization and alert notifications, and remove your stored API credentials. Organization mappings will be preserved.", "cancel": "Cancel", "confirm": "Disconnect" }, "toasts": { "connectSuccess": "Successfully connected to NinjaOne.", "connectFailed": "NinjaOne connection failed.", "connectFailedWithDetail": "NinjaOne connection failed: {{detail}}", "disconnectSuccess": "NinjaOne connection successfully disconnected.", "credentialsSaved": "NinjaOne API credentials saved successfully.", "orgSyncSuccess": "Organization sync completed. Processed: {{processed}}, Created: {{created}}, Updated: {{updated}}", "deviceSyncSuccess": "Device sync completed. Processed: {{processed}}, Created: {{created}}, Updated: {{updated}}" }, "errors": { "loadStatus": "Failed to load NinjaOne connection status.", "saveCredentials": "Failed to save credentials.", "connect": "Failed to initiate NinjaOne connection.", "disconnect": "Failed to disconnect NinjaOne.", "disconnectUnexpected": "An unexpected error occurred while disconnecting.", "orgSyncFailed": "Organization sync failed.", "deviceSyncFailed": "Device sync failed." }, "compliance": { "actions": { "retry": "Ponów", "syncing": "Synchronizacja...", "syncPatches": "Synchronizuj poprawki", "syncSoftware": "Synchronizuj oprogramowanie" }, "description": "Przegląd stanu urządzeń zarządzanych przez RMM", "loading": "Ładowanie danych zgodności...", "metrics": { "devicesOffline": "Urządzenia offline", "devicesOnline": "Urządzenia online", "devicesWithAlerts": "Urządzenia z alertami", "patchesFailed": "Poprawki nieudane", "patchesPending": "Poprawki oczekujące" }, "noData": "Brak dostępnych danych zgodności", "summaryError": "Nie udało się załadować podsumowania zgodności", "title": "Zgodność floty" } }, "setup": { "activeConfiguration": "Aktywna konfiguracja", "comingSoon": "Integracja RMM wkrótce dostępna", "configure": "Konfiguruj integrację", "selected": "Wybrano {{title}}", "title": "Integracje RMM", "backToList": "Wszystkie integracje RMM", "loadingProvider": "Ładowanie ustawień integracji {{title}}...", "status": { "connected": "Połączono", "connectedOneDevice": "Połączono · 1 urządzenie", "connectedWithDevices": "Połączono · {{count}} urządzeń", "notConnected": "Nie połączono", "syncError": "Błąd synchronizacji" } }, "tactical": { "actions": { "disconnect": "Rozłącz", "disconnecting": "Rozłączanie...", "ingestSoftware": "Pobierz oprogramowanie", "ingesting": "Pobieranie...", "refresh": "Odśwież", "save": "Zapisz", "saving": "Zapisywanie...", "syncAlerts": "Synchronizuj alerty", "syncClients": "Synchronizuj klientów", "syncDevices": "Synchronizuj urządzenia", "syncing": "Synchronizacja...", "testConnection": "Testuj połączenie", "testing": "Testowanie..." }, "auth": { "apiKey": "Klucz API", "enterApiKey": "Wprowadź klucz API", "enterPassword": "Wprowadź hasło", "enterUsername": "Wprowadź nazwę użytkownika", "knox": "Knox", "knoxOption": "Nazwa użytkownika/hasło (token Knox)", "knoxTokenSaved": "Zapisano token Knox: {{value}}", "mode": "Uwierzytelnianie", "password": "Hasło", "saved": "Zapisano: {{value}}", "savedEnterToUpdate": "Zapisano (wprowadź, aby zaktualizować)", "totp": "Kod TOTP", "username": "Nazwa użytkownika" }, "autoSync": "Automatyczna synchronizacja", "client": { "loading": "Ładowanie klientów…", "select": "Wybierz klienta" }, "counts": { "activeAlerts": "Aktywne alerty", "lastSync": "Ostatnia synchronizacja", "mappedOrgs": "Zmapowane organizacje", "never": "Nigdy", "syncedDevices": "Zsynchronizowane urządzenia" }, "description": "Połącz Tactical RMM, aby synchronizować zasoby i pobierać alerty.", "errors": { "backfillAlerts": "Uzupełnianie alertów nie powiodło się", "connectionTest": "Test połączenia nie powiódł się", "disconnect": "Rozłączanie nie powiodło się", "ingestSoftware": "Pobieranie oprogramowania nie powiodło się", "loadOrgMappings": "Nie można załadować mapowań organizacji", "loadSettings": "Nie można załadować ustawień Tactical RMM", "saveConfig": "Nie można zapisać konfiguracji Tactical RMM", "someAlertsFailed": "Niektórych alertów nie można było zaktualizować: {{errors}}", "someDevicesFailed": "Niektórych urządzeń nie można było zsynchronizować: {{errors}}", "someOrgsFailed": "Niektórych organizacji nie można było zsynchronizować: {{errors}}", "someSoftwareFailed": "Niektórych wierszy oprogramowania nie można było pobrać: {{errors}}", "syncDevices": "Synchronizacja urządzeń nie powiodła się", "syncOrgs": "Synchronizacja organizacji nie powiodła się", "totpRequired": "Wymagany TOTP. Wprowadź bieżący kod i przetestuj ponownie.", "updateMapping": "Nie można zaktualizować mapowania" }, "fields": { "instanceUrl": "URL instancji", "instanceUrlHelp": "Użyj hosta API Tactical — subdomeny api., np. https://api.example.com. Nie adresu URL panelu (rmm.) i bez końcowego /api.", "betaApiNote": "Wymaga włączenia interfejsu API Beta w Tactical na serwerze: ustaw BETA_API_ENABLED = True w Tactical, a następnie uruchom ponownie. Bez API Beta test połączenia i synchronizacja nie powiodą się." }, "lastError": "Ostatni błąd: {{error}}", "loadingSettings": "Ładowanie ustawień Tactical RMM...", "sections": { "alerts": "Alerty", "alertsDescription": "Opcjonalnie: uzupełnij historyczne lub aktywne alerty z Tactical do Alga.", "devices": "Urządzenia", "devicesDescription": "Synchronizuj agentów Tactical jako zasoby Alga dla zmapowanych organizacji.", "orgMapping": "Mapowanie organizacji", "orgMappingDescription": "Przypisz każdego klienta Tactical do klienta Alga i kontroluj automatyczną synchronizację dla każdej organizacji.", "orgMappingEmpty": "Nie znaleziono organizacji. Najpierw uruchom „Synchronizuj klientów”.", "organizations": "Organizacje", "organizationsDescription": "Synchronizuj klientów Tactical jako mapowania organizacji Alga, a następnie mapuj ich do klientów Alga.", "softwareInventory": "Inwentarz oprogramowania", "softwareInventoryDescription": "Opcjonalnie: pobierz zbuforowany inwentarz oprogramowania przez Tactical /api/software/ (bez wywołań odświeżania dla poszczególnych agentów).", "webhooks": "Webhooki (alerty)", "webhooksDescription": "Skonfiguruj webhook akcji alertu Tactical, używając wspólnego nagłówka secret poniżej." }, "status": { "authPrefix": "Uwierzytelnianie:", "connected": "Połączono", "disconnected": "Rozłączono", "instanceUrlNotSet": "URL instancji nie jest ustawiony" }, "statusLine": { "configured": "Status: Skonfigurowano", "notConfigured": "Status: Nie skonfigurowano" }, "success": { "alertBackfillCompleted": "Uzupełnianie alertów zakończone. Przetworzone: {{processed}}, Utworzone: {{created}}, Zaktualizowane: {{updated}}, Nieudane: {{failed}}", "connection": "Połączenie pomyślne.", "deviceSyncCompleted": "Synchronizacja urządzeń zakończona. Przetworzone: {{processed}}, Utworzone: {{created}}, Zaktualizowane: {{updated}}, Usunięte: {{deleted}}, Nieudane: {{failed}}", "disconnected": "Rozłączono.", "orgSyncCompleted": "Synchronizacja organizacji zakończona. Przetworzone: {{processed}}, Utworzone: {{created}}, Zaktualizowane: {{updated}}, Nieudane: {{failed}}", "saved": "Konfiguracja Tactical RMM zapisana.", "softwareIngestionCompleted": "Pobieranie oprogramowania zakończone. Przetworzone: {{processed}}, Zainstalowane/Zaktualizowane: {{created}}, Zaktualizowane zasoby: {{updated}}, Nieudane: {{failed}}" }, "tacticalIdLabel": "ID Tactical: {{id}}", "title": "Tactical RMM", "toasts": { "alertsSyncedDescription": "Alerty Tactical zostały uzupełnione.", "alertsSyncedTitle": "Zsynchronizowano alerty", "backfillFailedTitle": "Uzupełnianie nie powiodło się", "connectedDescription": "Zweryfikowano połączenie Tactical RMM.", "connectedTitle": "Połączono", "connectionFailedTitle": "Połączenie nie powiodło się", "devicesSyncedDescription": "Agenci Tactical zostali zsynchronizowani jako zasoby.", "devicesSyncedTitle": "Zsynchronizowano urządzenia", "disconnectFailedTitle": "Rozłączanie nie powiodło się", "disconnectedDescription": "Usunięto poświadczenia Tactical RMM.", "disconnectedTitle": "Rozłączono", "ingestionFailedTitle": "Pobieranie nie powiodło się", "orgsSyncedDescription": "Klienci Tactical zostali zsynchronizowani jako mapowania organizacji.", "orgsSyncedTitle": "Zsynchronizowano organizacje", "saveFailedTitle": "Zapisywanie nie powiodło się", "savedDescription": "Zaktualizowano konfigurację Tactical RMM.", "savedTitle": "Zapisano", "softwareIngestedDescription": "Zbuforowany inwentarz oprogramowania Tactical został pobrany.", "softwareIngestedTitle": "Pobrano oprogramowanie", "syncFailedTitle": "Synchronizacja nie powiodła się", "unknownError": "Nieznany błąd", "updateFailedTitle": "Aktualizacja nie powiodła się" }, "webhook": { "copiedTitle": "Skopiowano", "copy": "Kopiuj", "headerName": "Nazwa nagłówka", "payloadTemplate": "Szablon payloadu", "secret": "Secret nagłówka", "secretCopied": "Skopiowano secret webhooka do schowka.", "unavailable": "Informacje o webhooku niedostępne. (Wymaga uprawnień do odczytu ustawień.)", "url": "URL webhooka", "urlCopied": "Skopiowano URL webhooka do schowka." } }, "tanium": { "loading": "Ładowanie ustawień integracji Tanium...", "actions": { "discoverScopes": "Wykryj zakresy", "disconnect": "Rozłącz", "runInventorySync": "Uruchom synchronizację inwentarza", "saveConfiguration": "Zapisz konfigurację", "testConnection": "Testuj połączenie" }, "connection": { "connectedAt": "Połączono o: {{time}}", "description": "Skonfiguruj poświadczenia Tanium Gateway i zweryfikuj dostęp z zakresem tenanta.", "never": "Nigdy", "syncLabel": "Synchronizacja: {{status}}", "syncLabelWithError": "Synchronizacja: {{status}} ({{error}})", "title": "Połączenie Tanium" }, "errors": { "loadMappings": "Nie udało się załadować mapowań Tanium.", "loadSettings": "Nie udało się załadować ustawień Tanium.", "loadState": "Nie udało się załadować stanu integracji Tanium.", "saveConfiguration": "Nie udało się zapisać konfiguracji Tanium.", "testConnectionFailed": "Test połączenia Tanium nie powiódł się.", "disconnectFailed": "Nie udało się rozłączyć integracji Tanium.", "scopeDiscoveryFailed": "Wykrywanie zakresu nie powiodło się.", "inventorySyncFailed": "Synchronizacja inwentarza nie powiodła się.", "updateMappingFailed": "Nie udało się zaktualizować mapowania." }, "fields": { "apiToken": "Token API {{state}}", "apiTokenPlaceholderExisting": "Pozostaw puste, aby zachować istniejący token", "apiTokenPlaceholderNew": "Wklej token API Tanium", "apiTokenStateRequired": "(wymagany)", "apiTokenStateSaved": "(zapisany)", "assetApiUrl": "URL Asset API (opcjonalny)", "assetApiUrlPlaceholder": "https://example.cloud.tanium.com/plugin/products/asset", "assetFallbackLabel": "Włącz fallback Asset API dla pokrycia wygasłych punktów końcowych", "gatewayUrl": "URL Gateway", "gatewayUrlPlaceholder": "https://example.cloud.tanium.com" }, "mappings": { "autoSync": "Automatyczna synchronizacja", "autoSyncDisabled": "Wyłączona", "autoSyncEnabled": "Włączona", "externalScope": "Zakres zewnętrzny", "loading": "Ładowanie mapowań...", "mappedClient": "Zmapowany klient", "noScopes": "Nie wykryto jeszcze żadnych zakresów Tanium.", "scopeIdLabel": "ID: {{id}}", "unmapped": "Niezmapowane" }, "status": { "connected": "Połączono", "disconnected": "Rozłączono", "label": "Status: " }, "success": { "configurationSaved": "Zapisano konfigurację Tanium.", "connectionTestSucceeded": "Test połączenia Tanium powiódł się.", "disconnected": "Rozłączono integrację Tanium.", "inventorySyncCompleted": "Synchronizacja inwentarza zakończona. Przetworzone: {{processed}}, Utworzone: {{created}}, Zaktualizowane: {{updated}}", "scopeDiscoveryCompleted": "Wykrywanie zakresu zakończone. Przetworzone: {{processed}}, Utworzone: {{created}}, Zaktualizowane: {{updated}}" }, "sync": { "description": "Wykryj zakresy z grup komputerów Tanium, zmapuj je do klientów, a następnie uruchom synchronizację inwentarza.", "title": "Synchronizacja Tanium" } }, "levelio": { "actions": { "backfillAlerts": "Uzupełnij alerty", "disconnect": "Rozłącz", "discoverGroups": "Wykryj grupy", "runDeviceSync": "Uruchom synchronizację urządzeń", "saveConfiguration": "Zapisz konfigurację", "testConnection": "Testuj połączenie" }, "connection": { "connectedAt": "Połączono: {{time}}", "description": "Połącz się z Level (level.io) za pomocą klucza API. Klucze tworzy się w Level w sekcji Settings > API.", "never": "nigdy", "syncLabel": "Synchronizacja: {{status}}", "syncLabelWithError": "Synchronizacja: {{status}} ({{error}})", "title": "Połączenie z Level" }, "errors": { "alertBackfillFailed": "Uzupełnianie alertów nie powiodło się", "deviceSyncFailed": "Synchronizacja urządzeń nie powiodła się", "disconnectFailed": "Nie udało się rozłączyć integracji Level", "groupSyncFailed": "Wykrywanie grup nie powiodło się", "loadMappings": "Nie udało się załadować mapowań grup Level", "loadSettings": "Nie udało się załadować ustawień Level", "loadState": "Nie udało się załadować stanu integracji Level", "loadSummary": "Nie udało się załadować podsumowania połączenia Level", "loadWebhook": "Nie udało się załadować szczegółów webhooka Level", "saveConfiguration": "Nie udało się zapisać konfiguracji Level", "testConnectionFailed": "Test połączenia nie powiódł się", "updateMappingFailed": "Nie udało się zaktualizować mapowania" }, "fields": { "apiKey": "Klucz API ({{state}})", "apiKeyPlaceholderExisting": "Wprowadź nowy klucz, aby zastąpić zapisany", "apiKeyPlaceholderNew": "Wklej swój klucz API Level", "apiKeyStateRequired": "wymagany", "apiKeyStateSaved": "zapisany" }, "mappings": { "autoSync": "Automatyczna synchronizacja", "autoSyncDisabled": "Wyłączona", "autoSyncEnabled": "Włączona", "group": "Grupa Level", "groupIdLabel": "ID: {{id}}", "loading": "Ładowanie…", "mappedClient": "Zmapowany klient", "noGroups": "Nie wykryto jeszcze grup. Najpierw uruchom Wykryj grupy.", "unmapped": "Niezmapowana" }, "status": { "connected": "Połączono", "disconnected": "Nie połączono", "label": "Status: " }, "success": { "alertBackfillCompleted": "Uzupełnianie alertów zakończone: przetworzono {{processed}} alertów", "configurationSaved": "Zapisano konfigurację Level", "connectionTestSucceeded": "Połączenie z Level powiodło się", "deviceSyncCompleted": "Synchronizacja urządzeń zakończona: przetworzono {{processed}}, utworzono {{created}}, zaktualizowano {{updated}}", "disconnected": "Integracja Level została rozłączona", "groupSyncCompleted": "Wykrywanie grup zakończone: przetworzono {{processed}}, utworzono {{created}}, zaktualizowano {{updated}}" }, "sync": { "description": "Wykrywaj grupy Level, mapuj je na klientów i synchronizuj urządzenia. Urządzenia w niezmapowanych grupach są pomijane; podgrupy dziedziczą najbliższego zmapowanego przodka.", "summary": "{{mappedGroups}} zmapowanych grup · {{devices}} urządzeń · {{activeAlerts}} aktywnych alertów", "title": "Synchronizacja i mapowania grup" }, "webhook": { "copied": "Skopiowano", "copy": "Kopiuj", "description": "Level nie umożliwia rejestrowania webhooków przez swoje API. W Level utwórz automatyzację z akcją HTTP POST, używając poniższego adresu URL, nagłówka i ładunku, aby przesyłać alerty do Alga w czasie rzeczywistym.", "header": "Nagłówek: {{name}}", "hideSecret": "Ukryj sekret", "loading": "Szczegóły webhooka załadują się po skonfigurowaniu integracji.", "payload": "Szablon ładunku", "showSecret": "Pokaż sekret", "title": "Webhook alertów", "url": "Adres URL webhooka" } } }, "sso": { "msp": { "actions": { "add": "Dodaj", "refresh": "Odśwież", "request": "Zgłoś", "resetChallenge": "Zresetuj wyzwanie", "revoke": "Unieważnij", "saveDomains": "Zapisz domeny", "saving": "Zapisywanie…", "verify": "Zweryfikuj" }, "addDomainLabel": "Dodaj domenę logowania", "advisoryNotice": "Tryb doradczy: rejestracja domeny wspomaga routing wykrywania MSP SSO, ale nie wymaga weryfikacji własności w edycji Community.", "claimStatus": { "advisory": "Doradczy", "pending": "Oczekujący", "rejected": "Odrzucony", "revoked": "Unieważniony", "verified": "Zweryfikowany", "verifiedLegacy": "Zweryfikowany (Legacy)" }, "descriptionCe": "Zarejestruj domeny doradcze dla wykrywania SSO logowania MSP. Weryfikacja własności nie jest wymuszana w edycji Community, a niezarządzane domeny korzystają z dostawców Nine Minds na poziomie aplikacji.", "descriptionEe": "Zarządzaj cyklem życia zgłoszeń domen dla wykrywania dostawców SSO logowania MSP. Niezgłoszone lub niekwalifikujące się domeny korzystają z dostawców Nine Minds na poziomie aplikacji.", "dnsHost": "Host:", "dnsInstructions": "Dodaj rekord DNS TXT, a następnie kliknij Zweryfikuj:", "dnsValue": "Wartość:", "emptyClaims": "Nie skonfigurowano jeszcze żadnych zgłoszeń domen.", "emptyDomains": "Nie skonfigurowano żadnych domen. Nieznane domeny będą korzystać z fallbacku dostawcy na poziomie aplikacji.", "errors": { "conflicts": "Konflikty: {{conflicts}}.", "loadClaims": "Nie można załadować zgłoszeń domen MSP SSO.", "loadDomains": "Nie można załadować domen logowania MSP SSO.", "refreshChallenge": "Nie można odświeżyć wyzwania.", "requestClaim": "Nie można zgłosić roszczenia domeny.", "revokeClaim": "Nie można unieważnić zgłoszenia domeny.", "saveDomains": "Nie można zapisać domen logowania MSP SSO.", "verifyClaim": "Nie można zweryfikować zgłoszenia domeny." }, "fallbackInfo": "Domeny bez kwalifikującego się zgłoszenia tenanta korzystają z konfiguracji dostawcy SSO Nine Minds na poziomie aplikacji.", "loading": "Ładowanie…", "removeDomainAria": "Usuń domenę {{number}}", "requestClaim": "Zgłoś roszczenie", "requestClaimLabel": "Zgłoś roszczenie domeny", "title": "Domeny logowania MSP SSO", "toasts": { "claimRequestedDescription": "Utworzono oczekujące zgłoszenie domeny i wygenerowano wyzwanie weryfikacji.", "claimRequestedTitle": "Zgłoszono roszczenie domeny", "claimUnchangedDescription": "Istniejące oczekujące zgłoszenie i wyzwanie są już aktywne.", "claimUnchangedTitle": "Zgłoszenie domeny bez zmian", "refreshFailedTitle": "Nie można odświeżyć wyzwania", "refreshedDescription": "Dla tego zgłoszenia aktywne jest nowe wyzwanie weryfikacji.", "refreshedTitle": "Odświeżono wyzwanie", "requestClaimFailedTitle": "Nie można zgłosić roszczenia domeny", "revokeFailedTitle": "Nie można unieważnić zgłoszenia", "revokedDescription": "Przejęcie tenanta dla tej domeny jest wyłączone.", "revokedTitle": "Unieważniono zgłoszenie domeny", "saveDomainsFailedTitle": "Nie można zapisać domen logowania MSP SSO", "savedDescription": "Zaktualizowano ustawienia wykrywania SSO opartego na domenach.", "savedTitle": "Zapisano domeny logowania MSP SSO", "verifiedDescription": "Przejęcie domeny kwalifikuje się teraz do routingu dostawcy w zakresie tenanta.", "verifiedTitle": "Zweryfikowano zgłoszenie domeny", "verifyFailedTitle": "Weryfikacja domeny nie powiodła się" } } }, "teams": { "settings": { "actions": { "activate": "Aktywuj Teams", "addNote": { "description": "Zezwalaj na szybkie akcje notatek wewnętrznych.", "label": "Dodaj notatkę" }, "approvalResponse": { "description": "Zezwalaj na szybkie akcje zatwierdzania i odrzucania.", "label": "Odpowiedź zatwierdzenia" }, "assignTicket": { "description": "Zezwalaj na szybkie akcje przypisywania zgłoszeń.", "label": "Przypisz zgłoszenie" }, "deactivate": "Dezaktywuj", "logTime": { "description": "Zezwalaj na szybkie akcje rejestrowania czasu.", "label": "Zarejestruj czas" }, "reload": "Przeładuj", "replyToContact": { "description": "Zezwalaj na szybkie akcje odpowiedzi widoczne dla klienta.", "label": "Odpowiedz do kontaktu" }, "saveChanges": "Zapisz zmiany", "saveDraft": "Zapisz wersję roboczą", "saving": "Zapisywanie...", "teamsActive": "Teams aktywne" }, "capabilities": { "activityNotifications": { "description": "Dostarczaj osobiste powiadomienia do kanału aktywności Teams.", "label": "Powiadomienia o aktywności" }, "groupChatBot": { "description": "Zezwalaj botowi na odpowiadanie w czatach grupowych Teams. Odpowiedzi bota (w tym szczegóły zgłoszenia) są widoczne dla wszystkich członków czatu.", "label": "Bot w czacie grupowym" }, "messageExtension": { "description": "Włącz wyszukiwanie i akcje PSA oparte na wiadomościach.", "label": "Message extension" }, "personalBot": { "description": "Włącz polecenia bota w zakresie osobistym dla techników.", "label": "Bot osobisty" }, "personalTab": { "description": "Uruchom punkt wejścia osobistego tabu PSA.", "label": "Osobisty tab" } }, "checklist": { "installState": { "active": "Teams jest aktywne dla tego tenanta.", "error": "Konfiguracja Teams zawiera błąd, który wymaga naprawienia.", "label": "Stan instalacji Teams", "notConfigured": "Zapisz wersję roboczą lub aktywuj Teams, gdy konfiguracja jest gotowa.", "pending": "Wersja robocza konfiguracji jest zapisana i gotowa do instalacji lub zgody." }, "needsAction": "Wymaga działania", "profileReady": { "completed": "Wybrany profil posiada Client ID, Tenant ID i zapisany materiał secret.", "label": "Profil gotowy do instalacji Teams", "pending": "Żaden wybrany profil Teams nie jest jeszcze gotowy." }, "profileSelected": { "completed": "{{name}} jest powiązany z Teams.", "label": "Wybrany profil Microsoft", "pending": "Wybierz jeden kwalifikujący się profil Microsoft przed zapisaniem lub aktywowaniem Teams." }, "ready": "Gotowy" }, "description": "Powiąż Teams z profilem Microsoft, włącz funkcje i wygeneruj pakiet tenanta.", "errors": { "downloadPackage": "Nie udało się pobrać pakietu aplikacji Teams", "generatePackage": "Nie udało się wygenerować pakietu aplikacji Teams", "loadGuidance": "Nie udało się załadować wskazówek konfiguracji Teams", "saveSettings": "Nie udało się zapisać ustawień Teams" }, "guidance": { "applicationIdUri": "Application ID URI", "messageExtension": "Message extension", "personalBot": "Bot osobisty", "personalTab": "Osobisty tab", "redirectUris": "Redirect URI", "requiredScopes": "Wymagane zakresy", "teamsAppIdUri": "Teams App ID URI", "unavailable": "Niedostępne" }, "installStatus": { "active": "Aktywny", "error": "Błąd", "installPending": "Instalacja oczekująca", "notConfigured": "Nie skonfigurowano" }, "noEligibleProfiles": "Żaden profil Microsoft nie jest gotowy dla Teams. Najpierw ukończ konfigurację Microsoft.", "notifications": { "approvalRequest": { "description": "Powiadamiaj osoby zatwierdzające o oczekujących decyzjach.", "label": "Prośby o zatwierdzenie" }, "assignment": { "description": "Powiadamiaj techników, gdy przypisywana jest praca.", "label": "Zdarzenia przypisania" }, "customerReply": { "description": "Powiadamiaj techników, gdy klienci odpowiadają.", "label": "Odpowiedzi klientów" }, "escalation": { "description": "Powiadamiaj właścicieli, gdy praca jest eskalowana.", "label": "Eskalacje" }, "slaRisk": { "description": "Powiadamiaj techników, gdy osiągane są progi ryzyka SLA.", "label": "Ryzyko SLA" } }, "package": { "appId": "App ID", "appIds": "App IDs", "botId": "Bot ID", "deepLinks": "Deep linki", "description": "Wygeneruj manifest aplikacji i linki instalacyjne dla wybranego profilu Microsoft.", "downloadManifest": "Pobierz manifest JSON", "downloadZip": "Pobierz pakiet aplikacji (.zip)", "downloading": "Pobieranie...", "fileName": "Nazwa pliku", "generate": "Wygeneruj pakiet", "generating": "Generowanie...", "manifestVersion": "Wersja manifestu", "myWork": "Moja praca", "openBaseUrl": "Otwórz bazowy URL PSA", "openDeeplink": "Otwórz deep link Teams", "packageVersion": "Wersja pakietu", "projectTaskTemplate": "Szablon zadania projektu", "section": "Pakiet", "ticketTemplate": "Szablon zgłoszenia", "title": "Pakiet Teams", "validDomains": "Poprawne domeny", "webResource": "Zasób aplikacji webowej" }, "profileLabel": "Profil Microsoft", "profileSummary": { "needsRepair": "Wybrany profil wymaga naprawy", "none": "Nie wybrano profilu" }, "section": { "allowedActions": "Dozwolone akcje", "capabilities": "Funkcje", "notifications": "Powiadomienia" }, "selectProfile": "Wybierz profil", "statusMessage": { "activated": "Konfiguracja Teams aktywowana.", "deactivated": "Konfiguracja Teams dezaktywowana.", "packageDownloaded": "Pobrano pakiet aplikacji Teams.", "packageGenerated": "Wygenerowano pakiet aplikacji Teams.", "saved": "Zapisano konfigurację Teams." }, "title": "Microsoft Teams", "diagnostics": { "title": "Diagnostyka i wiadomość testowa", "description": "Zweryfikuj konfigurację Teams i wyślij proaktywną wiadomość testową do swojej konwersacji z botem Teams.", "run": "Uruchom diagnostykę", "running": "Trwa uruchamianie...", "sendTest": "Wyślij wiadomość testową", "sending": "Trwa wysyłanie...", "disabled": "Diagnostyka i wiadomości testowe są dostępne po aktywacji integracji Teams.", "completedAt": "Ukończono {{time}}", "lastSuccess": "Ostatni sukces", "lastFailure": "Ostatni błąd", "noneRecorded": "Brak zarejestrowanych", "recommendations": "Zalecenia", "status": { "pass": "Powodzenie", "warn": "Ostrzeżenie", "fail": "Niepowodzenie", "skip": "Pominięto" }, "errors": { "run": "Nie udało się uruchomić diagnostyki Teams", "testMessage": "Nie udało się wysłać wiadomości testowej Teams" }, "test": { "sent": "Wiadomość testowa Teams wysłana.", "failed": "Wiadomość testowa Teams nie powiodła się.", "addonInactive": "Dodatek Teams nie jest aktywny dla tego dzierżawcy.", "integrationInactive": "Aktywuj integrację Teams przed wysłaniem wiadomości testowej.", "capabilityDisabled": "Włącz funkcję bota osobistego przed wysłaniem wiadomości testowej.", "botNotConfigured": "Skonfiguruj poświadczenia bota Teams przed wysłaniem wiadomości testowej.", "missingUserLinkage": "Połącz swoje konto Microsoft przed wysłaniem wiadomości testowej Teams.", "missingConversationReference": "Otwórz bota Alga PSA w Teams i wyślij mu najpierw dowolną wiadomość, a następnie spróbuj ponownie.", "skipped": "Wiadomość testowa Teams została pominięta." }, "steps": { "addonEntitlement": "Uprawnienie do dodatku Teams", "integrationStatus": "Stan integracji Teams", "capabilities": "Możliwości Teams", "microsoftProfile": "Gotowość profilu Microsoft", "recordingPermissions": "Uprawnienia Teams do nagrywania i transkrypcji", "packageMetadata": "Metadane pakietu Teams", "botConnector": "Poświadczenia łącznika bota", "userLinkage": "Powiązanie konta Microsoft administratora", "conversationReference": "Odwołanie do konwersacji Teams administratora", "recentDeliveryHealth": "Ostatni stan dostarczania Teams" }, "recommendation": { "addon": "Włącz dodatek Microsoft Teams dla tego dzierżawcy.", "activate": "Aktywuj integrację Teams w ustawieniach.", "capabilities": "Włącz bota osobistego i powiadomienia o aktywności dla Teams.", "profile": "Wybierz gotowy profil Microsoft dla Teams.", "activeProfile": "Wybierz aktywny profil Microsoft dla Teams.", "profileCredentials": "Uzupełnij poświadczenia profilu Microsoft przed aktywacją Teams.", "meetingOrganizer": "Skonfiguruj domyślnego organizatora spotkań Teams w ustawieniach Teams.", "meetingOrganizerObjectId": "Zapisz ponownie domyślnego organizatora spotkań Teams, aby Alga PSA mogła rozpoznać jego identyfikator obiektu Microsoft Entra.", "package": "Wygeneruj pakiet aplikacji Teams przed uruchomieniem walidacji kompleksowej.", "baseUrl": "Wygeneruj ponownie pakiet Teams z osiągalnym adresem URL bazowym.", "botEnv": "Skonfiguruj TEAMS_BOT_APP_ID, TEAMS_BOT_APP_TENANT_ID i TEAMS_BOT_APP_PASSWORD.", "userLinkage": "Połącz swoje konto Microsoft w ustawieniach profilu.", "conversationReference": "Otwórz bota Alga PSA w Teams i wyślij mu najpierw dowolną wiadomość, a następnie spróbuj ponownie.", "deliveryFailure": "Przejrzyj najnowszy błąd dostarczania Teams i spróbuj ponownie po usunięciu przyczyny." } }, "meetings": { "title": "Spotkania online i nagrania", "description": "Użyj jednego konta usługi Microsoft do organizowania spotkań Teams i kontrolowania sposobu przechowywania nagrań.", "organizer": { "label": "Domyślny UPN organizatora spotkania", "placeholder": "scheduler@acme.com", "help": "Zapisanie rozwiązuje i przechowuje identyfikator obiektu Microsoft Entra używany do wywołań spotkań Graph.", "resolved": "Rozwiązany identyfikator obiektu: {{objectId}}" }, "downloadRecordings": { "label": "Pobieraj nagrania do magazynu wewnętrznego", "description": "Gdy włączone, obiekty blob nagrań są kopiowane do magazynu dzierżawcy oprócz uwierzytelnionego serwera proxy Graph." }, "exposeRecordingsInPortal": { "label": "Pokaż nagrania i transkrypcje w portalu klienta", "description": "Domyślnie wyłączone; użytkownicy MSP nadal mogą przeglądać artefakty ze szczegółów interakcji i spotkań." } } } }, "xero": { "csv": { "clientSync": { "cancel": "Anuluj", "createNew": "Utwórz nowych klientów", "description": "Eksportuj klientów do CSV Xero Contacts lub importuj kontakty z Xero.", "errorRow": "Wiersz {{row}}: {{name}} - {{error}}", "errors": { "export": "Nie udało się wyeksportować klientów", "import": "Nie udało się zaimportować klientów", "processCsv": "Nie udało się przetworzyć pliku CSV" }, "errorsTitle": "Błędy ({{count}})", "exportButton": "Eksportuj klientów do CSV", "exportClients": "Eksportuj klientów", "exportDescription": "Eksportuj swoich klientów Alga do pliku CSV, który można zaimportować do Xero jako Contacts.", "exportSuccess": "Wyeksportowano {{count}} klientów do {{filename}}", "importCompleteDescription": "Pomyślnie przetworzono {{count}} kontaktów.", "importCompleteTitle": "Import zakończony", "importContacts": "Importuj kontakty", "importContactsButton": "Importuj {{count}} kontaktów", "importDescription": "Importuj kontakty z eksportu CSV Xero Contacts. Istniejący klienci mogą być dopasowani i zaktualizowani.", "importing": "Importowanie kontaktów...", "matchBy": { "algaClientId": "ID klienta Alga (z kategorii śledzenia)", "contactName": "Nazwa kontaktu", "emailAddress": "Adres e-mail" }, "matchByLabel": "Dopasuj kontakty według:", "moreErrors": "...i {{count}} więcej błędów", "preview": { "columns": { "action": "Akcja", "contactName": "Nazwa kontaktu", "email": "E-mail", "matchedClient": "Dopasowany klient" }, "moreWarnings": "...i {{count}} więcej", "showing20of": "Wyświetlanie 20 z {{count}} wierszy", "toCreate": "Do utworzenia", "toSkip": "Do pominięcia", "toUpdate": "Do zaktualizowania", "warnings": "Ostrzeżenia" }, "processing": "Przetwarzanie {{filename}}...", "result": { "created": "Utworzono", "mappings": "Mapowania", "skipped": "Pominięto", "updated": "Zaktualizowano" }, "selectCsvFile": "Wybierz plik CSV", "startNewImport": "Rozpocznij nowy import", "title": "Synchronizacja klientów", "updateExisting": "Aktualizuj istniejących klientów", "workflow": { "s1": "Eksportuj klientów z Alga do CSV Xero Contacts", "s2": "Importuj CSV do Xero (Contacts → Import)", "s3": "Po zmianach w Xero wyeksportuj kontakty z Xero", "s4": "Importuj CSV kontaktów Xero z powrotem do Alga, aby zsynchronizować aktualizacje" }, "workflowTitle": "Przepływ synchronizacji klientów" }, "settings": { "dateFormat": "Format daty", "dateFormatHelp": "Dopasuj to do ustawień regionalnych Xero.", "dateFormatOptions": { "dmy": "DD/MM/RRRR (Dzień/Miesiąc/Rok)", "mdy": "MM/DD/RRRR (Miesiąc/Dzień/Rok)" }, "defaultCurrency": "Waluta domyślna", "defaultCurrencyHelp": "Pozostaw puste, aby użyć waluty faktury.", "errors": { "load": "Nie udało się załadować ustawień", "save": "Nie udało się zapisać ustawień" }, "exportSettings": { "description": "Skonfiguruj sposób eksportowania faktur w formacie CSV dla Xero.", "title": "Ustawienia eksportu CSV" }, "loading": "Ładowanie ustawień CSV Xero...", "managedPrefix": "Przejdź do", "managedSuffix": "aby wybrać faktury, wygenerować eksporty CSV Xero, importować raporty podatkowe i zarządzać partiami.", "mappings": { "description": "Mapuj klientów Alga, usługi i kody podatkowe na identyfikatory używane w Twojej organizacji Xero. Te wartości są używane podczas generowania eksportu CSV.", "title": "Mapowania CSV Xero" }, "overview": { "description": "Eksportuj faktury do CSV w celu ręcznego importu w Xero i importuj dane podatkowe z raportów Xero.", "exportLabel": "Eksport", "exportText": "Generuj pliki CSV zgodne z funkcją importu faktur Xero", "intro": "Ta integracja zapewnia alternatywę dla łączności Xero opartej na OAuth:", "note": "Uwaga: Skonfiguruj mapowania poniżej przed eksportem. Eksporty CSV i import podatków są zarządzane z poziomu Rozliczenia → Eksporty księgowe.", "taxImportLabel": "Import podatków", "taxImportText": "Przy zewnętrznym obliczaniu podatku importuj kwoty podatku z raportu Xero Invoice Details", "title": "Integracja CSV Xero" }, "savedMessage": "Ustawienia zapisane pomyślnie", "selectCurrency": "Wybierz walutę", "setup": { "acknowledge": "Ukończyłem konfigurację", "description": "Wykonaj te kroki w Xero przed użyciem importu/eksportu CSV.", "externalInvoiceId": "Zewnętrzny ID faktury", "externalInvoiceIdHelp": "Opcje zostaną utworzone automatycznie podczas importu", "sourceSystem": "System źródłowy", "sourceSystemHelp": "Dodaj opcję o nazwie", "step1Description": "W Xero przejdź do Settings → Tracking Categories i utwórz te dwie kategorie:", "step1Title": "Krok 1: Utwórz kategorie śledzenia", "step2Description": "Upewnij się, że Twoja organizacja Xero ma potrzebne stawki podatku skonfigurowane w Settings → Tax Rates.", "step2Title": "Krok 2: Skonfiguruj stawki podatku", "step3Description": "Użyj sekcji mapowania poniżej, aby powiązać swoje usługi Alga z kodami pozycji Xero oraz swoje regiony podatkowe ze stawkami podatku Xero.", "step3Title": "Krok 3: Mapuj usługi i regiony podatkowe", "title": "Wymagana konfiguracja Xero" }, "useInvoiceCurrency": "Użyj waluty faktury", "workflow": { "description": "Jak eksportować faktury i importować obliczenia podatkowe.", "export": { "s1": "Przejdź do Rozliczenia → Eksporty księgowe", "s2": "Wybierz faktury i wybierz „Xero CSV” jako adapter", "s3": "Pobierz wygenerowany plik CSV", "s4": "W Xero: Business → Invoices → Import", "s5": "Prześlij CSV i zaimportuj jako faktury robocze", "s6": "Xero obliczy podatek na podstawie Twoich ustawień podatkowych" }, "exportInvoices": "Eksportuj faktury", "import": { "s1": "W Xero: Reports → All Reports → Invoice Details", "s2": "Ustaw zakres dat i wyeksportuj jako CSV", "s3": "W Alga: Rozliczenia → Eksporty księgowe → Importuj podatki", "s4": "Prześlij CSV raportu Xero", "s5": "Przejrzyj dopasowane faktury i potwierdź import" }, "importTax": "Importuj obliczenia podatkowe", "title": "Przepływ CSV", "trackingDescription": "Eksport CSV zawiera kolumny kategorii śledzenia, które łączą każdą fakturę Xero z jej źródłem Alga. Gdy importujesz podatek z Xero, te kategorie śledzenia są używane do automatycznego dopasowywania faktur – bez ręcznego uzgadniania.", "trackingTitle": "Kategorie śledzenia do uzgadniania" } } }, "live": { "defaultOrganisation": "Domyślna organizacja Xero" }, "settings": { "actions": { "connect": "Połącz Xero", "disconnect": "Rozłącz Xero", "disconnecting": "Rozłączanie…", "reconnect": "Połącz ponownie Xero", "refresh": "Odśwież", "saveCredentials": "Zapisz poświadczenia Xero", "saving": "Zapisywanie…" }, "badges": { "connectionExpired": "Połączenie wygasło", "credentialsReady": "Poświadczenia gotowe", "credentialsRequired": "Wymagane poświadczenia", "defaultConnected": "Połączono domyślną organizację", "noOrganisation": "Nie połączono żadnej organizacji" }, "callback": { "accessDenied": "Dostęp do Xero został odmówiony przed ukończeniem połączenia.", "configMissing": "Nie można uruchomić Xero OAuth, ponieważ Client ID i Client Secret tenanta nie zostały w pełni skonfigurowane.", "connectionsUnmapped": "Xero zwróciło organizacje, ale żadna nie zawierała identyfikatorów wymaganych do zapisania połączenia.", "generic": "Xero zwróciło błąd OAuth: {{code}}", "invalidState": "Stan OAuth Xero był nieprawidłowy lub wygasł. Rozpocznij przepływ łączenia ponownie.", "missingParams": "W wywołaniu zwrotnym Xero brakowało wymaganych parametrów. Rozpocznij przepływ łączenia ponownie.", "noConnections": "Xero nie zwróciło żadnych organizacji dla tego logowania. Sprawdź swoją aplikację Xero i dostęp do organizacji, a następnie spróbuj ponownie.", "oauthFailed": "Wywołanie zwrotne OAuth Xero nie powiodło się. Spróbuj ponownie się połączyć. Jeśli problem nadal występuje, sprawdź swój redirect URI i zakresy." }, "clientIdLabel": "Xero Client ID", "clientIdPlaceholder": "Wklej swój Xero Client ID należący do tenanta", "clientSecretLabel": "Xero Client Secret", "clientSecretPlaceholder": "Wklej swój Xero Client Secret należący do tenanta", "connectSuccess": "Xero połączone pomyślnie. Pierwsza połączona organizacja jest teraz domyślnym kontekstem Xero na żywo.", "connection": { "connectionId": "ID połączenia: {{id}}", "defaultOrganisation": "Domyślna organizacja", "description": "Uruchom OAuth dopiero po skonfigurowaniu aplikacji Xero należącej do tenanta. Rozłączenie usuwa zapisane tokeny dostępu Xero, ale zachowuje poświadczenia aplikacji należącej do tenanta.", "notConnected": "Nie połączono jeszcze żadnej organizacji Xero na żywo. Zapisz poświadczenia, a następnie kliknij Połącz Xero.", "title": "Połączenie Xero na żywo", "unknown": "nieznany" }, "credentialsSaved": "Zapisano poświadczenia Xero. Można teraz rozpocząć przepływ OAuth Xero na żywo.", "csvAvailableMiddle": "w tej samej sekcji Księgowość i zarządzaj eksportami z", "csvAvailablePrefix": "Jeśli wolisz ręczny przepływ, nadal używaj", "csvAvailableTitle": "Xero CSV pozostaje dostępne", "description": "Skonfiguruj poświadczenia OAuth Xero należące do tenanta, połącz swoją domyślną organizację i zachowaj Xero na żywo obok ręcznego przepływu Xero CSV.", "disconnectSuccess": "Zapisane połączenie Xero zostało usunięte. Poświadczenia aplikacji Xero należące do tenanta zostały zachowane.", "errors": { "disconnect": "Nie udało się rozłączyć Xero.", "load": "Nie udało się załadować ustawień Xero.", "saveCredentials": "Nie udało się zapisać poświadczeń Xero." }, "howItWorksDescription": "Zapisz tutaj Xero Client ID i Client Secret należące do tenanta, ukończ przepływ OAuth Xero, a Alga PSA użyje pierwszej połączonej organizacji Xero jako domyślnego kontekstu na żywo.", "howItWorksTitle": "Jak działa Xero na żywo w tej wersji", "loading": "Ładowanie ustawień Xero…", "mapping": { "alert": "Pozycje Xero, konta przychodów, stawki podatkowe i kategorie śledzenia są ładowane z domyślnej połączonej organizacji, aby eksporty na żywo mogły nadal używać pierwszego zapisanego połączenia Xero w v1.", "descriptionPrefix": "Skonfiguruj mapowania Xero na żywo dla domyślnej połączonej organizacji. Te mapowania są ograniczone do", "placeholderAlert": "Menedżer mapowań staje się dostępny po połączeniu pierwszej organizacji Xero i ustawieniu jej jako domyślnego kontekstu Xero na żywo.", "placeholderDescription": "Połącz organizację Xero na żywo przed skonfigurowaniem mapowań pozycji i podatków Xero na żywo.", "title": "Mapowanie i konfiguracja Xero na żywo" }, "noClientId": "Dla tego tenanta nie zapisano jeszcze żadnego Client ID.", "noClientSecret": "Dla tego tenanta nie zapisano jeszcze żadnego Client Secret.", "redirectUri": "Redirect URI", "requiredScopes": "Wymagane zakresy", "storedClientId": "Zapisany Client ID: {{value}}", "storedClientSecret": "Zapisany Client Secret: {{value}}", "tenantOauthDescription": "Wklej poświadczenia aplikacji Xero zarejestrowane dla tego tenanta. Wartości secret nigdy nie są zwracane do przeglądarki po zapisaniu.", "tenantOauthTitle": "Aplikacja OAuth należąca do tenanta", "title": "Xero", "xeroCsv": "Xero CSV" } }, "stripe": { "title": "Stripe Payments", "description": "Accept credit card payments for your invoices", "connected": { "title": "Stripe Connected", "publishableKey": "Publishable key: {{key}}..." }, "empty": { "description": "Connect your Stripe account to accept online payments for invoices" }, "actions": { "testConnection": "Test Connection", "disconnect": "Disconnect", "connect": "Connect Stripe", "connecting": "Connecting...", "cancel": "Cancel" }, "form": { "secretKeyLabel": "Secret Key", "secretKeyPlaceholder": "sk_live_... or sk_test_...", "publishableKeyLabel": "Publishable Key", "publishableKeyPlaceholder": "pk_live_... or pk_test_...", "findKeyPrefix": "Find this in your", "dashboardLink": "Stripe Dashboard → API Keys" }, "webhook": { "heading": "Webhook Configuration", "configuredAutomatically": "Webhooks configured automatically", "receiveNotifications": "Alga PSA will receive payment notifications for:", "failedTitle": "Webhook configuration failed", "failedBody": "Automatic webhook configuration failed. Click retry to attempt configuration again.", "configuring": "Configuring...", "retry": "Retry Configuration" }, "disconnectDialog": { "title": "Disconnect Stripe", "message": "Are you sure you want to disconnect Stripe? Payment links will no longer work.", "confirm": "Disconnect", "cancel": "Cancel" }, "toasts": { "connectedWithWebhook": "Stripe connected and webhooks configured automatically!", "connectedWebhookFailed": "Stripe connected! Note: Webhook auto-configuration failed - you may need to configure webhooks manually in Stripe Dashboard.", "disconnected": "Stripe disconnected", "connectionSuccess": "Connection successful!", "webhookConfigured": "Webhook configured successfully!" }, "errors": { "loadConfig": "Failed to load Stripe configuration", "connect": "Failed to connect Stripe", "disconnect": "Failed to disconnect Stripe", "testConnection": "Connection test failed", "configureWebhook": "Failed to configure webhook", "bothKeysRequired": "Please enter both secret key and publishable key", "secretKeyFormat": "Secret key should start with sk_", "publishableKeyFormat": "Publishable key should start with pk_" } } }, "ninjaone": { "selectCompany": "Wybierz firmę" } }