Files
MarekWoandClaude Opus 5.5 6451cef2ea feat: client support for MeshCore firmware 1.18
Firmware 1.18 gives contact flag 0x10 a security meaning (the contact may
run any companion CLI command over the mesh, unseen by the app), forwards a
refused remote command as a txt_type 3 DM, and serves the companion CLI over
the app link (CMD_RUN_CLI_COMMAND, fw_ver_code 14).

- Remote CLI permission is visible: red badge on the contact card and in
  the DM contact-info window. Console change_flags shows flags in words,
  accepts 0x.., reports old/new, warns on grant, restores the in-memory
  record when the device refuses, and invalidates the contacts cache.
- txt_type 3 DMs are stored with their type, rendered as "Remote CLI
  command - not executed" with the command verbatim, logged at WARNING,
  and the notification says so.
- New console command `cli <command>`, gated on fw_ver_code >= 14 and on
  the library having run_cli_command (2.3.9+, requirements untouched).
  poweroff/shutdown refused; reboot and `set name`/`set path.hash.mode`
  routed through the existing commands so caches follow.
- Re-adding a contact the device holds (a rename) starts from the device
  record, so its flags and path survive instead of being reset to zero.
- Fix: approving a pending contact raised KeyError('out_path') for every
  record not produced by a NEW_CONTACT event (advert-injected entries and
  the DB fallback). Records are now completed before add_contact(), and a
  device ERROR is reported instead of a false success.
- set_channel refuses a named slot with an all-zero key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:06:16 +02:00

