mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
bc10fba389
* feat(plugins): TREK_PLUGINS_IGNORE_TREK_RANGE turns the version gate into a warning A plugin whose author has not updated its `trek` range for the running TREK can now be installed, updated and activated when the operator sets TREK_PLUGINS_IGNORE_TREK_RANGE to a truthy value. Every gate (registry picker, post-extraction re-check, sideload, dev-link, activation) warns instead of refusing; a missing range is tolerated the same way; "install latest" takes the newest published version. The plugin-API version gate is not lifted and the Discover compatibility verdict stays truthful. The admin is warned at every step: each bypass is logged, install/upload/link/ update responses carry a `trekRangeBypassed` marker, and both admin panels show a "Version checks off" pill, an "Install anyway" confirm dialog before a registry install, the same notice after a path that could not ask first, and a persistent chip on the row while the plugin runs outside its range. Nine new i18n keys in every locale; wiki pages updated (Environment-Variables, Admin-Plugins, Plugin-Development, Security-Hardening). * refactor(plugins): one useRangeBypass hook behind both admin shells SonarQube flagged PR 2226 at 10.8% duplicated new code: the range-bypass logic had been added to the desktop and phone plugin panels as identical copies. The marker/warning types, the row chip, the "Install anyway" offer, the dialog copy and the confirm-or-notice state now live in useRangeBypass (next to useInstanceSettings, the existing shared-logic precedent); each panel keeps only its own dialog/sheet markup. * docs(claude): record the SonarQube gate rules and the no-English-placeholder i18n rule The CI SonarCloud gate (Sonar way, on new code: >=80% coverage, <=3% duplication, A ratings, hotspots reviewed) was only discoverable by waiting 20-25 minutes for the workflow. The root CLAUDE.md now states the conditions, the desktop/mobile shell-mirror duplication trap and its shared-hook fix, and how to check a PR with the sonarqube MCP first; client and server CLAUDE.md point at it. shared/CLAUDE.md says every locale needs a real translation — parity cannot tell an English placeholder from a translation. * docs(claude): keep CLAUDE.md to commands, invariants, gates and philosophy Verified every concrete claim in the five CLAUDE.md files against the code and fixed the stale ones: the websocket server is the Nest realtime gateway, MCP tools live in <domain>.mcp.ts files, the client "native shell" section described code that was never written, offline maps also prefetch vector basemaps, plus several renamed files and wrong table names. Then trimmed everything that drifts on its own: dates, migration history, counts, and inventories of stores, slices, domains, sync files and CLI commands. What stays is the commands, the invariants with the file that enforces each one, what CI actually runs, the reference implementations to copy, and the rules for new code. Each file now opens with that rule.
749 lines
54 KiB
TypeScript
749 lines
54 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const admin: TranslationStrings = {
|
|
'admin.smtp.title': 'E-maile i powiadomienia',
|
|
'admin.smtp.hint': 'Konfiguracja SMTP dla powiadomień e-mail. Opcjonalnie: URL Webhooka dla Discorda, Slacka, itp.',
|
|
'admin.smtp.testButton': 'Wyślij testowego e-maila',
|
|
'admin.smtp.testSuccess': 'Testowy e-mail został wysłany pomyślnie',
|
|
'admin.smtp.testFailed': 'Nie udało się wysłać testowego e-maila',
|
|
'admin.title': 'Administracja',
|
|
'admin.subtitle': 'Zarządzanie użytkownikami i ustawienia systemowe',
|
|
'admin.tabs.users': 'Użytkownicy',
|
|
'admin.tabs.categories': 'Kategorie',
|
|
'admin.tabs.backup': 'Backupy',
|
|
'admin.tabs.notifications': 'Powiadomienia',
|
|
'admin.tabs.audit': 'Audit',
|
|
'admin.stats.users': 'Użytkownicy',
|
|
'admin.stats.trips': 'Podróże',
|
|
'admin.stats.places': 'Miejsca',
|
|
'admin.stats.photos': 'Zdjęcia',
|
|
'admin.stats.files': 'Pliki',
|
|
'admin.table.user': 'Użytkownik',
|
|
'admin.table.email': 'E-mail',
|
|
'admin.table.role': 'Rola',
|
|
'admin.table.created': 'Utworzono',
|
|
'admin.table.lastLogin': 'Ostatnie logowanie',
|
|
'admin.table.actions': 'Akcje',
|
|
'admin.you': '(Ty)',
|
|
'admin.editUser': 'Edytuj użytkownika',
|
|
'admin.newPassword': 'Nowe hasło',
|
|
'admin.newPasswordHint': 'Pozostaw puste, aby zachować obecne hasło',
|
|
'admin.deleteUser': 'Usunąć użytkownika "{name}"? Wszystkie jego podróże zostaną trwale usunięte.',
|
|
'admin.deleteUserTitle': 'Usuń użytkownika',
|
|
'admin.newPasswordPlaceholder': 'Podaj nowe hasło...',
|
|
'admin.toast.loadError': 'Nie udało się załadować danych administratora',
|
|
'admin.toast.userUpdated': 'Użytkownik został zaktualizowany',
|
|
'admin.toast.updateError': 'Nie udało się zaktualizować użytkownika',
|
|
'admin.toast.userDeleted': 'Użytkownik został usunięty',
|
|
'admin.toast.deleteError': 'Nie udało się usunąć użytkownika',
|
|
'admin.toast.cannotDeleteSelf': 'Nie można usunąć własnego konta',
|
|
'admin.toast.userCreated': 'Użytkownik został utworzony',
|
|
'admin.toast.createError': 'Nie udało się utworzyć użytkownika',
|
|
'admin.toast.fieldsRequired': 'Nazwa użytkownika, e-mail i hasło są wymagane',
|
|
'admin.createUser': 'Utwórz użytkownika',
|
|
'admin.invite.title': 'Linki zaproszeń',
|
|
'admin.invite.subtitle': 'Twórz jednorazowe linki do rejestracji',
|
|
'admin.invite.create': 'Utwórz link',
|
|
'admin.invite.createAndCopy': 'Utwórz i skopiuj',
|
|
'admin.invite.empty': 'Nie utworzono jeszcze żadnych linków zaproszeń',
|
|
'admin.invite.maxUses': 'Maksymalna liczba użyć',
|
|
'admin.invite.expiry': 'Wygasa po',
|
|
'admin.invite.uses': 'użycia',
|
|
'admin.invite.expiresAt': 'wygasa',
|
|
'admin.invite.createdBy': 'utworzone przez',
|
|
'admin.invite.active': 'Aktywny',
|
|
'admin.invite.expired': 'Wygasł',
|
|
'admin.invite.usedUp': 'Wykorzystany',
|
|
'admin.invite.copied': 'Link zaproszenia został skopiowany do schowka',
|
|
'admin.invite.copyLink': 'Skopiuj link',
|
|
'admin.invite.deleted': 'Link zaproszenia został usunięty',
|
|
'admin.invite.createError': 'Nie udało się utworzyć linku zaproszenia',
|
|
'admin.invite.deleteError': 'Nie udało się usunąć linku zaproszenia',
|
|
'admin.tabs.settings': 'Ustawienia',
|
|
'admin.allowRegistration': 'Zezwól na rejestrację',
|
|
'admin.allowRegistrationHint': 'Nowi użytkownicy mogą się rejestrować samodzielnie',
|
|
'admin.authMethods': 'Authentication Methods',
|
|
'admin.passwordLogin': 'Password Login',
|
|
'admin.passwordLoginHint': 'Allow users to sign in with email and password',
|
|
'admin.passwordRegistration': 'Password Registration',
|
|
'admin.passwordRegistrationHint': 'Allow new users to register with email and password',
|
|
'admin.oidcLogin': 'SSO Login',
|
|
'admin.oidcLoginHint': 'Allow users to sign in with SSO',
|
|
'admin.oidcRegistration': 'SSO Auto-Provisioning',
|
|
'admin.oidcRegistrationHint': 'Automatically create accounts for new SSO users',
|
|
'admin.envOverrideHint':
|
|
'Password login settings are controlled by the OIDC_ONLY environment variable and cannot be changed here.',
|
|
'admin.lockoutWarning': 'At least one login method must remain enabled',
|
|
'admin.requireMfa': 'Wymagaj uwierzytelniania dwuskładnikowego (2FA)',
|
|
'admin.requireMfaHint':
|
|
'Użytkownicy bez 2FA muszą ukończyć konfigurację w Ustawieniach zanim zaczną korzystać z aplikacji.',
|
|
'admin.apiKeys': 'Klucze API',
|
|
'admin.apiKeysHint':
|
|
'Opcjonalne. Umożliwiają pobieranie większej ilości danych o miejscach, takich jak zdjęcia i pogoda.',
|
|
'admin.mapsKey': 'Klucz Google Maps API',
|
|
'admin.mapsKeyHint': 'Wymagany do wyszukiwania miejsc. Uzyskaj go na console.cloud.google.com',
|
|
'admin.mapsKeyHintLong':
|
|
'Bez klucza API, OpenStreetMap jest wykorzystywany do wyszukiwania miejsc. Z kluczem API Google, zdjęcia, oceny i godziny otwarcia również mogą być pobierane. Uzyskaj go na console.cloud.google.com.',
|
|
'admin.recommended': 'Polecane',
|
|
'admin.weatherKey': 'Klucz OpenWeatherMap API',
|
|
'admin.weatherKeyHint': 'Do danych pogodowych. Uzyskaj go bezpłatnie na openweathermap.org',
|
|
'admin.unsplashKey': 'Klucz API Unsplash',
|
|
'admin.unsplashKeyHint': 'Do wyszukiwania obrazów. Bezpłatnie na unsplash.com/developers',
|
|
'admin.validateKey': 'Testuj',
|
|
'admin.keyValid': 'Połączono',
|
|
'admin.keyInvalid': 'Niepoprawny',
|
|
'admin.keySaved': 'Klucze API zostały zapisane',
|
|
'admin.oidcTitle': 'Logowanie jednokrotne (OIDC)',
|
|
'admin.oidcSubtitle':
|
|
'Zezwól na logowanie za pomocą zewnętrznych dostawców, takich jak Google, Apple, Authentik lub Keycloak.',
|
|
'admin.oidcDisplayName': 'Wyświetlana nazwa',
|
|
'admin.oidcIssuer': 'URL wystawcy',
|
|
'admin.oidcIssuerHint': 'Adres URL wystawcy OpenID Connect dostawcy, np. https://accounts.google.com',
|
|
'admin.oidcSaved': 'Konfiguracja OIDC została zapisana',
|
|
'admin.oidcOnlyMode': 'Wyłącz uwierzytelnianie hasłem',
|
|
'admin.oidcOnlyModeHint':
|
|
'Po włączeniu dozwolone jest tylko logowanie jednokrotne. Logowanie i rejestracja za pomocą hasła są zablokowane.',
|
|
'admin.fileTypes': 'Dozwolone typy plików',
|
|
'admin.fileTypesHint': 'Ustaw, które typy plików mogą być przesyłane przez użytkowników.',
|
|
'admin.fileTypesFormat':
|
|
'Rozszerzenia oddzielone przecinkami (np. jpg,png,pdf,doc). Użyj * aby zezwolić na wszystkie typy.',
|
|
'admin.fileTypesSaved': 'Ustawienia typów plików zostały zapisane',
|
|
'admin.placesPhotos.title': 'Zdjęcia miejsc',
|
|
'admin.placesPhotos.subtitle':
|
|
'Pobiera zdjęcia z Google Places API. Wyłącz, aby zaoszczędzić limit API. Zdjęcia z Wikimedia nie są objęte.',
|
|
'admin.placesAutocomplete.title': 'Autouzupełnianie miejsc',
|
|
'admin.placesAutocomplete.subtitle':
|
|
'Używa Google Places API do sugestii wyszukiwania. Wyłącz, aby zaoszczędzić limit API.',
|
|
'admin.placesDetails.title': 'Szczegóły miejsca',
|
|
'admin.placesDetails.subtitle':
|
|
'Pobiera szczegółowe informacje o miejscu (godziny, ocena, strona) z Google Places API. Wyłącz, aby zaoszczędzić limit API.',
|
|
'admin.placesEnrich.title': 'Wzbogacanie miejsc',
|
|
'admin.placesEnrich.subtitle':
|
|
'Pokazuje zdjęcia i opis podczas dodawania miejsca. Wikipedia i OpenStreetMap są używane zawsze; Google dochodzi, gdy włączone są Zdjęcia miejsc lub Szczegóły miejsc.',
|
|
'admin.bagTracking.title': 'Kontrola bagażu',
|
|
'admin.bagTracking.subtitle': 'Włącz wagę i przypisywanie do toreb dla przedmiotów do pakowania',
|
|
'admin.collab.chat.title': 'Czat',
|
|
'admin.collab.chat.subtitle': 'Wiadomości w czasie rzeczywistym',
|
|
'admin.collab.notes.title': 'Notatki',
|
|
'admin.collab.notes.subtitle': 'Wspólne notatki i dokumenty',
|
|
'admin.collab.polls.title': 'Ankiety',
|
|
'admin.collab.polls.subtitle': 'Ankiety grupowe i głosowania',
|
|
'admin.collab.whatsnext.title': 'Co dalej',
|
|
'admin.collab.whatsnext.subtitle': 'Sugestie aktywności i następne kroki',
|
|
'admin.tabs.config': 'Personalizacja',
|
|
'admin.tabs.defaults': 'Domyślne ustawienia',
|
|
'admin.defaultSettings.title': 'Domyślne ustawienia użytkownika',
|
|
'admin.defaultSettings.description':
|
|
'Ustaw domyślne wartości dla całej instancji. Użytkownicy, którzy nie zmienili ustawienia, zobaczą te wartości. Ich własne zmiany zawsze mają pierwszeństwo.',
|
|
'admin.defaultSettings.saved': 'Domyślne zapisane',
|
|
'admin.defaultSettings.reset': 'Przywróć wbudowaną wartość domyślną',
|
|
'admin.defaultSettings.resetToBuiltIn': 'przywróć',
|
|
'admin.tabs.templates': 'Szablony pakowania',
|
|
'admin.packingTemplates.title': 'Szablony pakowania',
|
|
'admin.packingTemplates.subtitle': 'Twórz szablony list pakowania do wielokrotnego użycia dla swoich podróży',
|
|
'admin.packingTemplates.create': 'Nowy szablon',
|
|
'admin.packingTemplates.namePlaceholder': 'Nazwa szablonu (np. Wakacje na plaży)',
|
|
'admin.packingTemplates.empty': 'Nie utworzono jeszcze żadnych szablonów',
|
|
'admin.packingTemplates.items': 'przedmiotów',
|
|
'admin.packingTemplates.categories': 'kategorie',
|
|
'admin.packingTemplates.itemName': 'Nazwa przedmiotu',
|
|
'admin.packingTemplates.itemCategory': 'Kategoria',
|
|
'admin.packingTemplates.categoryName': 'Nazwa kategorii (np. Ubrania)',
|
|
'admin.packingTemplates.addCategory': 'Dodaj kategorię',
|
|
'admin.packingTemplates.created': 'Szablon został utworzony',
|
|
'admin.packingTemplates.deleted': 'Szablon został usunięty',
|
|
'admin.packingTemplates.loadError': 'Nie udało się załadować szablonów',
|
|
'admin.packingTemplates.createError': 'Nie udało się utworzyć szablonu',
|
|
'admin.packingTemplates.deleteError': 'Nie udało się usunąć szablonu',
|
|
'admin.packingTemplates.deleteCategoryError': 'Nie udało się usunąć kategorii',
|
|
'admin.packingTemplates.deleteItemError': 'Nie udało się usunąć pozycji',
|
|
'admin.packingTemplates.saveError': 'Nie udało się zapisać szablonu',
|
|
'admin.tabs.addons': 'Dodatki',
|
|
'admin.tabs.plugins': 'Wtyczki',
|
|
'admin.tabs.storage': 'Magazyn',
|
|
'admin.plugins.rescan': 'Skanuj ponownie',
|
|
'admin.plugins.rescanned': 'Folder wtyczek został ponownie przeskanowany',
|
|
'admin.plugins.upload': 'Prześlij wtyczkę',
|
|
'admin.plugins.dropToUpload': 'Upuść plik .zip wtyczki, aby zainstalować',
|
|
'admin.plugins.uploaded': 'Wtyczka “{name}” przesłana — aktywuj ją, aby uruchomić',
|
|
'admin.plugins.sideloaded': 'Załadowano ręcznie',
|
|
'admin.plugins.devLinkBadge': 'Dev-Link',
|
|
'admin.plugins.devLinkHint':
|
|
'Wczytany z lokalnego katalogu kompilacji i przeładowywany na gorąco na prawdziwych danych — tylko dla programistów',
|
|
'admin.plugins.devLinkTitle': 'Podłącz lokalny plugin',
|
|
'admin.plugins.devLinkPathPlaceholder': '/absolute/path/to/your/plugin',
|
|
'admin.plugins.devLinkButton': 'Podłącz',
|
|
'admin.plugins.devLinkLinked': '{id} podłączony — aktywuj, aby uruchomić',
|
|
'admin.plugins.sideloadedHint': 'Przesłano ręcznie — nie z rejestru, niepodpisane i niesprawdzone',
|
|
'admin.plugins.browse': 'Przeglądaj wtyczki',
|
|
'admin.plugins.installed': 'Zainstalowane',
|
|
'admin.plugins.install': 'Zainstaluj',
|
|
'admin.plugins.registryEmpty': 'W rejestrze nie ma jeszcze dostępnych wtyczek.',
|
|
'admin.plugins.actionError': 'Akcja nie powiodła się',
|
|
'admin.plugins.activate': 'Aktywuj',
|
|
'admin.plugins.activated': 'Wtyczka została aktywowana',
|
|
'admin.plugins.deactivate': 'Dezaktywuj',
|
|
'admin.plugins.deactivated': 'Wtyczka została dezaktywowana',
|
|
'admin.plugins.viewErrors': 'Pokaż dziennik błędów',
|
|
'admin.plugins.errorLog': 'Dziennik błędów',
|
|
'admin.plugins.allowedHosts': 'Dozwolone hosty',
|
|
'admin.plugins.allowedHosts.hint':
|
|
'Ta wtyczka łączy się z usługą, którą tylko Ty możesz wskazać (serwer self-hosted). Dodaj hosty, do których może sięgać — do innych nie sięgnie.',
|
|
'admin.plugins.allowedHosts.none': 'Nie dodano jeszcze żadnych hostów.',
|
|
'admin.plugins.allowedHosts.unsupported':
|
|
'Ta wtyczka nie używa hostów podanych przez operatora. Jej dozwolone hosty są zapisane w manifeście.',
|
|
'admin.plugins.allowedHosts.restartNote': 'Zapis restartuje wtyczkę, aby pobrała nową listę.',
|
|
'admin.plugins.allowedHosts.add': 'Dodaj dozwolony host',
|
|
'admin.plugins.allowedHosts.count': '{n} dozwolonych hostów',
|
|
'admin.plugins.operatorEgressPill': '+ hosty, które dodasz',
|
|
'admin.plugins.operatorEgressHint':
|
|
'Ta wtyczka łączy się z usługą, którą tylko Ty możesz wskazać (serwer self-hosted). Po instalacji dodaj hosty w ⋯ → Dozwolone hosty. Do innych nie sięgnie.',
|
|
'admin.plugins.noErrors': 'Brak zarejestrowanych błędów.',
|
|
'admin.plugins.uninstalled': 'Wtyczka została odinstalowana',
|
|
'admin.plugins.uninstallTitle': 'Odinstalować wtyczkę?',
|
|
'admin.plugins.uninstallBody':
|
|
'Spowoduje to zatrzymanie wtyczki, usunięcie jej kodu i wszystkich jej danych. Tej operacji nie można cofnąć.',
|
|
'admin.plugins.status.starting': 'Uruchamianie…',
|
|
'admin.plugins.type.widget': 'Widget',
|
|
'admin.plugins.type.page': 'Strona',
|
|
'admin.plugins.type.integration': 'Integracja',
|
|
'admin.plugins.type.trip-page': 'Strona podróży',
|
|
'admin.plugins.reviewed': 'Zweryfikowana',
|
|
'admin.plugins.unreviewed': 'Niezweryfikowana',
|
|
'admin.plugins.updated': 'Wtyczka została zaktualizowana',
|
|
'admin.plugins.updateTo': 'Update → v{version}',
|
|
'admin.plugins.enabledToggle': 'Włącz wtyczkę',
|
|
'plugins.notFound': 'Nie znaleziono wtyczki',
|
|
'plugins.frameLoadFailed': 'This plugin could not be loaded.',
|
|
'admin.plugins.title': 'Wtyczki',
|
|
'admin.plugins.subtitle': 'Instaluj wtyczki innych autorów i zarządzaj nimi na swojej instancji.',
|
|
'admin.plugins.disabledTitle': 'Wtyczki są wyłączone',
|
|
'admin.plugins.disabledBody':
|
|
'Środowisko uruchomieniowe wtyczek jest wyłączone (TREK_PLUGINS_ENABLED). Żadna wtyczka nie może działać, dopóki administrator nie włączy tej opcji w konfiguracji serwera.',
|
|
'admin.plugins.empty': 'Nie zainstalowano jeszcze żadnych wtyczek.',
|
|
'admin.plugins.loadError': 'Nie udało się załadować wtyczek.',
|
|
'admin.plugins.scaffoldNote':
|
|
'Instalacja i aktywacja wtyczek pojawią się w późniejszej aktualizacji. Ten panel obecnie jedynie wyświetla zainstalowane wtyczki.',
|
|
'admin.plugins.status.active': 'Aktywna',
|
|
'admin.plugins.status.inactive': 'Nieaktywna',
|
|
'admin.plugins.status.disabled': 'Wyłączona',
|
|
'admin.plugins.status.error': 'Błąd',
|
|
'admin.plugins.status.incompatible': 'Niekompatybilna',
|
|
'admin.plugins.details': 'Szczegóły',
|
|
'admin.plugins.detailError': 'Nie udało się załadować szczegółów wtyczki.',
|
|
'admin.plugins.permissionsTitle': 'Uprawnienia',
|
|
'admin.plugins.noPermissions': 'Ta wtyczka nie wymaga żadnych specjalnych uprawnień.',
|
|
'admin.plugins.egressNote': 'Może łączyć się z: {hosts}',
|
|
'admin.plugins.setupTitle': 'Konfiguracja',
|
|
'admin.plugins.noSetup': 'Działa od razu — nie wymaga konfiguracji.',
|
|
'admin.plugins.scope.instance': 'Dla całej instancji',
|
|
'admin.plugins.scope.user': 'Na użytkownika',
|
|
'admin.plugins.fieldRequired': 'Wymagane',
|
|
'admin.plugins.sourceRepo': 'Repozytorium źródłowe',
|
|
'admin.plugins.reportIssue': 'Zgłoś problem',
|
|
'admin.plugins.homepage': 'Strona główna',
|
|
'admin.plugins.requiresTrek': 'Wymaga TREK {version}+',
|
|
'admin.plugins.reviewedOn': 'Zweryfikowano {date}',
|
|
'admin.plugins.perm.db:own': 'Przechowywanie własnych danych w izolowanej bazie danych',
|
|
'admin.plugins.perm.db:read:trips': 'Odczyt podróży, do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.db:read:users':
|
|
'Odczyt podstawowych informacji profilowych (nazwa, awatar — nigdy dane logowania)',
|
|
'admin.plugins.perm.db:read:costs': 'Odczyt wydatków (pozycji budżetu), do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.db:read:packing':
|
|
'Odczyt list rzeczy do spakowania w podróżach, do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.db:write:packing':
|
|
'Tworzenie, edytowanie i usuwanie pozycji listy pakowania w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.weather:read': 'Odczyt zapisanej w pamięci prognozy pogody hosta (wg współrzędnych)',
|
|
'admin.plugins.perm.db:read:categories': 'Odczyt globalnej listy kategorii miejsc',
|
|
'admin.plugins.perm.db:read:tags': 'Odczyt tagów działającego użytkownika',
|
|
'admin.plugins.perm.db:write:tags': 'Tworzenie, edytowanie i usuwanie tagów działającego użytkownika',
|
|
'admin.plugins.perm.db:read:todos': 'Odczyt zadań w podróżach, do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.db:write:todos':
|
|
'Tworzenie, edytowanie i usuwanie zadań w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:write:atlas':
|
|
'Oznaczanie krajów i regionów jako odwiedzonych oraz zarządzanie listą marzeń działającego użytkownika (wymaga dodatku Atlas)',
|
|
'admin.plugins.perm.db:write:vacay':
|
|
'Przełączanie dni urlopu i świąt firmowych w aktywnym planie działającego użytkownika (wymaga dodatku Vacay)',
|
|
'admin.plugins.perm.db:write:journal':
|
|
'Tworzenie, edytowanie i usuwanie wpisów w dziennikach, które działający użytkownik może edytować (wymaga dodatku Journey)',
|
|
'admin.plugins.perm.db:write:collections':
|
|
'Tworzenie i edytowanie kolekcji oraz zapisywanie w nich miejsc, z rolą działającego użytkownika w kolekcji (wymaga dodatku Collections)',
|
|
'admin.plugins.perm.db:write:files':
|
|
'Dołączanie plików do podróży, które działający użytkownik może edytować (limit 10 MB, zablokowane rozszerzenia odrzucane), i zarządzanie ich powiązaniami',
|
|
'admin.plugins.perm.db:write:collab':
|
|
'Publikowanie notatek, ankiet i wiadomości czatu w podróżach, które działający użytkownik może edytować (wymaga dodatku Collab)',
|
|
'admin.plugins.perm.db:write:members':
|
|
'Dodawanie użytkowników do podróży — przyznaje dostęp do podróży; chronione uprawnieniem zarządzania członkami działającego użytkownika',
|
|
'admin.plugins.perm.notify:send':
|
|
'Wysyłanie powiadomienia (skrzynka dzwonka + e-mail/ntfy) do działającego użytkownika lub jego podróży — nigdy do dowolnego odbiorcy',
|
|
'admin.plugins.perm.ai:invoke':
|
|
'Korzystanie ze skonfigurowanego przez administratora dostawcy AI (uzupełnianie tekstu + wyodrębnianie z dokumentów) w imieniu działającego użytkownika — wtyczka nigdy nie przechowuje klucza',
|
|
'admin.plugins.perm.oauth:client':
|
|
'Łączenie się z usługą zewnętrzną w Twoim imieniu przez OAuth pośredniczony przez hosta (host przechowuje tokeny, wtyczka ich nie widzi)',
|
|
'admin.plugins.perm.db:read:files': 'Odczyt plików w podróżach, do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.db:write:reservations':
|
|
'Tworzenie, edytowanie i usuwanie rezerwacji w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:write:accommodations':
|
|
'Tworzenie, edytowanie i usuwanie zakwaterowań w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:read:journal': 'Odczyt dzienników podróży działającego użytkownika (wymaga dodatku Journey)',
|
|
'admin.plugins.perm.db:read:atlas':
|
|
'Odczyt krajów i regionów odwiedzonych przez działającego użytkownika (wymaga dodatku Atlas)',
|
|
'admin.plugins.perm.db:read:vacay': 'Odczyt planu urlopu działającego użytkownika (wymaga dodatku Vacay)',
|
|
'admin.plugins.perm.db:read:daynotes':
|
|
'Odczyt notatek dziennych w podróżach, do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.db:read:collections':
|
|
'Odczyt kolekcji zapisanych miejsc działającego użytkownika (wymaga dodatku Collections)',
|
|
'admin.plugins.perm.db:write:daynotes':
|
|
'Tworzenie, edytowanie i usuwanie notatek dziennych w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.jobs:run':
|
|
'Uruchamianie zadeklarowanych zadań w tle według harmonogramu (bez kontekstu użytkownika — nie może odczytywać danych użytkownika)',
|
|
'admin.plugins.perm.db:write:costs':
|
|
'Tworzenie wydatków (pozycji budżetu) w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:write:places':
|
|
'Dodawanie, edycja i usuwanie miejsc w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:write:days':
|
|
'Dodawanie, edycja i usuwanie dni w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:write:itinerary':
|
|
'Przypisywanie i usuwanie miejsc do dni w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:write:trips':
|
|
'Edycja szczegółów podróży (tytuł, daty, waluta…) w podróżach, które działający użytkownik może edytować',
|
|
'admin.plugins.perm.db:meta':
|
|
'Dołączanie własnych prywatnych danych do podróży, miejsc i dni, do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.ws:broadcast:trip': 'Wysyłanie aktualizacji w czasie rzeczywistym do członków podróży',
|
|
'admin.plugins.perm.ws:broadcast:user': 'Wysyłanie aktualizacji w czasie rzeczywistym do poszczególnych użytkowników',
|
|
'admin.plugins.perm.hook:photo-provider': 'Dostarczanie zdjęć do sekcji Zdjęcia',
|
|
'admin.plugins.perm.hook:calendar-source': 'Dostarczanie wydarzeń do kalendarza',
|
|
'admin.plugins.perm.hook:place-detail-provider':
|
|
'Dodawanie dodatkowych szczegółów (recenzji, ocen, linków) do miejsca',
|
|
'admin.plugins.perm.hook:trip-warning-provider':
|
|
'Zgłaszanie ostrzeżeń walidacyjnych dla podróży (widocznych w planerze)',
|
|
'admin.plugins.perm.hook:table-contributor': 'Dodawanie kolumn i akcji do widoków podróży (rezerwacje, miejsca, dni)',
|
|
'admin.plugins.perm.hook:map-marker-provider':
|
|
'Dodawanie znaczników do mapy podróży (np. pokazywanie rezerwacji lub POI)',
|
|
'admin.plugins.perm.hook:map-layer-provider': 'Rysowanie tras, korytarzy i stref na mapie podróży',
|
|
'admin.plugins.perm.hook:route-provider':
|
|
'Udostępnianie profili trasowania, za pomocą których planer wyznacza trasy dni (np. trasowanie aut elektrycznych z postojami na ładowanie)',
|
|
'admin.plugins.perm.hook:day-schedule-provider':
|
|
'Dołączanie wpisów czasowych do planu dnia (postoje na ładowanie, bufory czasowe)',
|
|
'admin.plugins.perm.hook:day-tint-provider':
|
|
'Oznaczanie dni w planie dnia kolorami (na przykład do którego etapu podróży należy dany dzień)',
|
|
'admin.plugins.cap.mcpTools': 'Publikuje narzędzia AI',
|
|
'admin.plugins.mcpToolsTitle': 'Publikowane narzędzia AI',
|
|
'admin.plugins.mcpToolsHint': 'Asystent może je uruchomić w imieniu użytkownika. Każde działa z uprawnieniami nadanymi powyżej.',
|
|
'admin.plugins.perm.mcp:tools':
|
|
'Publikowanie narzędzi, które asystent AI może uruchomić w Twoim imieniu (działa z uprawnieniami nadanymi tutaj wtyczce, nie z własnymi)',
|
|
'admin.plugins.perm.geolocation:read':
|
|
'Odczytywanie Twojej aktualnej lokalizacji, gdy otwarty jest któryś z jego widoków (TREK odczytuje ją z uprawnieniem do lokalizacji tej witryny, a nie z własnym uprawnieniem wtyczki)',
|
|
'admin.plugins.perm.hook:pdf-section-provider': 'Dołączanie sekcji tekstowych do eksportu PDF podróży',
|
|
'admin.plugins.perm.hook:atlas-layer-provider':
|
|
'Wyróżnianie krajów na mapie świata Atlasu (np. listy życzeń lub ostrzeżenia dla podróżnych)',
|
|
'admin.plugins.perm.hook:journal-entry-provider':
|
|
'Dodawanie dodatkowych wierszy (linki, statystyki) do wpisów dziennika',
|
|
'admin.plugins.perm.hook:user-data':
|
|
'Usuwanie lub eksport przechowywanych danych o użytkowniku (RODO: usunięcie konta i wnioski o dane)',
|
|
'admin.plugins.perm.hook:trip-card-provider':
|
|
'Dodawanie małych plakietek (status, liczniki) do kart podróży na pulpicie',
|
|
'admin.plugins.perm.hook:notification-channel': 'Dostarczać Twoje powiadomienia dodatkowym kanałem',
|
|
'admin.plugins.perm.events:subscribe':
|
|
'Reagowanie na podstawowe zdarzenia aktywności (tylko nazwa zdarzenia i podróż, nigdy treść)',
|
|
'admin.plugins.perm.http:outbound': 'Wykonywanie wychodzących zapytań do zadeklarowanych hostów',
|
|
'admin.plugins.perm.db:read:collab':
|
|
'Odczyt notatek, ankiet i wiadomości czatu w podróżach, do których działający użytkownik ma dostęp (wymaga dodatku Collab)',
|
|
'admin.plugins.perm.db:read:files:content':
|
|
'Odczyt zawartości (bajtów) plików w podróżach, do których działający użytkownik ma dostęp',
|
|
'admin.plugins.perm.db:create:trips': 'Tworzenie nowych podróży należących do działającego użytkownika',
|
|
'admin.plugins.perm.rates:read': 'Odczyt zapisanych w pamięci kursów walut hosta',
|
|
'admin.plugins.updateConsentTitle': 'Ta aktualizacja wymaga nowych uprawnień',
|
|
'admin.plugins.updateConsentBody':
|
|
'{name} v{version} prosi o uprawnienia, których jeszcze nie przyznałeś. Nowa wersja jest zainstalowana, ale pozostaje wyłączona, dopóki jej nie zatwierdzisz.',
|
|
'admin.plugins.updateNewPermissions': 'Nowo wymagane uprawnienia',
|
|
'admin.plugins.updateNewEgress': 'Nowe połączenia wychodzące',
|
|
'admin.plugins.updateApprove': 'Zatwierdź i włącz',
|
|
'admin.plugins.updateLater': 'Na razie pozostaw wyłączoną',
|
|
'admin.plugins.updateKeptOff':
|
|
'Aktualizacja zainstalowana — pozostaje wyłączona, dopóki nie zatwierdzisz nowych uprawnień',
|
|
'admin.plugins.reviewedMeaning':
|
|
'„Zweryfikowana” oznacza, że opiekun TREK przeskanował tę wtyczkę pod kątem złośliwego oprogramowania w każdej wersji — nie pod kątem jakości ani tego, czy działa. To nie jest gwarancja, że wtyczka jest nieszkodliwa.',
|
|
'admin.plugins.security.title': 'Jak wtyczki są izolowane — i jakie są tego granice',
|
|
'admin.plugins.security.isolationTitle': 'Każda wtyczka działa w izolacji',
|
|
'admin.plugins.security.isolationBody':
|
|
'Wtyczka działa jako własny, odizolowany proces, który może odczytywać wyłącznie swoje własne pliki. Nie może odczytać Twojej bazy danych, sekretu logowania ani klucza szyfrującego, nie może uruchamiać innych programów ani nigdzie zapisywać plików. Jej interfejs działa w zamkniętej ramce przeglądarki, która nie może odczytać Twojego pliku cookie sesji ani ingerować w otaczającą ją stronę TREK.',
|
|
'admin.plugins.security.permsTitle': 'Co oznaczają uprawnienia',
|
|
'admin.plugins.security.permsBody':
|
|
'Uprawnienia pokazywane przed instalacją to twarda granica, którą TREK egzekwuje w trakcie działania wtyczki — dosłownie nie może ona zrobić niczego, czego nie ma na liście. Mówią one jednak, co wtyczka może robić, a nie co faktycznie robi. Wtyczka, która może odczytywać Twoje podróże i łączyć się z serwerem, może wysłać Twoje podróże na ten serwer, dlatego czytaj uprawnienia i hosty wychodzące, a nie tylko opis.',
|
|
'admin.plugins.security.limitsTitle': 'Czego nie możemy obiecać',
|
|
'admin.plugins.security.limitsBody':
|
|
'Izolacja to silna granica programowa, ale nie absolutna. Wtyczka działa dokładnie z tymi uprawnieniami, które zatwierdzisz, więc w ich ramach może zachowywać się inaczej, niż sugeruje jej opis, i może wysyłać dane, do których ma zgodny z uprawnieniami dostęp, do zadeklarowanych przez siebie hostów. TREK nie odczytuje ani nie ocenia tego, co faktycznie robi kod wtyczki.',
|
|
'admin.plugins.security.worstTitle': 'Najgorszy scenariusz',
|
|
'admin.plugins.security.worstBody':
|
|
'Wroga wtyczka, którą włączysz, może nadużyć danych i połączeń, które jej przyznałeś — na przykład ujawnić podróże, które może odczytywać. Nie może wykraść haseł, sfałszować logowania administratora, uruchamiać poleceń na Twoim serwerze ani sięgać po dane, których jej nie przyznałeś. Szkody pozostają w granicach tego, co zatwierdziłeś, a wyłączenie wtyczki je zatrzymuje.',
|
|
'admin.plugins.security.reviewedTitle': 'Co oznacza „Zweryfikowana”',
|
|
'admin.plugins.security.reviewedBody':
|
|
'Zweryfikowana wtyczka została ręcznie przeskanowana pod kątem złośliwego oprogramowania przez opiekuna TREK w każdej wersji — sprawdzona pod kątem wrogiego kodu, a nie tego, czy działa dobrze. To nie jest obietnica, że wtyczka jest nieszkodliwa.',
|
|
'admin.plugins.security.signedTitle': 'Co oznacza „Podpisana”',
|
|
'admin.plugins.security.signedBody':
|
|
'Suma kontrolna, którą TREK weryfikuje przy każdej instalacji, dowodzi, że pliki są dokładnie tym, za co ręczy rejestr. Podpis dowodzi czegoś innego: że pochodzą od autora i zostały podpisane kluczem, który ma tylko on. Podpisana wtyczka ma jedno i drugie. Wtyczka bez podpisu nie jest niebezpieczna — po prostu niesie o jedną gwarancję mniej, a większość wtyczek w rejestrze jest dziś niepodpisana.',
|
|
'admin.plugins.signed': 'Podpisana',
|
|
'admin.plugins.signedHint': 'Zweryfikowana kluczem podpisującym autora w chwili instalacji',
|
|
'admin.plugins.unsigned': 'Niepodpisana',
|
|
'admin.plugins.unsignedHint':
|
|
'Pliki zgadzają się z tym, za co ręczy rejestr, ale nic nie wiąże ich z autorem. O jedną gwarancję mniej — nie oznacza to, że jest niebezpieczna.',
|
|
'admin.plugins.updateBlocked': 'Aktualizacja zablokowana — {reason}',
|
|
'admin.plugins.reviewBlock': 'Sprawdź',
|
|
'admin.plugins.retrusted': 'Nowy klucz podpisujący uznany za zaufany — wtyczka została zaktualizowana',
|
|
'admin.plugins.sig.title': 'Nie udało się zweryfikować podpisu wtyczki {name}',
|
|
'admin.plugins.sig.keyChangedBody':
|
|
'Klucz podpisujący autora nie jest tym, którym podpisano wtyczkę w chwili instalacji. Autorzy rzeczywiście wymieniają klucze — ale atakujący, który przejął wtyczkę, wyglądałby dokładnie tak samo.',
|
|
'admin.plugins.sig.invalidBody':
|
|
'Pliki nie zgadzają się z podpisem autora. Nie są tym, co autor podpisał — albo uległy uszkodzeniu, albo zostały zmodyfikowane. Tego nie można pominąć.',
|
|
'admin.plugins.sig.missingBody':
|
|
'Ta wtyczka była podpisana, gdy ją instalowałeś, ale nowa wersja nie zawiera żadnego podpisu. TREK nie przyjmie po cichu takiego kroku wstecz. Tego nie można pominąć.',
|
|
'admin.plugins.sig.incompleteBody':
|
|
'Wpis w rejestrze jest podpisany połowicznie: deklaruje klucz autora, ale wersja nie ma podpisu (albo odwrotnie). To błąd po stronie wtyczki. Tego nie można pominąć.',
|
|
'admin.plugins.sig.pinnedKey': 'Klucz, którym podpisano ją przy instalacji',
|
|
'admin.plugins.sig.newKey': 'Klucz, który proponuje teraz',
|
|
'admin.plugins.sig.confirmOutOfBand':
|
|
'TREK nie odróżni prawidłowej wymiany klucza od przejęcia wtyczki — stąd wyglądają identycznie. Zanim zaakceptujesz nowy klucz, potwierdź go u autora kanałem, któremu już ufasz. Gdy to zrobisz, wtyczka zostanie zaktualizowana, a nowy klucz zapamiętany.',
|
|
'admin.plugins.sig.retrustConfirm': 'Zaufaj nowemu kluczowi i zaktualizuj',
|
|
'admin.plugins.sig.cancel': 'Nie ufaj mu',
|
|
'admin.plugins.sig.consentUnsigned':
|
|
'Nic nie wiąże tej wersji z jej autorem — pliki zgadzają się z rejestrem, ale nie niosą podpisu autora.',
|
|
'admin.plugins.security.trustTitle': 'Podsumowanie',
|
|
'admin.plugins.security.trustBody':
|
|
'Instalacja wtyczki jest jak instalacja dowolnej aplikacji innych firm: dodawaj tylko kod od autorów, którym ufasz, a w razie wątpliwości najpierw samodzielnie go sprawdź. TREK nie ponosi żadnej odpowiedzialności za wtyczki innych firm.',
|
|
'admin.plugins.runtimeOn': 'Środowisko włączone',
|
|
'admin.plugins.tabDiscover': 'Odkrywaj',
|
|
'admin.plugins.searchPlaceholder': 'Szukaj wtyczek…',
|
|
'admin.plugins.filterType': 'Typ',
|
|
'admin.plugins.filterStatus': 'Status',
|
|
'admin.plugins.sortBy': 'Sortuj',
|
|
'admin.plugins.allTypes': 'Wszystkie typy',
|
|
'admin.plugins.allStatuses': 'Wszystkie',
|
|
'admin.plugins.stateOff': 'Wył.',
|
|
'admin.plugins.filterUpdate': 'Dostępna aktualizacja',
|
|
'admin.plugins.sortName': 'Nazwa',
|
|
'admin.plugins.sortRecent': 'Ostatnio zaktualizowane',
|
|
'admin.plugins.sortUpdates': 'Najpierw aktualizacje',
|
|
'admin.plugins.sortDownloads': 'Najczęściej pobierane',
|
|
'admin.plugins.updatesAvailable': 'Dostępne aktualizacje dla Twoich wtyczek: {count}.',
|
|
'admin.plugins.newerNeedsTrek': 'v{version} dostępna — wymaga TREK {range}',
|
|
'admin.plugins.versionsTitle': 'Wersje',
|
|
'admin.plugins.versionPickerTitle': 'Zmień wersję — {name}',
|
|
'admin.plugins.versionSwitch': 'Przełącz na {version}',
|
|
'admin.plugins.versionNeedsTrek': 'wymaga TREK {range}',
|
|
'admin.plugins.changeVersion': 'Zmień wersję…',
|
|
'admin.plugins.noVersions': 'Nie znaleziono opublikowanych wersji w rejestrze.',
|
|
'admin.plugins.downgradeTitle': 'Przywrócić starszą wersję tej wtyczki?',
|
|
'admin.plugins.downgradeBody': 'Przejście z v{from} na v{to}: dane zapisane przez nowszą wersję pozostają, a starsza wersja może ich nie rozumieć.',
|
|
'admin.plugins.downgradeConfirm': 'Przywróć',
|
|
'admin.plugins.updatesHeld': 'Aktualizacje wstrzymane na v{version}',
|
|
'admin.plugins.resumeUpdates': 'Wznów aktualizacje',
|
|
'admin.plugins.updatesResumed': 'Wznowiono aktualizacje',
|
|
'admin.plugins.updateAll': 'Zaktualizuj wszystkie',
|
|
'admin.plugins.noMatchInstalled': 'Żadna zainstalowana wtyczka nie pasuje do wyszukiwania.',
|
|
'admin.plugins.noMatchRegistry': 'Żadna wtyczka w rejestrze nie pasuje do wyszukiwania.',
|
|
'admin.plugins.restart': 'Uruchom ponownie',
|
|
'admin.plugins.restarted': 'Wtyczka została uruchomiona ponownie',
|
|
'admin.plugins.instanceSettings': 'Ustawienia instancji',
|
|
'admin.plugins.settingsSaved': 'Ustawienia zapisane',
|
|
'admin.plugins.settingsSavedRestarted': 'Ustawienia zapisane — wtyczka została uruchomiona ponownie',
|
|
'admin.plugins.actions': 'Akcje',
|
|
'admin.plugins.actions.confirm': 'Wykonać tę akcję?',
|
|
'admin.plugins.actions.inactive': 'Aktywuj wtyczkę, aby uruchomić jej akcje',
|
|
'admin.plugins.requiredMissing': '"{field}" jest wymagane',
|
|
'admin.plugins.cap.readsTrips': 'Odczytuje Twoje podróże',
|
|
'admin.plugins.cap.readsUsers': 'Odczytuje podstawowe profile',
|
|
'admin.plugins.cap.readsCosts': 'Odczytuje Twoje wydatki',
|
|
'admin.plugins.cap.readsPacking': 'Odczytuje listy pakowania',
|
|
'admin.plugins.cap.readsFiles': 'Odczytuje pliki podróży',
|
|
'admin.plugins.cap.writesCosts': 'Dodaje wydatki',
|
|
'admin.plugins.cap.writesPlaces': 'Edytuje miejsca',
|
|
'admin.plugins.cap.writesDays': 'Edytuje dni',
|
|
'admin.plugins.cap.writesItinerary': 'Edytuje plan podróży',
|
|
'admin.plugins.cap.writesTrips': 'Edytuje podróże',
|
|
'admin.plugins.cap.metadata': 'Dodaje metadane',
|
|
'admin.plugins.cap.widget': 'Widget na pulpicie',
|
|
'admin.plugins.cap.heroWidget': 'Widget karty pokładowej',
|
|
'admin.plugins.cap.placeSlot': 'Szczegóły miejsca',
|
|
'admin.plugins.cap.daySlot': 'Szczegóły dnia',
|
|
'admin.plugins.cap.reservationSlot': 'Szczegóły rezerwacji',
|
|
'admin.plugins.cap.replacesTabs': 'Zastępuje karty planera',
|
|
'admin.plugins.cap.realtime': 'Aktualizacje na żywo',
|
|
'admin.plugins.cap.notificationChannel': 'Kanał powiadomień',
|
|
'admin.plugins.cap.photos': 'Dostarcza zdjęcia',
|
|
'admin.plugins.cap.calendar': 'Dostarcza wydarzenia kalendarza',
|
|
'admin.plugins.cap.placeDetails': 'Wzbogaca miejsca',
|
|
'admin.plugins.cap.warnings': 'Zgłasza problemy',
|
|
'admin.plugins.cap.mapLayers': 'Rysuje na mapie',
|
|
'admin.plugins.cap.routing': 'Oferuje trasowanie',
|
|
'admin.plugins.cap.daySchedule': 'Uzupełnia czasy planu',
|
|
'admin.plugins.cap.dayTint': 'Koloruje dni',
|
|
'admin.plugins.cap.geolocation': 'Odczytuje Twoją lokalizację',
|
|
'admin.plugins.cap.events': 'Reaguje na aktywność',
|
|
'admin.plugins.cap.requiresAddon': 'Wymaga {addon}',
|
|
'admin.plugins.cap.dependsOn': 'Wymaga {id} {version}',
|
|
'admin.plugins.dep.addonDisabledToast': 'Najpierw włącz wymagane dodatki: {addons}',
|
|
'admin.plugins.dep.autoEnabled': 'Najpierw włączono wymagane wtyczki: {plugins}',
|
|
'admin.plugins.dep.downloaded': 'Pobrano {id}',
|
|
'admin.plugins.dep.resolveTitle': 'Brakujące zależności',
|
|
'admin.plugins.dep.resolveBody': '„{name}” wymaga zainstalowania tych wtyczek, zanim będzie można ją włączyć.',
|
|
'admin.plugins.dep.requires': 'Wymaga {version}',
|
|
'admin.plugins.dep.mismatch': 'Wymaga {wanted} — zainstalowano {installed}',
|
|
'admin.plugins.dep.download': 'Pobierz',
|
|
'admin.plugins.dep.update': 'Aktualizuj',
|
|
'admin.plugins.dep.resolveHint': 'Pobiera najnowszą zgodną wersję wraz z jej zależnościami.',
|
|
'admin.plugins.dep.trekIncompatible': 'Wymaga TREK {range} — ten serwer działa na {host}',
|
|
'admin.plugins.dep.trekUnknown': 'Nie określa, które wersje TREK obsługuje',
|
|
'admin.plugins.installCompatible': 'Zainstaluj {version}',
|
|
'admin.plugins.installAnyway': 'Zainstaluj mimo to',
|
|
'admin.plugins.rangeBypass.pill': 'Kontrola wersji wyłączona',
|
|
'admin.plugins.rangeBypass.pillHint':
|
|
'Ustawiono TREK_PLUGINS_IGNORE_TREK_RANGE — wtyczki mogą być instalowane i uruchamiane poza wersjami TREK zadeklarowanymi przez ich autorów',
|
|
'admin.plugins.rangeBypass.title': 'Poza obsługiwanymi wersjami TREK',
|
|
'admin.plugins.rangeBypass.noticeTitle': 'Zainstalowano poza obsługiwanymi wersjami TREK',
|
|
'admin.plugins.rangeBypass.body':
|
|
'„{name}” deklaruje obsługę TREK {range}, a ten serwer działa na {host}. TREK przepuszcza ją tylko dlatego, że ustawiono TREK_PLUGINS_IGNORE_TREK_RANGE. Autor nie zaktualizował zakresu wersji wtyczki dla tego TREK, więc nie ma gwarancji, że zadziała — a w rzadkich przypadkach niedopasowana wtyczka może uszkodzić dane TREK. Kontynuuj tylko, jeśli akceptujesz to ryzyko.',
|
|
'admin.plugins.rangeBypass.bodyUnknown':
|
|
'„{name}” nie deklaruje, które wersje TREK obsługuje; ten serwer działa na {host}. TREK przepuszcza ją tylko dlatego, że ustawiono TREK_PLUGINS_IGNORE_TREK_RANGE. Nic nie wskazuje, że autor testował ją na tym TREK, więc nie ma gwarancji, że zadziała — a w rzadkich przypadkach niedopasowana wtyczka może uszkodzić dane TREK. Kontynuuj tylko, jeśli akceptujesz to ryzyko.',
|
|
'admin.plugins.dep.trekBypassed':
|
|
'Poza swoim zakresem TREK ({range}) — kontrola wersji wyłączona',
|
|
'admin.plugins.dep.trekBypassedUnknown': 'Nie deklaruje zakresu TREK — kontrola wersji wyłączona',
|
|
'admin.plugins.incompatible': 'Niezgodny',
|
|
'admin.plugins.accessTitle': 'Do czego ma dostęp',
|
|
'admin.plugins.connectsTitle': 'Łączy się z',
|
|
'admin.plugins.detailsTitle': 'Szczegóły',
|
|
'admin.plugins.noAccess': 'Nie wymaga specjalnego dostępu.',
|
|
'admin.plugins.metaVersion': 'Wersja',
|
|
'admin.plugins.metaSize': 'Rozmiar',
|
|
'admin.plugins.metaRequires': 'Wymaga',
|
|
'admin.plugins.metaReviewed': 'Zweryfikowano',
|
|
'admin.plugins.downloads': 'Pobrania',
|
|
'admin.addons.title': 'Dodatki',
|
|
'admin.addons.subtitle': 'Włączaj lub wyłączaj funkcje, aby dostosować swoje doświadczenie w TREK.',
|
|
'admin.addons.catalog.packing.name': 'Listy',
|
|
'admin.addons.catalog.packing.description': 'Listy pakowania i zadania do wykonania dla Twoich podróży',
|
|
'admin.addons.catalog.budget.name': 'Koszty',
|
|
'admin.addons.catalog.budget.description': 'Śledź wydatki na podróż i dziel je między uczestników',
|
|
'admin.addons.catalog.documents.name': 'Dokumenty',
|
|
'admin.addons.catalog.documents.description': 'Przechowuj i zarządzaj dokumentami podróżnymi',
|
|
'admin.addons.catalog.vacay.name': 'Urlopy',
|
|
'admin.addons.catalog.vacay.description': 'Osobisty planer urlopu z widokiem kalendarza',
|
|
'admin.addons.catalog.atlas.name': 'Atlas',
|
|
'admin.addons.catalog.atlas.description': 'Mapa świata z odwiedzonymi krajami i statystykami podróży',
|
|
'admin.addons.catalog.collab.name': 'Współpraca',
|
|
'admin.addons.catalog.collab.description': 'Notatki, ankiety, czat i podpowiedzi do wspólnego planowania',
|
|
'admin.addons.catalog.memories.name': 'Zdjęcia (Immich)',
|
|
'admin.addons.catalog.memories.description': 'Udostępniaj zdjęcia z podróży za pośrednictwem swojej instancji Immich',
|
|
'admin.addons.catalog.mcp.name': 'MCP',
|
|
'admin.addons.catalog.mcp.description': 'Model Context Protocol dla integracji asystenta AI',
|
|
'admin.addons.subtitleBefore': 'Włączaj lub wyłączaj funkcje, aby dostosować swoje doświadczenie w ',
|
|
'admin.addons.subtitleAfter': '.',
|
|
'admin.addons.catalog.naver_list_import.name': 'Naver List Import',
|
|
'admin.addons.catalog.naver_list_import.description': 'Importuj miejsca z udostępnionej listy Naver Maps',
|
|
'admin.addons.catalog.airtrail.name': 'AirTrail',
|
|
'admin.addons.catalog.airtrail.description': 'Synchronizuj loty ze swojej instancji AirTrail',
|
|
'admin.addons.catalog.llm_parsing.name': 'Analiza AI',
|
|
'admin.addons.catalog.llm_parsing.description': 'Odczytuje rezerwacje, których nie rozumie wbudowany parser, przy użyciu wybranego modelu AI',
|
|
'admin.addons.enabled': 'Włączone',
|
|
'admin.addons.disabled': 'Wyłączone',
|
|
'admin.addons.type.trip': 'Podróż',
|
|
'admin.addons.type.global': 'Globalne',
|
|
'admin.addons.type.integration': 'Integracja',
|
|
'admin.addons.tripHint': 'Dostępne jako zakładka w każdej podróży',
|
|
'admin.addons.globalHint': 'Dostępne jako osobna sekcja w menu głównym',
|
|
'admin.addons.integrationHint': 'Usługi backendowe i integracje API bez dedykowanej strony',
|
|
'admin.addons.toast.updated': 'Dodatek został zaktualizowany',
|
|
'admin.addons.toast.error': 'Nie udało się zaktualizować dodatku',
|
|
'admin.addons.group.count': '{enabled} z {total} włączonych',
|
|
'admin.addons.noAddons': 'Brak dostępnych dodatków',
|
|
'admin.weather.title': 'Dane pogodowe',
|
|
'admin.weather.badge': 'Od 24 marca 2026',
|
|
'admin.weather.description':
|
|
'TREK korzysta z Open-Meteo jako źródła danych pogodowych. Open-Meteo to darmowy, otwartoźródłowy serwis pogodowy — klucz API nie jest wymagany.',
|
|
'admin.weather.forecast': '16-dniowa prognoza',
|
|
'admin.weather.forecastDesc': 'Wcześniej 5 dni (OpenWeatherMap)',
|
|
'admin.weather.climate': 'Historyczne dane klimatyczne',
|
|
'admin.weather.climateDesc': 'Średnie z ostatnich 85 lat dla dni poza 16-dniową prognozą',
|
|
'admin.weather.requests': '10,000 zapytań / dzień',
|
|
'admin.weather.requestsDesc': 'Bezpłatnie, bez klucza API',
|
|
'admin.weather.locationHint':
|
|
'Pogoda jest określana na podstawie pierwszego miejsca z przypisanymi współrzędnymi w danym dniu. Jeśli do dnia nie przypisano żadnego miejsca, jako punkt odniesienia używane jest dowolne miejsce z listy.',
|
|
'admin.tabs.mcpTokens': 'Dostęp MCP',
|
|
'admin.mcpTokens.title': 'Dostęp MCP',
|
|
'admin.mcpTokens.subtitle': 'Zarządzaj sesjami OAuth i tokenami API dla wszystkich użytkowników',
|
|
'admin.mcpTokens.sectionTitle': 'Tokeny API',
|
|
'admin.mcpTokens.owner': 'Właściciel',
|
|
'admin.mcpTokens.tokenName': 'Nazwa tokenu',
|
|
'admin.mcpTokens.created': 'Utworzono',
|
|
'admin.mcpTokens.lastUsed': 'Ostatnio użyto',
|
|
'admin.mcpTokens.never': 'Nigdy',
|
|
'admin.mcpTokens.empty': 'Nie utworzono jeszcze żadnych tokenów MCP',
|
|
'admin.mcpTokens.deleteTitle': 'Usuń token',
|
|
'admin.mcpTokens.deleteMessage':
|
|
'Spowoduje to natychmiastowe unieważnienie tokenu. Użytkownik straci dostęp MCP przez ten token.',
|
|
'admin.mcpTokens.deleteSuccess': 'Token został usunięty',
|
|
'admin.mcpTokens.deleteError': 'Nie udało się usunąć tokenu',
|
|
'admin.mcpTokens.loadError': 'Nie udało się załadować tokenów',
|
|
'admin.oauthSessions.sectionTitle': 'Sesje OAuth',
|
|
'admin.oauthSessions.clientName': 'Klient',
|
|
'admin.oauthSessions.owner': 'Właściciel',
|
|
'admin.oauthSessions.scopes': 'Uprawnienia',
|
|
'admin.oauthSessions.created': 'Utworzono',
|
|
'admin.oauthSessions.empty': 'Brak aktywnych sesji OAuth',
|
|
'admin.oauthSessions.revokeTitle': 'Unieważnij sesję',
|
|
'admin.oauthSessions.revokeMessage': 'Ta sesja OAuth zostanie natychmiast unieważniona. Klient straci dostęp do MCP.',
|
|
'admin.oauthSessions.revokeSuccess': 'Sesja unieważniona',
|
|
'admin.oauthSessions.revokeError': 'Nie udało się unieważnić sesji',
|
|
'admin.oauthSessions.loadError': 'Nie udało się załadować sesji OAuth',
|
|
'admin.tabs.github': 'GitHub',
|
|
'admin.audit.subtitle':
|
|
'Zdarzenia związane z bezpieczeństwem i administracją (kopie zapasowe, użytkownicy, MFA, ustawienia).',
|
|
'admin.audit.empty': 'Brak zapisów w historii aktywności.',
|
|
'admin.audit.refresh': 'Odśwież',
|
|
'admin.audit.loadMore': 'Załaduj więcej',
|
|
'admin.audit.showing': '{count} załadowanych · {total} łącznie',
|
|
'admin.audit.col.time': 'Czas',
|
|
'admin.audit.col.user': 'Użytkownik',
|
|
'admin.audit.col.action': 'Akcja',
|
|
'admin.audit.col.resource': 'Zasób',
|
|
'admin.audit.col.ip': 'IP',
|
|
'admin.audit.col.details': 'Szczegóły',
|
|
'admin.github.title': 'Historia wydań',
|
|
'admin.github.subtitle': 'Najnowsze aktualizacje z {repo}',
|
|
'admin.github.latest': 'Najnowsze',
|
|
'admin.github.prerelease': 'Wersja testowa',
|
|
'admin.github.showDetails': 'Pokaż szczegóły',
|
|
'admin.github.hideDetails': 'Ukryj szczegóły',
|
|
'admin.github.loadMore': 'Załaduj więcej',
|
|
'admin.github.loading': 'Ładowanie...',
|
|
'admin.github.error': 'Nie udało się załadować wydań',
|
|
'admin.github.by': 'przez',
|
|
'admin.github.support': 'Pomóż mi rozwijać TREK',
|
|
'admin.update.available': 'Dostępna aktualizacja',
|
|
'admin.update.text': 'Dostępna jest wersja TREK {version}. Używasz {current}.',
|
|
'admin.update.button': 'Zobacz na GitHubie',
|
|
'admin.update.install': 'Zainstaluj aktualizację',
|
|
'admin.update.confirmTitle': 'Zainstalować aktualizację?',
|
|
'admin.update.confirmText':
|
|
'TREK zostanie zaktualizowany z {current} do {version}. Serwer zostanie automatycznie zrestartowany po zakończeniu.',
|
|
'admin.update.dataInfo':
|
|
'Wszystkie twoje dane (podróże, użytkownicy, klucze API, przesłane pliki, urlopy, Atlas, budżety) zostaną zachowane.',
|
|
'admin.update.warning': 'Aplikacja będzie niedostępna przez krótki czas podczas restartu.',
|
|
'admin.update.confirm': 'Zaktualizuj',
|
|
'admin.update.installing': 'Aktualizowanie...',
|
|
'admin.update.success': 'Aktualizacja zakończona! Serwer restartuje się...',
|
|
'admin.update.failed': 'Aktualizacja nie powiodła się',
|
|
'admin.update.backupHint': 'Zalecamy utworzenie kopii zapasowej przed aktualizacją.',
|
|
'admin.update.backupLink': 'Zrób kopię zapasową',
|
|
'admin.update.howTo': 'Jak zaktualizować',
|
|
'admin.update.dockerText':
|
|
'Twoja instancja TREK działa w Dockerze. Aby zaktualizować do {version}, uruchom następujące polecenia na swoim serwerze:',
|
|
'admin.update.nonDockerText':
|
|
'Ta instancja TREK nie działa w Dockerze. Aby zaktualizować do {version}, uruchom ponownie metodę instalacji lub aktualizacji, której użyłeś — na przykład w Proxmox Community Scripts uruchom aktualizację z konsoli LXC:',
|
|
'admin.update.wikiLink': 'Otwórz przewodnik aktualizacji',
|
|
'admin.update.reloadHint': 'Proszę odświeżyć stronę za kilka sekund.',
|
|
'admin.notifications.title': 'Powiadomienia',
|
|
'admin.notifications.hint': 'Wybierz jeden kanał powiadomień.',
|
|
'admin.notifications.none': 'Wyłączone',
|
|
'admin.notifications.email': 'E-mail (SMTP)',
|
|
'admin.notifications.webhook': 'Webhook',
|
|
'admin.notifications.save': 'Zapisz ustawienia powiadomień',
|
|
'admin.notifications.saved': 'Ustawienia powiadomień zapisane',
|
|
'admin.notifications.testWebhook': 'Wyślij testowy webhook',
|
|
'admin.notifications.testWebhookSuccess': 'Testowy webhook wysłany pomyślnie',
|
|
'admin.notifications.testWebhookFailed': 'Testowy webhook nie powiódł się',
|
|
'admin.notifications.emailPanel.title': 'Email (SMTP)',
|
|
'admin.notifications.webhookPanel.title': 'Webhook',
|
|
'admin.notifications.inappPanel.title': 'In-App',
|
|
'admin.notifications.inappPanel.hint':
|
|
'Powiadomienia w aplikacji są zawsze aktywne i nie można ich globalnie wyłączyć.',
|
|
'admin.notifications.adminWebhookPanel.title': 'Webhook admina',
|
|
'admin.notifications.adminWebhookPanel.hint':
|
|
'Ten webhook służy wyłącznie do powiadomień admina (np. alertów o nowych wersjach). Jest niezależny od webhooków użytkowników i wysyła automatycznie, gdy URL jest skonfigurowany.',
|
|
'admin.notifications.adminWebhookPanel.saved': 'URL webhooka admina zapisany',
|
|
'admin.notifications.adminWebhookPanel.testSuccess': 'Testowy webhook wysłany pomyślnie',
|
|
'admin.notifications.adminWebhookPanel.testFailed': 'Wysyłanie testowego webhooka nie powiodło się',
|
|
'admin.notifications.adminWebhookPanel.alwaysOnHint':
|
|
'Webhook admina wysyła automatycznie, gdy URL jest skonfigurowany',
|
|
'admin.notifications.ntfy': 'Ntfy',
|
|
'admin.ntfy.hint':
|
|
'Pozwala użytkownikom skonfigurować własne tematy ntfy dla powiadomień push. Ustaw domyślny serwer poniżej, aby wstępnie wypełnić ustawienia użytkownika.',
|
|
'admin.notifications.testNtfy': 'Wyślij testowe Ntfy',
|
|
'admin.notifications.testNtfySuccess': 'Testowe Ntfy wysłane pomyślnie',
|
|
'admin.notifications.testNtfyFailed': 'Wysyłanie testowego Ntfy nie powiodło się',
|
|
'admin.notifications.adminNtfyPanel.title': 'Admin Ntfy',
|
|
'admin.notifications.adminNtfyPanel.hint':
|
|
'Ten temat Ntfy jest używany wyłącznie do powiadomień admina (np. alertów o wersjach). Jest niezależny od tematów użytkowników i zawsze wysyła po skonfigurowaniu.',
|
|
'admin.notifications.adminNtfyPanel.serverLabel': 'URL serwera Ntfy',
|
|
'admin.notifications.adminNtfyPanel.serverHint':
|
|
'Używany również jako domyślny serwer dla powiadomień ntfy użytkowników. Pozostaw puste, aby użyć ntfy.sh. Użytkownicy mogą to nadpisać w swoich ustawieniach.',
|
|
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
|
|
'admin.notifications.adminNtfyPanel.topicLabel': 'Temat admina',
|
|
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
|
|
'admin.notifications.adminNtfyPanel.tokenLabel': 'Token dostępu (opcjonalne)',
|
|
'admin.notifications.adminNtfyPanel.tokenCleared': 'Token dostępu admina wyczyszczony',
|
|
'admin.notifications.adminNtfyPanel.saved': 'Ustawienia admin Ntfy zapisane',
|
|
'admin.notifications.adminNtfyPanel.test': 'Wyślij testowe Ntfy',
|
|
'admin.notifications.adminNtfyPanel.testSuccess': 'Testowe Ntfy wysłane pomyślnie',
|
|
'admin.notifications.adminNtfyPanel.testFailed': 'Wysyłanie testowego Ntfy nie powiodło się',
|
|
'admin.notifications.adminNtfyPanel.alwaysOnHint': 'Admin Ntfy zawsze wysyła po skonfigurowaniu tematu',
|
|
'admin.notifications.adminNotificationsHint':
|
|
'Skonfiguruj, które kanały dostarczają powiadomienia admina (np. alerty o wersjach). Webhook wysyła automatycznie, gdy ustawiony jest URL webhooka admina.',
|
|
'admin.notifications.tripReminders.title': 'Przypomnienia o podróżach',
|
|
'admin.notifications.tripReminders.hint':
|
|
'Wysyła powiadomienie z przypomnieniem przed rozpoczęciem podróży (wymaga ustawienia dni przypomnienia dla podróży).',
|
|
'admin.notifications.tripReminders.enabled': 'Przypomnienia o podróżach włączone',
|
|
'admin.notifications.tripReminders.disabled': 'Przypomnienia o podróżach wyłączone',
|
|
'admin.webhook.hint':
|
|
'Pozwól użytkownikom konfigurować własne adresy URL webhooka dla powiadomień (Discord, Slack itp.).',
|
|
'admin.tabs.permissions': 'Uprawnienia',
|
|
'admin.addons.catalog.journey.name': 'Dziennik podróży',
|
|
'admin.addons.catalog.journey.description':
|
|
'Śledzenie podróży i dziennik z zameldowaniami, zdjęciami i codziennymi historiami',
|
|
'admin.addons.catalog.collections.name': 'Kolekcje',
|
|
'admin.addons.catalog.collections.description': 'Zbieraj miejsca ze wszystkich podróży na nazwane listy i używaj ich ponownie',
|
|
'admin.passkey.title': 'Logowanie kluczem dostępu',
|
|
'admin.passkey.cardHint': 'Pozwól użytkownikom logować się kluczami dostępu (WebAuthn). Domyślnie wyłączone.',
|
|
'admin.passkey.login': 'Włącz logowanie kluczem dostępu',
|
|
'admin.passkey.loginHint':
|
|
'Pokaż opcję „Zaloguj się kluczem dostępu” i pozwól użytkownikom rejestrować klucze dostępu w swoich ustawieniach.',
|
|
'admin.passkey.notConfigured':
|
|
'Dla tego wdrożenia nie ustalono jeszcze żadnej domeny WebAuthn. Ustaw APP_URL lub Relying Party ID poniżej — do tego czasu klucze dostępu pozostaną ukryte.',
|
|
'admin.passkey.rpId': 'Relying Party ID (domena)',
|
|
'admin.passkey.rpIdHint':
|
|
'Sama domena, do której przypisane są klucze dostępu, np. trek.example.org. Pozostaw puste, aby wyprowadzić ją z APP_URL. Późniejsza zmiana unieważnia istniejące klucze dostępu.',
|
|
'admin.passkey.origins': 'Dozwolone origins',
|
|
'admin.passkey.originsHint':
|
|
'Pełne origins oddzielone przecinkami, np. https://trek.example.org. Pozostaw puste, aby użyć APP_URL.',
|
|
'admin.passkey.reset': 'Zresetuj klucze dostępu',
|
|
'admin.passkey.resetHint':
|
|
'Usuń wszystkie klucze dostępu tego użytkownika (np. po utracie urządzenia). Nadal będzie mógł logować się hasłem.',
|
|
'admin.passkey.resetConfirm': 'Usunąć wszystkie klucze dostępu dla {name}?',
|
|
'admin.passkey.resetDone': 'Usunięto {count} kluczy dostępu',
|
|
'admin.defaultSettings.mapProvider': 'Silnik map',
|
|
'admin.defaultSettings.mapProviderHint':
|
|
'Domyślna mapa dla wszystkich na tej instancji. Każdy użytkownik może ją zmienić we własnych ustawieniach.',
|
|
'admin.defaultSettings.providerLeaflet': 'Standardowa (bezpłatna)',
|
|
'admin.defaultSettings.providerMapbox': 'Mapbox (3D)',
|
|
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
|
|
'admin.defaultSettings.mapboxToken': 'Współdzielony token Mapbox',
|
|
'admin.defaultSettings.mapboxTokenHint':
|
|
'Używany dla każdego użytkownika, który nie wprowadził własnego tokena — dzięki temu cała instancja korzysta z Mapbox bez udostępniania klucza każdemu z osobna. Przechowywany w postaci zaszyfrowanej.',
|
|
'admin.defaultSettings.mapboxStyle': 'Styl mapy',
|
|
'admin.defaultSettings.mapboxStylePlaceholder': 'Wybierz styl…',
|
|
'admin.defaultSettings.mapbox3d': 'Budynki i teren 3D',
|
|
'admin.defaultSettings.mapboxQuality': 'Tryb wysokiej jakości',
|
|
'admin.defaultSettings.cartoKey': 'Współdzielony klucz CARTO',
|
|
'admin.defaultSettings.cartoKeyHint':
|
|
'Używany dla każdego użytkownika, który nie wprowadził własnego klucza, dzięki czemu cała instancja otrzymuje kafelki CARTO bez znaku wodnego. Przechowywany w postaci zaszyfrowanej.',
|
|
'admin.group.users': 'Users',
|
|
'admin.group.config': 'Configuration',
|
|
'admin.group.integration': 'Integrations',
|
|
'admin.group.maintenance': 'Maintenance',
|
|
'admin.invite.tripLabel': 'Dodaj do podróży (opcjonalnie)',
|
|
'admin.invite.tripNone': 'Brak podróży',
|
|
'admin.invite.tripHint': 'Nowy użytkownik zostanie automatycznie dodany do tej podróży po rejestracji przez link.',
|
|
'admin.invite.boundTo': 'dodaje do {trip}',
|
|
};
|
|
export default admin;
|