diff options
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js | 419 |
1 files changed, 419 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js new file mode 100644 index 0000000..d77a160 --- /dev/null +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/pl.js @@ -0,0 +1,419 @@ +/** + * 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', + + // Sidebar + 'sidebar.my_groups': 'Moje grupy', + 'sidebar.no_groups': 'Nie ma jeszcze żadnych grup', + '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', + + // 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.success_title': 'Konto zostało założone', + 'register.success_msg': 'Można się już zalogować przy użyciu swoich danych.', + 'register.go_login': 'Przejdź do logowania', + 'register.err_mismatch': 'Hasła nie są zgodne', + '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.', + + // 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.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', + + // Group page + 'group.default_name': 'Grupa', + 'group.tab_files': 'Pliki', + 'group.tab_chat': 'Czat', + 'group.tab_members': 'Członkowie', + 'group.filter': 'Filtruj pliki...', + '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.mkdir': 'Nowy folder', + 'group.mkdir_prompt': 'Nazwa nowego folderu:', + '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.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', + + // Video player + 'video.loading': 'Wczytywanie {name}...', + 'video.buffering': 'Buforowanie...', + '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.', + 'group.upload_indexing': 'indeksowanie…', + 'video.err_transport': 'Transport nie jest połączony', + 'video.err_mse': 'Kodek nieobsługiwany przy odtwarzaniu strumieniowym: {codec}', + + // 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', + 'settings.dl_choose': 'Wybierz folder', + 'settings.dl_change': 'Zmień', + 'settings.dl_forget': 'Zapomnij', + 'settings.dl_path_note': 'Stronie internetowej nie da się podać ścieżki, więc nie ma ' + + 'tu czego wpisywać: to przeglądarka udziela dostępu do wskazanego folderu, a ' + + 'MeshBay zapisuje wyłącznie w jego wnętrzu. Raz na sesję może pojawić się prośba ' + + 'o potwierdzenie.', + 'settings.dl_unsupported': 'Ta przeglądarka nie potrafi zapisywać w dowolnie ' + + 'wybranym folderze (brak File System Access API), więc pobrane pliki trafiają do ' + + 'jej własnego folderu pobierania. Chrome i Edge pozwalają wybrać folder.', + 'settings.profile': 'Profil', + 'settings.username': 'Nazwa użytkownika', + '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.danger': 'Usunięcie konta', + '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', + '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. Klucz ten znajduje ' + + 'się w panelu administracyjnym node.', + '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 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_details': 'Szczegóły', + 'admin.btn_delete': 'Usuń', + 'admin.delete_confirm': 'Usunąć konto „{user}”? 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.visibility': 'Widoczność', + 'create_group.private': 'Prywatna', + 'create_group.private_desc': 'Tylko zaproszeni członkowie widzą pliki i mają do nich dostęp', + 'create_group.public': 'Publiczna', + 'create_group.public_desc': 'Każdy może odnaleźć i przeglądać tę grupę', + 'create_group.join_policy': 'Zasady dołączania', + 'create_group.invite': 'Tylko z zaproszeniem', + 'create_group.invite_desc': 'Członków musi zaprosić administrator', + 'create_group.open': 'Otwarta (każdy może dołączyć)', + 'create_group.open_desc': 'Każdy może 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} — proszę ' + + 'przekazać go tak, jak zwykle się Państwo kontaktują. Działa jednorazowo i nigdy ' + + 'nie przechodzi przez hub.', + 'members.invite_code_hint': 'Osoba zaproszona wpisze go, otwierając tę grupę po raz ' + + 'pierwszy. Nie trzeba być wtedy dostępnym.', + 'transfers.title': 'Transfery', + 'transfers.clear': 'Wyczyść zakończone', + 'transfers.cancel': 'Anuluj', + 'transfers.open': 'Otwórz', + 'transfers.done': 'Zakończony', + 'transfers.cancelled': 'Anulowany', + '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.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.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', + + '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.title': 'Wyszukiwanie plików', + 'search.placeholder': 'Szukaj we wszystkich grupach...', + 'search.no_results': 'Żaden plik nie pasuje do zapytania.', + 'search.synced': 'zsynchronizowano {ago}', + 'search.cache_note': 'Wyszukiwanie opiera się na stanie każdej grupy z chwili jej ' + + 'ostatniego otwarcia. Otwarcie grupy odświeża tutaj jej pliki.', + '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': 'Przeszukuje nazwy plików we wszystkich zbuforowanych indeksach grup.', +}; |