1588 lines
99 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"analyzer.add": "Dodaj analizator",
"analyzer.choose": "Wybierz analizator",
"analyzer.clear_default_title": "Wyczyść domyślny",
"analyzer.confirm.delete": "Usunąć analizator \"{name}\"?",
"analyzer.edit": "Edytuj analizator",
"analyzer.empty": "Brak skonfigurowanych analizatorów. Kliknij \"Dodaj analizator\", aby dodać.",
"analyzer.load_failed": "Nie udało się wczytać analizatorów",
"analyzer.name_ph": "np. Mój analizator",
"analyzer.name_required": "Nazwa jest wymagana",
"analyzer.set_default_title": "Ustaw jako domyślny",
"analyzer.toast.default_error": "Błąd sieci przy zmianie domyślnego analizatora",
"analyzer.toast.default_failed": "Nie udało się zmienić domyślnego analizatora",
"analyzer.toast.delete_error": "Błąd sieci przy usuwaniu analizatora",
"analyzer.toast.delete_failed": "Nie udało się usunąć analizatora",
"analyzer.toast.none_configured": "Brak skonfigurowanego analizatora. Dodaj go w Ustawienia → Analyzer.",
"analyzer.toast.save_error": "Błąd sieci przy zapisie analizatora",
"analyzer.toast.save_failed": "Nie udało się zapisać analizatora",
"analyzer.toast.update_error": "Błąd sieci przy aktualizacji analizatora",
"analyzer.toast.update_failed": "Nie udało się zaktualizować analizatora",
"analyzer.url": "Szablon URL",
"analyzer.url_hint": "Musi zawierać <code>{packetHash}</code>.",
"analyzer.url_invalid": "URL musi zaczynać się od http:// lub https://",
"analyzer.url_placeholder_missing": "URL musi zawierać symbol zastępczy {placeholder}",
"backup.auto_off": "Automatyczna kopia wyłączona",
"backup.auto_on": "Automatycznie: codziennie o {time}, przechowywanie {days} dni",
"backup.create": "Utwórz kopię",
"backup.created": "Utworzono kopię: {filename}",
"backup.creating": "Tworzenie...",
"backup.current_size": "Bieżący rozmiar: …",
"backup.download_title": "Pobierz",
"backup.empty": "Brak kopii zapasowych",
"backup.error": "Kopia zapasowa nie powiodła się",
"backup.failed": "Kopia zapasowa nie powiodła się: {error}",
"backup.freed": "zwolniono {size}",
"backup.freed_none": "brak miejsca do odzyskania",
"backup.load_failed": "Nie udało się wczytać kopii zapasowych",
"backup.optimize_error": "Optymalizacja nie powiodła się",
"backup.optimize_failed": "Optymalizacja nie powiodła się: {error}",
"backup.optimize_hint": "Odzyskaj miejsce zwolnione przez retencję wiadomości. Uruchamia SQLite <code>VACUUM</code>; odczyty działają, ale zapisy są wstrzymane na kilka sekund.",
"backup.optimize_now": "Optymalizuj teraz",
"backup.optimize_stuck": "Optymalizacja trwa już ponad 10 minut — sprawdź logi kontenera",
"backup.optimize_title": "Optymalizuj bazę danych",
"backup.optimized": "Zoptymalizowano: {freed} w {seconds}s",
"backup.optimizing": "Optymalizowanie…",
"backup.size": "Bieżący rozmiar: {size}",
"backup.size_unknown": "Rozmiar: nieznany",
"backup.title": "Kopia zapasowa bazy danych",
"backup.vacuum_running": "Trwa VACUUM…",
"backup.vacuum_running_for": "Trwa VACUUM… ({seconds}s)",
"channels.add_new": "Dodaj nowy kanał",
"channels.confirm.remove": "Usunąć kanał \"{name}\"?",
"channels.create_btn": "Utwórz i wygeneruj klucz",
"channels.create_title": "Utwórz nowy kanał",
"channels.dropdown.none": "Brak kanałów",
"channels.fav_title": "Dodaj kanał do ulubionych",
"channels.join_btn": "Dołącz do kanału",
"channels.join_existing": "Dołącz do istniejącego",
"channels.join_title": "Dołącz do istniejącego kanału",
"channels.key": "Klucz kanału:",
"channels.key_label": "Klucz kanału (32 znaki hex)",
"channels.key_optional": "- opcjonalny dla kanałów zaczynających się od #",
"channels.key_ph": "485af7e164459d280d8818d9c99fb30d (zostaw puste dla kanałów #)",
"channels.list.empty": "Brak skonfigurowanych kanałów",
"channels.list.load_error": "Błąd wczytywania kanałów",
"channels.list.load_failed": "Nie udało się wczytać kanałów",
"channels.name": "Nazwa kanału",
"channels.name_hint": "Tylko litery, cyfry, _ i -",
"channels.name_ph": "np. Malopolska",
"channels.notify.all": "Każda wiadomość",
"channels.notify.manage": "Zarządzaj profilami…",
"channels.notify.no_profiles": "Nie zdefiniowano jeszcze żadnych profili",
"channels.notify.off": "Wyłączone",
"channels.notify.profiles_header": "Tylko wiadomości pasujące do profilu",
"channels.notify.title_all": "Powiadomienia: każda wiadomość — kliknij, aby zmienić",
"channels.notify.title_off": "Powiadomienia: wyłączone — kliknij, aby zmienić",
"channels.notify.title_profile": "Powiadomienia: profil {name} — kliknij, aby zmienić",
"channels.qr_alt": "Kod QR",
"channels.region_hint": "Tylko repeatery zezwalające na wybrany region będą przekazywać wiadomości z tego kanału.",
"channels.region_scope_for": "Ustaw zakres regionu dla",
"channels.scan_qr": "Zeskanuj kod QR",
"channels.scope_set_title": "Ustaw zasięg regionu",
"channels.scope_title": "Region: {name} — kliknij, aby zmienić",
"channels.share_hint": "Udostępnij ten kod QR lub klucz innym, aby mogli dołączyć do tego kanału.",
"channels.share_name": "Kanał: {name}",
"channels.share_title": "Udostępnij kanał",
"channels.toast.already_joined": "Już dołączono do kanału \"{name}\".",
"channels.toast.copy_failed": "Nie udało się skopiować do schowka",
"channels.toast.create_error": "Nie udało się utworzyć kanału",
"channels.toast.create_failed": "Nie udało się utworzyć kanału: {error}",
"channels.toast.created": "Kanał \"{name}\" utworzony!",
"channels.toast.exists": "Kanał \"{name}\" już istnieje.",
"channels.toast.favorite_failed": "Nie udało się zmienić ulubionych",
"channels.toast.join_error": "Nie udało się dołączyć do kanału",
"channels.toast.join_failed": "Nie udało się dołączyć do kanału: {error}",
"channels.toast.joined": "Dołączono do kanału \"{name}\"!",
"channels.toast.key_copied": "Klucz kanału skopiowany do schowka!",
"channels.toast.key_invalid": "Nieprawidłowy format klucza. Wymagane 32 znaki szesnastkowe.",
"channels.toast.key_required": "Klucz kanału jest wymagany dla kanałów nierozpoczynających się od #",
"channels.toast.notify_failed": "Nie udało się zmienić powiadomień",
"channels.toast.qr_error": "Nie udało się wygenerować kodu QR",
"channels.toast.qr_failed": "Nie udało się wygenerować kodu QR: {error}",
"channels.toast.qr_soon": "Skanowanie kodu QR będzie dostępne wkrótce! Na razie wprowadź dane kanału ręcznie.",
"channels.toast.remove_error": "Nie udało się usunąć kanału",
"channels.toast.remove_failed": "Nie udało się usunąć kanału: {error}",
"channels.toast.removed": "Kanał \"{name}\" usunięty",
"channels.toast.switched": "Przełączono na kanał: {name}",
"channels.unfav_title": "Usuń kanał z ulubionych",
"channels.your": "Twoje kanały",
"chat.channels": "Kanały",
"chat.confirm.block": "Zablokować {name}? Wiadomości tego kontaktu będą ukryte w czacie.",
"chat.confirm.mark_all_read": "Oznaczyć wszystkie wiadomości jako przeczytane?\n\nKanały z nieprzeczytanymi:\n{channels}",
"chat.confirm.stale_resend": "Ta wiadomość została wysłana {age}. Repeatery pamiętają tylko niedawne pakiety, więc tym razem nic jej nie wygasi — wszyscy na kanale zobaczą ją ponownie jako nową wiadomość. Wysłać mimo to?",
"chat.copy_route_title": "Dotknij, aby skopiować trasę",
"chat.edit_title": "Edytuj wiadomość",
"chat.emoji_title": "Wstaw emoji",
"chat.empty.no_messages": "Brak wiadomości",
"chat.empty.no_messages_hint": "Wyślij wiadomość, aby zacząć!",
"chat.error.load_retry": "Ponowna próba nastąpi automatycznie",
"chat.error.load_title": "Nie można wczytać wiadomości",
"chat.fab.hide": "Ukryj przyciski",
"chat.fab.search_title": "Szukaj w wiadomościach",
"chat.fab.show": "Pokaż przyciski",
"chat.filter.clear_title": "Wyczyść",
"chat.filter.fab_title": "Filtruj wiadomości",
"chat.filter.me_title": "Filtruj moje wiadomości",
"chat.filter.no_matches": "Brak wiadomości pasujących do „{query}”",
"chat.filter.ph": "Filtruj wiadomości...",
"chat.image_alt": "Obraz",
"chat.image_preview": "Podgląd obrazu",
"chat.image_preview_alt": "Podgląd",
"chat.input_ph": "Napisz wiadomość...",
"chat.loading_messages": "Wczytywanie wiadomości...",
"chat.mentions.none": "Nie znaleziono kontaktów",
"chat.msg.analyzer_title": "Pokaż w analizatorze",
"chat.msg.block_title": "Zablokuj {name}",
"chat.msg.echo_title": {
"one": "Usłyszane przez {count} repeater: {paths}",
"few": "Usłyszane przez {count} repeatery: {paths}",
"many": "Usłyszane przez {count} repeaterów: {paths}",
"other": "Usłyszane przez {count} repeatera: {paths}"
},
"chat.msg.ignore_title": "Ignoruj {name}",
"chat.msg.map_title": "Pokaż na mapie",
"chat.msg.quote_title": "Cytuj",
"chat.msg.raw_resend_title": "Wyślij ponownie (rozgłoś ten sam pakiet, aby odebrały go repeatery, które go nie usłyszały)",
"chat.msg.reply_title": "Odpowiedz",
"chat.region_none": "Region --",
"chat.region_set_title": "Kliknij, aby ustawić region dla tego kanału",
"chat.region_title": "Kliknij, aby zmienić region dla tego kanału",
"chat.route": "Trasa: {route}",
"chat.route_analyzer_title": "Pokaż tę trasę na mapie Analizatora ścieżek",
"chat.route_delivered": "odebrana",
"chat.route_delivered_title": "Kopia, którą Twoje urządzenie odebrało i odkodowało. Pozostałe kopie dotarły później i zostały odrzucone jako duplikaty",
"chat.route_direct": "Bezpośrednio",
"chat.route_hash_bytes": {
"one": "{count} bajt",
"few": "{count} bajty",
"many": "{count} bajtów",
"other": "{count} bajtu"
},
"chat.route_hash_bytes_short": "{count}B",
"chat.route_hash_title": "Rozmiar hasha na hop w trasie. Dotknij, aby zobaczyć wszystkie trasy, którymi dotarła ta wiadomość",
"chat.route_hops": "Hopy: {count}",
"chat.route_multi": "Trasa ({count}): {route}",
"chat.route_region": "Region: {name}",
"chat.scroll_bottom_title": "Przewiń na dół",
"chat.title": "Czat",
"chat.toast.load_error": "Błąd wczytywania wiadomości: {error}",
"chat.toast.load_failed": "Nie udało się wczytać wiadomości",
"chat.toast.load_timeout": "Przekroczono czas wczytywania wiadomości — ponawiam...",
"chat.toast.refresh_failed": "Odświeżanie nie powiodło się",
"chat.toast.refreshed": "Wiadomości odświeżone",
"chat.toast.resend_failed": "Ponowne wysłanie nie powiodło się: {error}",
"chat.toast.resend_network_error": "Błąd sieci przy ponownym wysłaniu: {error}",
"chat.toast.resent": "Wysłano ponownie ({bytes} B) — czekam na echa…",
"chat.toast.send_error": "Nie udało się wysłać wiadomości",
"chat.toast.send_failed": "Nie udało się wysłać: {error}",
"chat.toast.sent": "Wiadomość wysłana",
"chat.unnamed_channel": "Kanał {index}",
"chat.unread_divider": "Nowe wiadomości",
"chat.updated": "Aktualizacja: {time}",
"common.add": "Dodaj",
"common.apply": "Zastosuj",
"common.back": "Wstecz",
"common.cancel": "Anuluj",
"common.cannot_undo": "Tej operacji nie można cofnąć.",
"common.close": "Zamknij",
"common.connected": "Połączono",
"common.connecting": "Łączenie...",
"common.copied": "Skopiowano!",
"common.copy": "Kopiuj",
"common.copy_failed": "Kopiowanie nie powiodło się",
"common.copy_route": "Kopiuj trasę",
"common.days_ago": {
"one": "{count} dzień temu",
"few": "{count} dni temu",
"many": "{count} dni temu",
"other": "{count} dnia temu"
},
"common.days_ago_long": {
"one": "{count} dzień temu",
"few": "{count} dni temu",
"many": "{count} dni temu",
"other": "{count} dnia temu"
},
"common.delete": "Usuń",
"common.deleting": "Usuwanie...",
"common.disabled": "Wyłączone",
"common.disconnected": "Rozłączono",
"common.edit": "Edytuj",
"common.enabled": "Włączone",
"common.error.not_json": "Odpowiedziała nie aplikacja, tylko coś przed nią (HTTP {status}). Odśwież stronę, a jeśli to się powtarza — sprawdź połączenie.",
"common.error.not_json_auth": "Sesja wygasła — zamiast aplikacji odpowiedziała strona logowania przed nią (HTTP {status}). Odśwież stronę i zaloguj się ponownie.",
"common.failed_with": "Niepowodzenie: {error}",
"common.hours_ago": "{count} godz. temu",
"common.hours_ago_long": {
"one": "{count} godzinę temu",
"few": "{count} godziny temu",
"many": "{count} godzin temu",
"other": "{count} godziny temu"
},
"common.just_now": "przed chwilą",
"common.load_failed": "Nie udało się wczytać",
"common.loading": "Ładowanie...",
"common.minutes_ago": "{count} min temu",
"common.minutes_ago_long": {
"one": "{count} minutę temu",
"few": "{count} minuty temu",
"many": "{count} minut temu",
"other": "{count} minuty temu"
},
"common.months_ago": {
"one": "{count} miesiąc temu",
"few": "{count} miesiące temu",
"many": "{count} miesięcy temu",
"other": "{count} miesiąca temu"
},
"common.move_down": "Przesuń w dół",
"common.move_up": "Przesuń w górę",
"common.name": "Nazwa",
"common.network_error": "Błąd sieci",
"common.network_error_detail": "Błąd sieci: {error}",
"common.never": "Nigdy",
"common.no": "Nie",
"common.refresh": "Odśwież",
"common.remove": "Usuń",
"common.save": "Zapisz",
"common.save_failed": "Zapis nie powiódł się",
"common.saving": "Zapisywanie...",
"common.settings": "Ustawienia",
"common.share": "Udostępnij",
"common.try_again": "Spróbuj ponownie",
"common.unknown": "Nieznany",
"common.unknown_error": "Nieznany błąd",
"common.warning": "Uwaga:",
"common.years_ago": {
"one": "{count} rok temu",
"few": "{count} lata temu",
"many": "{count} lat temu",
"other": "{count} roku temu"
},
"common.yes": "Tak",
"common.yesterday": "Wczoraj",
"console.clear_title": "Wyczyść zapis konsoli",
"console.connect_failed": "Nie udało się połączyć: {error}",
"console.error_prefix": "Błąd: {error}",
"console.help_hint": "Wpisz 'help', aby zobaczyć dostępne polecenia.",
"console.history_empty": "Brak poleceń w historii",
"console.history_title": "Historia poleceń",
"console.input_ph": "Wpisz polecenie...",
"console.no_output": "(brak wyniku)",
"console.scroll_bottom_aria": "Przewiń do najnowszych",
"console.scroll_bottom_title": "Przewiń do najnowszych",
"console.title": "Konsola",
"contacts.active_recent": "Aktywny (advert odebrany niedawno)",
"contacts.add.adding": "Dodawanie kontaktu...",
"contacts.add.failed": "Nie udało się dodać kontaktu.",
"contacts.add.key": "Klucz:",
"contacts.add.key_count": "{n} / 64 znaki",
"contacts.add.name": "Nazwa:",
"contacts.add.name_ph": "Nazwa kontaktu",
"contacts.add.preview": "Podgląd:",
"contacts.add.pubkey": "Klucz publiczny (64 znaki hex):",
"contacts.add.pubkey_ph": "np. a1b2c3d4...",
"contacts.add.qr_invalid_uri": "Kod QR nie zawiera prawidłowego URI meshcore://.",
"contacts.add.qr_label": "Albo wgraj obraz z kodem QR:",
"contacts.add.scanned": "Zeskanowano:",
"contacts.add.start_camera": "Włącz kamerę",
"contacts.add.stop_camera": "Wyłącz kamerę",
"contacts.add.success": "Kontakt dodany pomyślnie!",
"contacts.add.tab_manual": "Ręcznie",
"contacts.add.title": "Dodaj kontakt",
"contacts.add.type": "Typ kontaktu:",
"contacts.add.type_short": "Typ:",
"contacts.add.uri_hint": "Wklej URI meshcore:// z aplikacji mobilnej MeshCore",
"contacts.add.uri_label": "MeshCore URI:",
"contacts.add.uri_ph": "meshcore://contact/add?name=...&public_key=...&type=...",
"contacts.blocked_by_name": "Zablokowany po nazwie",
"contacts.btn.approve": "Zatwierdź",
"contacts.btn.approve_all": "Zatwierdź wszystkie",
"contacts.btn.block": "Zablokuj",
"contacts.btn.ignore": "Ignoruj",
"contacts.btn.ignore_all": "Ignoruj wszystkie",
"contacts.btn.protect": "Chroń",
"contacts.btn.protected": "Chroniony",
"contacts.btn.to_cache": "Do pamięci",
"contacts.btn.to_cache_title": "Usuń z urządzenia, zachowaj w pamięci",
"contacts.btn.to_device": "Na urządzenie",
"contacts.btn.to_device_title": "Dodaj ten kontakt do urządzenia",
"contacts.btn.unblock": "Odblokuj",
"contacts.btn.unignore": "Przestań ignorować",
"contacts.cache_badge": "Pamięć",
"contacts.cache_badge_title": "Brak na urządzeniu — typ nieznany",
"contacts.card.add_desc": "Dodaj z URI, kodu QR lub ręcznie",
"contacts.card.existing_desc": "Zarządzaj wszystkimi zapisanymi kontaktami",
"contacts.card.pending_desc": "Kontakty oczekujące na ręczne zatwierdzenie",
"contacts.cleanup.auto_enabled": "Włączone (codziennie o {time} {tz})",
"contacts.cleanup.completed": "Czyszczenie zakończone: usunięto {count}",
"contacts.cleanup.completed_failed": ", nieudanych: {count}",
"contacts.cleanup.confirm": "Usunąć wszystkie kontakty nieaktywne dłużej niż {hours} godz.?",
"contacts.cleanup.confirm_title": "Potwierdź czyszczenie kontaktów",
"contacts.cleanup.date_field": "Pole daty:",
"contacts.cleanup.days": "Dni nieaktywności (0 = pomiń):",
"contacts.cleanup.days_hint": "Zaznaczone zostaną kontakty nieaktywne dłużej niż tyle dni",
"contacts.cleanup.delete_btn": "Usuń kontakty",
"contacts.cleanup.delete_confirm": "Następujące kontakty (<span id=\"cleanupContactCount\">0</span>) zostaną trwale usunięte:",
"contacts.cleanup.enable": "Włącz automatyczne czyszczenie",
"contacts.cleanup.enable_hint": "Gdy włączone, kontakty spełniające powyższe kryteria będą usuwane codziennie o wskazanej godzinie",
"contacts.cleanup.error": "Czyszczenie nie powiodło się",
"contacts.cleanup.failed": "Czyszczenie nie powiodło się: {error}",
"contacts.cleanup.last_advert": "Ostatni advert",
"contacts.cleanup.last_modified": "Ostatnia zmiana",
"contacts.cleanup.name_filter": "Filtr nazwy (opcjonalnie):",
"contacts.cleanup.name_filter_ph": "Wpisz fragment nazwy do wyszukania...",
"contacts.cleanup.network_error": "Błąd sieci podczas czyszczenia",
"contacts.cleanup.preview": "Podgląd czyszczenia",
"contacts.cleanup.run_at": "Uruchom o:",
"contacts.cleanup.status_label": "Status:",
"contacts.cleanup.title": "Czyszczenie kontaktów",
"contacts.cleanup.title_hint": "Usuń kontakty według różnych kryteriów",
"contacts.cleanup.types": "Typy kontaktów:",
"contacts.cleanup.undo_warning": "Tej operacji nie można cofnąć!",
"contacts.confirm.block": "Zablokować ten kontakt? Jego wiadomości będą ukryte w czacie.",
"contacts.confirm.push": "Wysłać \"{name}\" na urządzenie?",
"contacts.confirm.to_cache": "Przenieść \"{name}\" z urządzenia do pamięci?",
"contacts.copy_title": "Kliknij, aby skopiować",
"contacts.delete.confirm": "Usuń kontakt",
"contacts.delete.question": "Czy na pewno chcesz usunąć ten kontakt?",
"contacts.delete.title": "Potwierdź usunięcie",
"contacts.existing.load_failed": "Nie udało się wczytać kontaktów",
"contacts.existing.loading": "Wczytywanie kontaktów...",
"contacts.existing.none": "Nie znaleziono kontaktów",
"contacts.existing.none_hint": "Kontakty pojawią się tutaj po dodaniu",
"contacts.existing.search_ph": "Szukaj po nazwie lub kluczu publicznym...",
"contacts.existing.title": "Istniejące kontakty",
"contacts.filter.advanced": "Filtry zaawansowane",
"contacts.filter.all_sources": "Wszystkie źródła",
"contacts.filter.all_types": "Wszystkie typy",
"contacts.filter.blocked": "Zablokowane",
"contacts.filter.cache_only": "Tylko w pamięci",
"contacts.filter.ignored": "Ignorowane",
"contacts.filter.no_match": "Żaden kontakt nie pasuje do filtrów",
"contacts.filter.no_match_hint": "Spróbuj zmienić kryteria filtrowania",
"contacts.filter.on_device": "Na urządzeniu",
"contacts.hops": {
"one": "{count} hop",
"few": "{count} hopy",
"many": "{count} hopów",
"other": "{count} hopa"
},
"contacts.inactive": "Nieaktywny",
"contacts.last_advert": "Ostatni advert: {time}",
"contacts.last_advert_unknown": "Ostatni advert: nieznany",
"contacts.manage.title": "Ustawienia zarządzania kontaktami",
"contacts.map.show": "Pokaż:",
"contacts.map.title": "Mapa",
"contacts.never_seen": "Nigdy niewidziany",
"contacts.pending.approve_confirm": "Zamierzasz zatwierdzić <strong id=\"batchApprovalCount\">0</strong> kontaktów:",
"contacts.pending.approve_note": "Te kontakty zostaną dodane do Twojego urządzenia i będą mogły odbierać i wysyłać wiadomości.",
"contacts.pending.confirm_approve_title": "Potwierdź zbiorcze zatwierdzenie",
"contacts.pending.confirm_ignore_title": "Potwierdź zbiorcze zignorowanie",
"contacts.pending.filter_hint": "Filtruj kontakty po typie lub nazwie, a następnie zatwierdź lub zignoruj je zbiorczo.",
"contacts.pending.ignore_confirm": "Zamierzasz zignorować <strong id=\"batchIgnoreCount\">0</strong> kontaktów:",
"contacts.pending.ignore_note": "Ignorowane kontakty nie będą generować nowych oczekujących zgłoszeń. Możesz cofnąć ignorowanie później na stronie Istniejące kontakty.",
"contacts.pending.load_failed": "Nie udało się wczytać oczekujących kontaktów",
"contacts.pending.loading": "Wczytywanie oczekujących kontaktów...",
"contacts.pending.none": "Brak oczekujących zgłoszeń",
"contacts.pending.none_hint": "Nowe zgłoszenia kontaktów pojawią się tutaj, gdy włączone jest ręczne zatwierdzanie",
"contacts.pending.title": "Oczekujące kontakty",
"contacts.progress.approving": "Zatwierdzanie {done}/{total}...",
"contacts.progress.ignoring": "Ignorowanie {done}/{total}...",
"contacts.protected_cannot_block": "Nie można zablokować chronionego kontaktu",
"contacts.protected_cannot_delete": "Nie można usunąć chronionego kontaktu",
"contacts.protected_cannot_ignore": "Nie można zignorować chronionego kontaktu",
"contacts.protected_cannot_move": "Nie można przenieść chronionego kontaktu",
"contacts.protected_title": "Kontakt chroniony",
"contacts.qr.camera_denied": "Brak dostępu do kamery lub kamera niedostępna. Spróbuj wgrać obraz.",
"contacts.qr.read_failed": "Nie udało się odczytać kodu QR z obrazu. Upewnij się, że obraz zawiera prawidłowy kod QR.",
"contacts.recent_activity": "Ostatnia aktywność",
"contacts.remote_cli_badge": "Zdalne CLI",
"contacts.remote_cli_badge_title": "Ten kontakt może przez sieć mesh wykonać dowolną komendę CLI na Twoim węźle (restart, ustawienia radia, hasło Wi-Fi), a Ty tych komend nie zobaczysz. Aby odebrać uprawnienie, użyj w konsoli komendy change_flags.",
"contacts.sort.advert_asc": "Ostatni advert ↑",
"contacts.sort.advert_desc": "Ostatni advert ↓",
"contacts.sort.name_asc": "Nazwa A→Z",
"contacts.sort.name_desc": "Nazwa Z→A",
"contacts.title": "Zarządzanie kontaktami",
"contacts.toast.approve_failed": "Nie udało się zatwierdzić: {error}",
"contacts.toast.approved": "Zatwierdzono: {name}",
"contacts.toast.bulk_approve_failed": "Nie udało się zatwierdzić kontaktów. Szczegóły w konsoli.",
"contacts.toast.bulk_approve_partial": "Zatwierdzono {ok}, niepowodzeń: {failed}. Szczegóły w konsoli.",
"contacts.toast.bulk_approved": {
"one": "Zatwierdzono {count} kontakt",
"few": "Zatwierdzono {count} kontakty",
"many": "Zatwierdzono {count} kontaktów",
"other": "Zatwierdzono {count} kontaktu"
},
"contacts.toast.bulk_ignore_failed": "Nie udało się zignorować kontaktów. Szczegóły w konsoli.",
"contacts.toast.bulk_ignore_partial": "Zignorowano {ok}, niepowodzeń: {failed}. Szczegóły w konsoli.",
"contacts.toast.bulk_ignored": {
"one": "Zignorowano {count} kontakt",
"few": "Zignorowano {count} kontakty",
"many": "Zignorowano {count} kontaktów",
"other": "Zignorowano {count} kontaktu"
},
"contacts.toast.cleanup_failed": "Czyszczenie nie powiodło się: {error}",
"contacts.toast.copy_failed": "Nie udało się skopiować do schowka",
"contacts.toast.delete_failed": "Nie udało się usunąć: {error}",
"contacts.toast.deleted": "Usunięto: {name}",
"contacts.toast.key_copied": "Klucz skopiowany do schowka",
"contacts.toast.move_failed": "Nie udało się przenieść kontaktu",
"contacts.toast.need_days": "Ustaw „Dni nieaktywności” > 0 przed włączeniem automatycznego czyszczenia",
"contacts.toast.need_type": "Wybierz co najmniej jeden typ kontaktu",
"contacts.toast.need_type_enable": "Wybierz co najmniej jeden typ kontaktu przed włączeniem automatycznego czyszczenia",
"contacts.toast.no_match": "Żaden kontakt nie pasuje do wybranych kryteriów",
"contacts.toast.none_to_approve": "Brak kontaktów do zatwierdzenia",
"contacts.toast.none_to_ignore": "Brak kontaktów do zignorowania",
"contacts.toast.preview_failed": "Podgląd nie powiódł się: {error}",
"contacts.toast.preview_network_error": "Błąd sieci podczas podglądu",
"contacts.toast.protect_failed": "Nie udało się zmienić ochrony: {error}",
"contacts.toast.pubkey_copied": "Klucz publiczny skopiowany do schowka",
"contacts.toast.push_failed": "Nie udało się wysłać kontaktu",
"contacts.toast.pushed": "{name} wysłany na urządzenie",
"contacts.toast.settings_load_error": "Błąd wczytywania ustawień",
"contacts.toast.settings_network_error": "Błąd sieci przy zapisie ustawień",
"contacts.toast.settings_save_failed": "Nie udało się zapisać ustawień: {error}",
"contacts.toast.to_cache": "{name} przeniesiony do pamięci",
"coord.confirm": "Zatwierdź",
"coord.hint": "Kliknij na mapie, aby wybrać współrzędne",
"coord.title": "Wybierz współrzędne",
"demo.badge": "Demo",
"demo.blocked_toast": "Ta instancja działa w trybie demo — akcja jest niedostępna.",
"demo.console_notice": "Tryb demo: konsola odpowiada na polecenia tylko do odczytu, takie jak <code>infos</code>, <code>stats</code>, <code>contacts</code> i <code>get</code>. Polecenia zmieniające urządzenie są odrzucane.",
"demo.lock_btn": "Zablokuj ponownie",
"demo.locked_title": "Wyłączone w trybie demo",
"demo.settings_notice": "To jest publiczna instancja demonstracyjna, więc ustawienia zmieniające radio, zapisane dane lub ten serwer są tylko do odczytu. Cała reszta — przeglądanie, wysyłanie wiadomości, motywy — działa normalnie.",
"demo.unlock_bad": "Ten kod nie został zaakceptowany.",
"demo.unlock_btn": "Odblokuj",
"demo.unlock_hint": "Jeśli administrujesz tą instancją, podaj kod odblokowujący, aby przywrócić pełny dostęp na tym urządzeniu.",
"demo.unlock_label": "Dostęp operatora",
"demo.unlock_ph": "Kod odblokowujący",
"demo.unlocked_state": "Odblokowane — masz pełny dostęp na tym urządzeniu.",
"device.cmd.exec_failed": "Nie udało się wykonać: {command}",
"device.cmd.failed": "Polecenie nie powiodło się: {error}",
"device.cmd.sent": "Wysłano: {command}",
"device.info.bw": "Bandwidth",
"device.info.copy_title": "Kopiuj do schowka",
"device.info.cr": "Coding Rate",
"device.info.freq": "Częstotliwość",
"device.info.load_failed": "Nie udało się wczytać informacji o urządzeniu",
"device.info.loc_sharing": "Udostępnianie lokalizacji",
"device.info.location": "Lokalizacja",
"device.info.location_none": "Niedostępna",
"device.info.manual_add": "Ręczne dodawanie kontaktów",
"device.info.multi_acks": "Multi Acks",
"device.info.name": "Nazwa",
"device.info.none": "Brak informacji o urządzeniu",
"device.info.pubkey": "Klucz publiczny",
"device.info.sf": "Spreading Factor",
"device.info.tx_power": "Moc TX",
"device.info.type": "Typ",
"device.info.type_unknown": "Nieznany ({code})",
"device.reboot.btn": "Restart",
"device.reboot.confirm": "Zrestartować urządzenie?\n\nNa kilka sekund zniknie z sieci mesh. Wiadomości wysłane do Ciebie w tym czasie mogą przepaść. Aplikacja połączy się ponownie sama.",
"device.reboot.failed": "Restart nie powiódł się",
"device.reboot.hint": "Restartuje urządzenie. Będzie niedostępne przez kilka sekund.",
"device.reboot.sent": "Polecenie restartu wysłane — urządzenie się restartuje",
"device.share.copy_uri": "Kopiuj URI",
"device.share.hint": "Udostępnij ten kod QR lub URI, aby inni mogli dodać Twoje urządzenie jako kontakt.",
"device.share.unavailable": "Informacje o urządzeniu niedostępne",
"device.share.uri": "URI kontaktu:",
"device.share_hint": "Kliknij, aby wygenerować kod udostępniania",
"device.stats.battery": "Bateria",
"device.stats.channel_msgs": "Wiadomości kanałowe",
"device.stats.contacts_db": "Kontakty (DB)",
"device.stats.database": "Baza danych",
"device.stats.db_size": "Rozmiar bazy",
"device.stats.direct_msgs": "Wiadomości prywatne",
"device.stats.errors": "Błędy",
"device.stats.load_failed": "Nie udało się wczytać statystyk",
"device.stats.none": "Brak statystyk",
"device.stats.packets_rx": "Pakiety RX",
"device.stats.packets_tx": "Pakiety TX",
"device.stats.queue": "Kolejka",
"device.stats.rx_air": "Czas antenowy RX",
"device.stats.tx_air": "Czas antenowy TX",
"device.stats.uptime": "Czas pracy",
"device.stats_hint": "Kliknij, aby wczytać statystyki",
"device.tab.info": "Informacje",
"device.tab.share": "Udostępnij",
"device.tab.stats": "Statystyki",
"device.title": "Urządzenie",
"diag.confirm.delete": "Usunąć ten zrzut?",
"diag.confirm.upload": "Wysłać ten zrzut do skonfigurowanej usługi udostępniania? Zawiera treść wiadomości odebranych w czasie nagrywania.",
"diag.counters": "<strong>{elapsed}</strong> z {total} &middot; zdarzeń: {events} &middot; {size}",
"diag.download": "Pobierz",
"diag.dropped": "(pominięto zdarzeń: {n})",
"diag.load_failed": "Nie udało się wczytać stanu diagnostyki",
"diag.minutes": "{n} min",
"diag.no_captures": "Brak zrzutów.",
"diag.toast.delete_failed": "Nie udało się usunąć zrzutu",
"diag.toast.no_token": "Najpierw zapisz token wysyłki",
"diag.toast.settings_failed": "Nie udało się zapisać ustawień wysyłki",
"diag.toast.settings_saved": "Zapisano ustawienia wysyłki",
"diag.toast.start_failed": "Nie udało się rozpocząć nagrywania",
"diag.toast.started": "Rozpoczęto nagrywanie",
"diag.toast.stop_failed": "Nie udało się zatrzymać nagrywania",
"diag.toast.stopped": "Zatrzymano nagrywanie — zrzut czeka na liście poniżej",
"diag.toast.upload_failed": "Wysyłka nie powiodła się",
"diag.toast.uploaded": "Zrzut wysłany — link znajdziesz poniżej",
"diag.token_missing": "Brak zapisanego tokenu. Poproś o niego opiekuna projektu, gdy poprosi Cię o zrzut.",
"diag.token_set": "Token jest zapisany. Zostaw pole puste, aby go nie zmieniać.",
"diag.upload": "Wyślij do opiekuna",
"dm.attempt": "Próba {n}/{max}",
"dm.auto_retry": "Auto ponawianie",
"dm.auto_retry_title": "Auto ponawianie: wyślij DM ponownie, jeśli nie przyjdzie ACK",
"dm.clear_selection_title": "Wyczyść wybór",
"dm.contact_info": "Informacje o kontakcie",
"dm.contact_info_title": "Informacje o kontakcie",
"dm.copy_pubkey_title": "Kliknij, aby skopiować pełny klucz publiczny",
"dm.delivery_unknown": "Nieznany status dostarczenia — brak ACK. Wiadomość mogła jednak zostać dostarczona.",
"dm.dropdown.contacts": "Kontakty",
"dm.dropdown.no_contacts": "Brak dostępnych kontaktów",
"dm.dropdown.no_matches": "Brak wyników",
"dm.dropdown.recent": "Ostatnie rozmowy",
"dm.empty.no_messages_hint": "Wyślij wiadomość, aby rozpocząć rozmowę",
"dm.empty.select": "Wybierz rozmowę",
"dm.empty.select_hint": "Wybierz z listy lub rozpocznij nową rozmowę z wiadomości kanałowych",
"dm.import_device_path_title": "Zaimportuj ścieżkę urządzenia do skonfigurowanych ścieżek",
"dm.keep_path": "Zachowaj ścieżkę",
"dm.keep_path_title": "Zachowaj ścieżkę: nie przywracaj automatycznie trybu FLOOD po nieudanych próbach",
"dm.load_messages_error": "Błąd wczytywania wiadomości",
"dm.msg_input_ph": "Wiadomość do {name}...",
"dm.no_contact_info": "Brak informacji o kontakcie.",
"dm.remote_cli_label": "Zdalna komenda CLI — niewykonana",
"dm.remote_cli_notify": "Zdalna komenda CLI (niewykonana): {cmd}",
"dm.remote_cli_title": "Ten kontakt próbował wykonać komendę w CLI Twojego węzła. Węzeł jej nie wykonał, bo kontakt nie ma uprawnienia do zdalnego CLI.",
"dm.select_chat_ph": "Wybierz rozmowę...",
"dm.sidebar.search_ph": "Szukaj kontaktów...",
"dm.status.delivered": "Dostarczono",
"dm.status.failed": "Dostarczenie nieudane — wyczerpano wszystkie próby",
"dm.status.sending": "Wysyłanie...",
"dm.title": "Wiadomości prywatne",
"dm.toast.auto_retry_off": "Auto ponawianie wyłączone",
"dm.toast.auto_retry_on": "Auto ponawianie włączone",
"dm.toast.device_path_imported": "Zaimportowano ścieżkę urządzenia",
"dm.toast.import_failed": "Import nieudany",
"dm.toast.keep_path_off": "Zachowywanie ścieżki wyłączone",
"dm.toast.keep_path_on": "Zachowywanie ścieżki włączone",
"logs.clear_title": "Wyczyść widok",
"logs.entries": {
"one": "{count} wpis",
"few": "{count} wpisy",
"many": "{count} wpisów",
"other": "{count} wpisu"
},
"logs.entries_filtered": {
"one": "{shown} / {count} wpis",
"few": "{shown} / {count} wpisy",
"many": "{shown} / {count} wpisów",
"other": "{shown} / {count} wpisu"
},
"logs.filter.all_levels": "Wszystkie poziomy",
"logs.filter.all_modules": "Wszystkie moduły",
"logs.filter.reset_title": "Wyczyść filtry",
"logs.filter.search_ph": "Szukaj...",
"logs.load_failed": "Nie udało się wczytać dziennika",
"logs.loading": "Ładowanie dziennika...",
"logs.pause_title": "Wstrzymaj/Wznów",
"logs.title": "Dziennik systemowy",
"map.all_contacts": "Wszystkie kontakty",
"map.cache": "Pamięć",
"map.cached_label": "{type} (z pamięci)",
"map.own_device": "Własne urządzenie",
"map.this_device": "To urządzenie",
"menu.advert": "Wyślij advert",
"menu.advert_desc": "Ogłoś obecność (normalnie)",
"menu.advert_title": "Wyślij pojedynczy advert (zalecane przy normalnej pracy)",
"menu.archive_option": "{date} ({count} wiad.)",
"menu.backup": "Kopia zapasowa",
"menu.backup_desc": "Kopia i przywracanie bazy danych",
"menu.channels": "Zarządzaj kanałami",
"menu.check_updates_title": "Sprawdź aktualizacje",
"menu.confirm.flood_advert": "Flood advert zużywa dużo czasu antenowego i powinien być używany wyłącznie do odbudowy sieci.\n\nCzy na pewno chcesz kontynuować?",
"menu.console_desc": "Bezpośrednie komendy meshcli",
"menu.contacts_desc": "Zarządzaj znanymi kontaktami",
"menu.device_info": "Informacje o urządzeniu",
"menu.dm_desc": "Rozmowy prywatne",
"menu.exact_build_title": "Dokładny build",
"menu.filter": "Filtruj wiadomości",
"menu.filter_desc": "Filtruj bieżący czat",
"menu.flood_advert": "Flood advert",
"menu.flood_advert_desc": "Tylko do odbudowy sieci!",
"menu.flood_advert_title": "Flood advert — używaj oszczędnie! Duże zużycie czasu antenowego.",
"menu.history": "Historia wiadomości",
"menu.logs_desc": "Logi aplikacji w czasie rzeczywistym",
"menu.map": "Mapa",
"menu.map_desc": "Wszystkie kontakty z GPS",
"menu.map_title": "Pokaż na mapie wszystkie kontakty z GPS",
"menu.pa_desc": "Analiza ścieżek routingu",
"menu.refresh_desc": "Wczytaj wiadomości ponownie z serwera",
"menu.refresh_title": "Wczytaj wiadomości ponownie z serwera",
"menu.repeaters_desc": "Administracja repeaterami",
"menu.search": "Szukaj w wiadomościach",
"menu.search_desc": "Przeszukaj wszystkie wiadomości",
"menu.section.network": "Sieć",
"menu.section.system": "System",
"menu.section.tools": "Narzędzia",
"menu.select_date_title": "Wybierz datę",
"menu.settings_desc": "Ustawienia aplikacji",
"menu.title": "Menu",
"menu.today_live": "Dziś (na żywo)",
"meta.language_english_name": "Polish",
"meta.language_name": "Polski",
"meta.translator": "mc-webui",
"nav.ble_title": "Bluetooth Low Energy",
"nav.mark_all_read_title": "Oznacz wszystko jako przeczytane",
"nav.select_channel_title": "Wybierz kanał",
"nav.tcp_title": "Połączenie TCP",
"notify.channels": {
"one": "{count} kanał",
"few": "{count} kanały",
"many": "{count} kanałów",
"other": "{count} kanału"
},
"notify.dms": {
"one": "{count} wiadomość prywatna",
"few": "{count} wiadomości prywatne",
"many": "{count} wiadomości prywatnych",
"other": "{count} wiadomości prywatnej"
},
"notify.new": "Nowe: {parts}",
"notify.pending": {
"one": "{count} oczekujący kontakt",
"few": "{count} oczekujące kontakty",
"many": "{count} oczekujących kontaktów",
"other": "{count} oczekującego kontaktu"
},
"notify.title_count": "{name} ({count})",
"observer.add_broker": "Dodaj brokera",
"observer.confirm.delete": "Usunąć brokera \"{name}\"?",
"observer.counters": "przechwycone pakiety: <strong>{seen}</strong>, opublikowane: <strong>{published}</strong>",
"observer.edit_broker": "Edytuj brokera",
"observer.empty": "Brak skonfigurowanych brokerów. Kliknij \"Dodaj brokera\", aby dodać.",
"observer.host": "Host",
"observer.host_required": "Host jest wymagany",
"observer.iata_invalid": "Kod lokalizacji musi być pusty albo mieć dokładnie 3 litery",
"observer.load_failed": "Nie udało się wczytać statusu obserwatora",
"observer.name_ph": "np. Mój serwer MQTT",
"observer.name_required": "Nazwa jest wymagana",
"observer.off": "Obserwator jest <strong>wyłączony</strong>.",
"observer.password": "Hasło",
"observer.password_hint": "Zostaw hasło puste, aby zachować bieżące.",
"observer.port": "Port",
"observer.port_invalid": "Port musi być z zakresu 1-65535",
"observer.ports_hint": "Typowe porty: 1883 (bez szyfrowania), 8883 (TLS).",
"observer.state.connected": "połączony",
"observer.state.error": "błąd",
"observer.state.offline": "offline",
"observer.state.running": "działa",
"observer.state.waiting": "czeka",
"observer.toast.delete_error": "Błąd sieci przy usuwaniu brokera",
"observer.toast.delete_failed": "Nie udało się usunąć brokera",
"observer.toast.save_error": "Błąd sieci przy zapisie brokera",
"observer.toast.save_failed": "Nie udało się zapisać brokera",
"observer.toast.settings_error": "Błąd sieci przy zapisie ustawień obserwatora",
"observer.toast.settings_failed": "Nie udało się zapisać ustawień obserwatora",
"observer.toast.update_error": "Błąd sieci przy aktualizacji brokera",
"observer.toast.update_failed": "Nie udało się zaktualizować brokera",
"observer.use_tls": "Użyj TLS",
"observer.username": "Nazwa użytkownika",
"observer.verify_tls": "Weryfikuj certyfikat TLS",
"pa.ambiguous": "niejednoznaczne ({count})",
"pa.any_hb": "Dowolne HB",
"pa.any_hops": "Dowolne hopy",
"pa.byte_2_3": "2/3 bajty",
"pa.candidates": {
"one": "{count} kandydat",
"few": "{count} kandydaci",
"many": "{count} kandydatów",
"other": "{count} kandydata"
},
"pa.clear": "Wyczyść",
"pa.clear_filters_title": "Wyczyść filtry",
"pa.col.avgsnr": "Śr. SNR (ostatni hop)",
"pa.col.avgsnr_title": "Średni SNR echa, liczony tylko gdy ten hash jest ostatnim hopem — SNR mierzymy na naszym odbiorniku dla ostatniego hopa",
"pa.col.channel": "Kanał",
"pa.col.contact": "Kontakt",
"pa.col.echoes": "Echa",
"pa.col.echoes_seg_title": "Echa, których ścieżka zawiera ten segment (w dowolnym miejscu)",
"pa.col.hash": "Hash",
"pa.col.hb": "HB",
"pa.col.hb_title": "Rozmiar hasha ścieżki w bajtach na hop (z ech z trasą)",
"pa.col.hops": "Hopy",
"pa.col.lasthop": "Jako ostatni hop",
"pa.col.lasthop_title": "Echa, w których ten hash jest ostatnim hopem (usłyszane bezpośrednio przez nas)",
"pa.col.message": "Wiadomość",
"pa.col.message_plural": "Wiadomości",
"pa.col.msgs_hash_title": "Odrębne wiadomości przekazane przez ten hash",
"pa.col.msgs_seg_title": "Odrębne wiadomości, których ścieżka zawiera ten segment",
"pa.col.pathend": "Jako koniec ścieżki",
"pa.col.pathend_title": "Echa, w których ten segment kończy ścieżkę — trasa, którą wiadomość do nas dotarła",
"pa.col.relayed": "Przekazane",
"pa.col.relayed_title": "Echa, których ścieżka zawiera ten hash (w dowolnym miejscu)",
"pa.col.repeater": "Repeater",
"pa.col.route": "Trasa",
"pa.col.sender": "Nadawca",
"pa.col.time": "Czas",
"pa.content_ph": "Treść wiadomości",
"pa.content_title": "Filtruj po treści wiadomości",
"pa.copy_hash_title": "Kopiuj hash repeatera {hash}",
"pa.copy_route_title": "Kliknij, aby skopiować trasę",
"pa.copy_title": "Kliknij, aby skopiować",
"pa.counter.filtered": "{shown} z {total} wiadomości",
"pa.counter.messages": {
"one": "{count} wiadomość",
"few": "{count} wiadomości",
"many": "{count} wiadomości",
"other": "{count} wiadomości"
},
"pa.counter.repeaters": {
"one": "{count} repeater",
"few": "{count} repeatery",
"many": "{count} repeaterów",
"other": "{count} repeatera"
},
"pa.counter.routed": {
"one": "{count} wiadomość z trasą",
"few": "{count} wiadomości z trasą",
"many": "{count} wiadomości z trasą",
"other": "{count} wiadomości z trasą"
},
"pa.counter.segments": {
"one": "{count} segment",
"few": "{count} segmenty",
"many": "{count} segmentów",
"other": "{count} segmentu"
},
"pa.direct_flood": "Bezpośrednio (flood, 0 hopów)",
"pa.empty_filtered": "Żadna wiadomość nie pasuje do bieżących filtrów.",
"pa.empty_no_echoes": "Brak ech z trasą w bieżącym wyborze.",
"pa.empty_range": "Brak wiadomości w wybranym zakresie czasu.",
"pa.filter_by_segment_title": "Filtruj wiadomości po tym segmencie",
"pa.filter_by_title": "Filtruj wiadomości według {token}",
"pa.filters": "Filtry",
"pa.filters_toggle_title": "Pokaż/ukryj filtry",
"pa.hb_filter_title": "Filtruj po rozmiarze hasha ścieżki (bajtów na hop, dowolne echo z trasą)",
"pa.hops_4plus": "4+ hopów",
"pa.hops_filter_title": "Filtruj po liczbie hopów (dowolne echo)",
"pa.last_days": {
"one": "Ostatni {count} dzień",
"few": "Ostatnie {count} dni",
"many": "Ostatnie {count} dni",
"other": "Ostatnie {count} dnia"
},
"pa.loading": "Wczytywanie wiadomości…",
"pa.map.alt_path": "Ścieżka alternatywna",
"pa.map.candidate": "Kandydat na hop {n}: <code>{token}</code>",
"pa.map.clear_title": "Wyczyść narysowaną ścieżkę",
"pa.map.exit_fullscreen": "Zamknij pełny ekran",
"pa.map.fullscreen": "Powiększ mapę na pełny ekran",
"pa.map.hint": "Kliknij wiadomość, a potem echo, aby narysować jej ścieżkę.",
"pa.map.hop": "Hop {n}: <code>{token}</code>",
"pa.map.no_routed": "Żadna wiadomość z echami z trasą nie pasuje do bieżących filtrów.",
"pa.map.origin": "Źródło (nadawca)",
"pa.me": "Ja",
"pa.n_byte": {
"one": "{count} bajt",
"few": "{count} bajty",
"many": "{count} bajtów",
"other": "{count} bajta"
},
"pa.n_hops": {
"one": "{count} hop",
"few": "{count} hopy",
"many": "{count} hopów",
"other": "{count} hopa"
},
"pa.no_path_data": "brak danych o ścieżce",
"pa.no_paths_min_hops": "Brak ścieżek o co najmniej {count} hopach w bieżącym wyborze.",
"pa.packet_hash": "Hash pakietu",
"pa.reload_title": "Odśwież",
"pa.repeater_hash": "Hash repeatera",
"pa.reset_picks": "Resetuj wybory",
"pa.reset_picks_title": "Wyczyść wszystkie ręczne przypisania repeaterów na tej ścieżce",
"pa.seglen_title": "Liczba kolejnych hopów w liczonym segmencie",
"pa.segment_length": "Długość segmentu:",
"pa.sender_own": "{name} (własna)",
"pa.sender_ph": "Nadawca",
"pa.sender_title": "Filtruj po nazwie nadawcy",
"pa.show_on_map_title": "Pokaż tę ścieżkę na mapie",
"pa.time_range": "Zakres czasu:",
"pa.title": "Analizator ścieżek",
"pa.toast.copied": "Skopiowano do schowka: {what}",
"pa.toast.copy_failed": "Nie udało się skopiować: {what}",
"pa.toast.load_failed": "Nie udało się wczytać wiadomości: {error}",
"pa.toast.msg_gone": "Tej wiadomości nie ma już w danych analizatora (maks. 7 dni).",
"pa.toast.no_echoes": "Ta wiadomość nie ma ech z trasą do narysowania.",
"pa.toggle_all_repeaters": "Wszystkie repeatery",
"pa.toggle_alt_paths": "Ścieżki alternatywne",
"pa.token_ph": "Repeater (3B lub nazwa)",
"pa.token_title": "Dopasuj repeater w dowolnym miejscu ścieżki: prefiks hasha (hex) lub nazwa kontaktu. Połącz znakiem '>', aby wskazać kolejność, np. AFE6>6E9A",
"pa.undo_pick_title": "Cofnij to ręczne przypisanie",
"pa.unknown_position": "— nieznany / brak pozycji",
"pa.use_contact_title": "Użyj tego kontaktu dla hopa",
"pa.view.map": "Mapa",
"pa.view.map_title": "Widok mapy",
"pa.view.messages": "Wiadomości",
"pa.view.messages_title": "Lista wiadomości",
"pa.view.repeaters": "Repeatery",
"pa.view.repeaters_title": "Statystyki per repeater",
"pa.view.routes": "Trasy",
"pa.view.routes_title": "Statystyki segmentów tras",
"pa.view_aria": "Widok",
"quote.full": "Pełny cytat",
"quote.max_bytes": "Maks. bajtów:",
"quote.title": "Zacytuj wiadomość",
"quote.truncated": "Skrócony",
"repeaters.add": "Dodaj repeater",
"repeaters.add_loading": "Wczytywanie kontaktów z urządzenia...",
"repeaters.add_modal_title": "Dodaj repeater",
"repeaters.add_none_found": "Nie znaleziono repeaterów na urządzeniu.",
"repeaters.add_search_ph": "Szukaj repeaterów na urządzeniu...",
"repeaters.added_badge": "Dodany",
"repeaters.addpath.by_id": "ID",
"repeaters.addpath.by_name": "Nazwa",
"repeaters.addpath.hash_1b": "1B (maks. 64)",
"repeaters.addpath.hash_2b": "2B (maks. 32)",
"repeaters.addpath.hash_3b": "3B (maks. 21)",
"repeaters.addpath.hash_size": "Rozmiar hasha",
"repeaters.addpath.label": "Etykieta (opcjonalnie)",
"repeaters.addpath.label_ph": "np. przez Mountain RPT",
"repeaters.addpath.path_hex": "Ścieżka (hex)",
"repeaters.addpath.path_hex_ph": "np. 5e,e7 lub 5e34,e761",
"repeaters.addpath.pick_list_title": "Wybierz repeater z listy",
"repeaters.addpath.pick_map_title": "Wybierz repeater z mapy",
"repeaters.addpath.search_id_ph": "Szukaj po pierwszych {chars} znakach hex...",
"repeaters.addpath.search_ph": "Szukaj po nazwie...",
"repeaters.addpath.title": "Dodaj ścieżkę",
"repeaters.confirm.clear_paths": "Usunąć wszystkie skonfigurowane ścieżki?\n\nSpowoduje to usunięcie wszystkich ścieżek z bazy danych. Ścieżka na urządzeniu nie zostanie zmieniona.",
"repeaters.confirm.reset_flood": "Przywrócić na urządzeniu tryb FLOOD?\n\nZmienia to tylko ścieżkę na urządzeniu. Twoje skonfigurowane ścieżki zostaną zachowane.",
"repeaters.confirm.set_direct": "Ustawić na urządzeniu ścieżkę Direct?\n\nWiadomości będą wysyłane wprost do węzła, bez repeatera po drodze. Zmienia to tylko ścieżkę na urządzeniu — twoje skonfigurowane ścieżki zostaną zachowane.",
"repeaters.count": {
"one": "{count} repeater",
"few": "{count} repeatery",
"many": "{count} repeaterów",
"other": "{count} repeatera"
},
"repeaters.empty": "Brak repeaterów.",
"repeaters.empty_hint": "Użyj <strong>Dodaj repeater</strong>, aby wybrać repeatery zapisane na Twoim urządzeniu.",
"repeaters.empty_note": "Zarządzać można tylko repeaterami zapisanymi w kontaktach urządzenia.",
"repeaters.load_failed": "Nie udało się wczytać repeaterów",
"repeaters.map.cached": "Z pamięci",
"repeaters.map.hint": "Kliknij repeater na mapie",
"repeaters.map.last_seen": "Ostatnio widziany: {time}",
"repeaters.map.title": "Wybierz repeater z mapy",
"repeaters.on_device_count": {
"one": "{count} repeater na urządzeniu",
"few": "{count} repeatery na urządzeniu",
"many": "{count} repeaterów na urządzeniu",
"other": "{count} repeatera na urządzeniu"
},
"repeaters.password.change_title": "Zmień hasło",
"repeaters.password.input_ph": "Hasło repeatera",
"repeaters.password.login_btn": "Zaloguj",
"repeaters.password.login_info": "Podaj hasło repeatera, aby się zalogować.",
"repeaters.password.login_title": "Logowanie",
"repeaters.password.remember": "Zapamiętaj hasło (przechowywane w bazie aplikacji)",
"repeaters.password.retry_hint": "Sprawdź hasło i spróbuj ponownie.",
"repeaters.password.set_info": "Hasło jest przechowywane w bazie aplikacji i służy do logowania się do tego repeatera bez ponownego pytania.",
"repeaters.password.set_title": "Ustaw hasło",
"repeaters.password.toggle_title": "Pokaż/ukryj hasło",
"repeaters.paths.add_title": "Dodaj ścieżkę",
"repeaters.paths.apply_title": "Ustaw jako ścieżkę urządzenia",
"repeaters.paths.clear": "Wyczyść ścieżki",
"repeaters.paths.clear_title": "Usuń z bazy wszystkie skonfigurowane ścieżki",
"repeaters.paths.configured": "Skonfigurowane ścieżki",
"repeaters.paths.device_path": "Ścieżka urządzenia:",
"repeaters.paths.is_primary_title": "Ścieżka główna",
"repeaters.paths.load_failed": "Nie udało się wczytać ścieżek",
"repeaters.paths.none": "Brak skonfigurowanych ścieżek. Użyj +, aby dodać.",
"repeaters.paths.reset_flood": "Przywróć FLOOD",
"repeaters.paths.reset_flood_title": "Przywróć na urządzeniu tryb FLOOD",
"repeaters.paths.set_direct": "Ustaw Direct",
"repeaters.paths.set_direct_title": "Ustaw na urządzeniu ścieżkę Direct (bez repeaterów)",
"repeaters.paths.set_primary_title": "Ustaw jako główną",
"repeaters.paths.title": "Ścieżki",
"repeaters.picker.none": "Nie znaleziono repeaterów",
"repeaters.picker.shared_prefix": {
"one": "{count} repeater ma ten prefiks",
"few": "{count} repeatery mają ten prefiks",
"many": "{count} repeaterów ma ten prefiks",
"other": "{count} repeatera ma ten prefiks"
},
"repeaters.refresh_title": "Odśwież listę",
"repeaters.remove.note": "Zapisane hasło zostanie usunięte. Kontakt na urządzeniu pozostanie bez zmian.",
"repeaters.remove.question": "Usunąć <strong>{name}</strong> z Moich repeaterów?",
"repeaters.remove.title": "Usuń repeater",
"repeaters.row.last_login": "ostatnie logowanie: {role}",
"repeaters.row.logging_in": "Logowanie… (na ścieżkach flood może potrwać do 60 s)",
"repeaters.row.not_on_device": "Niezapisany na urządzeniu",
"repeaters.row.remove_title": "Usuń z listy",
"repeaters.row.set_path_title": "Ustaw ścieżkę",
"repeaters.term": "repeater",
"repeaters.title": "Moje repeatery",
"repeaters.toast.add_failed": "Nie udało się dodać repeatera",
"repeaters.toast.added": "Dodano {name}",
"repeaters.toast.adjacent_dupes": {
"one": "Sąsiadujący powtórzony hop: {hops}",
"few": "Sąsiadujące powtórzone hopy: {hops}",
"many": "Sąsiadujące powtórzone hopy: {hops}",
"other": "Sąsiadujące powtórzone hopy: {hops}"
},
"repeaters.toast.ambiguous_prefix": {
"one": "⚠ Niejednoznaczny prefiks: {hops}. Rozważ większy rozmiar hasha.",
"few": "⚠ Niejednoznaczne prefiksy: {hops}. Rozważ większy rozmiar hasha.",
"many": "⚠ Niejednoznaczne prefiksy: {hops}. Rozważ większy rozmiar hasha.",
"other": "⚠ Niejednoznaczne prefiksy: {hops}. Rozważ większy rozmiar hasha."
},
"repeaters.toast.clear_failed": "Czyszczenie nie powiodło się",
"repeaters.toast.contacts_load_failed": "Nie udało się wczytać kontaktów z urządzenia",
"repeaters.toast.dupes": {
"one": "Powtórzony hop: {hops}",
"few": "Powtórzone hopy: {hops}",
"many": "Powtórzone hopy: {hops}",
"other": "Powtórzone hopy: {hops}"
},
"repeaters.toast.hop_adjacent_self": "{hop} nie może sąsiadować sam ze sobą",
"repeaters.toast.hop_already_used": "{hop} jest już w ścieżce",
"repeaters.toast.logged_in": "Zalogowano do {name} jako {role}",
"repeaters.toast.login_failed": "Logowanie nie powiodło się",
"repeaters.toast.login_in_progress": "Inne logowanie jest już w toku",
"repeaters.toast.not_on_device": "Ten repeater nie jest zapisany na urządzeniu — nie można nim zarządzać",
"repeaters.toast.password_empty": "Hasło nie może być puste",
"repeaters.toast.password_save_failed": "Nie udało się zapisać hasła",
"repeaters.toast.password_saved": "Hasło zapisane",
"repeaters.toast.path_add_failed": "Nie udało się dodać ścieżki",
"repeaters.toast.path_added": "Ścieżka dodana",
"repeaters.toast.path_duplicate": "Ta ścieżka jest już na liście",
"repeaters.toast.path_hex_required": "Ścieżka hex jest wymagana",
"repeaters.toast.path_set_failed": "Nie udało się ustawić ścieżki urządzenia",
"repeaters.toast.path_updated": "Ścieżka urządzenia zaktualizowana",
"repeaters.toast.paths_cleared": {
"one": "Wyczyszczono {count} ścieżkę",
"few": "Wyczyszczono {count} ścieżki",
"many": "Wyczyszczono {count} ścieżek",
"other": "Wyczyszczono {count} ścieżki"
},
"repeaters.toast.remove_failed": "Nie udało się usunąć repeatera",
"repeaters.toast.removed": "Repeater usunięty z listy",
"repeaters.toast.reset_failed": "Przywracanie nie powiodło się",
"repeaters.toast.reset_flood_done": "Przywrócono na urządzeniu tryb FLOOD",
"repeaters.toast.set_direct_done": "Ustawiono na urządzeniu ścieżkę Direct",
"repeaters.toast.set_direct_failed": "Nie udało się ustawić ścieżki Direct",
"rptmgmt.act.clock_sync": "Synchronizuj zegar",
"rptmgmt.act.clock_sync_desc": "Ustaw zegar repeatera według bieżącego czasu serwera. Firmware nie pozwala cofnąć zegara.",
"rptmgmt.act.flood": "Wyślij flood advert",
"rptmgmt.act.flood_desc": "Niezalecane — advert jest rozsyłany trybem flood po całej sieci (duże obciążenie).",
"rptmgmt.act.poweroff": "Wyłącz repeater",
"rptmgmt.act.poweroff_btn": "Wyłącz",
"rptmgmt.act.poweroff_desc": "Wyłącza repeater. Nie da się go włączyć zdalnie przez sieć mesh — ktoś musi pojechać na miejsce. Wymaga firmware v1.17 lub nowszego.",
"rptmgmt.act.reboot": "Restart repeatera",
"rptmgmt.act.reboot_btn": "Restart",
"rptmgmt.act.reboot_desc": "Repeater znika z sieci mesh na kilka sekund, gdy się restartuje.",
"rptmgmt.act.send": "Wyślij",
"rptmgmt.act.sync": "Synchronizuj",
"rptmgmt.act.zerohop": "Wyślij advert zero-hop",
"rptmgmt.act.zerohop_desc": "Ogłoś ten repeater wyłącznie bezpośrednim sąsiadom.",
"rptmgmt.action_failed": "Akcja nie powiodła się",
"rptmgmt.admin_required": "Wymagane logowanie administratora",
"rptmgmt.ago_dh": "{d}d {h}h temu",
"rptmgmt.ago_hm": "{h}h {m}m temu",
"rptmgmt.ago_ms": "{m}m {s}s temu",
"rptmgmt.ago_s": "{s}s temu",
"rptmgmt.back_title": "Powrót do Moich repeaterów",
"rptmgmt.back_to_list": "Powrót do listy",
"rptmgmt.back_tools_title": "Powrót do narzędzi",
"rptmgmt.cli.empty_reply": "(pusta odpowiedź)",
"rptmgmt.cli.input_ph": "Wpisz polecenie (np. get name)",
"rptmgmt.cli.intro": "Polecenia trafiają do {name}. Jedno polecenie naraz — odpowiedzi wędrują przez sieć mesh.",
"rptmgmt.cli.the_repeater": "repeatera",
"rptmgmt.cli.waiting": "Czekam na odpowiedź…",
"rptmgmt.command_failed": "Polecenie nie powiodło się",
"rptmgmt.confirm.radio": "Zmienić parametry radia na {params}?\n\nBłędne wartości mogą sprawić, że repeater stanie się nieosiągalny w sieci mesh. Zmiana działa po restarcie.",
"rptmgmt.confirm.reboot": "Zrestartować {name}?\n\nRepeater zniknie z sieci mesh na kilka sekund. Firmware nie odpowiada na to polecenie.",
"rptmgmt.copy_pubkey_title": "Kopiuj pełny klucz publiczny",
"rptmgmt.danger_zone": "Strefa ryzyka",
"rptmgmt.done": "Gotowe",
"rptmgmt.erase_fs_note": "Kasowanie systemu plików nie jest dostępne przez sieć mesh — firmware przyjmuje je wyłącznie na konsoli szeregowej USB (użyj flashera MeshCore).",
"rptmgmt.error_generic": "Coś poszło nie tak.",
"rptmgmt.failed": "Niepowodzenie",
"rptmgmt.invalid_pubkey": "Nieprawidłowy klucz publiczny repeatera w adresie URL.",
"rptmgmt.load_failed": "Nie udało się wczytać repeatera",
"rptmgmt.loc.hint": "Kliknij mapę, aby ustawić lokalizację repeatera.",
"rptmgmt.loc.title": "Wybierz lokalizację",
"rptmgmt.loc.use": "Użyj tej lokalizacji",
"rptmgmt.login.empty_password": "Hasło nie może być puste",
"rptmgmt.login.failed": "Logowanie nie powiodło się",
"rptmgmt.login.logged_in": "Zalogowano jako {role}",
"rptmgmt.login.modal_title": "Zaloguj się — {name}",
"rptmgmt.login.progress": "Logowanie do {name}… (na ścieżkach flood może potrwać do 60 s)",
"rptmgmt.login.prompt": "Podaj hasło repeatera, aby się zalogować.",
"rptmgmt.login.repeater_fallback": "repeatera",
"rptmgmt.login.retry_hint": "Sprawdź hasło i spróbuj ponownie.",
"rptmgmt.login.waiting": "Czekam na hasło…",
"rptmgmt.login_request_failed": "Żądanie logowania nie powiodło się",
"rptmgmt.logout": "Wyloguj",
"rptmgmt.logout_failed": "Wylogowanie nie powiodło się",
"rptmgmt.logout_title": "Wyloguj się z tego repeatera",
"rptmgmt.managed_repeater": "zarządzany repeater",
"rptmgmt.neigh.confirm_remove_all": "Usunąć wszystkich sąsiadów z {name}?\n\nLista jest przechowywana na repeaterze. Sąsiedzi pojawią się ponownie, gdy zostaną znowu usłyszani.",
"rptmgmt.neigh.count": {
"one": "{count} sąsiad",
"few": "{count} sąsiadów",
"many": "{count} sąsiadów",
"other": "{count} sąsiada"
},
"rptmgmt.neigh.discover": "Wykryj sąsiadów",
"rptmgmt.neigh.discover_sending": "Wysyłanie żądania wykrywania…",
"rptmgmt.neigh.discover_sent": "Żądanie wykrywania wysłane. Pobliskie repeatery mogą odpowiadać nawet do 60 sekund — odśwież listę, aby zobaczyć nowych sąsiadów.",
"rptmgmt.neigh.heard": "Słyszany",
"rptmgmt.neigh.heard_at": "Usłyszany: {time}",
"rptmgmt.neigh.list": "Lista",
"rptmgmt.neigh.loading": "Pobieranie sąsiadów z repeatera…",
"rptmgmt.neigh.loading_hint": "Długie listy są pobierane stronami i może to chwilę potrwać.",
"rptmgmt.neigh.map": "Mapa",
"rptmgmt.neigh.menu_title": "Akcje sąsiadów",
"rptmgmt.neigh.position": "Pozycja",
"rptmgmt.neigh.position_title": "Pozycja znana",
"rptmgmt.neigh.pubkey": "Klucz publiczny",
"rptmgmt.neigh.refresh_title": "Odśwież sąsiadów",
"rptmgmt.neigh.remove_all": "Usuń wszystkich sąsiadów",
"rptmgmt.neigh.remove_btn": "Usuń z listy",
"rptmgmt.neigh.remove_note": "Lista jest przechowywana na repeaterze — usunięty sąsiad wróci, gdy zostanie znowu usłyszany.",
"rptmgmt.neigh.removed_all": "Lista sąsiadów wyczyszczona.",
"rptmgmt.neigh.removed_one": "{name} usunięty z listy sąsiadów.",
"rptmgmt.neigh.removing": "Usuwanie…",
"rptmgmt.neigh.repeater": "Repeater",
"rptmgmt.neigh.row_hint": "Wybierz sąsiada, aby zobaczyć szczegóły.",
"rptmgmt.neigh.showing": "(pokazano {count})",
"rptmgmt.neighbours_failed": "Nie udało się pobrać sąsiadów",
"rptmgmt.neighbours_none": "Nie zgłoszono jeszcze żadnych sąsiadów.",
"rptmgmt.neighbours_none_hint": "Sąsiedzi są poznawani z advertów repeaterów zero-hop.",
"rptmgmt.no_result": "Brak wyniku",
"rptmgmt.not_on_device": "Ten repeater nie jest zapisany na urządzeniu — nie można nim zarządzać.",
"rptmgmt.poweroff.no_name": "Ten repeater nie ma zapisanej nazwy, więc nie można potwierdzić wyłączenia.",
"rptmgmt.poweroff.prompt": "Wpisz nazwę repeatera ({name}), aby potwierdzić:",
"rptmgmt.poweroff.title": "Wyłącz repeater",
"rptmgmt.poweroff.warning": "Tej operacji nie da się cofnąć przez sieć mesh. Repeater pozostanie wyłączony, dopóki ktoś nie włączy go fizycznie.",
"rptmgmt.pubkey_copied": "Klucz publiczny skopiowany",
"rptmgmt.read_failed": "Nie udało się odczytać",
"rptmgmt.reboot_required": "wymagany restart",
"rptmgmt.reg.action_failed": "Polecenie regionu nie powiodło się",
"rptmgmt.reg.action_ok": "Gotowe",
"rptmgmt.reg.add": "Dodaj region",
"rptmgmt.reg.added": "Region {name} został dodany",
"rptmgmt.reg.added_under": "Region {name} został dodany wewnątrz {parent}",
"rptmgmt.reg.allow_flood": "Zezwól na flood",
"rptmgmt.reg.confirm_leave": "Masz zmiany regionów, które nie zostały jeszcze zapisane na repeaterze.\n\nDziałają już teraz, ale zostaną utracone po jego restarcie. Wyjść bez zapisywania?",
"rptmgmt.reg.confirm_remove": "Usunąć region {name} z tego repeatera?\n\nRegionu, który ma pod sobą zagnieżdżone regiony, nie można usunąć.",
"rptmgmt.reg.default_current": "Ten repeater nadaje obecnie własne pakiety flood w zakresie {name}.",
"rptmgmt.reg.default_current_none": "Ten repeater nadaje obecnie własne pakiety flood bez zakresu.",
"rptmgmt.reg.default_help": "Region, którym ten repeater oznacza wysyłane przez siebie pakiety flood. Przekażą je dalej tylko repeatery, które zezwalają na ten region. Zapisywane na repeaterze od razu — nie wymaga przycisku Zapisz.",
"rptmgmt.reg.default_none": "— brak (bez zakresu) —",
"rptmgmt.reg.default_pick_first": "Najpierw wybierz domyślny zakres albo odśwież, aby odczytać obecny.",
"rptmgmt.reg.default_saved": "Domyślny zakres zaktualizowany",
"rptmgmt.reg.default_title": "Domyślny zakres",
"rptmgmt.reg.default_unknown": "— nie udało się odczytać —",
"rptmgmt.reg.default_unread": "Nie udało się odczytać domyślnego zakresu: {error}",
"rptmgmt.reg.deny_flood": "Zablokuj flood",
"rptmgmt.reg.dirty_note": "Niezapisane zmiany. Już działają, ale repeater zapomni o nich po restarcie — użyj Zapisz, aby je zachować.",
"rptmgmt.reg.err_char": "Ten znak jest niedozwolony w nazwie regionu.",
"rptmgmt.reg.err_empty": "Podaj nazwę regionu.",
"rptmgmt.reg.err_long": "Nazwa zbyt długa (maks. {max} znaków).",
"rptmgmt.reg.flood_allowed": "Flood dozwolony",
"rptmgmt.reg.flood_denied": "Flood zablokowany",
"rptmgmt.reg.home": "macierzysty",
"rptmgmt.reg.intro": "Które pakiety z zakresem regionu ten repeater przekazuje dalej. Region ustawiony na Flood dozwolony jest powtarzany, a ustawiony na Flood zablokowany — odrzucany. Zmiany działają od razu, ale do czasu zapisania istnieją tylko w pamięci.",
"rptmgmt.reg.menu_title": "Akcje regionu",
"rptmgmt.reg.move": "Przenieś do innego regionu",
"rptmgmt.reg.move_confirm": "Przenieś",
"rptmgmt.reg.move_help": "Wybierz region, wewnątrz którego ma się znaleźć, albo najwyższy poziom. Zagnieżdżone w nim regiony przenoszą się razem z nim i zachowują swój układ.",
"rptmgmt.reg.move_label": "Przenieś {name} do",
"rptmgmt.reg.moved": "Region {name} został przeniesiony do {parent}",
"rptmgmt.reg.moved_flood_lost": "Region {name} został przeniesiony, ale nie udało się przywrócić ustawienia Flood zablokowany i obecnie zezwala na flood. Ustaw je ponownie.",
"rptmgmt.reg.moved_root": "Region {name} został przeniesiony na najwyższy poziom",
"rptmgmt.reg.name_help": "Dozwolone są litery, cyfry oraz - $ #; bez spacji. Maks. 30 znaków.",
"rptmgmt.reg.name_placeholder": "Nazwa regionu, np. pl",
"rptmgmt.reg.none": "Ten repeater nie ma skonfigurowanych regionów.",
"rptmgmt.reg.parent": "Wewnątrz",
"rptmgmt.reg.parent_help": "Zagnieźdź nowy region wewnątrz istniejącego albo zostaw go na najwyższym poziomie.",
"rptmgmt.reg.parent_root": "— najwyższy poziom —",
"rptmgmt.reg.read_failed": "Nie udało się odczytać regionów",
"rptmgmt.reg.reading": "Odczyt regionów z repeatera…",
"rptmgmt.reg.refresh_title": "Odczytaj listę regionów z repeatera ponownie",
"rptmgmt.reg.remove": "Usuń region",
"rptmgmt.reg.row_desc": "Dla których regionów ten repeater przekazuje flood",
"rptmgmt.reg.save": "Zapisz",
"rptmgmt.reg.save_failed": "Nie udało się zapisać regionów",
"rptmgmt.reg.save_title": "Zapisz listę regionów na repeaterze, aby przetrwała restart",
"rptmgmt.reg.saved": "Regiony zapisane na repeaterze",
"rptmgmt.reg.set_home": "Ustaw jako region macierzysty",
"rptmgmt.reg.title": "Regiony",
"rptmgmt.reg.truncated": "Repeater wysłał więcej regionów, niż mieści się w jednej odpowiedzi, więc ta lista może być niepełna. Użyj CLI (`region list allowed`), aby zobaczyć resztę.",
"rptmgmt.reg.wildcard": "Pakiety bez zakresu regionu",
"rptmgmt.request_failed": "Żądanie nie powiodło się",
"rptmgmt.set.advanced": "Zaawansowane",
"rptmgmt.set.advert": "Advert",
"rptmgmt.set.advert_interval": "Lokalny interwał advert (minuty)",
"rptmgmt.set.advert_interval_help": "Firmware przyjmuje 60–240 minut lub 0, aby wyłączyć.",
"rptmgmt.set.agc_reset": "Interwał resetu AGC",
"rptmgmt.set.agc_reset_help": "Wielokrotność 4; 0 wyłącza okresowe resety AGC.",
"rptmgmt.set.allow_read_only": "Zezwól na dostęp gościa (tylko odczyt)",
"rptmgmt.set.allow_read_only_help": "Pozwala zalogować się hasłem gościa w trybie tylko do odczytu: taki użytkownik widzi status i ustawienia, ale nic nie zmieni.",
"rptmgmt.set.apply_count": "Zastosuj ({count})",
"rptmgmt.set.basic": "Podstawowe",
"rptmgmt.set.cad": "Wykrywanie aktywności kanału (CAD)",
"rptmgmt.set.cad_help": "Radio sprawdza przed nadawaniem, czy kanał jest zajęty, i wstrzymuje transmisję, jeśli tak. Działa niezależnie od progu zakłóceń. Wymaga firmware v1.17 lub nowszego.",
"rptmgmt.set.direct_txdelay": "Współczynnik opóźnienia TX direct (0–2)",
"rptmgmt.set.direct_txdelay_help": "To samo losowe opóźnienie, ale dla pakietów przekazywanych znaną ścieżką direct zamiast floodem. Zwykle niższe niż przy floodzie, bo pakiet direct dotyczy tylko repeaterów na tej jednej trasie.",
"rptmgmt.set.dutycycle": "Duty cycle (%)",
"rptmgmt.set.dutycycle_help": "Największy udział czasu, jaki repeater może poświęcić na nadawanie, w procentach. 100 oznacza brak ograniczenia; niższe wartości sprawiają, że obciążony repeater wstrzymuje pakiety. To ustawienie zastąpiło dawny współczynnik czasu antenowego (af).",
"rptmgmt.set.features": "Funkcje",
"rptmgmt.set.flood_advert_interval": "Interwał flood advert (godziny)",
"rptmgmt.set.flood_advert_interval_help": "Jak często repeater rozsyła floodem swój advert po całej sieci, w godzinach. Firmware przyjmuje 3–168 albo 0, aby wyłączyć adverty flood. Każdy taki advert dociera do całej sieci, więc krótki interwał kosztuje czas antenowy wszystkich.",
"rptmgmt.set.flood_max": "Maks. liczba hopów flood",
"rptmgmt.set.flood_max_advert": "Maks. liczba hopów flood (adverty)",
"rptmgmt.set.flood_max_advert_help": "Limit hopów stosowany wyłącznie do adverta rozsyłanego trybem flood. Domyślnie 8.",
"rptmgmt.set.flood_max_help": "Limit hopów dla każdego pakietu flood przekazywanego przez repeater: pakiet, który przeszedł już tyle hopów, jest odrzucany zamiast przekazany. Domyślnie 64. Dwa węższe limity poniżej działają dodatkowo.",
"rptmgmt.set.flood_max_unscoped": "Maks. liczba hopów flood (bez zakresu)",
"rptmgmt.set.flood_max_unscoped_help": "Limit hopów dla pakietów flood bez przypisanego zakresu regionu. Domyślnie 64.",
"rptmgmt.set.guest_password": "Hasło gościa",
"rptmgmt.set.guest_password_help": "Hasło do logowania gościa w trybie tylko do odczytu.",
"rptmgmt.set.int_thresh": "Próg zakłóceń",
"rptmgmt.set.int_thresh_help": "Próg zakłóceń w dB ponad zmierzonym poziomem szumów: dopóki repeater słyszy coś silniejszego, uznaje kanał za zajęty i czeka z nadawaniem. 0 wyłącza tę kontrolę. Działa niezależnie od CAD.",
"rptmgmt.set.intro": "Nic nie jest odczytywane z repeatera, dopóki o to nie poprosisz — każde pole to jedna podróż przez sieć mesh. Użyj przycisku obok pola, aby odczytać to pole, albo Odczytaj wszystkie pola dla całej sekcji. Wartości pokazane bez świeżego odczytu pochodzą z poprzedniego odczytu.",
"rptmgmt.set.lat": "Szerokość geogr.",
"rptmgmt.set.lat_help": "Szerokość geograficzna w stopniach dziesiętnych, rozgłaszana w advertach repeatera i używana do umieszczenia go na mapach. Przycisk Wybierz z mapy wypełnia to pole kliknięciem w mapę.",
"rptmgmt.set.load_errors": {
"one": "Nie udało się wczytać {count} pola — Odśwież ponawia całą sekcję.",
"few": "Nie udało się wczytać {count} pól — Odśwież ponawia całą sekcję.",
"many": "Nie udało się wczytać {count} pól — Odśwież ponawia całą sekcję.",
"other": "Nie udało się wczytać {count} pola — Odśwież ponawia całą sekcję."
},
"rptmgmt.set.location": "Lokalizacja",
"rptmgmt.set.lon": "Długość geogr.",
"rptmgmt.set.lon_help": "Długość geograficzna w stopniach dziesiętnych, rozgłaszana w advertach repeatera i używana do umieszczenia go na mapach. Przycisk Wybierz z mapy wypełnia to pole kliknięciem w mapę.",
"rptmgmt.set.loop_detect": "Wykrywanie pętli",
"rptmgmt.set.loop_detect_help": "Odrzuca pakiety flood, które wracają do tego węzła w kółko — tak z tego miejsca wygląda pętla routingu między sąsiednimi repeaterami. Ostrzejsze poziomy wyłapują pętlę szybciej, ale też szybciej odrzucą prawidłowy pakiet, który po prostu przebył długą drogę.",
"rptmgmt.set.map_pick": "Wybierz z mapy",
"rptmgmt.set.map_pick_title": "Najpierw odczytaj szerokość i długość, potem wskaż punkt",
"rptmgmt.set.multi_acks": "Wysyłaj wiele ACK",
"rptmgmt.set.multi_acks_help": "Ile potwierdzeń (ACK) repeater odsyła za dostarczony pakiet. 0 wysyła jedno, 1 wysyła je dwukrotnie — częściej dochodzi, ale kosztem dodatkowego czasu antenowego.",
"rptmgmt.set.name": "Nazwa repeatera",
"rptmgmt.set.name_help": "Nazwa, którą repeater rozgłasza w sieci mesh i pod którą widnieje na listach kontaktów. Firmware odrzuca nietypowe znaki. Inni zobaczą nową nazwę, gdy repeater wyśle kolejny advert.",
"rptmgmt.set.network": "Kondycja sieci",
"rptmgmt.set.operator": "Informacje o operatorze",
"rptmgmt.set.owner_info": "Dane właściciela",
"rptmgmt.set.owner_info_help": "Dowolny tekst z danymi operatora / kontaktem, widoczny dla klientów. Można użyć wielu linii.",
"rptmgmt.set.password": "Hasło administratora",
"rptmgmt.set.password_help": "Tylko do zapisu — bieżące hasło nigdy nie jest pokazywane. Zmiana nie wylogowuje aktywnych sesji.",
"rptmgmt.set.path_hash_mode": "Tryb hasha ścieżki (0–2)",
"rptmgmt.set.path_hash_mode_help": "Liczba bajtów na hop w ścieżkach routingu budowanych przez ten repeater. 0 = 1 bajt (najkrótsze ścieżki, najwięcej kolizji prefiksów), 1 = 2 bajty, 2 = 3 bajty (najdłuższe, najmniej kolizji).",
"rptmgmt.set.pw_unchanged_ph": "(bez zmian)",
"rptmgmt.set.radio": "Radio",
"rptmgmt.set.radio_note": "Częstotliwość, bandwidth, SF i CR działają po restarcie. Moc TX działa natychmiast.",
"rptmgmt.set.radio_params": "Parametry radia",
"rptmgmt.set.radio_params_help": "Częstotliwość w MHz, pasmo w kHz, współczynnik rozpraszania (SF) i kodowania (CR). Muszą dokładnie odpowiadać reszcie sieci, inaczej repeater stanie się dla niej niewidoczny — także dla Ciebie. Limity firmware: 150–2500 MHz, 7–500 kHz, SF 5–12, CR 5–8. Działa po restarcie.",
"rptmgmt.set.read_all": "Odczytaj wszystkie pola",
"rptmgmt.set.read_field_title": "Odczytaj to pole z repeatera",
"rptmgmt.set.reading": "Odczyt z repeatera… (jedna podróż przez sieć na pole)",
"rptmgmt.set.reboot_note": "Część zmian działa dopiero po restarcie — użyj Akcje → Restart.",
"rptmgmt.set.repeat": "Przekazuj pakiety",
"rptmgmt.set.repeat_help": "Główny przełącznik przekazywania. Wyłączony sprawia, że węzeł w ogóle przestaje przekazywać cudze pakiety — nadal wysyła własne adverty i nadal odpowiada na komendy administracyjne, po prostu przestaje być repeaterem.",
"rptmgmt.set.rxdelay": "Baza opóźnienia RX (0–20)",
"rptmgmt.set.rxdelay_help": "Rozsuwa w czasie przekazywanie pakietów flood według jakości odbioru — węzeł, który odebrał pakiet dobrze, przekazuje go wcześniej, a ten na granicy zasięgu czeka i pomija przekazanie, jeśli lepiej ustawiony repeater zdążył pierwszy. 0 wyłącza tę funkcję i jest domyślną wartością firmware.",
"rptmgmt.set.rxgain": "Wzmocnienie RX (boosted gain)",
"rptmgmt.set.rxgain_help": "Podbite wzmocnienie LNA przy odbiorze: nieco większa czułość kosztem trochę wyższego poboru prądu. Nie ma go każdy układ radiowy — węzły bez tej funkcji zgłaszają pole jako nieobsługiwane.",
"rptmgmt.set.stale_field_title": "Z ostatniego odczytu — może być nieaktualne",
"rptmgmt.set.stale_note": "Powyższe wartości odczytano {when} i mogą już nie odpowiadać temu, co ma repeater. Odczytaj pole ponownie, aby zobaczyć jego aktualną wartość.",
"rptmgmt.set.tx": "Moc TX (dBm)",
"rptmgmt.set.tx_help": "Moc nadawania w dBm. Użyteczny zakres zależy od płytki i od limitów mocy obowiązujących w miejscu, gdzie stoi repeater. Działa natychmiast.",
"rptmgmt.set.txdelay": "Współczynnik opóźnienia TX (0–2)",
"rptmgmt.set.txdelay_help": "Losowe opóźnienie przed przekazaniem pakietu flood, jako wielokrotność czasu antenowego tego pakietu. Rozsuwa w czasie sąsiednie repeatery, żeby nie odpowiadały w tej samej chwili i nie kolidowały. 0 przekazuje natychmiast.",
"rptmgmt.settings_apply_failed": "Nie udało się zastosować ustawień",
"rptmgmt.settings_read_failed": "Nie udało się odczytać ustawień",
"rptmgmt.status.battery": "Bateria",
"rptmgmt.status.clock": "Zegar",
"rptmgmt.status.clock_fetch": "pobierz",
"rptmgmt.status.duplicates": "Duplikaty",
"rptmgmt.status.events": "Zdarzenia debug / błędów",
"rptmgmt.status.last_rssi": "Ostatni RSSI",
"rptmgmt.status.last_snr": "Ostatni SNR",
"rptmgmt.status.loading": "Pobieranie statusu z repeatera…",
"rptmgmt.status.noise": "Poziom szumów",
"rptmgmt.status.packets": "Statystyki pakietów",
"rptmgmt.status.queue": "Długość kolejki",
"rptmgmt.status.radio": "Statystyki radia",
"rptmgmt.status.received": "Odebrane",
"rptmgmt.status.refresh_title": "Odśwież status",
"rptmgmt.status.rx_airtime": "Czas antenowy RX",
"rptmgmt.status.rx_errors": "Błędy RX",
"rptmgmt.status.sent": "Wysłane",
"rptmgmt.status.system": "Informacje systemowe",
"rptmgmt.status.tx_airtime": "Czas antenowy TX",
"rptmgmt.status.uptime": "Czas pracy",
"rptmgmt.status.utilization": "Wykorzystanie kanału",
"rptmgmt.status_failed": "Nie udało się pobrać statusu",
"rptmgmt.tel.channel": "Kanał {n}",
"rptmgmt.tel.device_suffix": "urządzenie",
"rptmgmt.tel.loading": "Pobieranie telemetrii z repeatera…",
"rptmgmt.tel.loading_hint": "Ścieżki wielohopowe mogą zająć nawet minutę.",
"rptmgmt.tel.mcu_temp": "Temperatura MCU",
"rptmgmt.tel.refresh_title": "Odśwież telemetrię",
"rptmgmt.telemetry_failed": "Nie udało się pobrać telemetrii",
"rptmgmt.telemetry_none": "Brak danych telemetrycznych.",
"rptmgmt.this_repeater": "Ten repeater",
"rptmgmt.title": "Zarządzanie repeaterem",
"rptmgmt.toast.admin_required": "To narzędzie wymaga logowania jako administrator",
"rptmgmt.toast.applied": "Ustawienia zastosowane",
"rptmgmt.toast.applied_reboot": "Zastosowano — część zmian wymaga restartu",
"rptmgmt.toast.apply_failed_count": {
"one": "{count} ustawienia nie udało się zastosować",
"few": "{count} ustawień nie udało się zastosować",
"many": "{count} ustawień nie udało się zastosować",
"other": "{count} ustawienia nie udało się zastosować"
},
"rptmgmt.toast.apply_partial_unsupported": {
"one": "Zastosowano — {count} ustawienie nie jest obsługiwane przez ten repeater",
"few": "Zastosowano — {count} ustawienia nie są obsługiwane przez ten repeater",
"many": "Zastosowano — {count} ustawień nie jest obsługiwanych przez ten repeater",
"other": "Zastosowano — {count} ustawienia nie są obsługiwane przez ten repeater"
},
"rptmgmt.toast.apply_unsupported_count": {
"one": "{count} ustawienie nie jest obsługiwane przez ten repeater — nic nie zostało zastosowane",
"few": "{count} ustawienia nie są obsługiwane przez ten repeater — nic nie zostało zastosowane",
"many": "{count} ustawień nie jest obsługiwanych przez ten repeater — nic nie zostało zastosowane",
"other": "{count} ustawienia nie są obsługiwane przez ten repeater — nic nie zostało zastosowane"
},
"rptmgmt.toast.field_empty": "„{field}” nie może być puste",
"rptmgmt.toast.password_synced": "Zapisane hasło zaktualizowane na nowe",
"rptmgmt.tool_coming": "Narzędzie <strong>{tool}</strong> pojawi się na późniejszym etapie.",
"rptmgmt.tools.actions": "Akcje",
"rptmgmt.tools.actions_desc": "Advert, synchronizacja zegara, restart, wyłączenie",
"rptmgmt.tools.cli": "CLI",
"rptmgmt.tools.cli_desc": "Wysyłaj polecenia tekstowe do repeatera",
"rptmgmt.tools.neighbors": "Sąsiedzi",
"rptmgmt.tools.neighbors_desc": "Słyszane repeatery zero-hop",
"rptmgmt.tools.settings": "Ustawienia",
"rptmgmt.tools.settings_desc": "Konfiguruj parametry repeatera",
"rptmgmt.tools.status": "Status",
"rptmgmt.tools.status_desc": "Bateria, radio i statystyki pakietów",
"rptmgmt.tools.telemetry": "Telemetria",
"rptmgmt.tools.telemetry_desc": "Kanały czujników (Cayenne LPP)",
"rptmgmt.tools_heading": "Narzędzia zarządzania",
"rptmgmt.unsupported": "nieobsługiwane",
"rptmgmt.unsupported_hint": "Firmware lub sprzęt tego repeatera nie ma tego ustawienia.",
"rptmgmt.updated_ago": "Zaktualizowano {time} temu",
"rptmgmt.updated_just_now": "Zaktualizowano przed chwilą",
"search.count": {
"one": "{count} wynik",
"few": "{count} wyniki",
"many": "{count} wyników",
"other": "{count} wyniku"
},
"search.dm_received": "(odebrana)",
"search.dm_sent": "(wysłana)",
"search.empty": "Szukaj we wszystkich wiadomościach kanałowych i prywatnych",
"search.failed": "Wyszukiwanie nie powiodło się. Spróbuj ponownie.",
"search.fts5_ref": "Pełna dokumentacja składni FTS5",
"search.help_title": "Pomoc do składni wyszukiwania",
"search.min_chars": "Wpisz co najmniej 2 znaki, aby wyszukać",
"search.no_results": "Brak wyników dla „{query}”",
"search.ph": "Szukaj we wszystkich wiadomościach...",
"search.searching": "Wyszukiwanie...",
"search.special_chars": "Znaki specjalne (<code>. , - :</code>) należy ująć w cudzysłów.",
"search.tip_and": "wiadomości zawierające oba słowa",
"search.tip_not": "hello, ale bez world",
"search.tip_or": "dowolne z tych słów",
"search.tip_phrase": "dokładna fraza",
"search.tip_prefix": "dopasowanie przedrostka (hello, hellas...)",
"search.tips": "Wskazówki wyszukiwania:",
"settings.analyzer.intro": "Dodaj usługi MeshCore Analyzer do wyboru po kliknięciu <i class=\"bi bi-clipboard-data\"></i> pod wiadomością z czatu grupowego. URL musi zawierać znacznik <code>{packetHash}</code> — jest zastępowany hashem pakietu wiadomości.",
"settings.analyzer.services": "Usługi analizatorów",
"settings.analyzer.tip": "Wskazówka: oznacz gwiazdką jeden analizator, aby używać go bez pytania. Usuń gwiazdkę, aby pytać przy każdym kliknięciu. Wyłączone analizatory zostają na liście, ale są ukryte w oknie wyboru.",
"settings.appear.btn_size": "Rozmiar przycisku (px)",
"settings.appear.item": "Pozycja",
"settings.appear.language": "Język",
"settings.appear.language_hint": "Dotyczy tej przeglądarki i staje się domyślnym ustawieniem serwera dla pozostałych. Dodaj własny, wrzucając katalog tłumaczeń do folderu translations — zobacz <code>docs/translations.md</code>.",
"settings.appear.place_fab": "Szybki dostęp",
"settings.appear.place_menu": "Menu główne",
"settings.appear.placement": "Umieszczenie",
"settings.appear.placement_aria": "Umieszczenie: {item}",
"settings.appear.position": "Położenie",
"settings.appear.quick_access": "Przyciski szybkiego dostępu",
"settings.appear.reload_title": "Przeskanuj ponownie folder tłumaczeń",
"settings.appear.reset_default": "Przywróć domyślne",
"settings.appear.show_fab": "Pokaż przyciski szybkiego dostępu",
"settings.appear.show_fab_hint": "Domyślnie wyłączone. Gdy wyłączone, wszystkie pozycje pojawiają się w menu głównym.",
"settings.appear.spacing": "Odstęp (px)",
"settings.appear.theme": "Motyw",
"settings.appear.theme_dark": "Ciemny",
"settings.appear.theme_dark_desc": "Łagodny dla oczu, głęboki granat",
"settings.appear.theme_light": "Jasny",
"settings.appear.theme_light_desc": "Klasyczny jasny interfejs",
"settings.appear.toast.reload_failed": "Nie udało się przeładować tłumaczeń",
"settings.appear.toast.reloaded": "Przeładowano tłumaczenia: {names}",
"settings.chat.autoclose": "Zamknij automatycznie po (s)",
"settings.chat.autoclose_help": "Ile sekund do automatycznego zamknięcia popupu trasy",
"settings.chat.no_autoclose": "Nie zamykaj automatycznie",
"settings.chat.no_autoclose_help": "Popup pozostaje otwarty, dopóki nie dotkniesz poza nim",
"settings.chat.quote": "Cytowanie",
"settings.chat.quote_len": "Długość cytatu (bajty)",
"settings.chat.quote_len_help": "Domyślna maks. liczba bajtów UTF-8 dla skróconych cytatów",
"settings.chat.route_popup": "Popup trasy",
"settings.chat.route_popup_desc": "Popup pokazywany po dotknięciu linii Trasa pod wiadomością. Dotyczy także DM-ów.",
"settings.contacts.auto_ignore": "Automatycznie dodawaj nowe kontakty do \"Ignorowanych\"",
"settings.contacts.auto_ignore_help": "Każdy nowy advert jest automatycznie oznaczany jako ignorowany — bez powiadomień, bez plakietki. Kontakty nadal pojawiają się w Istniejących kontaktach (pamięć) i można je przenieść przyciskiem \"Na urządzenie\". Wymaga włączonego zatwierdzania ręcznego.",
"settings.contacts.manual_approval": "Zatwierdzanie ręczne włączone",
"settings.contacts.manual_approval_help": "Gdy włączone, nowe kontakty muszą zostać ręcznie zatwierdzone, zanim będą mogły komunikować się z Twoim węzłem",
"settings.contacts.suppress_notifs": "Wycisz powiadomienia o nowych advertach",
"settings.contacts.suppress_notifs_help": "Ukryj plakietkę nad Zarządzaniem kontaktami oraz powiadomienie przeglądarki, gdy pojawiają się nowe oczekujące kontakty. Sama lista oczekujących kontaktów nadal je pokazuje. Wymaga włączonego zatwierdzania ręcznego.",
"settings.device.bw": "Bandwidth (kHz)",
"settings.device.confirm.radio": "Zmiana ustawień radia rozłączy urządzenie z siecią mesh. Kontynuować?",
"settings.device.cr": "Coding Rate",
"settings.device.freq": "Częstotliwość (MHz)",
"settings.device.hash_1b": "1 bajt (domyślnie)",
"settings.device.hash_2b": "2 bajty",
"settings.device.hash_3b": "3 bajty",
"settings.device.load_preset": "Wczytaj preset...",
"settings.device.name_ph": "Nazwa urządzenia",
"settings.device.path_hash_mode": "Tryb hasha ścieżki",
"settings.device.path_hash_mode_help": "Bajtów na hop w ścieżkach routingu. 1B = najkrótsza ścieżka, więcej kolizji; 3B = najdłuższa, najmniej kolizji.",
"settings.device.public_info": "Informacje publiczne",
"settings.device.radio": "Ustawienia radia",
"settings.device.sf": "Spreading Factor",
"settings.device.share_pos": "Udostępniaj pozycję w advert",
"settings.device.share_pos_help": "Dołącz współrzędne GPS do advertu urządzenia",
"settings.device.toast.cr_invalid": "Coding Rate musi być z zakresu 5-8",
"settings.device.toast.freq_invalid": "Nieprawidłowa częstotliwość",
"settings.device.toast.info_save_failed": "Nie udało się zapisać informacji publicznych",
"settings.device.toast.info_saved": "Informacje publiczne zapisane",
"settings.device.toast.name_empty": "Nazwa urządzenia nie może być pusta",
"settings.device.toast.radio_save_failed": "Nie udało się zapisać ustawień radia",
"settings.device.toast.radio_saved": "Ustawienia radia zapisane",
"settings.device.toast.sf_invalid": "Spreading Factor musi być z zakresu 5-12",
"settings.device.toast.tx_invalid": "Moc TX musi być z zakresu 0-30 dBm",
"settings.device.tx_power": "Moc TX (dBm)",
"settings.diag.captures": "Zapisane zrzuty",
"settings.diag.debug_logs": "Zapisuj szczegółowe logi",
"settings.diag.debug_logs_hint": "Na czas nagrywania podnosi poziom logów do DEBUG. Zostaw włączone — większość tego, czego potrzebuje analiza, zapisuje się dopiero na tym poziomie.",
"settings.diag.duration": "Czas nagrania",
"settings.diag.indicator": "Nagrywanie",
"settings.diag.indicator_title": "Trwa zrzut diagnostyczny. Zatrzymasz go w Ustawieniach → Diagnostyka.",
"settings.diag.intro": "Zapisuje do pliku to, co aplikacja odbiera z radia, abyś mógł wysłać go opiekunowi projektu. Przydaje się, gdy coś nie działa, a zrzut ekranu nie pokazuje dlaczego — brak plakietki z repeaterami, wiadomości, które nie docierają.",
"settings.diag.note": "Notatka",
"settings.diag.note_ph": "np. brak plakietki repeaterów na #general",
"settings.diag.privacy": "Zrzut zawiera <strong>treść wszystkich wiadomości odebranych w czasie nagrywania</strong>, a także nazwy i klucze publiczne kontaktów. Wyślij go tylko komuś, komu ufasz.",
"settings.diag.recording": "Nagrywanie…",
"settings.diag.reproduce_hint": "Teraz odtwórz problem — wyślij wiadomość, która się psuje, a potem wróć tutaj i zatrzymaj nagrywanie.",
"settings.diag.sharing": "Wysyłka",
"settings.diag.sharing_hint": "Opcjonalne. Z tokenem od opiekuna projektu zrzut można wysłać prosto stąd; bez niego pobierz plik i wyślij go samodzielnie.",
"settings.diag.start": "Rozpocznij nagrywanie",
"settings.diag.stop": "Zatrzymaj i zapisz",
"settings.diag.upload_token": "Token wysyłki",
"settings.diag.upload_token_ph": "wklej otrzymany token",
"settings.diag.upload_url": "Adres wysyłki",
"settings.iface.breakpoint": "Próg szerokości paska bocznego (px)",
"settings.iface.breakpoint_help": "Domyślnie: 992. Zakres: 600-2000.",
"settings.iface.breakpoint_reset_title": "Przywróć domyślną (992)",
"settings.iface.layout": "Układ",
"settings.iface.layout_desc": "Szerokość okna, powyżej której lista kanałów/kontaktów pokazuje się jako pasek boczny. Poniżej zwija się do listy rozwijanej na górze ekranu. Zapisywane dla każdego urządzenia (przeglądarki).",
"settings.iface.pos_bottom_left": "Lewy dolny",
"settings.iface.pos_bottom_right": "Prawy dolny",
"settings.iface.pos_center": "Na środku",
"settings.iface.pos_top_left": "Lewy górny",
"settings.iface.pos_top_right": "Prawy górny",
"settings.iface.position": "Pozycja na ekranie",
"settings.iface.toast.autoclose_invalid": "Nieprawidłowy czas automatycznego zamknięcia",
"settings.iface.toast_autoclose_help": "Ile sekund do automatycznego zamknięcia powiadomienia",
"settings.iface.toast_desc": "Steruje małymi powiadomieniami po akcjach (np. \"Advert wysłany\", błędy).",
"settings.iface.toast_no_autoclose_help": "Powiadomienia pozostają, dopóki nie zamkniesz ich przyciskiem",
"settings.msg.direct_header": "Gdy ścieżka jest znana (DIRECT)",
"settings.msg.direct_interval_help": "Ile sekund czekać między próbami direct",
"settings.msg.direct_retries": "Próby direct",
"settings.msg.direct_retries_help": "Próby znaną ścieżką przed przełączeniem na flood",
"settings.msg.flood_header": "Gdy brak ścieżki (FLOOD)",
"settings.msg.flood_interval_help": "Ile sekund czekać między próbami flood",
"settings.msg.flood_retries": "Próby flood",
"settings.msg.flood_retries_help": "Próby flood po wyczerpaniu prób direct (gdy brak skonfigurowanych ścieżek)",
"settings.msg.grace": "Okres karencji (s)",
"settings.msg.grace_help": "Czekaj na spóźnione ACK po wyczerpaniu wszystkich prób",
"settings.msg.interval": "Interwał (s)",
"settings.msg.intro": "Ponowienia liczone są po pierwszym wysłaniu, np. 3 ponowienia = 4 próby łącznie.",
"settings.msg.max_retries": "Maks. prób",
"settings.msg.max_retries_help": "Próby flood (używane także po rotacji ścieżki)",
"settings.msg.other": "Inne",
"settings.notif.blocked": "Zablokowane",
"settings.notif.desc": "Powiadomienia przeglądarki pojawiają się, gdy aplikacja jest ukryta lub w tle.",
"settings.notif.profiles.add": "Dodaj profil",
"settings.notif.profiles.add_rule": "Dodaj regułę",
"settings.notif.profiles.confirm.delete": "Usunąć profil „{name}”?",
"settings.notif.profiles.confirm.delete_in_use": "Usunąć profil „{name}”? Kanały, które go używają ({count}), wrócą do powiadamiania o każdej wiadomości.",
"settings.notif.profiles.desc": "Profil zawęża to, co na kanale liczy się jako nowość: tylko wiadomości pasujące do jego reguł podbijają licznik nieprzeczytanych i wywołują powiadomienie. Przypisuje się go do kanału dzwoneczkiem w Zarządzaniu kanałami. Wiadomości bezpośrednie powiadamiają zawsze.",
"settings.notif.profiles.edit": "Edytuj profil",
"settings.notif.profiles.empty": "Brak profili. Kliknij „Dodaj profil”, aby utworzyć.",
"settings.notif.profiles.in_use": {
"one": "{count} kanał",
"few": "{count} kanały",
"many": "{count} kanałów",
"other": "{count} kanału"
},
"settings.notif.profiles.load_failed": "Nie udało się wczytać profili",
"settings.notif.profiles.match_all": "pasują wszystkie reguły",
"settings.notif.profiles.match_any": "pasuje dowolna reguła",
"settings.notif.profiles.match_label": "Powiadamiaj, gdy",
"settings.notif.profiles.name_ph": "np. Wzmianki i webui",
"settings.notif.profiles.name_required": "Nazwa jest wymagana",
"settings.notif.profiles.rule.mention": "Wspomina mnie",
"settings.notif.profiles.rule.mention_hint": "szuka „{name}”",
"settings.notif.profiles.rule.no_name": "nazwa urządzenia nieznana — nie dopasuje nic, dopóki urządzenie jej nie zgłosi",
"settings.notif.profiles.rule.sender": "Nazwa nadawcy zawiera",
"settings.notif.profiles.rule.text": "Wiadomość zawiera",
"settings.notif.profiles.rule.value_ph": "tekst lub część wyrazu",
"settings.notif.profiles.rule_value_required": "Każda reguła tekstowa wymaga tekstu",
"settings.notif.profiles.rules": "Reguły",
"settings.notif.profiles.rules_hint": "Reguły tekstowe dopasowują wyraz lub dowolną jego część.",
"settings.notif.profiles.rules_required": "Dodaj co najmniej jedną regułę",
"settings.notif.profiles.summary.all": "wszystkie: {rules}",
"settings.notif.profiles.summary.any": "dowolna z: {rules}",
"settings.notif.profiles.summary.mention": "wspomina mnie",
"settings.notif.profiles.summary.sender": "od „{value}”",
"settings.notif.profiles.summary.text": "zawiera „{value}”",
"settings.notif.profiles.tip": "Dopasowanie ignoruje wielkość liter i znaki diakrytyczne, więc <code>krakow</code> znajdzie też <em>Kraków</em>. Wzmianka to nazwa Twojego urządzenia w dowolnym miejscu wiadomości — zarówno jako <code>@[nazwa]</code>, jak i zwykłym tekstem.",
"settings.notif.profiles.title": "Profile powiadomień",
"settings.notif.profiles.toast.delete_failed": "Nie udało się usunąć profilu",
"settings.notif.profiles.toast.save_error": "Błąd zapisu profilu",
"settings.notif.profiles.toast.save_failed": "Nie udało się zapisać profilu",
"settings.notif.toast.blocked_help": "Powiadomienia są zablokowane. Zmień ustawienia przeglądarki: Ustawienia → Ustawienia witryn → Powiadomienia",
"settings.notif.toast.denied": "Powiadomienia zablokowane. Zmień ustawienia przeglądarki, aby je włączyć.",
"settings.notif.toast.disabled": "Powiadomienia wyłączone",
"settings.notif.toast.enabled": "Powiadomienia włączone",
"settings.notif.toast.error": "Błąd włączania powiadomień",
"settings.notif.toast.unsupported": "Powiadomienia nie są obsługiwane w tej przeglądarce",
"settings.notif.unavailable": "Niedostępne",
"settings.notif.works_hidden": "Działa, gdy aplikacja jest ukryta",
"settings.observer.advert_interval": "Interwał flood advert (h)",
"settings.observer.advert_interval_ph": "0 = wył.",
"settings.observer.brokers": "Brokery MQTT",
"settings.observer.enable": "Włącz observera",
"settings.observer.hint": "Trzyliterowy kod lokalizacji jest używany w tematach MQTT; zostaw pusty, aby użyć płaskich tematów <code>meshcore/packets</code>. Interwał advert równy 0 wyłącza zaplanowane flood adverty.",
"settings.observer.iata": "Kod lokalizacji (IATA)",
"settings.observer.iata_ph": "np. KRK",
"settings.observer.intro": "Publikuj każdy pakiet mesh usłyszany przez to urządzenie do brokerów MQTT, w formacie <code>meshcore-packet-capture</code> (tematy <code>meshcore/IATA/PUBKEY/packets</code>). Zgodne z analizatorami pakietów w stylu letsmesh.",
"settings.regions.confirm.delete": "Usunąć region \"{name}\"?\nKanały używające tego regionu wrócą do braku zasięgu.",
"settings.regions.delete_title": "Usuń region",
"settings.regions.empty": "Brak zdefiniowanych regionów. Dodaj poniżej.",
"settings.regions.intro": "Tylko repeatery zezwalające na dany region będą przekazywać oznaczone nim wiadomości. Standardowe nazwy regionów znajdziesz na <a href=\"https://regions.meshcore.nz/\" target=\"_blank\" rel=\"noopener\">regions.meshcore.nz</a>.",
"settings.regions.is_default": "domyślny",
"settings.regions.load_failed": "Nie udało się wczytać regionów",
"settings.regions.name_ph": "Nazwa regionu (np. pl, pl-ma)",
"settings.regions.none_row": "Brak — użyj domyślnego z firmware",
"settings.regions.picker_empty": "Nie zdefiniowano jeszcze żadnego regionu.",
"settings.regions.picker_manage": "Zarządzaj regionami",
"settings.regions.registry": "Rejestr regionów",
"settings.regions.tip": "Wskazówka: wybierz domyślny region przyciskiem radiowym albo wybierz <em>Brak</em>, aby wrócić do domyślnego ustawienia firmware. Wybrany region jest też wysyłany do firmware, więc użyje go każdy nieoznaczony kanał.",
"settings.regions.toast.add_error": "Błąd sieci przy dodawaniu regionu",
"settings.regions.toast.add_failed": "Nie udało się dodać regionu",
"settings.regions.toast.clear_error": "Błąd sieci przy czyszczeniu domyślnego regionu",
"settings.regions.toast.clear_failed": "Nie udało się wyczyścić domyślnego regionu",
"settings.regions.toast.default_error": "Błąd sieci przy ustawianiu domyślnego regionu",
"settings.regions.toast.default_failed": "Nie udało się ustawić domyślnego regionu",
"settings.regions.toast.delete_error": "Błąd sieci przy usuwaniu regionu",
"settings.regions.toast.delete_failed": "Nie udało się usunąć regionu",
"settings.regions.toast.name_invalid": "Nieprawidłowa nazwa regionu. Dozwolone: litery, cyfry, - $ # (maks. 30 bajtów, bez spacji).",
"settings.regions.toast.scope_error": "Błąd sieci przy zapisie zasięgu regionu",
"settings.regions.toast.scope_failed": "Nie udało się zapisać zasięgu regionu",
"settings.reset_defaults": "Przywróć domyślne",
"settings.tab.analyzer": "Analizator",
"settings.tab.appearance": "Wygląd",
"settings.tab.chat": "Czat grupowy",
"settings.tab.contacts": "Kontakty",
"settings.tab.diagnostics": "Diagnostyka",
"settings.tab.interface": "Interfejs",
"settings.tab.messages": "Wiadomości",
"settings.tab.notifications": "Powiadomienia",
"settings.tab.observer": "Observer",
"settings.tab.regions": "Regiony",
"settings.toast.invalid_value": "Nieprawidłowa wartość dla: {field}",
"settings.toast.save_failed": "Nie udało się zapisać ustawień",
"settings.toast.saved": "Ustawienia zapisane",
"settings.toast.setting_network_error": "Błąd sieci przy zapisie ustawienia",
"settings.toast.setting_save_failed": "Nie udało się zapisać ustawienia",
"share.btn_title": "Udostępnij kontakt, kanał lub lokalizację",
"share.card.add_channel": "Dodaj kanał",
"share.card.add_contact": "Dodaj kontakt",
"share.card.channel_conflict": "Nazwa zajęta przez inny klucz",
"share.card.channel_joined": "Już dodany",
"share.card.copy_coords": "Kopiuj współrzędne",
"share.card.from_you": "{distance} · {bearing} od Ciebie",
"share.card.hashtag_channel": "Kanał hashtagowy",
"share.card.in_cache": "W pamięci podręcznej",
"share.card.in_contacts": "Już w kontaktach",
"share.card.open_apple": "Apple Maps",
"share.card.open_google": "Google Maps",
"share.card.open_in_map": "Udostępniona lokalizacja",
"share.card.open_osm": "OpenStreetMap",
"share.card.private_channel": "Kanał prywatny",
"share.card.push_to_device": "Zapisz w urządzeniu",
"share.card.region": "Region: {name}",
"share.card.update_name": "Zmień nazwę na {name}",
"share.card.view_on_map": "Pokaż na mapie",
"share.card.you_shared_channel": "Udostępniony kanał",
"share.card.you_shared_contact": "Udostępniony kontakt",
"share.menu.channel": "Udostępnij kanał",
"share.menu.contact": "Udostępnij kontakt",
"share.menu.location": "Udostępnij lokalizację",
"share.pick.channel_title": "Udostępnij kanał",
"share.pick.contact_title": "Udostępnij kontakt",
"share.pick.empty": "Nie ma tu jeszcze czego udostępnić",
"share.pick.location_title": "Udostępnij lokalizację",
"share.pick.map_hint": "Albo dotknij mapy, aby wybrać dowolny punkt",
"share.pick.me": "Ja",
"share.pick.my_position": "Pozycja mojego urządzenia",
"share.pick.no_position": "To urządzenie nie ma ustawionej pozycji. Dodaj ją w Ustawieniach albo wybierz punkt na mapie poniżej.",
"share.pick.search_ph": "Szukaj kontaktów...",
"share.pick.truncated": "Pokazano {shown} z {total} — wpisz, aby zawęzić",
"share.preview.label": "Zostanie wysłane jako:",
"share.toast.action_failed": "Nie udało się wykonać akcji",
"share.toast.channel_unshareable": "Ten kanał nie ma klucza do udostępnienia",
"share.toast.contact_added": "Kontakt {name} dodany do pamięci podręcznej",
"share.toast.contact_pushed": "{name} zapisany w urządzeniu",
"share.toast.contact_updated": "Nazwa kontaktu zmieniona na {name}",
"share.toast.map_unavailable": "Mapa jest tu niedostępna",
"share.toast.over_budget": "Wiadomość ma teraz {bytes} z {max} bajtów i nie zostanie wysłana",
"share.toast.scope_applied": "Region {name} przypisany do tego kanału",
"share.toast.scope_unknown": "Region \"{name}\" nie jest tu skonfigurowany — dodaj go w Ustawieniach, aby zgadzać się z nadawcą",
"share.toast.too_long": "To nie zmieści się w jednej wiadomości ({bytes} z {max} bajtów)",
"share.type.1": "Companion",
"share.type.2": "Repeater",
"share.type.3": "Room Server",
"share.type.4": "Sensor",
"update.checking": "Sprawdzanie aktualizacji...",
"update.done": "Zaktualizowano do {version}",
"update.link_available": "Dostępna aktualizacja",
"update.link_available_title": "Dostępna aktualizacja: {version}",
"update.link_now": "Aktualizuj teraz",
"update.link_now_title": "Kliknij, aby zaktualizować",
"update.network_error": "Błąd sieci podczas aktualizacji",
"update.new_version": "Dostępna nowa wersja: {version}",
"update.no_new_commit": "Jesteś już na najnowszym commicie - nie było czego pobrać.",
"update.no_new_image": "Zmiana jest już na GitHubie, ale jej obraz Dockera wciąż się buduje. Spróbuj ponownie za kilka minut.",
"update.now": "Aktualizuj teraz",
"update.rebuilding": "Przebudowa kontenerów... ({attempt}/{max})",
"update.reload": "Przeładuj stronę",
"update.start_failed": "Nie udało się rozpocząć aktualizacji",
"update.starting": "Rozpoczynanie aktualizacji...",
"update.timed_out": "Przekroczono czas aktualizacji. Sprawdź serwer ręcznie.",
"update.title": "Aktualizacja mc-webui",
"update.toast.available": "Dostępna aktualizacja: {version}",
"update.toast.check_error": "Błąd sieci przy sprawdzaniu aktualizacji",
"update.toast.check_failed": "Nie udało się sprawdzić aktualizacji",
"update.toast.latest": "Masz najnowszą wersję",
"update.updating": "Aktualizowanie...",
"update.waiting": "Aktualizacja rozpoczęta. Czekam na restart serwera...",
"update.whats_new": "Co nowego?"
}