/** * Polish — translated from locales/en.js. * * Register: formal — the polite impersonal ("Proszę wpisać…", "Można…"), which is * how formal Polish software addresses the reader; direct "Pan / Pani" is used * only where a sentence needs a subject. * `hub`, `node` and `GEK` are left in English: they name the CLI * (`meshbay-node`), node.toml and the docs, which are English throughout. * Polish uses four plural categories, so counted strings carry all of * one / few / many / other. */ export default { // Nav 'nav.toggle_menu': 'Pokaż menu', 'nav.light_mode': 'Motyw jasny', 'nav.dark_mode': 'Motyw ciemny', 'nav.logout': 'Wyloguj', 'nav.login': 'Zaloguj', 'nav.minimize_tray': 'Zminimalizuj do zasobnika', 'tray.show': 'Pokaż MeshBay', 'tray.quit': 'Zakończ', 'tray.start_node': 'Uruchom węzeł', 'tray.stop_node': 'Zatrzymaj węzeł', // Sidebar 'sidebar.my_groups': 'Moje grupy', 'sidebar.no_groups': 'Nie ma jeszcze żadnych grup', 'sidebar.legal': 'Informacje prawne', 'sidebar.discover': 'Odkrywaj', 'sidebar.public_groups': 'Grupy publiczne', // Login 'login.title': 'Logowanie', 'login.username': 'Nazwa użytkownika', 'login.password': 'Hasło', 'login.submit': 'Zaloguj', 'login.loading': 'Logowanie...', 'login.no_account': 'Nie ma jeszcze konta?', 'login.register_link': 'Załóż konto', 'login.forgot': 'Nie pamiętasz hasła-frazy?', 'login.show_password': 'Pokaż hasło-frazę', 'login.hide_password': 'Ukryj hasło-frazę', 'reset.title': 'Zresetuj hasło-frazę', 'reset.request_intro': 'Wpisz swoją nazwę użytkownika i adres e-mail konta. Jeśli się zgadzają, kod resetowania zostanie wysłany na ten adres.', 'reset.send_code': 'Wyślij kod', 'reset.form_intro': 'Wpisz kod z e-maila i wybierz nową hasło-frazę. Jeśli masz klucz odzyskiwania, dodaj go, aby przywrócić też dostęp do swoich grup.', 'reset.code': 'Kod resetowania', 'reset.recovery_key': 'Klucz odzyskiwania (opcjonalnie)', 'reset.recovery_key_hint': 'Pozostaw puste, jeśli go nie masz. Bez niego Twoje logowanie zostanie przywrócone, ale do każdej grupy trzeba będzie dołączyć ponownie.', 'reset.new_pass': 'Nowa hasło-fraza', 'reset.new_pass_repeat': 'Powtórz nową hasło-frazę', 'reset.submit': 'Zresetuj hasło-frazę', 'reset.working': 'Przywracanie Twoich tożsamości grupowych…', 'reset.signin_restored': 'Twoje logowanie zostało przywrócone.', 'reset.groups_restored': 'Twoje tożsamości grupowe zostały przywrócone na każdym osiągalnym węźle.', 'reset.no_recovery': 'Twoje tożsamości grupowe nie zostały przywrócone. W przypadku każdej grupy poproś jej operatora o odpięcie Cię i przesłanie nowego kodu zaproszenia, a następnie dołącz ponownie.', 'reset.needs_operator': 'Te grupy nadal wymagają działania — poproś każdego operatora o odpięcie Cię i przesłanie nowego kodu:', 'reset.go_app': 'Przejdź do aplikacji', 'reset.back_to_login': 'Powrót do logowania', 'reset.err_unsupported': 'Resetowanie hasła-frazy wymaga modułu kryptograficznego przeglądarki, który jest tu niedostępny.', // Register 'register.title': 'Zakładanie konta', 'register.username': 'Nazwa użytkownika', 'register.email': 'Adres e-mail', 'register.password': 'Hasło-fraza (co najmniej 12 znaków)', 'register.confirm': 'Potwierdź hasło', 'register.submit': 'Załóż konto', 'register.loading': 'Tworzenie konta...', 'register.has_account': 'Konto już istnieje?', 'register.login_link': 'Zaloguj', 'register.recovery_title': 'Zapisz swój klucz odzyskiwania', 'register.recovery_intro': 'Ten klucz przywraca Twoje tożsamości grupowe, jeśli kiedykolwiek zapomnisz hasło-frazę. Przechowuj go w menedżerze haseł lub w bezpiecznym miejscu.', 'register.recovery_copy': 'Kopiuj', 'register.recovery_copied': 'Skopiowano', 'register.recovery_warning': 'Jeśli stracisz zarówno hasło-frazę, jak i ten klucz, Twoje pliki pozostaną na swoich węzłach, ale do każdej grupy dołączysz ponownie z nową tożsamością.', 'register.recovery_saved': 'Zapisałem/-am mój klucz odzyskiwania w bezpiecznym miejscu.', 'register.recovery_continue': 'Kontynuuj', 'register.recovery_email_opt': 'Wyślij mi też ten klucz odzyskiwania e-mailem jako kopię zapasową', 'register.recovery_emailed': 'Kopia została również wysłana na Twój adres e-mail, w tej samej wiadomości co kod weryfikacyjny.', 'register.recovery_not_emailed': 'To nie zostało wysłane e-mailem. Zapisz teraz — jest pokazywane tylko ten jeden raz.', 'register.success_title': 'Zweryfikuj swój e-mail', 'register.success_msg': 'Kod weryfikacyjny został wysłany na Twój adres e-mail. Wpisz go poniżej, aby aktywować konto.', 'register.go_login': 'Przejdź do logowania', 'register.code_placeholder': 'Kod weryfikacyjny', 'register.verify_btn': 'Zweryfikuj', 'register.verifying': 'Weryfikacja…', 'register.verified_title': 'E-mail zweryfikowany', 'register.verified_msg': 'Twoje konto jest aktywne. Możesz się teraz zalogować.', 'register.resend': 'Wyślij kod ponownie', 'register.resend_sent': 'Nowy kod został wysłany.', 'login.pending_verification': 'Twój adres e-mail nie został jeszcze zweryfikowany. Sprawdź skrzynkę odbiorczą.', 'login.verify_link': 'Zweryfikuj e-mail', 'login.invalid': "Nieprawidłowa nazwa użytkownika lub hasło-fraza.", 'login.locked': "Zbyt wiele błędnych haseł-fraz dla tego konta. Spróbuj ponownie za {minutes} min lub zresetuj hasło-frazę.", // Sign-in page: what MeshBay is (browser only) 'welcome.title': 'Internet taki, jaki miał być.', 'welcome.lead': 'MeshBay to oprogramowanie open source, które daje zdalny dostęp do Twoich plików osobistych i uruchamia aplikacje korzystające z pamięci Twojego własnego komputera:', 'welcome.app_chat': 'Czat', 'welcome.app_photos': 'Zdjęcia', 'welcome.app_media': 'Centrum multimedialne', 'welcome.app_video': 'Odtwarzacz wideo', 'welcome.app_music': 'Odtwarzacz muzyki', 'welcome.groups': 'Twórz grupy, aby dać bliskim dostęp do wybranych aplikacji.', 'welcome.e2e': 'Twoje dane są szyfrowane end-to-end i przesyłane bezpośrednio (peer-to-peer) z każdego urządzenia do komputera, który je przechowuje (Twojego węzła). Nigdy nie przechodzą przez hub meshbay.org.', 'welcome.uses_title': 'Co możesz z nim robić', 'welcome.use_chat': 'Komunikator w obrębie grupy', 'welcome.use_photos': 'Udostępnianie albumów ze zdjęciami rodzinie i znajomym', 'welcome.use_media': 'Zdalny dostęp do domowego centrum multimedialnego dla Ciebie i domowników (ze streamingiem i Chromecastem w aplikacji desktopowej)', 'welcome.use_apps': 'Tworzenie własnych aplikacji na węźle, który hostujesz', 'welcome.hub_title': 'Czym zajmuje się meshbay.org', 'welcome.hub_body': 'meshbay.org to wyłącznie usługa sygnalizacyjna: uwierzytelnia Cię i łączy uczestników ze sobą, bez konfiguracji, także przez sieci domowe.', 'welcome.hub_never': 'Twoje treści nigdy do niego nie trafiają:', 'welcome.never_transit': 'Nic przez niego nie przechodzi: żadnych treści, żadnego indeksowania', 'welcome.never_stored': 'Żadne Twoje pliki ani wiadomości nie są na nim przechowywane', 'welcome.never_e2e': 'Szyfrowanie end-to-end, od każdego urządzenia do Twojego węzła', 'welcome.hub_free': 'Usługa jest bezpłatna. Celowo nie ma modelu biznesowego, śledzenia ani reklam. Miłego korzystania!', 'welcome.download': 'Pobierz (beta)', 'welcome.legal': 'Informacje prawne', 'register.err_mismatch': 'Hasła nie są zgodne', 'register.err_username_len': 'Nazwa użytkownika musi mieć co najmniej {n} znaków.', 'register.err_min_len': { one: 'Proszę użyć co najmniej {n} znaku', few: 'Proszę użyć co najmniej {n} znaków', many: 'Proszę użyć co najmniej {n} znaków', other: 'Proszę użyć co najmniej {n} znaku', }, 'register.err_too_weak': 'Zbyt łatwe do odgadnięcia. To hasło-fraza chroni klucze ' + 'tam, gdzie są przechowywane — kilka niepowiązanych ze sobą słów sprawdza się ' + 'bardzo dobrze.', 'register.strength': 'Siła: około {bits} bitów. Chroni kopię kluczy przechowywaną na ' + 'nodes, do których się dołącza, więc warto ją dobrać starannie.', 'captcha.required': 'Proszę wypełnić captcha.', 'captcha.failed': 'Weryfikacja captcha nie powiodła się — spróbuj ponownie.', // Home 'home.welcome': 'Witamy w MeshBay', 'home.no_groups': 'Nie należy Pan(i) jeszcze do żadnej grupy.', 'home.browse_prefix': 'Warto przejrzeć ', 'home.browse_link': 'grupy publiczne', 'home.browse_suffix': ' albo poprosić administratora grupy o zaproszenie.', 'home.invite_only': 'Proszę poprosić administratora grupy o zaproszenie.', 'home.my_groups': 'Moje grupy', // Explore 'explore.title': 'Grupy publiczne', 'explore.search': 'Szukaj grup...', 'explore.loading': 'Wczytywanie...', 'explore.empty': 'Brak dostępnych grup publicznych.', 'explore.create_group': 'Utwórz grupę', 'explore.join': 'Dołącz', 'explore.member': 'Należy', 'explore.disabled': "This hub does not have public groups.", // Group page 'group.default_name': 'Grupa', 'group.tab_files': 'Pliki', 'group.tab_chat': 'Czat', 'group.tab_video': 'Wideo', 'group.tab_music': 'Muzyka', 'group.tab_photos': 'Zdjęcia', 'group.tab_helloworld': 'HelloWorld', 'helloworld.greeting': 'Witaj, świecie!', 'helloworld.no_directory': 'Nie wybrano folderu. Wybierz go w ustawieniach.', 'helloworld.counted': 'Plików: {n}', 'settings_app.helloworld_directory_label': 'Folder', 'settings_app.helloworld_directory_hint': 'Folder wypisywany przez tę aplikację referencyjną. Istnieje, aby pokazać, że dodanie aplikacji nie wymaga niczego poza jej dwoma plikami.', 'group.tab_members': 'Członkowie', 'group.tab_settings': "Ustawienia", 'members.danger_leave_hint': "Utracisz dostęp do plików i czatu tej grupy.", 'members.uploads_title': "Przesyłanie plików", 'members.uploads_on': "Członkowie mogą dodawać pliki", 'members.uploads_off': "Tylko Ty możesz dodawać pliki", 'members.uploads_disable': "Wyłącz", 'members.uploads_enable': "Włącz", 'members.uploads_hint': "Dotyczy wszystkich poza Tobą. To węzeł odrzuca przesłanie — nie chodzi o ukrycie przycisku.", 'members.apps_title': "Aplikacje", 'members.apps_hint': "Które części tej grupy widzą członkowie. Co najmniej jedna musi pozostać włączona.", 'members.apps_need_one': "Co najmniej jedna aplikacja musi pozostać włączona.", 'members.danger_delete_hint': "Grupa zniknie dla wszystkich członków. Tego nie można cofnąć.", 'group.filter': 'Filtruj pliki...', 'group.refresh_index': 'Odśwież listę', 'group.col_name': 'Nazwa', 'group.col_size': 'Rozmiar', 'group.col_type': 'Typ', 'group.col_date': 'Data', 'group.empty_filter': 'Żaden plik nie pasuje do filtra', 'group.empty_dir': 'Ten folder jest pusty', 'group.download': 'Pobierz', 'group.play': 'Odtwórz', 'group.offline_title': 'Obecnie żaden node nie jest dostępny dla tej grupy.', 'group.offline_hint': 'Pliki pojawią się, gdy połączy się node hostujący tę grupę.', 'group.upload': 'Wyślij', 'group.drop_here': 'Upuść, aby wysłać do {dir}', 'group.drop_not_here': 'Pliki można upuszczać tylko do folderu z prawem zapisu.', 'group.drop_conflict': 'Wysyłanie anulowane — już jest w tym folderze: {names}. Najpierw zmień nazwę lub usuń.', 'group.drop_invalid': 'Wysyłanie anulowane — węzeł nie może zapisać tych nazw: {names}', 'group.drop_unreadable': 'Wysyłanie anulowane — nie udało się odczytać upuszczonych elementów.', 'group.drop_mkdir_failed': 'Wysyłanie anulowane — nie udało się utworzyć folderu ({detail}).', 'group.mkdir': 'Nowy folder', 'group.mkdir_prompt': 'Nazwa nowego folderu', 'group.mkdir_offline': 'Brak połączenia z węzłem.', 'group.download_offline': 'Brak połączenia z węzłem — pobieranie nie może się rozpocząć. Połączenie wróci samo; proszę spróbować za chwilę.', 'group.download_write_stalled': 'Plik przestał być zapisywany na dysk ({seconds} s bez postępu). Pobieranie zostało przerwane, zamiast wisieć w nieskończoność; proszę spróbować ponownie.', 'device.add_title': 'This browser is not linked to this node yet', 'device.add_hint': 'Your account is known here, but this browser holds a different key. Approve it from a device already linked — no operator needed.', 'device.add_btn': 'Get a linking code', 'device.add_show': 'Type this code into a device already linked to this node, within the hour:', 'device.mine_title': 'Your devices on this node', 'device.mine_hint': 'Each browser or client you use here holds its own key. They are separate from your devices on other nodes.', 'device.mine_empty': 'No device is linked here yet.', 'device.this_one': 'this one', 'device.revoke': 'Remove', 'device.revoke_confirm': 'Remove this device? It will lose access to this node until it is linked again.', 'device.approve_hint': 'Linking a new device? Enter the code it is showing.', 'device.approve_btn': 'Approve', 'device.approved': 'Device linked.', 'group.root_unavailable': '(niedostępne — dysk jest odłączony)', 'group.root_plug': 'Podłącz', 'group.root_eject': 'Odłącz', 'group.root_writable': 'Odczyt/zapis', 'group.root_ejected': '(odłączony)', 'group.view': 'Podgląd', 'group.delete': 'Usuń', 'group.delete_confirm': 'Usunąć {name}?', 'group.delete_group': 'Usuń grupę', 'group.delete_group_confirm': 'Trwale usunąć grupę „{name}” i odłączyć wszystkich ' + 'członków? Pliki znajdujące się na node zostaną zachowane.', 'group.err_transport': 'Moduł transportu nie został wczytany', // Status 'status.idle': 'Bezczynny', 'status.discovering': 'Szukanie nodes...', 'status.connecting': 'Łączenie przez WebRTC...', 'status.connecting_short': 'Łączenie…', 'status.fetching': 'Pobieranie indeksu...', 'status.files': { one: '{n} plik', few: '{n} pliki', many: '{n} plików', other: '{n} pliku', }, 'status.offline': 'Żaden node nie jest dostępny', 'status.error': 'Połączenie nie powiodło się', // Chat 'chat.empty': 'Nie ma jeszcze wiadomości. Warto zacząć rozmowę!', 'chat.placeholder': 'Napisz wiadomość...', 'chat.send': 'Wyślij', 'chat.attach': 'Załącz plik', 'chat.attach_read_only': 'Brak zapisywalnego katalogu współdzielonego — załączniki wyłączone', // Video player 'video.loading': 'Wczytywanie {name}...', 'video.buffering': 'Buforowanie...', 'video.resumed_at': "Wznowiono od {time}", 'video.from_start': "Odtwórz od początku", 'video.audio_track': 'Ścieżka dźwiękowa', 'video.audio_track_n': 'Ścieżka {n}', 'video.subtitles': 'Napisy', 'video.subtitles_off': 'Brak', 'video.subtitle_track_n': 'Ścieżka {n}', 'video.subtitles_forced': 'wymuszone (tylko napisy w tle)', 'video.subtitles_sdh': 'dla niesłyszących', 'video.err_subtitle': 'Nie udało się wczytać tej ścieżki napisów', 'video.close': 'Zamknij (Esc)', 'preview.pdf_fallback': 'Ta przeglądarka nie wyświetli pliku PDF na stronie. Proszę ' + 'go pobrać — i tak został odszyfrowany tutaj.', 'preview.too_large': 'Ten plik ma {size}, więcej niż ta strona może utrzymać w pamięci ({limit}). Proszę go zamiast tego pobrać — pobieranie jest zapisywane wprost na dysk.', 'download.too_large_for_memory': '„{name}” ma {size}. Ta przeglądarka może zapisać plik tej wielkości tylko strumieniowo na dysk, a tutaj nie ma takiej możliwości — musiałaby utrzymać cały plik w pamięci. Proszę odświeżyć stronę i spróbować ponownie; jeśli to nie pomoże, proszę użyć aplikacji desktopowej.', 'group.upload_indexing': 'indeksowanie…', 'video.err_transport': 'Transport nie jest połączony', 'video.err_mse': 'Kodek nieobsługiwany przy odtwarzaniu strumieniowym: {codec}', 'video.mode_poster': 'Plakaty', 'video.mode_flat': 'Lista płaska', 'video.filter_all': 'All', 'video.filter_movies': 'Movies', 'video.filter_series': 'Series', 'pager.range': '{from}–{to} z {total}', 'pager.previous': 'Poprzednia strona', 'pager.next': 'Następna strona', 'video.empty': 'Nie znaleziono żadnych filmów.', 'video.no_root_configured': 'Dla tej grupy nie wybrano jeszcze katalogu głównego Wideo — operator może go wybrać w Ustawieniach.', 'music.no_root_configured': 'Dla tej grupy nie wybrano jeszcze katalogu głównego Muzyki — operator może go wybrać w Ustawieniach.', 'video.director': 'Reżyser', 'video.specials': 'Dodatki', 'video.season_n': 'Sezon {n}', 'video.episode_n': 'Odcinek {n}', 'video.n_episodes': { one: '{n} odcinek', few: '{n} odcinki', many: '{n} odcinków', other: '{n} odcinka', }, 'video.fix_match': 'Popraw dopasowanie…', 'video.search_title': 'Popraw dopasowanie TMDB', 'video.search_placeholder': 'Szukaj w TMDB…', 'video.search_button': 'Szukaj', 'video.search_no_results': 'Nie znaleziono dopasowań.', 'video.search_apply_hint': 'Dotyczy wszystkich plików obecnie zgrupowanych pod tym tytułem.', 'video.search_apply_hint_movie': 'Dotyczy tylko tego pliku.', 'video.source_file': 'Plik: {name}', 'video.no_match': 'Brak pewnego dopasowania TMDB — pokazano nazwę pliku.', 'video.rematch_one': 'Dopasuj ponownie', 'video.read_more': 'Czytaj więcej', 'video.read_less': 'Pokaż mniej', // Muzyka 'music.mode_grid': 'Albumy', 'music.mode_flat': 'Lista płaska', 'music.empty': 'Nie znaleziono muzyki.', 'music.unknown_album': 'Nieznany album', 'music.unknown_artist': 'Nieznany wykonawca', 'music.various': 'Różne', 'music.play_all': 'Odtwórz wszystko', 'music.menu_more': 'Więcej…', 'music.menu_play': 'Odtwórz', 'music.menu_play_next': 'Odtwórz jako następne', 'music.menu_enqueue': 'Dodaj do kolejki', 'music.n_tracks': { one: '{n} utwór', few: '{n} utwory', many: '{n} utworów', other: '{n} utworu', }, 'music.err_transport': 'Transport niepołączony', 'music.err_playback': 'Błąd odtwarzania', 'music.err_transcode': 'Konwersja formatu nie powiodła się', 'music.player_play': 'Odtwórz', 'music.player_pause': 'Pauza', 'music.player_prev': 'Poprzedni', 'music.player_next': 'Następny', 'music.player_shuffle': 'Losowo', 'music.player_repeat_off': 'Powtarzanie wyłączone', 'music.player_repeat_all': 'Powtórz wszystko', 'music.player_repeat_one': 'Powtórz utwór', 'music.player_volume': 'Głośność', 'music.player_close': 'Zamknij odtwarzacz', 'playlists.menu': 'Playlisty', 'playlists.load': 'Wczytaj playlistę', 'playlists.create': 'Nowa playlista…', 'playlists.delete': 'Usuń playlistę', 'playlists.remove_track': 'Usuń utwór', 'playlists.sync_now': 'Synchronizuj teraz', 'playlists.add_to': 'Dodaj do playlisty', 'playlists.favorites': 'Ulubione', 'playlists.none_yet': 'Brak playlist', 'playlists.empty_playlist': 'Ta playlista jest pusta', 'playlists.added': 'Dodano: {n}', 'playlists.already_there': 'Już jest na tej playliście', 'playlists.name_placeholder': 'Nazwa playlisty', 'playlists.err_duplicate': 'Playlista o tej nazwie już istnieje', 'playlists.confirm_delete': 'Usunąć playlistę „{name}”? Tego nie można cofnąć.', 'playlists.deleted': 'Usunięto „{name}”', 'playlists.synced': 'Playlisty zsynchronizowane', 'playlists.sync_failed': 'Nie udało się zsynchronizować', 'playlists.err_no_key': 'Wyloguj się i zaloguj raz hasłem, aby synchronizować playlisty między urządzeniami.', 'playlists.err_too_large': '„{name}” jest zbyt duża, aby zsynchronizować ją z innymi urządzeniami. Podziel ją na playlisty po około {n} utworów.', 'playlists.track_removed': 'Utwór usunięty', 'playlists.save_queue': 'Zapisz kolejkę jako playlistę…', 'playlists.cancel': 'Anuluj', 'playlists.save': 'Zapisz', 'music.player_queue': 'Aktualna kolejka', 'music.queue_title': 'Teraz odtwarzane', // Photos 'photo.empty': 'Nie znaleziono żadnych zdjęć.', 'photo.no_roots_configured': 'Dla tej grupy nie wybrano jeszcze katalogów głównych Zdjęć — operator może wybrać kilka w Ustawieniach.', 'photo.root_album': '(poziom główny)', 'photo.n_photos': { one: '{n} zdjęcie', few: '{n} zdjęcia', many: '{n} zdjęć', other: '{n} zdjęcia', }, 'photo.back': 'Wstecz', 'photo.prev': 'Poprzednie (←)', 'photo.next': 'Następne (→)', 'photo.zip_album': 'Pobierz album jako zip', 'photo.zoom_in': 'Powiększ', 'photo.zoom_out': 'Pomniejsz', 'photo.zoom_fit_title': 'Dopasuj do okna', 'photo.zoom_fit_label': 'Dopasuj', 'photo.zoom_100': 'Rzeczywisty rozmiar (100%)', // LAN cast 'cast.start': 'Przesyłaj na urządzenie', 'cast.stop': 'Zatrzymaj przesyłanie', 'cast.copy_url': 'Kopiuj URL strumienia', 'cast.copied': 'URL skopiowany', 'cast.scanning': 'Wyszukiwanie urządzeń…', 'cast.no_devices': 'Nie znaleziono urządzeń', // Settings 'settings.title': 'Ustawienia', 'settings.coming_soon': 'Wkrótce.', 'settings.downloads': 'Pobieranie', 'settings.dl_auto': 'Zapisuj automatycznie', 'settings.dl_auto_hint': 'Pliki trafiają prosto do folderu wybranego poniżej, bez ' + 'żadnego okna. Pobranie dwudziestu plików umieści tam dwadzieścia plików.', 'settings.dl_ask': 'Pytaj za każdym razem', 'settings.dl_ask_hint': 'Okno „Zapisz jako” dla każdego pliku — po jednym na plik, ' + 'także przy pobieraniu zaznaczonych pozycji.', 'settings.dl_folder': 'Folder: {name}', 'settings.dl_no_folder': 'Nie wybrano folderu — pobrane pliki trafiają tam, gdzie ' + 'umieszcza je przeglądarka, i nie można ich wstrzymać', 'settings.dl_choose': 'Wybierz folder', 'settings.dl_change': 'Zmień', 'settings.dl_forget': 'Zapomnij', 'settings.profile': 'Profil', 'settings.username': 'Nazwa użytkownika', 'settings.email': 'Email', 'settings.email_save': 'Zapisz', 'settings.email_saved': 'E-mail zaktualizowany', 'settings.email_code_sent': 'Kod weryfikacyjny został wysłany na nowy adres e-mail.', 'settings.email_code_placeholder': 'Kod weryfikacyjny', 'settings.email_verify_btn': 'Zweryfikuj', 'settings.email_verifying': 'Weryfikacja…', 'settings.email_verified': 'Adres e-mail został pomyślnie zmieniony.', 'settings.notif_global_disable': 'Wyłącz wszystkie powiadomienia', 'settings.notif_global_hint': 'Po włączeniu nie będą tworzone żadne powiadomienia dla żadnej grupy.', 'settings.defaults': 'Wartości domyślne', 'settings.default_tab': 'Default tab', 'settings.default_tab_hint': 'Which tab opens first when you enter a group.', 'settings.media_page_size': 'Elementy na stronę w Wideo i Muzyce', 'settings.media_page_size_hint': 'Ile plakatów lub albumów jest wyświetlanych naraz; strzałki na pasku narzędzi przechodzą do kolejnej porcji.', 'settings.music_keep_screen_on': 'Keep screen on during music playback', 'settings.music_keep_screen_on_hint': 'Prevents the phone from locking on its own while a track is playing.', 'settings.node_pins': 'Tożsamości nodes', 'settings.node_pins_hint': 'Klucz tożsamości każdego node jest zapamiętywany przy ' + 'pierwszym połączeniu. Jeśli się zmieni, połączenie zostanie odrzucone — czego ' + 'należy się spodziewać wyłącznie wtedy, gdy operator przeinstalował node. Przed ' + 'wyczyszczeniem warto to z nim potwierdzić.', 'settings.node_pins_count': { one: '{n} przypięta', few: '{n} przypięte', many: '{n} przypiętych', other: '{n} przypiętej', }, 'settings.node_pins_clear': 'Wyczyść przypięte tożsamości', 'settings.passphrase': 'Hasło-fraza', 'settings.passphrase_hint': 'Zmienia hasło-frazę tego konta. Twoje klucze tożsamości są ponownie pakowane w każdej grupie, której węzeł jest online; do grupy, której węzeł jest offline, trzeba będzie dołączyć ponownie później.', 'settings.passphrase_change': 'Zmień hasło-frazę', 'settings.passphrase_current': 'Bieżąca hasło-fraza', 'settings.passphrase_new': 'Nowa hasło-fraza', 'settings.passphrase_new_repeat': 'Powtórz nową hasło-frazę', 'settings.continue': 'Kontynuuj', 'settings.done': 'Gotowe', 'settings.passphrase_confirm_intro': 'Twoje klucze tożsamości zostaną teraz ponownie spakowane w każdej grupie, której węzeł jest osiągalny:', 'settings.passphrase_reachable': 'Zaktualizowano teraz', 'settings.passphrase_unreachable': 'Nieosiągalne', 'settings.passphrase_fallback_note': 'W przypadku grupy, której nie można osiągnąć, poproś jej operatora o odpięcie Cię i przesłanie nowego kodu zaproszenia, a następnie dołącz ponownie. Twoje pliki i wiadomości nie zostaną utracone.', 'settings.passphrase_confirm_btn': 'Zmień', 'settings.passphrase_working': 'Ponowne pakowanie kluczy…', 'settings.passphrase_done': 'Hasło-fraza zmieniona.', 'settings.passphrase_needs_operator': 'Te grupy nadal wymagają działania — poproś każdego operatora o odpięcie Cię i przesłanie nowego kodu:', 'settings.pw_too_short': 'Nowa hasło-fraza musi mieć co najmniej 12 znaków.', 'settings.pw_mismatch': 'Obie nowe hasło-frazy nie są zgodne.', 'settings.pw_same': 'Nowa hasło-fraza musi różnić się od bieżącej.', 'settings.pw_wrong_current': 'Bieżąca hasło-fraza jest nieprawidłowa. Nic nie zostało zmienione.', 'settings.recovery': 'Klucz odzyskiwania', 'settings.recovery_hint': 'Dodaje do każdej grupy kopię Twojej tożsamości zaszyfrowaną Twoim kluczem odzyskiwania. Zrób to raz w każdej używanej przeglądarce; bez tego utrata hasła-frazy oznacza ponowne dołączanie do każdej grupy ręcznie.', 'settings.recovery_loaded': 'Wczytany w tej przeglądarce — nowe grupy są objęte automatycznie.', 'settings.recovery_open': 'Wprowadź klucz odzyskiwania', 'settings.recovery_input_ph': 'Wklej swój klucz odzyskiwania', 'settings.recovery_submit': 'Dodaj kopie zapasowe', 'settings.recovery_working': 'Aktualizowanie Twoich grup…', 'settings.recovery_done': 'Twoje grupy mają teraz kopię odzyskiwania.', 'settings.recovery_partial': 'Nie udało się połączyć z tymi grupami. Otwórz je później lub uruchom to ponownie:', 'settings.recovery_need_relogin': 'Wyloguj się i zaloguj ponownie, a następnie spróbuj jeszcze raz.', 'settings.danger': 'Usunięcie konta', 'settings.sessions_heading': 'Sesje', 'settings.sign_out_everywhere': 'Wyloguj wszędzie', 'settings.sign_out_everywhere_hint': 'Kończy wszystkie sesje Twojego konta, łącznie z tą: przydatne, jeśli pozostałeś zalogowany na cudzym komputerze. Aplikacja desktopowa loguje się ponownie kluczem urządzenia, dopóki nie usuniesz tego urządzenia.', 'settings.sign_out_everywhere_confirm': 'Wylogować ze wszystkich przeglądarek i aplikacji, łącznie z tą?', 'settings.delete_hint': 'Usuwa z huba konto, członkostwa w grupach i powiadomienia ' + 'oraz zwalnia nazwę użytkownika. Nie sięga tego, co znajduje się na nodes: ' + 'wysłane pliki pozostają tam, gdzie przechowuje je ich operator, a każdy node ' + 'zachowuje przypiętą tożsamość do czasu, aż jego operator ją odepnie. Dzienniki ' + 'połączeń są przechowywane przez rok, zgodnie z wymogami prawa.', 'settings.delete_account': 'Usuń moje konto', 'settings.delete_confirm': 'Proszę wpisać hasło-frazę, aby potwierdzić. Tej operacji ' + 'nie da się cofnąć.', 'settings.delete_confirm_btn': 'Usuń bezpowrotnie', 'settings.cancel': 'Anuluj', 'settings.appearance': 'Wygląd', 'settings.theme': 'Motyw', 'settings.theme_light': 'Jasny', 'settings.theme_dark': 'Ciemny', 'settings.theme_system': 'Systemowy', 'settings.language': 'Język', 'settings.about': 'O programie', 'firstrun.title': 'Which hub?', 'firstrun.hint': 'A hub holds your account and introduces you to nodes. It never sees your files, your messages or your keys.', 'firstrun.btn': 'Continue', 'firstrun.checking': 'Checking…', 'firstrun.note': 'There is no default on purpose: this application only trusts a hub for its API, never for the interface, which ships with the application itself.', 'device.this_device': 'This device', 'settings.keys_heading': 'Keys on this device', 'settings.hub_heading': 'Hub', 'settings.hub_current': 'Currently', 'settings.hub_hint': 'Changing this signs you out and restarts the window.', 'settings.hub_change': 'Change', 'settings.keys_where': 'Protected by', 'settings.keys_unprotected': 'No system keyring is running, so your keys are encrypted with a key that is not a secret. Anyone who can read this machine’s files can read them. Start a keyring, or treat this device as untrusted.', 'settings.keys_unavailable': 'This system offers no key storage at all, so this device cannot be remembered — you will be asked for your passphrase each time. That is the safe outcome: nothing was stored unprotected.', 'settings.version': 'Wersja', 'settings.protocol': 'Protokół', 'settings.role': 'Rola', 'settings.groups': 'Powiadomienia z grup', 'settings.notifications': 'Powiadomienia', 'settings.node_key': 'Powiąż node', 'settings.node_key_desc': 'Osoby prowadzące własny node MeshBay mogą wkleić tutaj ' + 'jego klucz publiczny Ed25519, aby powiązać go ze swoim kontem. Aby odczytać ' + 'klucz, uruchom `meshbay-node status` na maszynie z node lub skopiuj go z ' + 'Node → Overview w kliencie desktopowym.', 'settings.node_key_placeholder': 'Wklej klucz publiczny Ed25519 node (base64)', 'settings.node_key_submit': 'Powiąż node', 'settings.node_key_success': 'Node został powiązany', 'settings.node_key_current': 'Klucz powiązanego node', // Sidebar 'sidebar.create_group': 'Utwórz grupę', 'sidebar.settings': 'Ustawienia', 'sidebar.admin': 'Administracja', // User menu 'usermenu.language': 'Język', 'usermenu.settings': 'Ustawienia', 'usermenu.theme_light': 'Motyw jasny', 'usermenu.theme_dark': 'Motyw ciemny', 'usermenu.logout': 'Wyloguj', // Admin panel 'admin.title': 'Administracja', 'admin.tab_stats': 'Statystyki', 'admin.tab_users': 'Użytkownicy', 'admin.tab_groups': 'Grupy', 'admin.tab_nodes': 'Nodes', 'admin.tab_logs': 'Dzienniki', 'admin.col_observed_ip': 'Widziany z', 'admin.col_hint': 'Zgłoszony adres', 'admin.col_last_seen': 'Ostatnie zgłoszenie', 'admin.node_online': 'dostępny', 'admin.node_offline': 'niedostępny', 'admin.no_nodes': 'Brak zarejestrowanych nodes', 'admin.nodes_hint': '„Widziany z” to adres, z którego zgłoszenie rzeczywiście ' + 'dotarło, w żądaniu podpisanym kluczem node — i to na nim należy się opierać, ' + 'odpowiadając na zapytanie. Zgłoszony adres to ten, który node uważa za własny, ' + 'poznany od serwera STUN i przesłany do nas; przydaje się do nawiązania ' + 'połączenia i niczego nie dowodzi.', 'admin.tab_blocklist': 'Lista blokad', 'admin.tab_general': "General", 'admin.general_groups_heading': "Groups", 'admin.allow_public_groups_label': "Allow members to create public groups", 'admin.allow_public_groups_hint': "When off, new groups can only be private and invite-only. Existing public groups are left as they are — suspend them one by one from the Groups tab.", 'admin.mail_heading': "Poczta wychodząca", 'admin.mail_hint': "Co ten hub wysyła i ile. Liczą się dwa: budżet godzinowy, którego nie podniesie żadna liczba kont, oraz dzienny limit na odbiorcę — to właśnie odczuwa ktoś zasypywany wiadomościami.", 'admin.mail_this_hour': "Wysłane w tej godzinie", 'admin.mail_remaining': "Pozostało {general} na rejestracje i zmiany adresu, {recovery} na resetowanie hasła i zaproszenia.", 'admin.mail_hourly_budget': "Wiadomości na godzinę (cała instancja)", 'admin.mail_hourly_reserved_for_recovery': "Z tego zarezerwowane na resety i zaproszenia", 'admin.mail_destination_daily_cap': "Wiadomości dziennie do jednego odbiorcy", 'admin.mail_destination_cooldown_seconds': "Sekundy między wiadomościami do jednego odbiorcy", 'admin.mail_invite_link_daily_cap': 'E-maile z linkiem zaproszenia dziennie na konto', 'admin.mail_verification_resend_cooldown': "Sekundy między dwoma kodami rejestracji", 'admin.mail_reset_cooldown': "Sekundy między dwoma kodami resetu", 'admin.mail_email_change_cooldown': "Sekundy, zanim konto może zaproponować inny adres", 'admin.mail_save': "Zapisz limity poczty", 'admin.mail_reset_defaults': "Przywróć domyślne", 'admin.login_heading': "Logowanie", 'admin.login_hint': "Po tylu błędnych hasłach-frazach dla jednej nazwy użytkownika logowanie hasłem-frazą jest odrzucane przez ustawiony czas. Otwarte już sesje i zarejestrowane urządzenia działają dalej, a zresetowanie hasła-frazy znosi blokadę. 0 ją wyłącza.", 'admin.session_heading': 'Sesje', 'admin.session_hint': 'Przeglądarka wylogowuje się po pierwszej liczbie godzin bez interakcji i bez odtwarzania; aplikacja desktopowa nie. Sesja nieużywana przez drugą liczbę godzin przestaje być odnawiana, a żadna nie trwa dłużej niż trzecia.', 'admin.session_browser_idle_hours': 'Wylogowanie przeglądarki po bezczynności (godziny)', 'admin.session_refresh_idle_hours': 'Nieużywana sesja wygasa po (godziny)', 'admin.session_max_hours': 'Maksymalny czas sesji (godziny)', 'admin.session_save': 'Zapisz ustawienia sesji', 'admin.login_max_failures': "Błędne hasła-frazy przed blokadą", 'admin.login_lockout_minutes': "Czas blokady (minuty)", 'admin.login_save': "Zapisz limity logowania", 'admin.mail_state_is_in_stats': "Zużycie w bieżącej godzinie pokazano w Statystykach.", 'admin.mail_state_hint': "Resety i zaproszenia mogą wykorzystać cały budżet; rejestracje i zmiany adresu nie mogą naruszyć zarezerwowanej części. Administratorzy są powiadamiani raz na godzinę, gdy któryś z limitów zostanie osiągnięty.", 'admin.mail_left_signups': "Pozostało na rejestracje", 'admin.mail_left_recovery': "Pozostało na resety i zaproszenia", 'admin.mail_recipients': "Odbiorcy policzeni dzisiaj", 'admin.mail_alert_all': "Ten hub przestał wysyłać pocztę w tej godzinie. Resety i zaproszenia również są odrzucane.", 'admin.mail_alert_general': "Część na rejestracje i zmiany adresu wyczerpała się w tej godzinie. Resety i zaproszenia nadal są wysyłane.", 'admin.settings_readonly': "Only an admin can change these settings.", // Admin stats 'admin.stat_users': 'Użytkownicy', 'admin.stat_groups': 'Grupy', 'admin.stat_nodes': 'Nodes', 'admin.stat_online': 'Dostępne nodes', // Admin users 'admin.users_search': 'Szukaj użytkowników...', 'admin.col_username': 'Nazwa użytkownika', 'admin.col_role': 'Rola', 'admin.col_status': 'Status', 'admin.col_created': 'Utworzono', 'admin.col_actions': 'Działania', 'admin.col_email': 'E-mail', 'admin.col_groups': 'Grupy', 'admin.no_users': 'Nie znaleziono użytkowników', 'admin.btn_suspend': 'Zawieś', 'admin.btn_unsuspend': 'Przywróć', 'admin.btn_revoke': "Revoke", 'admin.revoke_group_confirm': "Revoke the group \"{group}\"? This pushes a signed revocation to every node hosting it and cannot be undone from here. Suspend it instead if you only need to pause it.", 'admin.btn_details': 'Szczegóły', 'admin.btn_delete': 'Usuń', 'admin.delete_confirm': 'Usunąć konto „{user}” i wszystkie jego grupy? Tej operacji nie da się cofnąć. ' + 'Wysłane przez tę osobę pliki pozostaną na hostujących je nodes, a każdy node ' + 'zachowa przypiętą tożsamość do czasu, aż jego operator ją odepnie. Zawieszenie ' + 'jest opcją odwracalną.', 'admin.user_detail': 'Szczegóły użytkownika', 'admin.btn_close': 'Zamknij', 'admin.self_note': '(to Pan/Pani)', // Admin groups 'admin.col_name': 'Nazwa', 'admin.col_visibility': 'Widoczność', 'admin.col_members': 'Członkowie', 'admin.no_groups': 'Nie znaleziono grup', // Admin logs 'admin.col_time': 'Czas', 'admin.col_event': 'Zdarzenie', 'admin.col_user': 'Użytkownik', 'admin.col_ip': 'IP', 'admin.col_detail': 'Szczegóły', 'admin.filter_all': 'Wszystkie zdarzenia', 'admin.no_logs': 'Nie znaleziono wpisów', 'admin.btn_load_more': 'Wczytaj więcej', // Admin blocklist 'admin.col_hash': 'Skrót', 'admin.col_reason': 'Powód', 'admin.col_date': 'Data', 'admin.col_added_by': 'Dodane przez', 'admin.no_blocked': 'Brak zablokowanych skrótów', 'admin.add_hash': 'Dodaj skrót do listy blokad', 'admin.hash_placeholder': 'skrót blake3 (64 znaki szesnastkowe)', 'admin.reason_placeholder': 'Powód', 'admin.btn_block': 'Zablokuj', 'admin.btn_unblock': 'Odblokuj', // Notifications // Create group 'create_group.title': 'Tworzenie grupy', 'create_group.name': 'Nazwa grupy', 'create_group.name_placeholder': 'np. Zdjęcia rodzinne, Pliki projektu...', 'create_group.join_policy': 'Zasady dołączania', 'create_group.invite': 'Tylko z zaproszeniem', 'create_group.invite_desc': "Członków musi zaprosić administrator. Grupa nie jest publicznie widoczna.", 'create_group.open': 'Otwarta (każdy może dołączyć)', 'create_group.open_desc': "Widoczna na liście grup publicznych — każdy może ją znaleźć i dołączyć bez zatwierdzenia.", 'create_group.description': 'Opis', 'create_group.description_hint': 'Czego dotyczy ta grupa? (opcjonalnie)', 'create_group.submit': 'Utwórz', 'create_group.hint': 'Grupa potrzebuje node, który będzie hostował pliki. Można ' + 'utworzyć grupę teraz, a node podłączyć później.', 'create_group.creating': 'Tworzenie...', // Members 'members.col_role': 'Rola', 'members.group_role': 'Rola w grupie', 'members.admin': 'Administrator', 'members.group_admin': 'Administrator grupy', 'members.owner': 'Właściciel', 'members.member': 'Członek', 'members.invite_title': 'Zaproszenie członka', 'members.username_placeholder': 'Nazwa użytkownika', 'members.invite_btn': 'Zaproś', 'members.invite_needs_pairing': 'Zaproszenia są podpisywane kluczem, który ten node ' + 'przypiął dla tej przeglądarki — proszę najpierw sparować ją poniżej, zanim ' + 'kogokolwiek Pan(i) zaprosi.', 'members.invite_ask_operator': 'Zapraszać może wyłącznie operator node hostującego tę ' + 'grupę, z przeglądarki sparowanej z tym node.', 'members.remove': 'Usuń', 'members.remove_confirm': 'Usunąć użytkownika {user} z tej grupy? Jego konto, ' + 'pozostałe grupy i wysłane przez niego pliki pozostaną nienaruszone.', 'members.remove_hint': 'Usunięcie kogoś odbiera mu członkostwo i sprawia, że node ' + 'przestaje wydawać mu klucz grupy. Nie usuwa to jego konta ani nie odbiera ' + 'klucza, który już posiada — jeśli to istotne, należy zmienić klucz na node ' + '(meshbay-node gek-init).', 'members.pair_title': 'Sparowanie tej przeglądarki z Pana/Pani node', 'members.pair_hint': 'Node przyjmuje działania operatora — zaproszenia, usuwanie ' + 'plików — wyłącznie z przeglądarki, z którą został sparowany. Proszę uruchomić na ' + 'node polecenie `meshbay-node operator pair` i wpisać tutaj kod. Kod nigdy nie ' + 'przechodzi przez hub.', 'members.pair_btn': 'Sparuj', 'members.pair_success': 'Ta przeglądarka jest już sparowana z node.', 'members.invite_code_ready': 'Kod zaproszenia dla użytkownika {user}:', 'members.invite_email_sent': 'E-mail z kodem został wysłany do tego członka.', 'members.invite_email_failed': 'Nie udało się wysłać e-maila — przekaż kod ręcznie.', 'members.invite_email_opt': 'Wyślij zaproszenie e-mailem (może trafić do spamu)', 'members.invite_code_hint': 'Możesz też przekazać ten kod innym kanałem (np. SMS). ' + 'Kod działa jednorazowo i nigdy nie przechodzi przez hub.', 'transfers.title': 'Transfery', 'transfers.clear': 'Wyczyść zakończone', 'transfers.cancel': 'Anuluj', 'transfers.open': 'Otwórz', 'transfers.done': 'Zakończony', 'transfers.cancelled': 'Anulowany', 'transfers.preparing': 'Przygotowywanie…', 'transfers.waiting_own_slots': 'Oczekiwanie — Twoje miejsca są zajęte', 'transfers.waiting_node': 'Oczekiwanie — {n} przed', 'transfers.summary': '{running} w toku · {waiting} oczekuje', 'transfers.group_running': 'W toku', 'transfers.group_waiting': 'Oczekuje', 'transfers.group_paused': 'Wstrzymane', 'transfers.group_finished': 'Zakończone', 'transfers.cancel_one': 'Anuluj {name}', 'transfers.pause': 'Wstrzymaj', 'transfers.resume': 'Wznów', 'transfers.paused': 'Wstrzymano', 'transfers.not_pausable': 'Nie można wstrzymać — proszę wybrać folder pobierania w Ustawieniach', 'transfers.pause_one': 'Wstrzymaj {name}', 'transfers.resume_one': 'Wznów {name}', 'transfers.eta_seconds': 'pozostało {n} s', 'transfers.eta_minutes': 'pozostało {n} min', 'transfers.eta_hours': 'pozostało {n} godz.', 'transfers.failed': 'Nie powiódł się', 'group.select': 'Zaznacz', 'group.select_done': 'Gotowe', 'group.actions': 'Działania ({n})', 'group.download_n': 'Pobierz ({n})', 'group.download_zip_n': 'Pobierz foldery jako zip ({n})', 'group.download_zip_one': 'Pobierz folder jako zip', 'group.delete_n': 'Usuń ({n})', 'group.delete_n_confirm': { one: 'Usunąć {n} element? {names}', few: 'Usunąć {n} elementy? {names}', many: 'Usunąć {n} elementów? {names}', other: 'Usunąć {n} elementu? {names}', }, 'group.download_zip': { one: 'Pobierz jako zip ({n} plik)', few: 'Pobierz jako zip ({n} pliki)', many: 'Pobierz jako zip ({n} plików)', other: 'Pobierz jako zip ({n} pliku)', }, 'group.zip_empty': 'W tym folderze nie ma nic do pobrania.', 'group.zip_no_stream': 'Ta przeglądarka nie potrafi zapisywać pobieranych danych ' + 'wprost na dysk, więc {name} ({size}) trzeba najpierw zbudować w pamięci. Przy ' + 'dużym archiwum może się to nie udać. Kontynuować?', 'group.zip_too_large': '„{name}” ma {size}, a folder można pobrać jako zip tylko do {limit}. ' + 'Pobieraj po jednym podfolderze albo pliki pojedynczo.', 'group.rmdir': 'Usuń folder', 'group.rmdir_confirm': 'Usunąć folder „{name}”? Musi być pusty.', 'group.rmdir_not_empty': 'Ten folder nie jest pusty. Proszę najpierw usunąć jego ' + 'zawartość — nic tutaj nie kasuje plików, których nie widać.', 'group.desc_edit': 'Edytuj opis', 'group.desc_add': 'Dodaj opis', 'group.desc_save': 'Zapisz', 'group.desc_cancel': 'Anuluj', 'group.desc_placeholder': 'Do czego służy ta grupa — członkowie zobaczą to na swojej ' + 'stronie głównej.', 'group.join_code_title': 'Ten node musi Pana/Panią rozpoznać', 'group.join_code_hint': 'Proszę poprosić osobę zapraszającą o kod jednorazowy i ' + 'wpisać go tutaj. Od tej pory przeglądarka jest rozpoznawana i pytanie się nie ' + 'powtórzy.', 'group.join_code_btn': 'Dołącz', 'group.pass_title': 'Wprowadź swoją hasło-frazę', 'group.pass_hint': 'Ta przeglądarka nie odblokowała jeszcze Twoich kluczy. Wprowadź hasło-frazę raz, aby otworzyć tutaj swoje grupy.', 'group.pass_btn': 'Odblokuj', 'notif.purge': 'Wyczyść wszystko', 'notif.title': 'Powiadomienia', 'notif.empty': 'Brak powiadomień', 'notif.mark_all_read': 'Oznacz wszystkie jako przeczytane', // Sidebar 'sidebar.search': 'Szukaj plików', // Status // Search 'search.placeholder': 'Szukaj we wszystkich grupach...', 'search.no_results': 'Żaden plik nie pasuje do zapytania.', 'search.col_group': 'Grupa', 'search.result_count': { one: 'Znaleziono {n} plik', few: 'Znaleziono {n} pliki', many: 'Znaleziono {n} plików', other: 'Znaleziono {n} pliku', }, 'search.hint': 'Wpisz frazę, aby wyszukać we wszystkich grupach.', 'search.indexing': 'Indeksowanie {done} / {total} grup…', 'search.unreachable': { one: '{n} grupa nieosiągalna', few: '{n} grupy nieosiągalne', many: '{n} grup nieosiągalnych', other: '{n} grupy nieosiągalnej' }, 'search.n_sources': { one: '{n} źródło', few: '{n} źródła', many: '{n} źródeł', other: '{n} źródła' }, 'search.view_files': 'Pliki', 'search.view_videos': 'Filmy', 'search.view_music': 'Muzyka', 'search.view_photos': 'Zdjęcia', 'search.connecting': 'Łączenie z grupami…', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Node hostujący tę grupę jest dostępny', 'presence.offline': 'Brak osiągalnego node dla tej grupy', 'presence.unknown': 'Jeszcze nie sprawdzono', 'presence.indexing': 'Indeksowanie — {pct}%', 'indexdock.kind_scan': "Indeksowanie", 'indexdock.kind_rescan': "Ponowny odczyt", 'indexdock.kind_reconcile': "Uzupełnianie", 'indexdock.kind_watch': "Indeksowanie nowych plików", 'indexdock.waiting': "Oczekuje na indeksowanie", 'indexdock.done': "Indeksowanie zakończone", 'indexdock.listing': "Wyliczanie plików…", 'indexdock.percent': "{pct}%", 'indexdock.files': "Pliki: {done} / {total}", 'indexdock.next': "Następnie: {roots}", 'indexdock.next_count': "W kolejce: {count}", 'indexdock.open': "Otwórz ustawienia tej grupy", 'indexdock.hide': "Ukryj do następnego indeksowania", 'chat.load_older': 'Wczytaj {n} starszych wiadomości', 'chat.start_of_history': 'Początek rozmowy', 'chat.today': 'Dziś', 'chat.yesterday': 'Wczoraj', 'chat.unread': 'Nowe wiadomości', 'chat.jump_latest': 'Przejdź do najnowszych', 'chat.jump_new': 'Nowe wiadomości', 'chat.unreadable': 'Nie udało się odczytać tej wiadomości', 'chat.unreadable_signature': 'Niezweryfikowana wiadomość — podpis nie zgadza się z nadawcą', 'chat.unreadable_epoch': 'Napisana, zanim to urządzenie mogło czytać tę rozmowę', 'chat.unreadable_keys': 'Klucze czatu niedostępne — połącz się ponownie, aby to odczytać', 'chat.unreadable_decrypt': 'Nie udało się odszyfrować tej wiadomości', 'chat.unreadable_envelope': 'Ta wiadomość dotarła niekompletna', 'chat.unreadable_format': 'Ta wiadomość wymaga nowszej wersji MeshBay', 'chat.key_changed': 'To konto używa klucza, którego wcześniej nie widziałeś', 'chat.key_changed_hint': 'Węzeł twierdzi, że ta wiadomość pochodzi z tego konta, ale jego klucz urządzenia nie jest jednym z zaakceptowanych i nic go nie podpisało. Może to być nowe urządzenie dodane gdzie indziej — albo węzeł wskazujący niewłaściwą osobę.', 'chat.encrypted_needs_newer': 'Ta rozmowa jest zaszyfrowana i ten klient nie może jej odczytać — zaktualizuj MeshBay', 'chat.encrypted_cannot_send': 'Ta rozmowa jest zaszyfrowana i to urządzenie nie może jeszcze w niej pisać', 'group.leave': 'Opuść grupę', 'group.leave_confirm': 'Opuścić grupę „{name}”? Utraci Pan(i) dostęp do jej plików i czatu. Wysłane pliki pozostaną na node, a node zachowa przypiętą dla Pana/Pani tożsamość do czasu, aż jego operator ją usunie.', 'group.mute': 'Mute notifications', 'group.unmute': 'Unmute notifications', 'profile.title': 'Profil', 'usermenu.profile': 'Profil', // First-run setup wizard 'setup.welcome_title': 'Witamy w MeshBay', 'setup.welcome_message': 'Pana/Pani node przechowuje pliki — zaszyfrowane, na Pana/Pani maszynie. Uruchommy go i utwórzmy pierwszą grupę.', 'setup.node_detected': 'Wykryto lokalny node — działa.', 'setup.node_not_running': 'Node jest zainstalowany, ale nie działa.', 'setup.node_start': 'Uruchom node', 'setup.node_starting': 'Uruchamianie node…', 'setup.node_started': 'Node uruchomiony.', 'setup.node_not_installed': 'meshbay-node nie jest zainstalowany na tej maszynie.', 'setup.node_install_hint': 'Zainstaluj go za pomocą menedżera pakietów, a potem wróć tutaj.', 'setup.node_startup_hint': 'Gdy twój node już działa, odwiedź w dowolnym momencie „Node” na pasku bocznym, aby uruchamiał się automatycznie przy logowaniu lub działał jako usługa w tle.', 'setup.skip': 'Pomiń — utwórz grupę bez lokalnego node', 'setup.create_group': 'Utwórz pierwszą grupę', 'setup.dismiss': 'Pomiń konfigurację', // Group (supplementary) 'group.retry': 'Ponów', // Sidebar (supplementary) 'sidebar.node': 'Node', // Node admin 'node.title': 'Node', 'node.service_checking': 'Sprawdzanie usługi węzła…', 'node.service_not_installed': 'Nie zainstalowano jako usługi', 'node.service_state_active': 'Uruchomiona', 'node.service_state_inactive': 'Zatrzymana', 'node.service_state_failed': 'Niepowodzenie', 'node.service_state_activating': 'Uruchamianie…', 'node.service_state_deactivating': 'Zatrzymywanie…', 'node.service_state_unknown': 'Nieznany', 'node.service_start': 'Uruchom', 'node.service_starting': 'Uruchamianie…', 'node.service_stop': 'Zatrzymaj', 'node.service_stopping': 'Zatrzymywanie…', 'node.service_restart': 'Uruchom ponownie', 'node.service_restarting': 'Ponowne uruchamianie…', 'node.service_mode_hint': 'Działa jako usługa w tle — uruchamia się przy starcie systemu, przed zalogowaniem.', 'node.startup_mode_label': 'Uruchamiaj automatycznie:', 'node.startup_mode_off': 'Wyłączone (uruchamianie ręczne)', 'node.startup_mode_signin': 'Przy logowaniu', 'node.startup_mode_service': 'Jako usługa w tle (uruchamia się przy starcie systemu)', 'node.startup_mode_updating': 'Zmiana trybu — proszę sprawdzić, czy pojawiło się okno uprawnień administratora…', 'node.startup_mode_service_unavailable_hint': 'Tryb usługi w tle wymaga zainstalowanej wersji. Aby przetestować lokalnie, uruchom "meshbay-node service install" w PowerShell z uprawnieniami administratora.', 'node.not_operator': 'Nie udało się połączyć z Pana/Pani node. Upewnij się, że działa.', 'node.offline': 'Node jest niedostępny', 'node.retry': 'Ponów', 'node.pair_needed': 'Brak sparowanego operatora. Wprowadź kod parowania, aby włączyć operacje administracyjne (zaproszenia, usuwanie plików).', 'node.pair_code_placeholder': 'Kod parowania', 'node.pair_button': 'Sparuj tę przeglądarkę', 'node.pair_success': 'Parowanie zakończone sukcesem.', 'node.reload': 'Przeładuj konfigurację', 'node.reloaded': 'Konfiguracja przeładowana. Zmiany katalogów w istniejących grupach są teraz aktywne.', 'node.restart_needed': 'Po dodaniu: zainicjalizuj klucz grupy (meshbay-node gek-init --group ).', 'node.no_groups': 'Na tym node nie skonfigurowano żadnych grup.', 'node.stale': 'brak na hub', 'node.settings': 'Node settings', 'node.settings_edit_hint': 'Changes are applied immediately and saved to node.toml.', 'node.settings_save': 'Save', 'node.settings_saving': 'Saving…', 'node.settings_saved': 'Settings saved.', 'node.setting_invite_ttl': 'Invitation TTL', 'node.setting_pair_ttl': 'Pairing code TTL', 'node.setting_device_ttl': 'Device request TTL', 'node.setting_max_streams': 'Max concurrent streams', 'node.setting_max_downloads': 'Maks. równoczesnych pobierań', 'node.setting_max_uploads': 'Maks. równoczesnych wysyłek', 'node.setting_transcode': 'Transcode incompatible video', 'node.setting_max_upload': 'Największa pojedyncza wysyłka', 'node.setting_unit_gb': 'GB', 'node.setting_unit_hours': 'hours', 'node.setting_unit_minutes': 'min', 'node.setting_on': 'On', 'node.setting_off': 'Off', 'node.unavailable': 'niedostępny', 'node.files': { one: '{n} plik', few: '{n} pliki', many: '{n} plików', other: '{n} pliku', }, 'node.peers': { one: '{n} peer', few: '{n} peery', many: '{n} peerów', other: '{n} peera', }, 'node.roots': 'Katalogi', 'node.add_root': 'Dodaj katalog', 'node.remove_root': 'Usuń', 'node.root_no_signing_key': 'Brak klucza podpisu — najpierw sparuj to urządzenie z węzłem', 'node.root_no_route': 'Brak połączenia z węzłem — połącz się z nim albo użyj aplikacji na komputerze, który go hostuje', 'node.root_remove_last': 'Grupa wymaga co najmniej jednego katalogu', 'node.root_path_hint': 'Ścieżka widziana przez węzeł, na komputerze hostującym tę grupę.', 'node.root_path_placeholder': '/home/user/Media', 'node.root_path': 'Ścieżka', 'node.directory': 'Katalog', 'node.root_added': 'Katalog dodany.', 'node.root_remove_confirm': 'Usunąć „{name}" z tej grupy?', 'node.root_removed': 'Katalog usunięty. Zalecany restart w celu odświeżenia indeksu.', 'node.attach_group': 'Dodaj grupę', 'node.attach_pick': 'Grupa do hostowania', 'node.attach_dir': 'Katalog współdzielony', 'node.attach_upload_dir': 'Katalog przesyłania', 'node.attach_upload_label': 'Katalog przesyłania (do przesyłania plików i załączników czatu)', 'node.attached': 'Grupa dodana i wczytana. Uruchom meshbay-node gek-init --group {name}, jeśli jeszcze tego nie zrobiono.', 'node.detach_group': 'Usuń grupę', 'node.detach_confirm': 'Usunąć „{name}" z tego node?', 'node.detached': 'Grupa usunięta.', 'node.gek': 'Klucz grupy', 'node.no_gek': 'Brak klucza grupy', 'node.gek_init_hint': 'Nie ma jeszcze klucza grupy. Uruchom GEK init z wiersza poleceń, aby go skonfigurować.', 'node.gek_public_hint': 'Rotacja klucza nie jest dostępna dla grup publicznych.', 'node.gek_rotate': 'Zmień klucz grupy', 'node.gek_rotate_confirm': 'Zmienić klucz grupy? Połączeni członkowie otrzymają nowy klucz automatycznie. Wcześniej pobrane treści pozostaną bez zmian.', 'node.gek_rotated': 'Klucz grupy zmieniony.', 'node.roster': 'Rejestr', 'node.roster_load': 'Wczytaj rejestr', 'node.roster_empty': 'Nie przypięto jeszcze żadnych członków.', 'node.roster_user': 'Użytkownik', 'node.roster_role': 'Rola', 'node.roster_status': 'Status', 'node.roster_via': 'Przypięty przez', 'node.roster_invites': { one: '{n} oczekujące zaproszenie', few: '{n} oczekujące zaproszenia', many: '{n} oczekujących zaproszeń', other: '{n} oczekującego zaproszenia', }, 'node.unpin': 'Odepnij', 'node.unpin_confirm': 'Odpiąć „{name}"? Będzie musiał(a) ponownie sparować.', 'node.unpin_done': 'Tożsamość odpięta.', 'node.denylist': 'Lista blokad', 'node.denylist_load': 'Wczytaj listę blokad', 'node.denylist_empty': 'Lista blokad jest pusta.', 'node.denylist_count': { one: '{n} wpis', few: '{n} wpisy', many: '{n} wpisów', other: '{n} wpisu', }, 'node.denylist_remove': 'Usuń', 'node.denylist_clear_all': 'Wyczyść wszystko', 'node.denylist_clear_confirm': 'Usunąć „{subject}" z listy blokad?', 'node.denylist_cleared': 'Wpis listy blokad usunięty.', // Settings — node 'settings_node.detach_failed_continue': 'Nie udało się odłączyć grupy od node. Usunąć mimo to na hub?', 'settings_node.roots': 'Katalogi współdzielone', 'settings_node.scan_title': 'Skanowanie', 'settings_node.scan_hint': 'Jak często node ponownie sprawdza swoje katalogi w poszukiwaniu pominiętych zmian oraz jak długo czeka po zmianie pliku przed jego zindeksowaniem.', 'settings_node.search_listed_title': 'Wyszukiwanie', 'settings_node.search_listed_label': 'Pokazuj tę grupę w wyszukiwaniu', 'settings_node.search_listed_hint': 'Po wyłączeniu pliki tej grupy nie pojawiają się w globalnym wyszukiwaniu członków. Członkowie nadal widzą wszystko po otwarciu grupy: to tylko usuwa ją z globalnej listy i niczego przed nikim nie ukrywa.', 'settings_node.scan_reconcile_label': 'Interwał sprawdzania (minuty)', 'settings_node.scan_debounce_label': 'Oczekiwanie po zmianie (sekundy)', 'settings_node.scan_save': 'Zapisz', 'settings_node.scan_saving': 'Zapisywanie…', 'settings_node.scan_saved': 'Zapisano.', 'settings_node.tmdb_title': 'Metadane TMDB', 'settings_node.tmdb_hint': 'Pozwala aplikacji Wideo pokazywać plakaty, opisy i obsadę z TMDB. Wyłączone oznacza przeglądanie tylko z miniaturami, bez żadnego żądania do zewnętrznego serwisu.', 'settings_node.tmdb_enabled': 'Włączone', 'settings_node.tmdb_disabled': 'Wyłączone', 'settings_node.tmdb_token_label': 'Własny token API (opcjonalnie)', 'settings_node.tmdb_token_placeholder': 'Pozostaw puste, aby użyć domyślnego tokenu', 'settings_node.tmdb_token_customized': 'Ustawiono własny token.', 'settings_node.tmdb_token_default': 'Używany jest domyślny token.', 'settings_node.tmdb_save': 'Zapisz', 'settings_node.tmdb_language_label': 'Język', 'settings_node.tmdb_language_hint': 'Dotyczy wszystkich — jedna współdzielona pamięć podręczna, bez osobnego żądania dla każdego widza.', 'settings_node.video_root_title': 'Katalog główny Wideo', 'settings_node.video_root_hint': 'Który katalog (lub podkatalog) aplikacja Wideo traktuje jako punkt wejścia dla tej grupy. W Wideo nic się nie wyświetla i nie są wykonywane żadne zapytania do TMDB, dopóki nie zostanie wybrany.', 'settings_node.video_root_none': '— nie wybrano —', 'settings_node.musicbrainz_title': 'Metadane MusicBrainz', 'settings_node.musicbrainz_hint': 'Pozwala aplikacji Muzyka pokazywać okładki i kanoniczne nazwy z MusicBrainz, gdy utwór nie ma użytecznej wbudowanej okładki. Wyłączone oznacza przeglądanie tylko na podstawie tagów/nazwy pliku, bez żądań do strony trzeciej.', 'settings_node.musicbrainz_enabled': 'Włączone', 'settings_node.musicbrainz_disabled': 'Wyłączone', 'settings_node.video_root_save': 'Zapisz', 'settings_node.video_root_change_confirm': 'Zmiana katalogu głównego Wideo zastępuje to, co widzi każdy członek w karcie Wideo. Kontynuować?', 'settings_node.audio_root_title': 'Katalog główny Muzyki', 'settings_node.audio_root_hint': 'Który katalog (lub podkatalog) aplikacja Muzyka traktuje jako punkt wejścia dla tej grupy. W Muzyce nic się nie wyświetla i nie są odczytywane żadne tagi/okładki, dopóki nie zostanie wybrany.', 'settings_node.audio_root_none': '— nie wybrano —', 'settings_node.audio_root_save': 'Zapisz', 'settings_node.audio_root_change_confirm': 'Zmiana katalogu głównego Muzyki zastępuje to, co widzi każdy członek w karcie Muzyka. Kontynuować?', 'settings_node.photo_roots_title': 'Katalogi główne Zdjęć', 'settings_node.photo_roots_hint': 'Które katalogi aplikacja Zdjęcia traktuje jako punkty wejścia dla tej grupy — biblioteka zdjęć jest często rozproszona w wielu katalogach, więc można wybrać kilka. W Zdjęciach nic się nie wyświetla, dopóki nie zostanie dodany co najmniej jeden.', 'settings_node.photo_roots_none': '— nie wybrano —', 'settings_node.photo_roots_add_placeholder': 'Dodaj katalog…', 'settings_node.photo_roots_add': 'Dodaj', 'settings_node.photo_roots_remove': 'Usuń', 'settings_node.photo_roots_save': 'Zapisz', 'settings_node.shared_directories_title': 'Katalogi udostępnione', 'settings_node.shared_directories_hint': 'Foldery udostępnione tej grupie. Przełącz odczyt-zapis, aby zezwolić na przesyłanie, oznacz jako wymienny dla dysków zewnętrznych.', 'folder_tree.title_single': 'Wybierz folder', 'folder_tree.title_multi': 'Wybierz foldery', 'folder_tree.choose': 'Wybierz…', 'folder_tree.remove': 'Usuń', 'folder_tree.add': 'Dodaj folder…', 'folder_tree.confirm': 'Użyj', 'folder_tree.expand': 'Rozwiń', 'folder_tree.collapse': 'Zwiń', 'folder_tree.nothing_selected': 'Nic nie wybrano', 'folder_tree.empty': 'Ta grupa nie ma jeszcze katalogów współdzielonych.', 'folder_tree.writable_only': 'Tutaj można wybrać tylko katalogi do odczytu i zapisu — zapisywane są w nim pliki.', 'folder_tree.no_writable_root': 'Ta grupa nie ma katalogu do zapisu. Najpierw włącz odczyt i zapis w Katalogach współdzielonych.', 'folder_tree.read_only_blocked': 'Tylko do odczytu — nie można zapisywać', 'settings_app.save': 'Zapisz', 'settings_app.saving': 'Zapisywanie…', 'settings_app.disabled_hint': 'Włącz tę aplikację, aby ją skonfigurować.', 'settings_app.video_directories_label': 'Foldery wideo', 'settings_app.video_directories_hint': 'Gdzie znajdują się filmy i seriale tej grupy. Nic poza nimi nie pojawi się w zakładce Wideo.', 'settings_app.music_directories_label': 'Foldery muzyki', 'settings_app.music_directories_hint': 'Gdzie znajdują się albumy tej grupy. Nic poza nimi nie pojawi się w zakładce Muzyka.', 'settings_app.photo_directories_label': 'Foldery zdjęć', 'settings_app.photo_directories_hint': 'Gdzie znajdują się albumy tej grupy. Nic poza nimi nie pojawi się w zakładce Zdjęcia.', 'settings_app.chat_directory_label': 'Folder załączników', 'settings_app.chat_directory_hint': 'Gdzie zapisywane są pliki wysłane na czacie. Musi to być katalog do odczytu i zapisu.', 'settings_app.chat_no_writable_root': 'Ta grupa nie ma katalogu do zapisu, więc załączniki są wyłączone.', 'settings_app.chat_link_preview_label': 'Podglądy linków', 'settings_app.chat_link_preview_hint': 'Gdy członek wysyła link, węzeł pobiera tytuł i obraz strony. To żądanie z Twojego komputera do witryny wybranej przez kogoś innego.', 'settings_app.chat_encrypted_always': 'Czat w tej grupie jest zawsze szyfrowany. Nie da się tego wyłączyć.', 'settings_app.chat_rotate_epoch': 'Zmień klucz czatu', 'settings_app.chat_rotate_epoch_hint': 'Członkowie nadal czytają całą historię. Osoba usunięta z grupy nie odczyta tego, co zostanie napisane od teraz. Usunięcie członka lub urządzenia robi to już samo.', 'settings_app.tmdb_token_prompt': 'Zarejestruj się w TMDB, aby wygenerować własny klucz API.', 'settings_app.tmdb_token_link': 'Pobierz klucz', 'settings_node.roots_offline_hint': 'Brak połączenia z węzłem — zmiany przechodzą przez węzeł lokalny i zaczną działać po jego następnym przeładowaniu.', 'settings_node.directories_title': 'Katalogi aplikacji', 'settings_node.directories_hint': 'Katalogi udostępnione oraz to, który z nich aplikacje Wideo, Muzyka i Zdjęcia traktują jako własny punkt (punkty) wejścia.', // Create-group wizard 'wizard.title': 'Utwórz grupę', 'wizard.detecting': 'Wykrywanie lokalnego node…', 'wizard.node_not_found': 'Nie wykryto lokalnego node. Upewnij się, że meshbay-node działa.', 'wizard.node_offline_warning': 'Node nie działa. Grupa zostanie utworzona wyłącznie na hub. Node można podłączyć później na stronie Node.', 'wizard.retry': 'Ponów', 'wizard.wrong_account': 'Node działa, ale skonfigurowana nazwa użytkownika nie odpowiada Pana/Pani kontu. Proszę sprawdzić hub.username w pliku node.toml.', 'wizard.skip_node': 'Kontynuuj bez node', 'wizard.directories': 'Katalogi współdzielone', 'wizard.directories_hint': 'Wybierz katalogi, które ta grupa będzie współdzielić. Wymagany jest co najmniej jeden.', 'wizard.add_directory': 'Dodaj katalog', 'wizard.remove': 'Usuń', 'wizard.set_upload': 'Ustaw jako cel przesyłania', 'wizard.upload_target': 'cel przesyłania', 'wizard.create_and_setup': 'Utwórz i skonfiguruj', 'wizard.create_hub_only': 'Utwórz tylko na hub', 'wizard.setting_up': 'Konfigurowanie grupy…', 'wizard.step_create_hub': 'Tworzenie grupy na hub', 'wizard.step_attach': 'Podłączanie do node', 'wizard.step_apps': 'Wybieranie aplikacji', 'wizard.step_add_roots': 'Dodawanie katalogów', 'wizard.step_gek': 'Inicjalizacja klucza szyfrowania', 'wizard.step_pair': 'Konfigurowanie parowania', 'wizard.step_index': 'Indeksowanie plików', 'wizard.indexing_progress': 'Indeksowanie… {pct}%', 'wizard.indexing_current_dir': 'Skanowanie: {dir}', 'wizard.done_title': 'Grupa utworzona', 'wizard.done_message': 'Grupa jest gotowa — Node ją hostuje, a szyfrowanie jest skonfigurowane. Teraz zaproś członków z karty Ustawienia.', 'wizard.go_to_group': 'Przejdź do grupy', 'wizard.finish_later': 'Dokończ konfigurację później', 'node.stun_servers': 'STUN Servers', 'node.stun_hint': 'Servers used for WebRTC NAT traversal (ICE candidate gathering).', 'node.stun_add': 'Add', 'node.stun_add_placeholder': 'stun:host:port', 'node.stun_remove': 'Remove', 'node.stun_move_up': 'Move up', 'node.stun_move_down': 'Move down', 'node.stun_save': 'Save', 'node.stun_saving': 'Saving…', 'node.stun_saved': 'STUN servers saved.', 'node.stun_reset': 'Reset to defaults', 'node.stun_empty': 'No STUN servers configured. NAT traversal will not work.', 'node.stun_duplicate': 'This server is already in the list.', 'node.stun_invalid': 'STUN URL must start with stun:', 'node.ice_interfaces': 'ICE Interfaces', 'node.ice_auto_hint': 'Auto mode — virtual and VPN interfaces (Tailscale, Docker, libvirt, etc.) are excluded automatically.', 'node.ice_manual_hint': 'Manual mode — only the listed interfaces are used for ICE candidate gathering.', 'node.ice_add': 'Add', 'node.ice_add_placeholder': 'e.g. eth0, wlp0s20f3', 'node.ice_remove': 'Remove', 'node.ice_save': 'Save', 'node.ice_saving': 'Saving…', 'node.ice_saved': 'ICE interfaces saved.', 'node.ice_reset_auto': 'Switch to auto', 'node.ice_duplicate': 'This interface is already in the list.', 'node.overview': 'Overview', 'node.overview_version': 'Version', 'node.overview_node_id': 'Node ID', 'node.overview_node_key': 'Klucz node', 'node.overview_node_key_copy': 'Kopiuj', 'node.overview_node_key_copied': 'Skopiowano', 'node.overview_quic_port': 'QUIC port', 'node.overview_hub': 'Hub', 'node.node_roster': 'Node roster', 'node.node_roster_hint': 'Every identity this node recognises, across all groups.', 'node.roster_scope': 'Scope', 'node.roster_scope_node': 'node-wide', 'node.peers_title': 'Connected peers', 'node.peers_empty': 'No peers connected.', 'node.peers_user': 'User', 'node.peers_ip': 'IP', 'node.peers_group': 'Group', 'node.peers_state': 'State', 'node.audit_title': 'Audit log', 'node.audit_all_events': 'All events', 'node.audit_empty': 'No audit entries.', 'node.audit_time': 'Time', 'node.audit_event': 'Event', 'node.audit_user': 'User', 'node.audit_ip': 'IP', 'node.audit_group': 'Group', 'node.audit_detail': 'Detail', 'node.maintenance': 'Maintenance', 'node.maintenance_cache': 'Index cache: {n} path(s) remembered.', 'node.maintenance_prune': 'Prune stale entries', 'node.maintenance_pruned': 'Pruned {n} stale cache entries.', 'node.loading': 'Loading…', 'node.audit_export': 'Export CSV', 'node.audit_exporting': 'Exporting…', 'node.audit_prev': 'Previous', 'node.audit_next': 'Next', 'node.audit_page': 'Page {n}', 'node.audit_exported': 'Exported {n} entries.', 'node.unlink_title': 'Unlink from hub', 'node.unlink_hint': 'Stops the hub from brokering connections to this node and listing it for group members. Your groups, keys, roster and files are untouched — the node keeps serving anyone who reaches it directly. Re-link any time from the group wizard or your profile.', 'node.unlink_button': 'Unlink this node', 'node.unlink_confirm': 'Unlink this node from the hub? The hub will stop routing members to it. Group data on disk is not affected.', 'node.unlink_done': 'Node unlinked from the hub. It may take a moment for the hub connection to drop.', 'node.tab_overview': 'Overview', 'node.tab_groups': 'Groups', 'node.tab_roster': 'Roster', 'node.tab_peers': 'Peers', 'node.tab_audit': 'Audit', 'node.tab_settings': 'Settings', 'node.root_rw': 'odczyt-zapis', 'node.root_ro': 'tylko odczyt', 'node.removable': 'wymienny', // In-page confirm/alert (ask.js) 'dialog.ok': 'OK', 'dialog.cancel': 'Anuluj', };